Issue with nested RGL and draggable

About what @RiiD wrote in https://github.com/STRML/react-grid-layout/issues/293:
<RGL ... >

 // If you add onMouseDown here react-draggable will override it. You will have to use nested element to capture clicks

 e.stopPropagation() }>
      ...

</RGL>

This doesn't work, because the e.stopPropagation() prevents react-draggable from working.
It happens in this EventPluginUtils.js:
if (Array.isArray(dispatchListeners)) {
    for (var i = 0; i < dispatchListeners.length; i++) {
      if (event.isPropagationStopped()) {
        break;
      }

My case is nested RGL with dragging, and when I drag a GridItem of the nested RGL , both RGL start dragging.
I would like to have only the inner RGL drag, so I need to stopPropagation. My GridItems are Custom Components which add a <button> child. As @RiiD wrote, if I put my onMouseDown event listener on the GridItem, react-draggable will override it, and it will not be called. I experienced that.
So How do I prevent propagation and still have react-draggable work?

ok, have a solution.
react-draggable's DraggableCore component can be passed a property onMouseDown.
So I suggest adding an onMouseDown property to RGL, and it to the GridItem in ReactGridLayout.processGridItem(), and in GridItem.mixinDraggable() pass that callback to DraggableCore.
I tried it, and it worked, and made it possible for me to call stopPropagation()  and have nested RGL working with drag.

Any comments?

thanks a ton! @hepiyellow . Working perfectly fine.

I solved this by having a different className for RGL at each level using the prop draggableHandle


using .iloc to assign new value

System information

Linux Ubuntu 19.10
Modin 0.7.3
Python 3.7.7

Problem:
When trying to use .iloc to assign a new value there are no changes taking place.
I already left a comment on the issue #147 but it's already closed and I wasn't sure that you can see it.
Code to reproduce:
import modin.pandas as pd #dask
test = pd.DataFrame({'first': range(10)})
test['first'].iloc[0] = 500
#or test['first'].iloc[[0, 1, 2]] = 500
print(test) # there is no changes

Thanks @ndy-cd, we prefer the new issue since the old one was resolved. This issue is slightly different because of the assignment.
So what is happening is that the test['first'].iloc assignment is happening inplace in pandas. Modin is doing the assignment, but not propagating the test['first'] back to the original dataframe. It will be straightforward to fix, the two types of indexing case in the same statement (first, and iloc) was not handled.
Assignment with loc/iloc will work if you don't access the column first. A simple temporary workaround for the double indexing is to turn it into a single loc call:
import modin.pandas as pd #dask
test = pd.DataFrame({'first': range(10)})
test.loc[0, 'first'] = 500  # 0 is the Index value of the 0th row
#or test.iloc[[0, 1, 2], 'first'] = 500
print(test)

If you prefer to use iloc you can also do this:
import modin.pandas as pd #dask
test = pd.DataFrame({'first': range(10)})
test.iloc[0, 0] = 500  # 0 is the column and row number
#or test.iloc[[0, 1, 2], 0] = 500
print(test)

We have the machinery in place to support this, but it looks like something got lost with the double indexing. Thanks for the detailed report! We will get this fixed.

Thank you very much for detailed answer!
It seems to be a same problem with using .replace()
test['first'].replace({500: 40}, inplace=True)


Update StarshipExpansionProject NetKAN

Heya, here’s the updated the SEP and SEP_IVA netkan files to remove relationships that are to be defined in internal .ckan files with the next pre-release at https://github.com/Kari1407/Starship-Expansion-Project/releases.
This pre-release is expected to go live in ~4 hours so if this would be merged after that, that’d be fantastic.
Thanks in advance.

Released, can merge

Released, can merge

@SofieBrink, looks like there's a file overwrite error now that'll have to be fixed first.
  File           : GameData/StarshipExpansionProject/Props/StarshipMFD/MainScreenAttitudeBlankSPDMODE.png
  Installing Mod : StarshipExpansionProjectIVA v.3.0.0-b2
  Owning Mod     : StarshipExpansionProject v.2.2.0 (installed 12/11/2024 02:07:16, auto-installed)
  CKAN Version   : v1.35.3+24345


Quota issue

{"code": "InvalidTemplateDeployment", "message": "The template deployment 'cluster-stamp' is not valid according to the validation procedure. The tracking id is 'ab597510-5dcb-4007-beb7-e762315f0f50'. See inner errors for details."}

Inner Errors:
{"code": "QuotaExceeded", "message": "Provisioning of resource(s) for container service aks-53yrpapt3w4e6 in resource group rg-bu0001a0008 failed. Message: Provisioning of resource(s) for container service aks-53yrpapt3w4e6 in resource group rg-bu0001a0008 failed. Message: Operation could not be completed as it results in exceeding approved Total Regional Cores quota. Additional details - Deployment Model: Resource Manager, Location: eastus2, Current Limit: 10, Current Usage: 0, Additional Required: 14, (Minimum) New Limit Required: 14.

How am I supposed to use this solution immediately, without having to request and wait for a quota increase?

Sorry to hear you have limited quota in your subscription.  We have toyed with the idea of building a query that you execute up front to try to test if you have enough quota, to help ward off any surprises like this.  It would then be part of the pre-reqs to make sure you have enough quota to complete the steps.
For example, we do know that free/MSDN/etc style accounts usually have quota limits that do not work with this deployment, and as a result we call that out explicitly in the pre-reqs.
If you'd like to contribute by building out that query, that would be awesome.  It doesn't even need to be ALL resources to start.  Any checks are better than none probably.  I'll leave this in the backlog as a "good first issue" -- but I don't think we'll be taking this on directly on our team.

I ran into the same quota issue in both my personal and work Azure subscriptions. I have a copy of the azure cli commands we ran to check quota limits for the target sizes in my work notes. This might be a good candidate for me to contribute.


Plugin breaks when there is a title without a link in SUMMARY.md

If there is an item in SUMMARY.md without a link, the plugin breaks by outputting:
Error: EISDIR: illegal operation on a directory, read

To reproduce this bug
Create a SUMMARY.md file like this:
# Summary
* intro

Fix
I have added an if to check that the link exists in this PR #16

Fixed in #16, closing now. Thank you very much!


[BEAM-8561] Add ThriftIO to support IO for Thrift files

This PR adds Beam support for Thrift files through ThriftIO. ThriftIO provides:

FileIO compatible API for reading files through ThriftIO.readFiles().
FileIO compatible API for reading files through ThriftIO.sink().

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Choose reviewer(s) and mention them in a comment (R: @username).
[x] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[x] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

R: @chamikaramj

Run Java PreCommit

@chamikaramj I have resolved the PreCommit check fail so this should be ready for review. Would be great to get your feedback, thanks.

Seems like this is a very large change. Are all associated files needed ?
Also, if we are copying files/code from somewhere we have to make sure that the source has a compatible license.

Also please make sure to complete a contributor license agreement as mentioned here: https://beam.apache.org/contribute/

CLA has been completed. Yes the files in addition to ThriftIO and ThriftCoder are necessary as they make up the parser and document model that is used to interact with the parsed Thrift file.
The code for the parser and document model was copied from here and updated where necessary. Looks like it has an Apache license.

Thanks @gsteelman. We would love to have the sample Thrift schema and anything else we can utilize for testing!

@gsteelman I can split this PR into one for Document and one for ThriftIO. Since ThriftIO has a dependency on Document I think it would be best to review that one first, thoughts?
Thanks!

@gsteelman I can split this PR into one for Document and one for ThriftIO. Since ThriftIO has a dependency on Document I think it would be best to review that one first, thoughts?
Thanks!

Yes, I think that would make it a little easier for everyone to review. Thank you!

Thanks @gsteelman. We would love to have the sample Thrift schema and anything else we can utilize for testing!

Who should I have it shared with? Also, https://thrift.apache.org/test/ and this schema https://raw.githubusercontent.com/apache/thrift/master/test/ThriftTest.thrift which might provide additional test cases.

@gsteelman @chamikaramj PR for parser has been opened

as an outside viewer of this (and someone who already reads/writes thrift DATA via beam), I'm pretty confused by this PR.
I'd expect a ThriftIO to read/write thrift encoded data in files, but it seems like this instead reads/writes the actual thrift IDL?  Is there actual utility in that?  Am I totally misunderstanding this PR?

@steveniemitz thanks for the input. So this PR will change so that the connector will read/write thrift encoded data. As someone who would utilize this connector what are your thoughts on using either of the following to hold the decoded data:

PCollection<GenericRecord> in which case the user would pass in an Avro schema that would describe each record in the file.
PCollection<[UserType]> in which case the user would pass in some class that the record can be decoded to.

Thanks!

I'd expect #2, where UserType <: TBase (ie, it is a thrift struct).  You'd also probably want to pass in the TProtocol implementation used to use to decode the file I'd assume (binary, compact, etc).

Great thanks. Yes the TProtocol implementation will be passed in for decoding/encoding.

@chamikaramj @steveniemitz @gsteelman the PR has been refactored to read/write Thrift encoded data. It would be great to get some more feedback, thanks!

Run CommunityMetrics PreCommit

Run Java PreCommit

Run Python PreCommit

Run CommunityMetrics PreCommit

One extra thing we just merged plugin to auto label PRs for different components/extensions/ios, can you please add the label + path for thrift in this file:
https://github.com/apache/beam/blob/master/.github/autolabeler.yml

@pabloem @steveniemitz @iemejia comments have been addressed and updated. Also I will add inferBeamSchema to the future plans :)

aw this is great. Thanks! LGTM. I'll let Ismael / Steve add their comments, and merge if nothing else.

Merged manually to squash the commits. Thanks @chrlarsen !

Arrghh it seems we broke master because the workers don't have thrift installed, can we just go back to the generated class and comment the compiler step so we can unblock everyone.
Can you help me with this @chrlarsen or @pabloem (I am not in my computer).
For info https://lists.apache.org/thread.html/r8b2c65bfccc5a68796811804903d4ca08827359de2399a94b6d18197%40<dev.beam.apache.org>

@iemejia yes I'll re-add the generated class.

Thanks ping me when you open the PR to get it merged eagerly.

I'm sorry about the confusion. What happened with this after all?

We ended up including the generated TestThriftStruct class instead of trying to generate at compile time.

We let it like this because we had a regression, if we want to generate and compile the class we need to have thrift installed in all Beam workers (and as a requirement for everyone building Beam) which I think is clearly overklll just for a test.


links to known to work page turners

I would be very helpful to have a list or small BT input devices known to work, like rings, remotes.
Also, what version of BT is supported by Libra 2, i was not able to find any info. That might prove important when looking for a compatible remote l, preferably one that would be as low energy as possible.

I, too, would appreciate a list of known working devices. I've tried a couple of different options with no luck getting the Libra 2 to actually pick up the keypresses.

I’d be happy to add a list to the README.
I understand that some devices need a custom uhid.ko build, so I was thinking it would be important to know:

The name of the device
Whether or not it has been tested without uhid.ko and whether or not it worked
Whether or not it has been tested with uhid.ko and whether or not it worked

So here’s what I have so far:

Device
Works with uhid.ko
Works without uhid.ko
Notes

8BitDo Zero 2
Y
?

Let me know what other information might be useful based on your experiences. And would you mind sharing some details about the devices you’ve tried? Especially if they didn’t work.
Thanks!

I’d be happy to add a list to the README.
I understand that some devices need a custom uhid.ko build, so I was thinking it would be important to know:

The name of the device
Whether or not it has been tested without uhid.ko and whether or not it worked
Whether or not it has been tested with uhid.ko and whether or not it worked

So here’s what I have so far:
Device	Works with uhid.ko	Works without uhid.ko	Notes
8BitDo Zero 2	Y	?
Let me know what other information might be useful based on your experiences. And would you mind sharing some details about the devices you’ve tried? Especially if they didn’t work.
Thanks!

My clara2e only works with uhid.ko. And thanks for the tool what you build.

I got a simple bluetooth camera shutter "AB Shutter3" working with the custom uhid.ko
here is the config file:
28E347FE0921.zip
https://github.com/user-attachments/assets/15d4ebe9-fb6d-47b2-a9da-115c8c590cc7

I was able to use my old Xiaomi TV box remote control. Thanks a lot!!!

I needed to build the hid-multitouch.ko module in addition to uhid.ko to make a JX-05Pro clicker work. Otherwise, /dev/input/eventXX entry was not being created for it.

I was able to use a "TikTok Ring" from Amazon https://www.amazon.com/dp/B0CJ82G5YH
This is for down to next page, up for prev page. Flip the numbers if you want to reverse it.
prevPage EV_ABS ABS_Y 3500
nextPage EV_ABS ABS_Y 200


Move all renderer-side terminal logs to ITerminalLogService

Cannot instantiate named customer: 'MainThreadTerminalService'
[createInstance] terminalService depends on terminalLogService which is NOT registered.


makestyles cant use !important on zIndex style

[X ] The issue is present in the latest release.
[X ] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
Type '{ zIndex: string; }' is not assignable to type 'CSSProperties | CreateCSSProperties<{}> | PropsFunc<{}, CreateCSSProperties<{}>>'.
  Type '{ zIndex: string; }' is not assignable to type 'CreateCSSProperties<{}>'.
    Types of property 'zIndex' are incompatible.
      Type 'string' is not assignable to type 'number | "-moz-initial" | "inherit" | "initial" | "revert" | "unset" | "auto" | PropsFunc<{}, number | "-moz-initial" | "inherit" | "initial" |
"revert" | "unset" | "auto" | undefined> | undefined'.  TS2322

     9 | const useStyles = makeStyles<Theme>(theme =>
    10 |   createStyles({
  > 11 |     root: {
       |     ^
    12 |       zIndex: `${theme.zIndex.modal + 1} !important`,
    13 |     },
    14 |   }),

Expected Behavior 🤔

No error whe using !important
Steps to Reproduce 🕹

Steps:

install mui
use mui styles
import { Theme, createStyles, makeStyles } from "@material-ui/core/styles";
create a useStyles with z-index

Context 🔦
https://stackoverflow.com/questions/53151340/material-ui-and-typescript-how-to-use-important

Your Environment 🌎

`npx @material-ui/envinfo`

  System:
    OS: Windows 10 10.0.19042
  Binaries:
    Node: 12.18.3 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.5 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.14.6 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: Not Found
    Edge: Spartan (44.19041.423.0), Chromium (88.0.705.68)
  npmPackages:
    @material-ui/core: ^4.11.0 => 4.11.0
    @material-ui/icons: ^4.9.1 => 4.9.1
    @material-ui/lab: ^4.0.0-alpha.56 => 4.0.0-alpha.56
    @material-ui/pickers: ^3.2.10 => 3.2.10
    @material-ui/styles: ^4.11.3 => 4.11.3
    @material-ui/system:  4.9.14
    @material-ui/types:  5.1.0
    @material-ui/utils:  4.10.2
    @types/react: ^16.9.17 => 16.9.44
    react: 16.12.0 => 16.12.0
    react-dom: ^16.13.1 => 16.13.1
    styled-components: ^5.0.0 => 5.1.1
    typescript: 3.7.5 => 3.7.5

Thanks for raising, I can reproduce the issue on v5: https://codesandbox.io/s/unstyledslider-material-demo-forked-464k6?file=/demo.tsx as well as with styled-components and emotion. Considering it's an edge case, I think that you should type it:
const StyledDiv = styled("div")({
  zIndex: "8 !important" as any
});

The usage of !important isn't to be encouraged nor optimized for.


Node debug config provider doesn't work?

Start with --disable-extensions
Open the smoketest repo
"Select environment" popup appears, and is empty
Press esc
Opens settings for some reason

If I start with extensions enabled, I see other extensions but not node.
Also, if I click the "configure or open launch.json" button, it just opens the settings editor. Related issue or different?

@roblourens I cannot reproduce this with Stable or Insiders.

I can repro in both, and on a Linux VM.
If I reload the window then trigger/esc multiple times, I sometimes see Node.js appear after a few iterations. I think it's showing the popup without wiating for the extension to finish activating.

@roblourens I cannot reproduce this on my mac, I nicely get offered Node and launch.json always nicely gets opened. If I understand corerctly you see this both on linux and on mac.
Can you still see it with latest vscode insiders?
If yes, put a bp here and check the candidates array https://github.com/Microsoft/vscode/blob/master/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts#L516
Are you in some multi root repo? Can you repro if you use a differnt user-data-dir?

Still happens for me.
Latest insiders with extensions disabled:

Pressing F5 with no files open

Empty "Select Environment" popup appears.
I press esc
Settings editor appears
If I force the node debug extension to activate (Like by running the Toggle Auto Attach) command, it works
Debugging, I see that this.debuggers has the debuggers but hasConfigurationProvider is false so candidates stays empty

Pressing F5 with app.js open

Debugging, I see it pick node-debug from the language
Error popup "Cannot find a program to debug"
Settings editor opens

With fresh user-data-dir and extensions disabled:

Pressing F5 with no files open

Empty "Select Environment" popup appears.
I press esc
"Select Environment" appears a second time with Node.js
Debugging it, the second time node-debug does have hasConfigurationProvider: true

Pressing F5 with app.js open

Works fine

Seems that there's partly something wrong in my userDataDir but it's not perfect with a fresh one either.
I've had a default launch config in my user settings but I comment it out and reload before reproing this.

I think that the launch config in user settings is actually persisted as the current one even though it doesn't exist anymore. launch of "user settings" is passed to startDebugging. That's why it keeps opening the settings editor.
But I don't see how the extensions are supposed to be activated for onDebugInitialConfigurations before startDebugging gets to calling guessDebugger.

But onDebugResolve happens after the call to guessDebugger in my first scenario. If I force node-debug to activate, it does work, so I think that's the problem. Can we debug over a call?

@roblourens Yeah, let's debug over a call. How about tomorrow morning your time / evening my time?
Ping me on slack

Sure. I agree that there are two issues. The second one is also showing up in another way, I keep seeing the debug config dropdown showing configs from different vscode windows. @octref saw the same thing. But I can't repro it consistently and it goes away after a reload.

Another way I'm seeing it:

Run the "Launch VS Code"
Using the debug quickopen menu (debug ...), run the "Attach to Extension Host" config
The debug dropdown still shows "Launch VS Code", and if I press F5 later, it's actually running "Attach to Extension Host"
And if I open the quickopen again later, it shows the correct config selected initially.

Sorry if I'm mixing more unrelated issues in here but it seems relevant and these steps are simpler.

@roblourens your latest comment with steps is fixed in latest vscode insiders. I am investigating into the original issue...

To verify, check that the node debug gets activated (you get it in the quick open) in the following situations each right after a reload:

Open debug config (no launch.json present)
Start debugging (no launch.json present)
Also with launch.json there


Allow Measure-Object to accept ad-hoc script-block arguments in lieu of property names

This issue arose out of #6837.
Motivation:
Sort-Object's -Property not only supports property names (the typical case), but also script blocks that are evaluated for each input object and thereby enable sorting criteria derived from properties, which is a powerful feature (also found, in essence, in Select-Object); e.g.:
# Sort by only the numerical part of the input, via a script-block parameter argument.
PS> 'z1', 'a0', 'b10' | Sort-Object -Property { [int] $_.Substring(1) }
a0
z1
b10

Suggestion:
It would be handy if Measure-Object supported analogous use; e.g.:
# Count the  odd numbers in the input.
PS> 1, 2, 3 | Measure-Object -Sum -Property { $_ % 2 }  # wishful thinking
2

To that end:

The -Property parameter's data type would have to change from[string[]] to [object[]]
In the event of a script block getting passed, it would have to be evaluated for each input object and used in lieu of a simple property access on the input object.

Environment data
Written as of:
PowerShell Core v6.0.2

It's actually just a 3-line change with Property going from [string[]] to [MshExpression[]]. The downside is that MshExpression is an internal (and unfortunately named) class. So about 30 files need to be changed to do this properly (rename MshExpression -> PSPropertyExpression and make it public.)

Thanks, @BrucePay, but wouldn't changing the type to [object[]] do, accompanied by internal logic to see if the object passed is either a [scriptblock] or [string] (or something that can be coerced to a string)?
That's how Sort-Object seems to do it.

Thanks, @BrucePay.
My point was that if Sort-Object types its -Property parameter [object[]] publicly and uses [MshExpression] internally, can't Measure-Object do the same, thereby saving us from having to make [a renamed] [MshExpression]  public?

That's good to hear, @SteveL-MSFT.
We should consider doing the same thing not only for Sort-Object, but also for Select-Object.
Note, however, that additional considerations apply, because both commands accept a hashtable in addition to a script block:

Sort-Object only requires a hashtable if you want to reverse the sort direction on a per property/expression basis:

PS> 'z1', 'a0', 'b10' | Sort-Object -Property @{ Descending=$True; Expression = { [int] $_.Substring(1) }
b10
z1
a0

In the case of Select-Object use of a hashtable is actually the typical case, because in the absence of a name for the property created by the script block the script block's literal string contents becomes the name:

# With just a script block, the resulting property name is the *expression source code*:
PS> 1 | Select-Object { $_ * 10 }

 $_ * 10
---------
       10

# Typical case: provide a hashtable wrapper for the expression that names the property:
PS> 1 | Select-Object @{ Name='TimesTen'; Expression = { $_ * 10 } }

TimesTen
--------
      10

... and ConvertTo-Html - see #6994


Macs with BCM57765 Ethernet Controller: System unresponsive with network cable plugged in

Discussed in https://github.com/helloSystem/hello/discussions/297

Originally posted by patmaddox December 23, 2021
I'm trying to get started with 0.7 on a 2013 iMac. Something seems to not like my NIC (which uses bge driver according to ifconfig).
Can't interact with UI when booting with network cable plugged in (doesn't finish booting?)
If I boot from USB with the network cable plugged in, it seems to not finish booting. I see the desktop, and an icon called Starvolume, but I don't see Live or EFI (which is what I see when I boot without a cable. The mouse and keyboard are non-responsive.
Attaching network cable after booting makes UI non-interactive
If I boot from USB without the cable plugged in, I get a responsive UI and can open applications. I've opened the Terminal and looked at ifconfig. After I plug the network cable in, I can still use the Terminal and see that the NIC has been configured via DHCP.
Next I try to launch an application - Create Live Media so I can install helloSystem onto the internal hard drive. At this point I'm unable to interact with the UI at all. I can move the mouse cursor around, but not click anything, and the keyboard is unresponsive. I can no longer interact with Terminal either.

I don't have a clue how to debug this since I can't interact with anything after plugging in the network cable. Any ideas?

According to https://www.truenas.com/community/threads/error-bge0-watchdog-timeout-resetting.64345/, hw.bge.allow_asf=0 is needed. When entering this manually at the bootloader prompt (in addition to dev.bge.0.msi=0), then booting the helloSystem Live ISO, then plugging in the network cable, the system reboots after a few seconds! If booting with the network cable already plugged in, the desktop is unresponsive from the beginning.

According to https://www.truenas.com/community/threads/error-bge0-watchdog-timeout-resetting.64345/, hw.bge.allow_asf=0 is needed. When entering this manually at the bootloader prompt (in addition to dev.bge.0.msi=0), then booting the helloSystem Live ISO, then plugging in the network cable, the system reboots after a few seconds! If booting with the network cable already plugged in, the desktop is unresponsive from the beginning.

Possibly related: [zone: mbuf_cluster] kern.ipc.nmbufs limit reached appears immediately after "bge0: link state changed to UP`.

Possibly related: [zone: mbuf_cluster] kern.ipc.nmbufs limit reached appears immediately after "bge0: link state changed to UP`.

https://lists.freebsd.org/pipermail/freebsd-net/2011-April/028728.html says

NVIDIA bridge controller is known to have MSI issues for a long time in FreeBSD

While I don't entierly understand what this all means, the Macmini4,1 does have a Nvidia MCP89 chipset.

https://lists.freebsd.org/pipermail/freebsd-net/2011-April/028728.html says

NVIDIA bridge controller is known to have MSI issues for a long time in FreeBSD

While I don't entierly understand what this all means, the Macmini4,1 does have a Nvidia MCP89 chipset.

Possibly @landonf knows how to get the Ethernet part of the BCM57765 in the Macmini4,1 to work properly on FreeBSD?

Possibly @landonf knows how to get the Ethernet part of the BCM57765 in the Macmini4,1 to work properly on FreeBSD?

https://wiki.freebsd.org/IntelMacMini says

To get bge(4) working, add the following to /boot/loader.conf:
hw.pci.enable_msi="0"

So it was working at some point?

https://wiki.freebsd.org/IntelMacMini says

To get bge(4) working, add the following to /boot/loader.conf:
hw.pci.enable_msi="0"

So it was working at some point?

https://wiki.freebsd.org/AppleMacbook mentions under "Wired network seems to hang": hw.msk.msi_disable=1.
TODO: Test whether this helps.

https://wiki.freebsd.org/AppleMacbook mentions under "Wired network seems to hang": hw.msk.msi_disable=1.
TODO: Test whether this helps.

According to https://bsd-hardware.info/?id=pci:14e4-16b4-14e4-16b4 (at least) these devices use it:

iMac12,1
iMac12,2
MacBookPro8,1
MacBookPro8,2
MacBookPro8,3
MacBookPro9,1
MacBookPro9,2
Macmini4,1
Macmini5,1
Macmini5,2

Submitted upstream:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260881

A user with an Acer Aspire v3-571g (likely containing a BCM57785) is reporting a similar symptom here.

Running hello-0.8.0_0H21-FreeBSD-13.1-amd64.iso (FreeBSD 13.1-BETA2)
Boot without Ethernet plugged in
Run Logs application
Plug Ethernet in
Last line: dhclient: New routers (bge0): 192.168.xxx.xxx - and shortly thereafter the system becomes unresponsive


Refs #20010 -- Unified DatabaseOperations.last_executed_query() on Oracle with other db backends.

buildbot, test on oracle.

buildbot, test on oracle.

buildbot, test on oracle.

I added tests that cover both cases in DatabaseOperations.last_executed_query() on Oracle.

@charettes Can you take a look again?

buildbot, test on oracle.


Grandpa Client Implementation

Lets just have one consensus state struct like this

pub struct ConsensusState {
    /// Current authority set
    pub current_authorities: AuthorityList,
    /// Id of the current authority set.
    pub current_set_id: u64,
    /// latest finalized height on relay chain or standalone chain
    pub latest_height: u32,
   /// State machine id StateMachine::Polkadot(0) or StateMachine::Kusama(0) or
   ///StateMachine::Grandpa(ConsensusStateId)
   pub state_machine: StateMachine,
    /// latest finalized height on the parachains, this option will be None on standalone chains
    pub latest_para_heights: Option<BtreeMap<u32, u32>>,
    /// latest finalized hash on relay chain or standalone chain.
    pub latest_hash: Hash,
}

@dharjeezy  you can make the modificartions to the para ids on the consensus state and remove those StorageMaps in the pallet

Lets just have one consensus state struct like this
pub struct ConsensusState {
    /// Current authority set
    pub current_authorities: AuthorityList,
    /// Id of the current authority set.
    pub current_set_id: u64,
    /// latest finalized height on relay chain or standalone chain
    pub latest_height: u32,
   /// State machine id StateMachine::Polkadot(0) or StateMachine::Kusama(0) or
   ///StateMachine::Grandpa(ConsensusStateId)
   pub state_machine: StateMachine,
    /// latest finalized height on the parachains, this option will be None on standalone chains
   /// Map of para_id to parachain height
    pub latest_para_heights: Option<BtreeMap<u32, u32>>,
    /// latest finalized hash on relay chain or standalone chain.
    pub latest_hash: Hash,
}

@dharjeezy  you can make the modifications to the para ids on the consensus state and remove those StorageMaps in the pallet

You can modify the BtreeMap to remove or add parachains.


Enumeration

Is it possible to enumerate the printed files?

Enumerate in what way? Be more specific about what you're looking for.

Thank you for the feedback.
It would be nice if I could pass gulp-debug the option to post/prefix the title. The prefix should be the ordinal number starting at 0 with the first and incremented before each logged file.

Why? For what purpose? The stream isn't in order anyways.


Remove duplicate, unspecced mimetype fields in EncryptedFile

To be merged whenever MSC2582 lands.

Superseded by https://github.com/matrix-org/matrix-doc/pull/3412.


Create a stable release

We've been using aws-dynamodb-encryption in production for a while now and we'd like to know what's stopping you from releasing a non-snapshot release?
Thanks!

Hey sorry for the delay in response here. We discussed internally and agree that it's ready for an official release. I have added a task in our backlog to migrate it out of awslabs and start publishing a non-snapshot release. I'll leave this issue open to track the progress of the effort.

I second this request - any idea when it will become available?

Hey, any updates on when you are planning to do an official release.

Not quite yet. I think that we /just/ took care of the last thing on my "must be fixed" list. I'll need to check.

How's this looking? I notice this has revved from 0.7 to 0.9 in the past month or two.

Sorry. I had a family emergency just as I pushed 0.9.  We're ready to go, I'm just trying to navigate some internal processes.  There is lots of pressure to move this up to an official release and we do want to. It's just process now.
I'm really sorry that it's taking so long.

@SalusaSecondus Dang, sorry to hear that. I was able to frobulate my internal build to use the snapshot, so it's not a crisis on my end.
(FYI, Leiningen, the Clojure build tool, really hates snapshots).

Done! See release 1.11.0


chore: Test CI commands

This PR resolves []
Description

PR Checklist

[ ] I have tested my changes on iOS and Android.
[ ] I hid my changes behind a feature flag, or they don't need one.
[ ] I have included screenshots or videos, or I have not changed the UI.
[ ] I have added tests, or my changes don't require any.
[ ] I added an app state migration, or my changes do not require one.
[ ] I have documented any follow-up work that this PR will require, or it does not require any.
[ ] I have added a changelog entry below, or my changes do not require one.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

#nochangelog

Warnings

:warning:

✅ No changelog changes

  Generated by :no_entry_sign: dangerJS against e82cae129f5926bd8e98e7fc31f986ebe2529479

We were testing if the CI would fail in the branch since it was failing in main, but it succeeded 🤷


Unnecessary change detection bug

Vue.js version
2.2.0
Older versions have this issue too.
Reproduction Link
https://jsbin.com/sujuwabufi/3/edit?html,js,output
Steps to reproduce
The steps must be in order. If any step is skipped or the order is changed the bug does not appears.

Register a global component. The component has to have a watcher, watching a data property or a prop.
Create a Vue instance and attach it to an element in a dom.
Create/get a data set and put it in a shared state. (global object)
Create a new Vue instances with the following criteries and attach it to an element in the dom.

The shared state has to be reactive in this instance (put it into the instances data property)
The instance has to watch the shared state with a deep watcher.
The instance needs a computed property returning any value.
The instance needs a computed property returning a value based on the shared state object.

Mutate the shared state. (repro case test button )

What is Expected?
App does not freeze.
What is actually happening?
The app freezes for several seconds, depend on how big the data set is. The reason behind this is change detection triggered for every object in the data set but it should only for the watcher one time and for the computed property one time.
One thing to note is this only happen one time after the first mutation. After that everything work as intended.
Here is a profiling

Sidenote: deep watching a huge object is absolutely not recommended.

@yyx990803 Did not have any issues with it before. The objects are frozen so basically its not so deep watcher. As far as I can tell performance any memory consummation is not much effected if You are watching like 50k properties. Are there any reasons behind it?

@kailniris it depends on your use case, but most of the time I find a deep watcher can be replaced by some better alternatives.

Interestingly the freezing behavior only occurs in Chrome - works fine in Safari and FF. Looks like it's some weird V8-specific de-optimization. I don't think this is a bug on Vue's part - but we will see if we can work around this in Chrome...

Here is a more reduced example. Without dom/compiler.
Vue.component('comp', {
    data() {
        return {
            dataProp: ''
        };
    },
    watch: {
        dataProp() { }
    },
  render: h => h('')
});

new Vue({
    render: h => h('comp')
}).$mount();

var items = {};

for (var i = 1; i < 50000; i++) {
    Vue.set(items, i, Object.freeze({ _id: i, }));
}

var vm = new Vue({
    data: {
        items: items
    },
    methods: {
        test: function test() {
            var item = {_id: 1};

            Vue.set(items, item._id, item);
        }
    },
    computed: {
        computed() {
            return 'asd';
        },
        item() {
            return this.items[1].name;
        }
    },
    watch: {
        items: {
            handler() { console.log('changed!')},
            deep: true
        }
    },
    render: h => h('comp')
}).$mount();

setTimeout(vm.test, 1000)

Strangely, nothing can be removed anymore. Even seemingly unrelated computed propertycomputed cannot be removed in order to reproduce.

Even if You switch the instance registration sequence the problem will not occurs.

Looking into this briefly, it seems that reactiveGetter runs into some deoptimization issue in V8. Running with --trace-deopt shows
[deoptimizing (DEOPT eager): begin 0x249c405da2d9 <JS Function reactiveGetter (SharedFunctionInfo 0x35761089bf1)> (opt #14) @5, FP to SP delta: 64, caller sp: 0x7fff51fe6060]
            ;;; deoptimize at <https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.0/vue.js:635:15> inlined at <https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.0/vue.js:847:13>, wrong map
  reading input frame reactiveGetter => bytecode_offset=0, args=1, height=6; inputs:
      0: 0x249c405da2d9 ; [fp - 16] 0x249c405da2d9 <JS Function reactiveGetter (SharedFunctionInfo 0x35761089bf1)>
      1: 0x249c405d5d81 ; [fp + 16] 0x249c405d5d81 <an Object with map 0x29c6e4760191>
      2: 0x2e7797b3a811 ; [fp - 8] 0x2e7797b3a811 <FixedArray[11]>
      3: 0x1f0127a04aa9 ; (literal 5) 0x1f0127a04aa9 <Odd Oddball: optimized_out>
      4: 0x1f0127a04aa9 ; (literal 5) 0x1f0127a04aa9 <Odd Oddball: optimized_out>
      5: 0x1f0127a04aa9 ; (literal 5) 0x1f0127a04aa9 <Odd Oddball: optimized_out>
      6: 0x1f0127a04aa9 ; (literal 5) 0x1f0127a04aa9 <Odd Oddball: optimized_out>
      7: 0x1f0127a04aa9 ; (literal 5) 0x1f0127a04aa9 <Odd Oddball: optimized_out>
      8: 0x1f0127a04aa9 ; (literal 5) 0x1f0127a04aa9 <Odd Oddball: optimized_out>
  translating interpreted frame reactiveGetter => bytecode_offset=0, height=48
    0x7fff51fe6058: [top + 104] <- 0x249c405d5d81 ;  0x249c405d5d81 <an Object with map 0x29c6e4760191>  (input #1)
    -------------------------
    0x7fff51fe6050: [top + 96] <- 0x104f81039c99 ;  caller's pc
    0x7fff51fe6048: [top + 88] <- 0x7fff51fe6078 ;  caller's fp
    0x7fff51fe6040: [top + 80] <- 0x2e7797b3a811 ;  context    0x2e7797b3a811 <FixedArray[11]>  (input #2)
    0x7fff51fe6038: [top + 72] <- 0x249c405da2d9 ;  function    0x249c405da2d9 <JS Function reactiveGetter (SharedFunctionInfo 0x35761089bf1)>  (input #0)
    0x7fff51fe6030: [top + 64] <- 0x1f0127a02311 ;  new_target  0x1f0127a02311 <undefined>  (input #0)
    0x7fff51fe6028: [top + 56] <- 0x3576108b679 ;  bytecode array 0x3576108b679 <BytecodeArray[126]>  (input #0)
    0x7fff51fe6020: [top + 48] <- 0x3500000000 ;  bytecode offset 53  (input #0)
    -------------------------
    0x7fff51fe6018: [top + 40] <- 0x1f0127a04aa9 ;  0x1f0127a04aa9 <Odd Oddball: optimized_out>  (input #3)
    0x7fff51fe6010: [top + 32] <- 0x1f0127a04aa9 ;  0x1f0127a04aa9 <Odd Oddball: optimized_out>  (input #4)
    0x7fff51fe6008: [top + 24] <- 0x1f0127a04aa9 ;  0x1f0127a04aa9 <Odd Oddball: optimized_out>  (input #5)
    0x7fff51fe6000: [top + 16] <- 0x1f0127a04aa9 ;  0x1f0127a04aa9 <Odd Oddball: optimized_out>  (input #6)
    0x7fff51fe5ff8: [top + 8] <- 0x1f0127a04aa9 ;  0x1f0127a04aa9 <Odd Oddball: optimized_out>  (input #7)
    0x7fff51fe5ff0: [top + 0] <- 0x1f0127a04aa9 ;  accumulator 0x1f0127a04aa9 <Odd Oddball: optimized_out>  (input #8)
[deoptimizing (eager): end 0x249c405da2d9 <JS Function reactiveGetter (SharedFunctionInfo 0x35761089bf1)> @5 => node=0, pc=0x104f8103b660, caller sp=0x7fff51fe6060, state=TOS_REGISTER, took 0.195 ms]
[removing optimized code for: reactiveGetter]

around 14000 times, completely dominating. Running with Canary and --future in this case, but it's a similar picture for the M58 with Crankshaft/Full-Codegen. I'm not exactly sure what's going on, but we'll have a look.

Thanks for chiming in @bmeurer !

@jaro-sevcik is going to take a look now.

Fixed in v8: https://chromium.googlesource.com/v8/v8/+/fe704477d6b515f2ab2b13cb26eb05556a2cf134

@jaro-sevcik woot! Thanks for the quick fix :)
Closing this for now since there doesn't seem to be anything actionable on Vue's part besides waiting for the v8 patch to go live.


v0.6 of this add-on

Background info on what we're trying to do here: https://github.com/emberjs/website/pull/2469) and also here: https://github.com/ember-cli/ember-cli/pull/5501

[x] put in updated text (#7)
[x] add-on checks to write (issue #5)
- [x] Has an application.hbs been created?
- [x] Has an index.hbs been created?
- [x] Have any routes been created?
[x] write acceptance tests to check the dummy app (issue #6)
[x] open a PR to ember-cli/ember-cli with an npm dependency (see https://github.com/emberjs/website/pull/2469#issuecomment-188271620 for details)

[x] make these suggested changes as part of this PR

I've made all asked-for changes, closing this at this point


xhistogram added to Statistics tutorial

The volumetric census over TS classes at the end of the Statistics tutorial has been added using xhistogram.

@malmans2 the travis-ci check failed for python 3.6. Is that because of the onedrive instability (see the log)?  How do I run the travis-ci check manually?

Yes, I'm pretty sure that's the reason.
Try this:

Click on Details near continuous-integration/travis-ci/pr.
Then click on the build that is failing.
Then click on Restart job. It should be on the top-right.
If you don't see it, then I might have to change some permission.
But I think you should be able to do it because you are already in the CODEOWNERS list. Make sure you are logged into github before clicking on Details.

Let's wait a couple of weeks. If this OneDrive problem persists we should switch to another cloud storage.

Actually, maybe you have to manually log into Travis using your Github account.

Although xhistogram is not a dependency, I've added it in the SciServer environment. It will be installed in the next Oceanography image.


dockerhub official registry

Describe the bug
When creating a docker-registry secret for DockerHub, the default URL is: https://index.docker.io/v1/ if no --docker-server flag is passed. However, argocd-image-updater uses https://registry-1.docker.io as the default.
To Reproduce

Create a new docker-registry secret using kubectl:

kubectl create secret docker-registry regcred
--docker-username=<your-name>
--docker-password=<your-pword>
--docker-email=<your-email>

Get the secret and decode the secret on the cluster: kubectl get secret regcred -o jsonpath='{.data.*}' | base64 -d
Note the URL: "https://index.docker.io/v1/"

Expected behavior
The default behaviour for using dockerhub should not require a user to specify the registry using the --docker-server flag. Argocd image updater should use the "https://index.docker.io/v1/" url instead of: "https://registry-1.docker.io"
Additional context
Kubernetes official documentation here also states the following:
<your-registry-server> is your Private Docker Registry FQDN. Use https://index.docker.io/v1/ for DockerHub.

Version
v0.12.0
Logs
level=warning msg="Could not fetch credentials: no valid auth entry for registry https://registry-1.docker.io found in image pull secret"

I think it might be this line that could potentially be the culprit but I'm not sure:
https://github.com/argoproj-labs/argocd-image-updater/blob/master/pkg/registry/endpoints.go#L101


Possible to pip install .?

I see the changes in https://github.com/python-versioneer/python-versioneer/commit/7776ee06b669b85c52a1fd0f6ad9c5a6a79c3904
which imply that it is still not possible to get a version from git when running pip install .. Is this true? Is there a workaround / known solution to this issue? I guess the core of the issue is that pip doesn't copy over the .git folder to the temporary directory, and so maybe this is simply impossible?

In general, I expect pip install to work. Do you have a project where it doesn't?

I just did on versioneer itself and it seems to be fine
$> py=3; d=venvs/dev$py; virtualenv --python=python$py --system-site-packages $d && source $d/bin/activate && pip3 install  . && versioneer --version
created virtual environment CPython3.9.1.final.0-64 in 217ms
  creator CPython3Posix(dest=/home/yoh/proj/misc/python-versioneer/venvs/dev3, clear=False, no_vcs_ignore=False, global=True)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/yoh/.local/share/virtualenv)
    added seed packages: pip==20.1.1, pkg_resources==0.0.0, setuptools==44.0.0, wheel==0.34.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Processing /home/yoh/proj/misc/python-versioneer
Building wheels for collected packages: versioneer
  Building wheel for versioneer (setup.py) ... done
  Created wheel for versioneer: filename=versioneer-0.20.dev0-py3-none-any.whl size=38815 sha256=49a233a25b647436bb8dcd291b204f56af2e9d8af3559561970cb2d027265957
  Stored in directory: /home/yoh/.cache/pip/wheels/31/07/b1/d4006dcd5d1f54320cf8412c61458e934d69df7bdf6e5496cc
Successfully built versioneer
Installing collected packages: versioneer
Successfully installed versioneer-0.20.dev0
pip3 install .  5.22s user 0.73s system 99% cpu 5.982 total
versioneer (installer) 0.20.dev0

It doesn't work though for -e .!:
(git)lena:~/proj/misc/python-versioneer[master]git
$> py=3; d=venvs/dev$py; virtualenv --python=python$py --system-site-packages $d && source $d/bin/activate && pip3 install -e . && versioneer --version
created virtual environment CPython3.9.1.final.0-64 in 213ms
  creator CPython3Posix(dest=/home/yoh/proj/misc/python-versioneer/venvs/dev3, clear=False, no_vcs_ignore=False, global=True)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/yoh/.local/share/virtualenv)
    added seed packages: pip==20.1.1, pkg_resources==0.0.0, setuptools==44.0.0, wheel==0.34.2
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Obtaining file:///home/yoh/proj/misc/python-versioneer
Installing collected packages: versioneer
  Running setup.py develop for versioneer
Successfully installed versioneer
pip3 install -e .  6.32s user 0.87s system 99% cpu 7.188 total
Traceback (most recent call last):
  File "/home/yoh/proj/misc/python-versioneer/venvs/dev3/bin/versioneer", line 11, in <module>
    load_entry_point('versioneer', 'console_scripts', 'versioneer')()
  File "/home/yoh/proj/misc/python-versioneer/venvs/dev3/lib/python3.9/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/yoh/proj/misc/python-versioneer/venvs/dev3/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/home/yoh/proj/misc/python-versioneer/venvs/dev3/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/home/yoh/proj/misc/python-versioneer/venvs/dev3/lib/python3.9/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ModuleNotFoundError: No module named 'versioneer'

may be that is what was your case @ifiddes ?

I'm having this problem with both pip install . and pip install -e .
Traceback (most recent call last):
    File "/home/ricardo/anaconda3/envs/forecast-off/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 363, in <module>
      main()
    File "/home/ricardo/anaconda3/envs/forecast-off/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 345, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/home/ricardo/anaconda3/envs/forecast-off/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py", line 130, in get_requires_for_build_wheel
      return hook(config_settings)
    File "/tmp/pip-build-env-oqexy4pi/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
      return self._get_build_requires(
    File "/tmp/pip-build-env-oqexy4pi/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 143, in _get_build_requires
      self.run_setup()
    File "/tmp/pip-build-env-oqexy4pi/overlay/lib/python3.8/site-packages/setuptools/build_meta.py", line 158, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 2, in <module>
      import versioneer
  ModuleNotFoundError: No module named 'versioneer'
  ----------------------------------------
WARNING: Discarding file:///home/Forecast-Off/new_repo/forecast-off-trade. Command errored out with exit status 1: /home/ricardo/anaconda3/envs/forecast-off/bin/python /home/ricardo/anaconda3/envs/forecast-off/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py get_requires_for_build_wheel /tmp/tmp0q02sf1v Check the logs for full command output.
ERROR: Command errored out with exit status 1: /home/ricardo/anaconda3/envs/forecast-off/bin/python /home/ricardo/anaconda3/envs/forecast-off/lib/python3.8/site-packages/pip/_vendor/pep517/in_process/_in_process.py get_requires_for_build_wheel /tmp/tmp0q02sf1v Check the logs for full command output.

I hope this helps. I found this snippet for setup.py in a repo by developer advocate @judy2k which solved the problem for me:
import sys

# This appears to be necessary so that versioneer works:
sys.path.insert(0, ".")  # noqa
import versioneer

This solved it for me. Thanks

It seems a solution has been found, although I don't know why it's needed. No projects that I use have needed it...

Here is the a failure case.  Create pyproject.toml with the following contents.
[build-system]
requires = [
    "setuptools",
    "wheel",
]
build-backend = "setuptools.build_meta"

The culprit is  build-backend = "setuptools.build_meta" which triggers a build that is compliant with PEP 517 and PEP 518.
This is issue #193 all over again. The long term solution is to make it possible to use versioneer without vendoring it.

Ah, thanks.

I would say that no solution was really found -- rather a workaround. Without proper solution poor yarik can spend a quality morning trying to figure out wtf versioneer does not work until he finds this issue!

@yarikoptic Care to review https://github.com/python-versioneer/python-versioneer/pull/294, then?

This should be fixed.
For vendored builds, using build-backend = "setuptools.build_meta:__legacy__" should work, or adding sys.path.append(".") in your setup.py. For non-vendored builds, adding versioneer >= 0.24 to your requires list should work.


Add camera model

Description
This PR will close #852 and complete our model view separation as desired by @royerloic, by dealing with the last remaining issue the camera!
It adds a very minimal camera model object and then sets up bidirectional synchronization between the camera model and the vispy cameras - now using the same model regardless of if we are doing 2D or 3D rendering, which I think is a big plus!
This will make things like the viewer serialization #851 and the animation support #780 much nicer too.
Happy for feedback. I might be able to improve some of the tests for our camera angles in 3D, but I tried to add pretty good tests at various levels.
Type of change

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

How has this been tested?

[x] tests added for camera model, viewer model, and vispy stuff

Final checklist:

[x] My PR is the minimum possible work for the desired functionality
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works

Just had a look at the new camera class, seems right to me, pretty straightforward. @jni ?

I have made the first round of requested changes from @kevinyamauchi and improved the testing of the euler angle stuff, including some nice round trip tests. I think this is now ready to go

Thanks I will wait if @jni wants to take a look and then plan on merging sometime tomorrow

I've just update this to include all the changes up to an including #1539. This still needs some update dating to use our newer nomenclature. I'll likely wait until after #1539 merges, but just wanted to bump this along as it will be what I work on next.

This PR is coming along nicely, incorporating lots of recent changes to our coordinate system. There's one failing screenshot test, but before fixing I have some API questions.
This PR would introduce a Camera object that represents things in WorldSlice coordinates. We already have a Dims that actually represents things in what I might call a WorldNotSlice coordinates (but actually has a full World representation in places too).
There's definitely an opportunity now to simplify/ clarify some things that have been confusing for a long time. At the crux of it the Dims should represent the Sliders which corresponds to axes that are not displayed, and the Camera should represent the camera which corresponds to axes that are displayed. Given that our next release is going to be 0.4.0 we could make some breaking changes to clean things up, but I'm wondering what the API should look like. One option would be to add a new Sliders object inside of Dims to handle all the info for the sliders and put the Camera inside the Dims too. Some example API for the new system might be
viewer.dims.camera.center # stores center of FOV for camera for displayed dimensions (world slice)
viewer.dims.sliders.position # stores position of sliders for not-displayed dimensions (world not sliced)
viewer.dims.position # combines position of sliders and center of FOV of camera into world coordinates
viewer.dims.displayed # indices of axes that are being displayed

# consider a 5D dataset being rendered in 3D
len(viewer.dims.camera.center) == 3
len(viewer.dims.sliders.position) == 2
len(viewer.dims.position) == 5
len(viewer.dims.displayed) == 3

# consider a 5D dataset being rendered in 2D
len(viewer.dims.camera.center) == 2
len(viewer.dims.sliders.position) == 3
len(viewer.dims.position) == 5
len(viewer.dims.displayed) == 2

This could actually be done in a relatively backwards compatible way and might really make things crystal clear. Thoughts @jni and others? If people like this I can do that for this PR :-)

To me it seems weird to see a reference to a specific UI element (sliders) in an object that seems abstract (representing how data is sampled).
I also don't understand why you need dims.position and dims.sliders.position, when there is literally one underlying object that you could describe instead -- the sampling grid / hyperplane. For ND data, you could express this as a set of N basis vectors or as a set of ND points. In either case, sliders and panning with the mouse correspond to translations of the sampling grid along along axes orthogonal to it. In addition to matching the underlying math of image generation, I think this approach would be very forward-looking -- how will napari support array reslicing if you rely on this concept of "displayed dims"?
Sorry if this isn't very specific to the code in this PR. I am just worried that no API for image reslicing will be nice unless it matches the underlying geometrical operations.

I think this approach would be very forward-looking -- how will napari support array reslicing if you rely on this concept of "displayed dims"?
Sorry if this isn't very specific to the code in this PR. I am just worried that no API for image reslicing will be nice unless it matches the underlying geometrical operations.

Hmm ok, this point is well taken, thanks for brining it up @d-v-b. I've done some experimenting with reslicing in the context of #1616 (though non-orthogonal slicing is not supported yet in that PR). It would be great if you can start playing with #1616 and give some feedback there. My plan was for that to merge without non-orthogonal slicing (right now it prints a warning if you try that) and then add that in as a new PR. Thinking about this API in the context of re-slicing makes a lot of sense though. Maybe we try and get #1616 merged first and then revisit this. Thoughts @d-v-b and @jni? This is definitely our opportunity to get this right!!!

@kevinyamauchi @royerloic curious what both of you think about this discussion too https://github.com/napari/napari/pull/854#issuecomment-703324023 from an API design standpoint

Ok, I've made a number of improvements to this PR and it is now ready for review. I settled on making minimal changes to the Dims in the process and didn't go with the approach which had a new sliders object etc. Instead we just have a very simple camera object accessible at viewer.camera with
viewer.camera.center #2-tuple or 3-tuple of center of FOV in world slice coordinates
viewe.camera.zoom # number of canvas pixels per world pixel
viewer.camera.angles # euler angles of camera in degrees during 3D viewing

these get automatically synced with the vispy camera when you zoom/ pan etc. and changing them will automatically update the vispy camera too.
I think this is actually going to be really nice when we start having multicanvas support and want to link the cameras etc. I can actually really imagine now how we might be able to do this and could start work on this as soon as we release 0.4.0 - cc @GenevieveBuckley
I'd like to merge #1616 first and then do some final testing before this merges, but otherwise I'd say this is ready for review, both functionality, API, and code, @jni @GenevieveBuckley @kevinyamauchi @Czaki
I'm particularly interested @Czaki if this breaks any of your workflows, I know you have a multicanvas/ camera system in your tool.

I've added reset_view back in, though the args are now slightly different and are based off the camera. Hopefully this is ok. You can also now listen for the camera.events.center, camera.events.zoom, camera.events.angles instead.
I think it's ok not to deprecate reset_view. We're no longer using it internally, but it doesn't do harm there. I've added a comment to that effect. Let me know if this is ok @Czaki. Curious what @jni thinks too

@sfcaracciolo, following up on your post on image.sc https://forum.image.sc/t/change-origin-of-3d-canvas/43583, this PR has now been cleaned up and is ready for testing. You can move the origin of the camera in 3D now with viewer.camera.center = (z, y, x). Any feedback before merge would be much appreciated!!

I have now updated this PR to include the the affine transforms from #1616 which just merged.
Note that right now this PR doesn't fix #1739, but it doesn't make it worse either. I will look into that tomorrow. This is now ready for review @jni

Note the zoom change from 2D to 3D noted in #1740 is fixed here, see gif below:

Stil problem with reset view. Both screenshots are done after press the reset button. Only thing done is resize window.

Still problem with reset view. Both screenshots are done after press the reset button. Only thing done is resize window.

@Czaki can you explain in a little more detail what's going wrong

is it now that the default size has changed when you reset the view, i.e the images a smaller?
is it an unexpected interaction between canvas size and zoom level?
does reset view not actually do anything for you anymore?

You might need to point me to the code in your project to help me understand this one more. Thanks and sorry about the breakage!!

Ok @Czaki I can reproduce what I think your issue is - and I think I know what causes it. If I make the canvas really big and take a screenshot it looks like this with lots of black space around the edge.

If I make the canvas really small and take a screenshot it looks like this

The current cause of this is the hard coded value of 600 for the canvas size that is being used here https://github.com/napari/napari/blob/32f5690418f816fee266483ceef57c8a985c7b7e/napari/components/viewer_model.py#L300. I can change this so that the viewer knows about the size of the canvas and that this gets adjusted automatically.
How does that sound? Thanks for brining this to our attention

. I can change this so that the viewer knows about the size of the canvas and that this gets adjusted automatically.
How does that sound? Thanks for brining this to our attention

It looks ok. I like previous behavior and using the size of canvas should be a proper decision. Thick frames around images are also good. I may need to use some scalar to get them also.

It looks ok. I like previous behavior and using the size of canvas should be a proper decision. Thick frames around images are also good. I may need to use some scalar to get them also.

Ok this is fixed now, I've added a _canvas_size property to the viewer that can be used during the reset, and I've also adjusted things to take into account different aspect ratios of canvas and image such that now the most filled axis will be filled 95% of the canvas regardless of canvas size etc.
For a long thin image like a pathology slide, this is what the default now looks like

This is what the default astronaut looks like

Let me know @Czaki if this sufficiently addresses your concerns and needs!!

oh and the magic number 600 which would have set of the spidey sense of @jni has been removed :-)

@guiwitz this PR is finally ready for review!! I'm so sorry that it has taken us so long to get back to this and your incredible napari movie PR #780 has been sitting there the whole time. We really are trying to improve our development process so that PRs don't get stranded like that anymore, and once this merges I'd love us to pick that up one up again!!

There is still a problem with the size of the image after resize: The left window is napari 0.3.8, right from this PR

I also get this error when set axis with size 1 as one of the visible axes (using self.viewer.dims.order)
/home/czaki/.pyenv/versions/partseg3.7/lib/python3.7/site-packages/napari/components/viewer_model.py:301: RuntimeWarning: divide by zero encountered in true_divide
  np.divide(self._canvas_size[::-1], size[-2:])

This works in napari 0.3.8
I use this to implement side view. And it happens when use side view on 2D data.

There is still a problem with the size of the image after resize: The left window is napari 0.3.8, right from this PR

Unfortunately I can't reproduce on my screen right now :-( Here's a 512x512 image in the gif below. Just in case it helps what's the shape of your image - I see that it's 4D, maybe something weird is happening with that too (I hope not!!)

I also get this error when set axis with size 1 as one of the visible axes (using self.viewer.dims.order)

Ok yes, I can try and reproduce/ fix this - should be straight forward.

I think that the most important differences are the shape of the image and that I maximize the window by double click on the title bar. You use the square image and I use rectangle one.
I attached the image which I use.
stack1_component4.zip

I think that the most important differences are the shape of the image and that I maximize the window by double click on the title bar. You use the square image and I use rectangle one.

Unfortunately I can't reproduce this @Czaki - see my attempt below, the resize works ok for me.

One potentially funny thing I'll note is the asymmetry that exists when resizing the canvas with the zoom depending on aspect ratio of the canvas - see this gif, and note when resizing left/ right the zoom doesn't change but when resizing up/ down it does. Somehow this behavior seems odd.

This behavior is present on master right now, so I'd rather fix in a follow-up PR, but I just wanted to note.
Curious @Czaki if you have further ideas.
I'll fix the set axis with size 1 issue before merge though.

I'll fix the set axis with size 1 issue before merge though.

1D images have now been fixed

It looks like in you make the window narrow you do not push the reset button and I do this. Without pushing the reset button it looks the same as in your gif.
I would like to debug this but could you suggest which functions called during resizing are good to investigate? It looks like a problem with the update of scale.

It would be good to address @Czaki's issue, which points to something a bit weird going on with the zoom levels, but that could be done in a follow-up PR I think. Certainly in reading the code I don't understand at all why it happens...

I think it could be some interaction with old code.

It looks like in you make the window narrow you do not push the reset button and I do this. Without pushing the reset button it looks the same as in your gif.
I would like to debug this but could you suggest which functions called during resizing are good to investigate? It looks like a problem with the update of scale.

Ok i was able to reproduce now!! I'll try and get to the bottom of this before merge

Ok, i've made the simple doc string requests from @jni, but I'm really struggling with the zoom resetting issue.
I'm using this as example
with napari.gui_qt():
    viewer = napari.view_image(np.random.random((200, 50)))

What can happen is that when I shrink the FOV very small, the image can shrink in a funny way, when i then click reset view it returns to normal, but then when i expand view it starts clipping again. If i click reset view it then returns to normal. I guess the desired behavior is that it never shrinks in a funny way, and expanding from being the "right zoom" keeps it the right zoom.
See gif here

Note the current behavior on master is as follows. When you hit that minimum size, instead of continuing to shrink the zoom then remains constant. This behavior is much nicer and I can try and make this PR match that behavior before merge.

Ok, I'm heading to bed now. I can't figure out what has changed in this PR that has caused the change in behaviour. Maybe @Czaki will have better luck investigating. I tried rolling back various aspects of this PR, but havn't been able to succeed.

Ok after much digging the problem can be traced to something with the call to camera.rect that used to happen here https://github.com/napari/napari/blob/v0.3.8/napari/_qt/qt_viewer.py#L460 now going wrong.
It looks like the bad behavior also happens in 3D rendering on master. I think I've narrowed this down quite a lot though, so we should be able to fix it!!

Ok the offending lines are
corner = np.subtract(self._view.camera.center[:2], scale / 2)
self._view.camera.rect = tuple(corner) + (scale, scale)

where it makes it clear that information about data aspect ratio has been lost. I can look into it more

Ok, I've fixed the clipping issue that @Czaki noted and now understand what was going wrong with images of non 1 aspect ratio. We were using a square bounding box to determine the max zoom level for the panzoomcamera on vispy but using an aspect ratio matched box to determine the max zoom level in our method on the viewer model. these could get out of sync when clicking the reset view button which would then cause the clipping.
i've changed things so we always use a square bounding box to determine the max zoom. This also matches the behavior for the 3D camera too.
You can see the behavior in the new gif below. It does mean that at a certain point you get what looks like a large shrinking, but that is to keep the square bounding box entirely within view. The nice thing now is that pressing the view reset button doesn't change anything like it did before and no clipping happens. Is this ok @Czaki?

Ok, I'm going to merge!!! If we want to improve the zoom in the future we can revisit, but I'm pretty happy with this now, and it will be great to have it in!

@sofroniewn amazing sleuthing! :detective: :raised_hands:

@sofroniewn Thanks. I'm a little hurry so do not have time to check. When I will have more time, I will investigate this zoom issue.


Remove blobs from the repository

Describe the feature/proposal
Any extraneous blobs should be removed from the repository as they are not easily reviewable.
The crypto example can for example - be replaced with a line to download the dapr logo from a known safe source. This can be a defined signed commit on github for example.
Release Note

RELEASE NOTE:

can i have this one.

can i have this one.

Absolutely, do let me know if you need anything 🙂

hey, getting to this now. the only BLOB here is examples/crypto/image.png. do you need anything else removed?

I believe it is the only one, I haven't checked.


Keeps asking me to log in to GitHub every five minutes

Issue Type: Bug
I have been signed into GitHub in Code for weeks. I have a GitHub repos extension that I am signed into, and I also use GitHub to authenticate for my settings sync within Code.
Recently / this morning, every few minutes a notification badge keeps appearing on my profile icon in Code, either with a 1 or a 2, and asking me to sign in again to GitHub to sync my settings and/or to sign into the extension. I have signed in repeatedly this morning and it keeps on asking me to sign in again!
My sign-ins are successful because the badge disappears for a while. These sign in requests use my default browser, where I am also signed into github.com with my account.
VS Code version: Code 1.69.2 (3b889b090b5ad5793f524b5d1d39fda662b96a2a, 2022-07-18T16:14:10.636Z)
OS version: Linux x64 5.15.57-2-MANJARO snap
Restricted Mode: No

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz (4 x 2494)

GPU Status
2d_canvas: unavailable_softwarecanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: disabled_softwaremultiple_raster_threads: enabled_onopengl: disabled_offrasterization: disabled_softwareraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: disabled_softwarevideo_encode: disabled_softwarevulkan: disabled_offwebgl: unavailable_softwarewebgl2: unavailable_software

Load (avg)
2, 2, 2

Memory (System)
7.65GB (0.63GB free)

Process Argv
--no-sandbox --force-user-env --unity-launch --crash-reporter-id 52237212-614d-4304-bc96-5c78b2e094dd

Screen Reader
no

VM
0%

DESKTOP_SESSION
xfce

XDG_CURRENT_DESKTOP
XFCE

XDG_SESSION_DESKTOP
xfce

XDG_SESSION_TYPE
x11

Extensions (30)

Extension
Author (truncated)
Version

markdown-checkbox
bie
0.3.2

markdown-preview-github-styles
bie
1.0.1

vscode-html-css
ecm
1.13.1

vscode-npm-script
eg2
0.3.28

vscode-nunjucks
exe
0.1.0

node-version
fiv
0.0.1

code-runner
for
0.11.8

terminal
for
0.0.10

github-repository-manager
hen
1.5.1

dax-language
huy
0.0.2

vscode-edit-csv
jan
0.7.1

svg
joc
1.4.19

json2csv
kha
0.0.1

git-graph
mhu
1.30.0

python
ms-
2022.10.1

vscode-pylance
ms-
2022.7.40

jupyter
ms-
2022.6.1201981810

jupyter-keymap
ms-
1.0.0

jupyter-renderers
ms-
1.0.9

remote-ssh
ms-
0.84.0

remote-ssh-edit
ms-
0.80.0

azure-account
ms-
0.11.0

remote-repositories
ms-
0.16.0

vscode-yaml
red
1.9.1

r
REd
2.5.2

nunjucks
ron
0.3.1

partial-diff
ryu
1.4.3

gruvbox-material
sai
6.5.0

even-better-toml
tam
0.16.5

markdown-all-in-one
yzh
3.4.3

(5 theme extensions excluded)

A/B Experiments
vsliv368cf:30146710
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
pythonvspyl392:30443607
vserr242cf:30382550
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscorecescf:30445987
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
vsaa593:30376534
vsc1dst:30438360
pythonvs932:30410667
wslgetstarted:30449410
vscscmwlcmt:30465135
cppdebug:30492333
pylanb8912cf:30529770
vsclangdc:30486549
c4g48928:30535728

Can you follow these steps so that we can get more information on what's going on?

Wait for the issue to happen...
Open the Output pane (ctrl+shift+u I think on Linux)
drop in this issue he contents of the following:

GitHub Authentication Output channel
Log (Window) Output channel

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!

Also Manjaro Linux user here. Same issue on the newest version of VSC.


IPython Console not autoscrolling well

From<EMAIL_ADDRESS>on 2014-03-25T19:23:04Z
Spyder Version:  2.2.5
Python Version:  2.7.6
Qt Version    :  4.8.4, PySide 1.2.1 on Windows
pyflakes >=0.5.0:  0.7.3 (OK)
pep8 >=0.6      :  1.4.6 (OK)
IPython >=0.13  :  1.1.0 (OK)
rope >=0.9.2    :  0.9.4 (OK)
sphinx >=0.6.6  :  1.2.1 (OK)
matplotlib >=1.0:  1.3.1 (OK)
sympy >=0.7.0   :  <IP_ADDRESS> (OK)
pylint >=0.25   :  None (NOK)
What steps will reproduce the problem?

print x, time.sleep(n), print y What is the expected output? What do you see instead? Expect to see 'x' printed, then timeout for n seconds, then print y. Instead if does n second delay, followed by printing x and y.

Please provide any additional information below
. note the above works fine from command line, so it doesn't seem to be a python problem (I use Windows7).
Note I posted about this here but didn't get any help: http://stackoverflow.com/questions/22644281/python-time-sleep-how-to-use-it-to-pause-between-print-statements
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=1773

From<EMAIL_ADDRESS>on 2014-04-03T08:00:34Z
I replied to your post there, but just to better explain vanza's suggestion... it's supposed to work!

From<EMAIL_ADDRESS>on 2014-04-04T20:25:09Z
I'm afraid that's out of my league! I see that the "normal" Python console scrolls down regularly... it's the IPython one that presents this issue. But I don't know where in Spyder the scrollbar is set to the end of the displayed text.

From<EMAIL_ADDRESS>on 2014-04-03T08:24:46Z
Thanks you nailed it: the real bug is that it doesn't scroll in the interpreter correctly! Thank you so much. Now, any idea how to get it to scroll down appropriately before pausing?

From ccordoba12 on 2014-04-16T09:37:21Z
This seems to be related to issue #1792 , doesn't it?
Labels: Cat-IPythonConsole

From ccordoba12 on 2014-05-18T14:17:11Z
issue #1792 has been merged into this issue.

From ccordoba12 on 2014-05-18T14:18:47Z
This is an issue with IPython qtconsole itself, please try to report it with them to see if they can come up with an easy fix.
Summary: IPython Console not autoscrolling well  <span class="oldvalue"> (was: Sleep called within spyder works strange) </span>
Status: Accepted
Labels: MS-v2.3.1

From<EMAIL_ADDRESS>on 2014-08-01T10:45:45Z
This issue is still present in Spyder 2.3.0 released version.
It may help to add that the above bug is present when the IPython console is run within Spyder, but it is not present when the same IPython console runs with the IEP editor ( http://www.iep-project.org/ ). This would suggest that the bug is not related to the IPython console, but to Spyder.

From ccordoba12 on 2014-08-17T18:49:34Z
Labels: -MS-v2.3.1 MS-v2.4


ON_DEMAND does not work

Describe the bug
A clear and concise description of what the bug is.
ON_DMAND : true does not seem to be working in the latest version of pewpew
Expected behavior
A clear and concise description of what you expected to happen.
on demand should run as often as the provider is needed
Config file
Paste your simplified config file below.
https://github.com/fs-eng/SystemTestTools/blob/master/pewpewtests/Membership/UnitOnly.yaml
# config file here

https://github.com/fs-eng/SystemTestTools/blob/master/pewpewtests/Membership/UnitOnly.yaml
Command to run
Enter below the full command used to execute Pewpew.
# command here

System info

Operating System: e.g. "Ubuntu 18.04", "Windows 10"
Pewpew version: from pewpew --version
Latest Version on Ppaas

Additional context
Add any additional context about the problem here.

Can you provide more details, @summersjc ? What doesn't work? What is the actual version? Also please provide a simplified config file that repros the issue.

This just happened for the Search team as well.  It looks like it has something to do with us borrowing the providers that have on_demand on them. If I comment that code out to where they aren't borrowed into the create_config_watcher by the watch_config_file: true the issue goes away. But we're not changing the config file so that part of the function isn't even firing. It's just the act of borrowing the providers so we can clone and re-use them if they haven't changed.

Ok. More digging. Adding --watch does a provider.clone() on all the providers. Removing that clone fixes the issue. It also looks like the clone increases the number of senders and receivers (and on_demand) by 1 since the --watch clones the provider creating another sender and receiver. I don't know if that is stealing the on_demand message. I tried having the notify_on_demand notify all instead of 1 but that didn't fix it. Something is causing the on_demand to not fire.

@summersjc Fixed in build https://github.com/FamilySearch/pewpew/releases/tag/v0.5.8-preview4. Please try it out and verify it's fixed.


Sanitize API

Coverage remained the same at 29.394% when pulling f57aef5cf5efa36a96829c836fe2d427e13c33a2 on sanitize into 3a5db205717ee116e479aa5048546144d0b33360 on master.

Coverage remained the same at 29.394% when pulling 23f69aa6b62f97ec1e382192563d113c1cf41c17 on sanitize into 3a5db205717ee116e479aa5048546144d0b33360 on master.

Coverage remained the same at 29.394% when pulling 58273e06b1c3d5d36ac169223d3cdcbdda920648 on sanitize into 3a5db205717ee116e479aa5048546144d0b33360 on master.

Coverage decreased (-0.05%) to 29.346% when pulling a80c3064ce02d0ad2e57ede2a873cdb62264457d on sanitize into 3a5db205717ee116e479aa5048546144d0b33360 on master.

Coverage remained the same at 29.442% when pulling 8594e31ad75803dc6ff0ab350ff88a08d3e3be80 on sanitize into 83a0e98a314de58296ac8e63d0be75c17e46ffce on master.


Create SVI Data Research Blog Post

Create a blog post detailing findings of SVI data research efforts and their significance.

Done and posted online.


Add CZI employees method to feature

Description
See comments in code.
Tests

run in localhost and see changes to user objects

^ I think the last commit went to the wrong branch!

I don't want to invest the time to make a rake task right now so I'm just going to close this PR. Anyone is welcome to pick up the idea. I only posted this PR because I had just run the exact commands in the console.


*: add operator priority mechanism

add priority mechanism for the operator.

PTAL @Connor1996

/run-all-tests


Prerequisite unmet  popup in search results

Description
When searching for a course, an indicator may show up in the search bar if you haven't met prerequisites from your current roadmap.

Screenshots
https://github.com/icssc/peterportal-client/assets/35554964/fc16ea05-c53d-4c2f-bad3-ea08e39f2a13

Steps to verify/test this change:

[ ] Verify changes work as expected on staging instance

Final Checks:

[ ] Verify successful deployment

(optional)

[ ] Write tests
[ ] Write documentation

Issues

Closes #451

I think the icon itself is not very easy to tell what it means. Why not just make it consistent with what happens if you actually put it on the roadmap, that is, use the warning sign icon (at least for now)?

I think the warning icon should be moved to the bottom left so it is consistent with the roadmap. Additionally, top right would conflict with #462. Why not reuse the existing warning popover/logic?

The current popover logic relies on finding invalid courses that are already in the roadmap by going through each course and creating an array of objects that have location and required fields.
This will probably have to be refactored in a PR of a different scope because the current way the roadmap detects unmatched prerequisites isn't reusable to SearchHitItem.


Fine-tuning MedSam without bbox

Would it be possible to fine-tune MedSam without bbox? the first idea is to give an entire image as the bbox but is there any other better solutions?

Hi @masih4 ,
sorry for our late reply. We have been working on the miccai deadline during the past few weeks.
May I know what's the goal to fine-tune medsam without box? If you want to train a fully automatic model, the traditional segmentation model (e.g., unet) would be a better choice.

Hi Jun,
Thank you for your response. I was thinking of using the MedSAM pre-trained
weights and then fine-tuning them for specific segmentation tasks in a
full-automatic manner (without bbox). I am not sure if it works, so I asked
here if there is an optimized way to do that.
On Mon, Mar 11, 2024 at 10:25 PM Jun @.***> wrote:

Hi @masih4 https://github.com/masih4 ,
sorry for our late reply. We have been working on the miccai deadline
during the past few weeks.
May I know what's the goal to fine-tune medsam without box? If you want to
train a fully automatic model, the traditional segmentation model (e.g.,
unet) would be a better choice.
—
Reply to this email directly, view it on GitHub
https://github.com/bowang-lab/MedSAM/issues/215#issuecomment-1989471697,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEIAUKZAKD77HWTWX54BUULYXYVL5AVCNFSM6AAAAABEHOLM2OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBZGQ3TCNRZG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @masih4 ,
For 2D images, it is doable via frameworks such as vit-adapter https://github.com/czczup/ViT-Adapter

Of course, it requires some engineering efforts.

However, for 3D medical images, I don't think this is a good direction because MedSAM was trained on 2D slices. Its primary purpose is to serve as a general bounding-based segmentation tool. It would be better to pre-train a 3D model on large-scale datasets (e.g., totalsegmentor) for fully automatic 3D image segmentation rather than adapting 2D models.


Port to ppxlib and OCaml 4.11 (continuation of #111 and #118)

This pull-request pursues the work that @rgrinberg and @kit-ty-kate  started to port ppx_deriving_yojson to ppxlib and OCaml 4.11. See https://github.com/ocaml-ppx/ppx_deriving_yojson/pull/111 and https://github.com/ocaml-ppx/ppx_deriving_yojson/pull/118.
 Previously, !Ast_helper.default_loc was used without being initialized: I tried to use more precise location informations when available.

there is a deep change in the way locations are being handled, now they are threaded through the plugin as a new parameter. This is a new change you made. Can you explain why it is necessary? (I guess this is something about a difference in the way ppx_metaquot vs. ppxlib's metaquoter work?)

Yes, ppxlib.metaquot expects loc to be bound in the environment, while ppx_tools.metaquot relied on !Ast_helper.default_loc: we already noted this change in https://github.com/ocaml-ppx/ppx_deriving/pull/206#discussion_r346832992 but it is worth documenting this for other authors.

Let me go ahead and merge this one as well. Thanks @thierry-martinez and @rgrinberg !
It is not completely clear when we will be ready to migrate all ppx_deriving plugins to the ppxlib approach (for example we found an upstream bug in the process, https://github.com/ocaml-ppx/ocaml-migrate-parsetree/issues/97 , and I wonder if we should wait for it to be fixed; there are some compatibility issues that need ironing out or careful documentation). What @thierry-martinez proposed is thus to create pre-ppxlib branch to not delay the 4.11-compatible release process. This is what we are doing for now (master has ppxlib support, but is not quite release-ready, and pre-ppxlib is the boring, safe approach for yet another OCaml release).