Ctrl-based shortcuts not working in Windows

OS version and name: Windows 10 14987.1001
Hyper.app version: 1.0.0
Link of a Gist with the contents of your .hyper.js: gist
Relevent information from devtools : N/A
The issue is reproducible in vanilla Hyper.app: Yes

Issue
Typing Ctrl-A, Ctrl-R, Ctrl-E etc. does not result in the expected behavior (e.g. start-of-line for Ctrl-A, search history for Ctrl-R). Instead Ctrl-A selects all the text and the other ones apparently do nothing.
This does not seem to be related to the underlying shell because I can reproduce in both bash.exe and Git Bash ("C:\Program Files\Git\bin\sh.exe" -l). May be related to #1058.
Discussion on Twitter

Duplicate of #1121. Please extend your issues there.


pip package doesn't honor requirements.txt

Similar to https://github.com/graphite-project/carbon/issues/348.

Fixed in https://github.com/graphite-project/graphite-web/pull/1080.


DCE wordings

Wordings part of https://github.com/LedgerHQ/lld-v2/pull/177
Type
Code Quality Improvement

to be checked that we didn't miss wording on the interface. a dev can spend some time double checking the wordings are not used to avoid false positive cases.

Just to know, have you tried having a look at this?
I dont know, maybe their parser could work in our case :smile:
https://github.com/i18next/i18next-scanner#removeunusedkeys


385 introduce tmux validator

Addresses #385.
A few items of note:

"validation" currently takes place in Cli#start, but that's definitely up for debate. Personally, I'd run the "validation" inside the Tmuxinator module definition. However, it's feasible that someone would want to use Tmuxinator to delete existing projects, run tmuxinator implode, etc. after having uninstalled tmux.
TmuxValidator currently raises a RuntimeError when tmux is unavailable. I'd prefer to raise a custom error like, TmuxIsNotAvailable, but I don't believe that's being done anywhere else in the project, so I don't want to break formation. It might also make sense to use Util#exit! to avoid dumping a stack trace on unassuming users.

Coverage increased (+0.01%) to 99.12% when pulling c0350a117562eb49539814bfc679c223fb711c41 on ethagnawl:385-introduce-tmux-validator into 8cdbe6e2499cd1e61ca029c1cc17cd56e0523b30 on tmuxinator:master.

Tmuxinator::Config actually contains several not config-related methods, such as installed?, editor?, and shell?. Should we open an issue to move these to a validator of sorts?

Agreed. I'll open an issue about that.
Did you have any thoughts about the placement of the call to Tmuxinator::TmuxValidator::validate!, @J3RN? That's the only aspect of this feature I have mixed feelings about.

Coverage increased (+0.01%) to 99.12% when pulling 56fc2dfa4819cc417bb75aab3ac2e1ac2f0b25e9 on ethagnawl:385-introduce-tmux-validator into 8cdbe6e2499cd1e61ca029c1cc17cd56e0523b30 on tmuxinator:master.

Coverage increased (+0.01%) to 99.12% when pulling 56fc2dfa4819cc417bb75aab3ac2e1ac2f0b25e9 on ethagnawl:385-introduce-tmux-validator into 8cdbe6e2499cd1e61ca029c1cc17cd56e0523b30 on tmuxinator:master.

Coverage increased (+0.01%) to 99.12% when pulling 56fc2dfa4819cc417bb75aab3ac2e1ac2f0b25e9 on ethagnawl:385-introduce-tmux-validator into 8cdbe6e2499cd1e61ca029c1cc17cd56e0523b30 on tmuxinator:master.

Coverage increased (+0.01%) to 99.12% when pulling 56fc2dfa4819cc417bb75aab3ac2e1ac2f0b25e9 on ethagnawl:385-introduce-tmux-validator into 8cdbe6e2499cd1e61ca029c1cc17cd56e0523b30 on tmuxinator:master.

Coverage increased (+0.01%) to 99.12% when pulling 56fc2dfa4819cc417bb75aab3ac2e1ac2f0b25e9 on ethagnawl:385-introduce-tmux-validator into 8cdbe6e2499cd1e61ca029c1cc17cd56e0523b30 on tmuxinator:master.

@ethagnawl I think validate!'s current position is fine, given our current codebase.
An idea I was toying with was running "doctor" silently before start (or even others), which would produce warnings if any of the elements aren't met. The key difference between that implementation and the one here is that a warning wouldn't stop execution, but this implementation of using raise does (which I honestly prefer). Using raise in "doctor" would be counterproductive, since the current implementation of "doctor" gives the user a checklist of things to fix.
What were you thinking about for an alternate implementation?

An idea I was toying with was running "doctor" silently before start ...

Yeah, that's a great idea. There's definitely something to be fleshed out with
respect to the Doctor and Validator concepts. Maybe we create one module,
which does all of the above and accepts an argument which determines
whether it prints warning messages or raises exceptions? I'm open to
scrapping this feature if it makes sense to nail down that implementation,
rather than ship something that's half-baked. If not, we should definitely
continue that conversation in #457.

What were you thinking about for an alternate implementation?

I was thinking the validation could take place somewhere inside Tmuxinator.rb.
In my opinion, execution should halt if Tmux isn't available - that prevents us
from having to shoehorn validation into every possible entrypoint (... and now
that I just said that, I realize this current implementation doesn't cover
every scenario; e.g. Cli#stop). However, if that's too heavy handed, then
Cli#start is an obvious candidate for a scenario where validation should
happen. (Per my revelation, we'll need to map out each entrypoint which calls
out to tmux if we want to go with the individual entrypoint approach.)


Allow auto file size when size set to zero

Allow zero size field to represent auto size field. If the field size is 0 for file and string fields, the whole file will be read and copied to the buffer.
Signed-off-by: Mohamed ElGohary<EMAIL_ADDRESS>

Duplicated with #8


Documented instances of NominalDiffTime missing

In particular, NominalDiffTime is missning (at least) Fractional and Num instances:
*Data.Thyme> 2::NominalDiffTime

<interactive>:3:1:
    No instance for (Num NominalDiffTime) arising from the literal `2'
    In the expression: 2 :: NominalDiffTime
    In an equation for `it': it = 2 :: NominalDiffTime

*Data.Thyme> 2.5::NominalDiffTime

<interactive>:4:1:
    No instance for (Fractional NominalDiffTime)
      arising from the literal `2.5'
    In the expression: 2.5 :: NominalDiffTime
    In an equation for `it': it = 2.5 :: NominalDiffTime

The hackage docs say NominalDiffTime has Fractional and Num instance.
I'm running this on Ubuntu 14.04, and I've tried it on MacOSX Yosemite and seen the same results.
$ cabal list thyme
* thyme
    Synopsis: A faster time library
    Default available version: <IP_ADDRESS>
    Installed versions: <IP_ADDRESS>
    Homepage: https://github.com/liyang/thyme
    License:  BSD3

I plan to work around this with fromSeconds and toSeconds for now.

The hackage docs say NominalDiffTime has Fractional and Num instance.

You'll get those instances by explicitly importing Data.Thyme.Time. I'll leave this ticket open until I get around to adding a word or two to the documentation along those lines.

I plan to work around this with fromSeconds and toSeconds for now.

Yes, please do. Because the result of NominalDiffTime multiplied/divided by NominalDiffTime is definitely not a NominalDiffTime.

I'm realizing the correct thing to do is use (^/) from Data.VectorSpace.
One reason I prefer thyme over time is that it's built using many more of these abstractions.

Ah, so you're scaling a time difference. Yes, use (^/) or even (*^) or (^*). :)

Please add this to the docs.  Just lost 1.5 hours of my life.  :)

@jasonzoladz At the top of Data.Thyme.Clock, it says:

Num, Real, Fractional and RealFrac instances for DiffTime and NominalDiffTime are only available by importing Data.Thyme.Time. In their stead are instances of AdditiveGroup, HasBasis and VectorSpace, with Scalar DiffTime ≡ Scalar NominalDiffTime ≡ Rational.

I'll try to make it more obvious.


Block height should be shown with thousands separators everywhere

We should display block height everywhere with .toLocaleString(). They'll be especially hard to parse after block 1,000,000.

I wanted to take a stab at this issue b/c it seemed like a great beginner task for this codebase. However, block height appears to already use .toLocaleString() here:
https://github.com/helium/explorer/blob/97be667364832d4aad0580ca6fbb593a946aac9b/components/AppLayout/BlockHeight.js#L30
And displays with a comma here:

Are you referring to a different location?

hey, awesome! excited to have you contributing 😄
and yeah there are a few places where it already has the comma, but there are still some where it doesn't. the ones that comes to mind are:

on transaction pages, the blue link toward the top of the page:

in the block height column of the activity list:

there might be more as well but haven't looked super deeply :)


Interpolate a video with variable frame drops?

I have a video that was created on a machine which on several occasions started dropping frames due to overload.
This means that there's some portion of good video, which needs no processing (and I can cut it out using ffmpeg just fine) but then there's portions with what can best be described as "variable framerate" - frames changing semi-randomly, at an apparent rate of anything from 1 FPS to 30 FPS.
Is there any way to process it and "fill in the gaps" with butterflow? The frames themselves are seemingly accurately timed, simply with a variable amount of identical frames in between them.
I checked out the Example Usage, and it hints at using ffmpeg's "decimate" filter - however, it seems that decimate's expected use-case is removing duplicate frames at regular intervals, so it likely wouldn't be of much use here. Also, I am not sure that butterflow's algorithm can even handle a variable framerate, maybe it assumes a constant FPS and works off of that.
My tests so far have only ended up with what seems to be a single new interpolated frame:

[butterflow:INFO]: Final output frames: 3599 source, +1 interpolated, +0 duped, -0 dropped

Same with the -sm option - so it seems that with the video, as is, isn't a very good input for butterflow.
Any pointers, clues? Anybody with a similar issue? Thanks in advance!

You're right. BF performs all pre-calculations and rendering based on the assumption that all inputted videos are of a constant frame rate. There's no logic in the program to handle variable frame rates.

Aw shucks. Thanks for the message though!
How difficult do you think it would be to add? Not requesting a feature, more asking about the feasibility, how critical is this assumption for butterflow, if I were to dive into the code...

If you know the exact times/lengths of the gaps to be filled, I've had some mixed success using the "regions" feature to fill in variable gaps: https://github.com/dthpham/butterflow/blob/master/docs/Example-Usage.md#multiple-regions

Yep you’re going to have to step through your video frame by frame and use the regions feature to “fill in gaps”/make BF interpolate frames in specific areas in the video. But BF wouldn't know if the two frames it's interpolating between are identical so you're going to have to edit them out some way. Otherwise you're just going to get a lot of duplicate frames.

Handling variable frame rates would require a rewrite I think. One would have to interface with the FFMPEG API directly, to inspect time stamps, instead of assuming constant frame rate, and then interpolate and write frames based off of that info.

@tmladek If you're still looking for a solution, I think @dthpham is on the right track, though actually performing this might be more trouble than the footage is worth. If it is priceless family footage that cannot be replaced, maybe it will be worth it. If you could just recapture the footage, then maybe that would be the way to go. If the framerate is truly that mixed, you might want go look at using ffmpeg to split each frame individually and try to detect scene changes using the select method with a very very low threshold. You could also load the file into a VSE such as Blender. You can probably use others, but I'm familiar with this program and its VSE offers frame-perfect editing. You could then go through frame by frame and use that to filter out the duplicate frames and find the exact timings to put into butterflow regions. Or if accuracy isn't super important and you're using Windows, you can use Butterflow UI and its built in region editor to run butterflow against the footage. (Full disclosure I wrote that.)


metrics-httpclient test fix

Fixed test to catch IOException instead of just NoHttpResponseException since the test can throw a SocketException: Connection reset which would cause the test to fail

Thank you for the contribution.


preprocess.colors

File "/userdata/zhj/MMT-PSM-master/maskrcnn_benchmark/utils/visual.py", line 7, in
from preprocess.colors import get_colors
ModuleNotFoundError: No module named 'preprocess.colors';

File "/userdata/zhj/MMT-PSM-master/maskrcnn_benchmark/utils/visual.py", line 7, in from preprocess.colors import get_colors ModuleNotFoundError: No module named 'preprocess.colors';

first, make sure that your conda is setup properly with the right environment
for that, check that which conda, which pip and which python points to the
right path. From a clean conda env, this is what you need to do
conda create --name maskrcnn_benchmark
source activate maskrcnn_benchmark
this installs the right pip and dependencies for the fresh python
conda install ipython
maskrcnn_benchmark and coco api dependencies
pip install ninja yacs cython matplotlib
follow PyTorch installation in https://pytorch.org/get-started/locally/
we give the instructions for CUDA 9.0
conda install pytorch-nightly -c pytorch
install torchvision
cd ~/github
git clone https://github.com/pytorch/vision.git
cd vision
python setup.py install
install pycocotools
cd ~/github
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install
install PyTorch Detection
cd ~/github
git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
cd maskrcnn-benchmark
the following will install the lib with
symbolic links, so that you can modify
the files if you want and won't need to
re-build it
python setup.py build develop
or if you are on macOS
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build develop
https://pytorch.org/get-started/locally/# first, make sure that your conda is setup properly with the right environment
for that, check that which conda, which pip and which python points to the
right path. From a clean conda env, this is what you need to do
conda create --name maskrcnn_benchmark
source activate maskrcnn_benchmark
this installs the right pip and dependencies for the fresh python
conda install ipython
maskrcnn_benchmark and coco api dependencies
pip install ninja yacs cython matplotlib
follow PyTorch installation in https://pytorch.org/get-started/locally/
we give the instructions for CUDA 9.0
conda install pytorch-nightly -c pytorch
install torchvision
cd ~/github
git clone https://github.com/pytorch/vision.git
cd vision
python setup.py install
install pycocotools
cd ~/github
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
python setup.py build_ext install
install PyTorch Detection
cd ~/github
git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
cd maskrcnn-benchmark
the following will install the lib with
symbolic links, so that you can modify
the files if you want and won't need to
re-build it
python setup.py build develop
or if you are on macOS
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build develophttps://github.com/pytorch/vision.gitsetup.pyhttps://github.com/cocodataset/cocoapi.githttps://github.com/facebookresearch/maskrcnn-benchmark.git


Where is the data and config stored?

The readme file says Devices DB is in "data/devices.db". And in fact, config is in "data/habridge.config".  But, uh, I'm not seeing anything at all in the data folder - totally empty.  How is habridge even running?

The bridge has default parameters on startup. You have to add one device for the device.db file to be written and you have to save the config in the bridge control tab to write the config file.

Ah, yes indeed, saving a bridge config change for the first time creates data/habridge.config.  However, I have over 10 devices, and created a Device DB backup, but dont see any of this in the habridge or habridge/data folder.

The next question is, how are you starting your system? Those are relative paths to the process owner....

here is my habridge.service file, which resides in /home/pi/habridge
[Unit]
Description=HA Bridge
Wants=network.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge-4.1.2.jar

[Install]
WantedBy=multi-user.target

Well, that is because the relative data/device.db is in the root folder and your config is in /home/pi/habridge/data dir. That's what relative data paths mean. in your config you should set it to /home/pi/habridge/data/device.db.....

ah, I see now. Device db is in /data. I totally glossed over the field for setting the location using the bridge control tab. I was focused on the config setup via script. Thanks!


display cyrillic text

Hello. it's need to display some Russian/Ukrainian text. Are there any fonts for it? Thanks!

How is this relevant to the board itself?
I would suggest looking into LVGL library.


Mouse button clicks by itself on certain Linux distro

Running this simple application on Debian 11 or Ubuntu 21 happens that the mouse clicks by itself when it is moved on a menu item or a button. Instead the program run fine on Centos 7.
To Reproduce
Using Debian 11 fresh installation I tried on VirtualBox, VMware. On Ubuntu 21.10 using a phisical machine. In all cases the issue happens.
Both Self-contained and Framework-dependent package are affected.
Below the X configuration of the Debian machine running on VirtualBox:
X.Org X Server 1.20.11
X Protocol Version 11, Revision 0
Build Operating System: linux Debian
Current Operating System: Linux debian11 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.10.0-11-amd64 root=UUID=f1bba9df-a607-496e-931f-1f89956d6b31 ro quiet
Build Date: 16 December 2021  05:08:23PM
xorg-server 2:1.20.11-1+deb11u1 (https://www.debian.org/support)
Current version of pixman: 0.40.0

The simple program
The program has been wrote using VS2022, framework .NET 6.0 (6.0.2), Terminal.Gui 1.4.0
The issue occurs also on more complex programs.
using Terminal.Gui;
using NStack;

Application.Init();
var top = Application.Top;

// Creates the top-level window to show
var win = new Window("MyApp")
{
	X = 0,
	Y = 1, // Leave one row for the toplevel menu

	// By using Dim.Fill(), it will automatically resize without manual intervention
	Width = Dim.Fill(),
	Height = Dim.Fill()
};

top.Add(win);

// Creates a menubar, the item "New" has a help menu.
var menu = new MenuBar(new MenuBarItem[] {
			new MenuBarItem ("_File", new MenuItem [] {
				new MenuItem ("_New", "Creates new file", null),
				new MenuItem ("_Close", "",null),
				new MenuItem ("_Quit", "", () => { if (Quit ()) top.Running = false; })
			}),
			new MenuBarItem ("_Edit", new MenuItem [] {
				new MenuItem ("_Copy", "", null),
				new MenuItem ("C_ut", "", null),
				new MenuItem ("_Paste", "", null)
			})
		});
top.Add(menu);

static bool Quit()
{
	var n = MessageBox.Query(50, 7, "Quit Demo", "Are you sure you want to quit this demo?", "Yes", "No");
	return n == 0;
}

//Application.UseSystemConsole = true;  // without influence ???
Application.Run();
Application.Shutdown();

Screenshots
As you can see, the mouse button clicks by itself, I never clicked the mouse button.

Thanks
Many thanks to the creators and maintainers of this useful piece of software.
I'm at your disposal for any information.

Thanks for reporting this. Can you test with the current main branch, please. I already reported some issues in this my comment https://github.com/migueldeicaza/gui.cs/issues/1452#issuecomment-1047171622.
On WSL is worse. They change the behavior often.

Both my simple program and UICatalog, compiled using a clone of the current main branch have the same problem.
In addition, I confirm that the issue occurs on the mouse wheel also.
I tried on a fresh installed Debian 11 machine.
I attach an image captured from UICatalog - Scenario: Mouse. Also in this case I clicked the mouse once.

It seems the mouse repeats the last operation:

when I enter in the window without using the mouse then nothing happens
when I click the mouse button then it repeats the click when the mouse is moved
when I turn the mouse wheel up then it repeats the turn up when the mouse is moved
when I turn the mouse wheel down then it repeats the turn down when the mouse is moved

I hope this will help.

Forcing the use of the System Console the issue does not occur.
I tried on Debian 11 using both Terminal.Gui 1.4. and the clone of the current main branch.
Application.UseSystemConsole = true;  // now it works well on Debian 11

It may be something related to ncurses library.
This is what CursesDriver.cs ProcessInput receive when the mouse button clicks by itself
code: 256; wch: 409
ButtonState: Button1Clicked; ID: 0; X: 17; Y: 5; Z: 0
code: 256; wch: 409
ButtonState: Button1Clicked; ID: 0; X: 34; Y: 5; Z: 0
code: 256; wch: 409
ButtonState: Button1Clicked; ID: 0; X: 23; Y: 5; Z: 0

Yes, the issue is CursesDriver related. It trigger Button1Clicked on mouse moves. I think is due to the Termcap Library which has some different configurations.

Waiting for a definitive solution I added these lines to Program.cs:
        bool useSystemConsole = false;

        foreach (string arg in Args)
        {
            if (arg == "-usc")
                useSystemConsole = true;
        }

        // https://github.com/migueldeicaza/gui.cs/issues/1617
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
        {
            try
            {
                string release = File.ReadAllText("/etc/os-release");
                if (release.Contains("debian"))
                    useSystemConsole = true;
                if (release.Contains("ubuntu"))
                    useSystemConsole = true;
            }
            catch { }
        }

        Application.UseSystemConsole = useSystemConsole;
        Application.Init();

In this case you are using NetDriver and not CursesDriver. The solution is discover the magic sequence escape that will work correctly.

It seems the mouse repeats the last operation:

I confirm that the mouse in Debian repeats always the last operations. @tznind since you normally uses Debian do you have this issue? I have downloaded here (https://www.debian.org/download) and installed on VirtualBox. I think the Debian doesn't have the correct terminfo information. With Ubuntu installed on VirtualBox I don't have this issue.
On WSL there are others mouse issues on both Ubuntu and Debian distros, like button release event is never triggered.

@BDisp I have Ubuntu 20.04.3 LTS on my laptop (not virtual) and it doesn't exhibit this behavior.

Thanks @tznind for the information. Is a laptop only with Ubuntu or dual boot? With the virtual Ubuntu I don't have any problem too.

Thanks @tznind for the information. Is a laptop only with Ubuntu or dual boot? With the virtual Ubuntu I don't have any problem too.

Just Ubuntu only, its too old for Windows (but I have a soft spot for it so won't get a new one).  My main dev machine is Windows.
I've had it running MX Linux before and also had no problems with mouse in Terminal.gui but that was a while ago.

Closing as not-repo

I can reproduce this reliably on both Debian and Ubuntu, in both Gnome Terminal and xterm.  Once I've clicked the mouse button once, it forever sends click events.  It makes CursesDriver unusable for me.  How can I help debug this?

With the most recent Debian and Ubuntu versions indeed the mouse always repeat the last event used, if was a click will send forever clicks. Of course this only happens with the CursesDriver, using the -usc argument in the UICatalog or UseSystemConsole = true it work properly. I'm using the Debian 9.0 distro and the mouse move and wheel doesn't work. I'm also using the Ubuntu 20.04 distro where the mouse move and wheel works fine. As virtual machine I use the Linux Mint which work very well.
I understand we have to concern with different OS (Windows, Mac and Linux) and adapting the developing for them, but I'm upset about the the worry of adapt the development for each Linux version. In my opinion the ncurses library should work in the same way with all the Linux versions. I already tried to check what going on but the ncurses always receives the same code event, so it isn't a mapping from ncurses to Terminal.Gui issue but it's the Linux version issue. I'm convict that is a xterm database changed in each version but for what reason? If a Linux user want to change that it can do it after the installation, but do not come within the installation.

Do the affected distros have this issue with other ncurses programs?

I already tried to check what going on but the ncurses always receives the same code event

Do you mean that ncurses is getting 'bad' code events from the OS? If so is it possible that there is just a change in the structure of those events (e.g. similar to #2008)? Maybe we are expecting some bit code and instead getting different ones?

I'm convict that is a xterm database changed in each version but for what reason?

Could you explain more about this? It sounds like you have an idea about what is going on? What would a 'database change' look like? and why does it not affect other apps e.g. htop (unless it does!)
I think if we can establish clear definitions of the input code formats that we are seeing in different OS versions it wouldn't be out of the question to build in some 'mapping' classes that translate to the common representation for that version?

Do the affected distros have this issue with other ncurses programs?

I've read those that use native library with c or python do not have this issue. But the Terminal.Gui uses the libc, libncurses.dylib, libncursesw.so.6" or libncursesw.so.5, by loading the methods through delegates. First, if Mono is present CursesDriver will obtain the address of the symbols from a dlopen object in the Mono.dlsym, otherwise will obtain in the return CoreCLR.dlsym if is NetCore. If none exist it will obtain in the Linux.dlsym. But if it's only a Terminal.Gui issue, why with the Ubuntu 20.04 distro the mouse move works and in the Debian 90 distro don't. The only reason I see is the Debian works differently. I already read that the Debian team doesn't compile the ncurses with all the necessary arguments. The gpm is needed to compile with mouse library.

Do you mean that ncurses is getting 'bad' code events from the OS? If so is it possible that there is just a change in the structure of those events (e.g. similar to #2008)? Maybe we are expecting some bit code and instead getting different ones?

On Debian 9.0 distro mouse move isn't caught at all and the others events doesn't match the one the Ubuntu receives. With the latest of installable versions of Ubuntu and Debian the ncurses always return always the same code event. So I already removed them. No it's having nothing with the #2008, which we receive correct code an we remap to the correct output values. The issue is we are receiving wrong code from the ncurses itself and there are no way do decode them because they are inconsistent.

Could you explain more about this? It sounds like you have an idea about what is going on? What would a 'database change' look like? and why does it not affect other apps e.g. htop (unless it does!)

I mean about the Termcap and Termunfo databases where can be configured soe keys, mouse and others information on how the terminal will respond to the commands. I don't know on what language htop is developed, but it's with native C the ncurses works well. I think they uses c library that has a correct of a compiled ncurses. But I'm not an expert on Linux. I only starting learning and understanding some ncurses methods with the Terminal.Gui. Perhaps some of the ncurses methods or structs may being badly created and binding in the Terminal.Gui, but in that case it also work badly with all the Linux versions.

I think if we can establish clear definitions of the input code formats that we are seeing in different OS versions it wouldn't be out of the question to build in some 'mapping' classes that translate to the common representation for that version?

I think we can't establish clear definitions of the input code formats that we are seeing in different OS versions without mapping them to a common representation that the Terminal.Gui cans process them.

Thanks for such a deep analysis.  Sounds like quite a challenge.  But also that there might be a solution involving picking the correct library version or indicating to the developer/user that they are running against a dependency that is missing required compile options.
Should we reopen this issue or create a new one do you think?
I get that this is really a problem with distros and ncurses compilation versions but it would be nice if we could at least detect at runtime the issue and either shut off the mouse completely or otherwise indicate to programmer that a dependency is missing/misconfigured.
We could also just write some docs on how to get the right dependency installed on these newer distros if thats a thing that's reasonable to do.

I agree. The docs is up to you :-). I'll continuous investigating this because I think the Debian and Ubuntu teams won't really broken the mouse features on terminals. I think you can reopen this issue.

Thankful to this response from @DHowett in https://github.com/microsoft/terminal/issues/10321#issuecomment-1295928230, I already know how to fix this issue.


ActionController::InvalidAuthenticityToken: ActionController::InvalidAuthenticityToken

View details in Rollbar: https://rollbar.com/trystant/BOW/items/445/

ActionController::InvalidAuthenticityToken: ActionController::InvalidAuthenticityToken
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/request_forgery_protection.rb", line 181, in handle_unverified_request
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/request_forgery_protection.rb", line 209, in handle_unverified_request
  File "/app/vendor/bundle/ruby/2.3.0/gems/devise-3.5.6/lib/devise/controllers/helpers.rb", line 257, in handle_unverified_request
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/request_forgery_protection.rb", line 204, in verify_authenticity_token
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 432, in block in make_lambda
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 164, in block in halting
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 504, in block in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 504, in each
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 504, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 92, in __run_callbacks__
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 778, in _run_process_action_callbacks
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 81, in run_callbacks
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/abstract_controller/callbacks.rb", line 19, in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/rescue.rb", line 29, in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb", line 32, in block in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/notifications.rb", line 164, in block in instrument
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/notifications/instrumenter.rb", line 20, in instrument
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/notifications.rb", line 164, in instrument
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb", line 30, in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/params_wrapper.rb", line 250, in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/searchkick-1.2.1/lib/searchkick/logging.rb", line 153, in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.6/lib/active_record/railties/controller_runtime.rb", line 18, in process_action
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/abstract_controller/base.rb", line 137, in process
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionview-4.2.6/lib/action_view/rendering.rb", line 30, in process
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal.rb", line 196, in dispatch
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal/rack_delegation.rb", line 13, in dispatch
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_controller/metal.rb", line 237, in block in action
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb", line 74, in dispatch
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb", line 43, in serve
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/journey/router.rb", line 43, in block in serve
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/journey/router.rb", line 30, in each
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/journey/router.rb", line 30, in serve
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb", line 817, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-pjax-0.8.0/lib/rack/pjax.rb", line 12, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-attack-4.4.1/lib/rack/attack.rb", line 107, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/bullet-5.0.0/lib/bullet/rack.rb", line 10, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/warden-1.2.6/lib/warden/manager.rb", line 35, in block in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/warden-1.2.6/lib/warden/manager.rb", line 34, in catch
  File "/app/vendor/bundle/ruby/2.3.0/gems/warden-1.2.6/lib/warden/manager.rb", line 34, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/etag.rb", line 24, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/conditionalget.rb", line 38, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb", line 13, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/remotipart-1.2.1/lib/remotipart/middleware.rb", line 27, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/params_parser.rb", line 27, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/flash.rb", line 260, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb", line 225, in context
  File "/app/vendor/bundle/ruby/2.3.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb", line 220, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/cookies.rb", line 560, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.6/lib/active_record/query_cache.rb", line 36, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb", line 653, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/callbacks.rb", line 29, in block in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 88, in __run_callbacks__
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 778, in _run_call_callbacks
  File "/app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/callbacks.rb", line 81, in run_callbacks
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch/middleware/callbacks.rb", line 27, in call
  File "/app/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.6/lib/action_dispatch

This is also an error that occurs when things are working as planned.


fix #9 by using LF line-endings

fixes #9
After merging this in, to actually see the fixed line-endings in your working tree, you'll need to clear out your working directory, and then restore everything again by doing this:
(N.B. this will clear out any uncommitted changes you have on your branch).
git rm -r ./* && git reset --hard

Then if you open bin/index.js you should see that the line-endings are just LF rather than CR+LF. I tested this in Notepad++ (View > Show Symbol > Show End of Line).

Thank you again for this -- I'll test it on Windows once and merge 🤝
This was a great article about the topic: https://www.aleksandrhovhannisyan.com/blog/crlf-vs-lf-normalizing-line-endings-in-git/

Intending to merge/fix this problem in the coming month 🤞

I'm hoping to catch up on updating all my repositories this winter 😅

😓  oh it's been busy years for me ... hoping to get back to cleaning my less-frequently-used-by-me repositories in 2025 🤞
Thank you again for the PR - it's not forgotten 🙇♂ ♥


Slides from array

Which OS ?
iOS and Android
Version
Which versions are you using:

react-native-swiper 1.5.13
react-native v0.54

Expected behaviour
If i pass array of components i expect to have as much slides as there are componets.
Actual behaviour
I get one slide with all components rendered there.
How to reproduce it>
To help us, please fork this component, modify one example in examples folder to reproduce your issue and include link here.
Steps to reproduce
You can just create this simple code snipet:
`<Swiper
key={slideIndex}
height={0}
ref={(ref) => this.swiper = ref}
loop={false}
index={slideIndex}
showsButtons={false}
showsPagination={false}
scrollEnabled={true}
bounces={false} >
        {[1, 2, 3 ,4].map(data => {
          return <View><Text>{data}</Text></View>
        })}

      </Swiper>`

Hi!
@kenobi91 did you solve that problem?

Hi
@SmirnovW, yes problem i solved. I just extracted all slides in one rendr function that returnes array and it works now. I think problem was that i had some default slides and then function that adds dinimic ones.

@kenobi91 you sir, saved a ton of my hours and nerve cells! Many thanks!!! 👍

Glad to help :)

Hi, I am having a similar issue which make Swiper behave unpredictable.
`private buildSlides(): Element {
const slides = [];
this.state.questions.forEach(question => {
slides.push(
<View key = { question.getId() } style = { styles.slide1 }>
<Text style = { styles.text }>{ question.getText() }

);
});
slides.push(
<View key = { "welcome" }>
<Text style = { styles.text }> Welcome to App
<Text style = { styles.text }> We would like to ask you a few questions in order to know your interest and fit your profile.

);
return slides;
}
`
Slider jumps from first to last slide and dots dont move.


Better camera

Right now we are reusing canvas-orbit-camera, which is OK, but we could really be doing things much better.  At minimum we should be doing some kind of filtering on camera motion and also sampling inputs at a higher rate.
One way this camera could work is that it could define a regl command and then set up the view/projection matrices as props.  Here is a sketch of how this interface might work:
function Camera () {
   // ... matrices, properties, configuration
}

Camera.prototype.setup = regl({
  context: {
    view: function (context, props) {
       // update camera view here
    },
    eye: function () {
      // update camera eye
    },
    inverseView: function () {
      // compute inverse view
    }
  }
})

// then to use the camera, you'd just do:
regl.frame(() => {
   camera.setup(() => {
      // now the view/projection matrices are set in the context
   })
})

Also, someone pointed out on reddit that with the current camera, scrolling is really slow on big screen resolutions. Our new camera should take this into account.

Current work in progress solution: regl-camera

Closing this issue.  Further discussion can happen in regl-camera.


Create version-sweeper workflow YML file

Summary
Create version-sweeper workflow YML file to expose .NET version sweeper features.

Automated issue creation when *proj/*sln files are targeting non-LTS (or current) versions, labeled by:

dotnet-target-version (will be created automatically)

This is configurable and the configurations bits are detailed here: https://github.com/dotnet/versionsweeper#configure-action
This action can also be manually ran through the Actions tab

Relates to dotnet/docs#22271 and dotnet/docs#22931

@IEvangelist I too have a samples folder that would need to be excluded. It's at dotnet-desktop-guide/samples/snippets

@IEvangelist David Pine FTE I too have a samples folder that would need to be excluded. It's at dotnet-desktop-guide/samples/snippets

Hi @adegeo - see https://github.com/dotnet/docs-desktop/pull/215


Provision Metabase in Production

This PR provisions Metabase within the production environment.  Because the production environment uses an Elastic Premium service plan for the function apps, a separate service plan is required so that Metabase can be provisioned.  The Elastic Premium option is only available for Function Apps.

At this time, we are going to have a metabase instance for both test and prod - each with its own connection to the respective database.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-yml-archive-non-versioning-archive/pull/229 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-yml-archive-non-versioning-archive.git

Docs Build status updates of commit 85f3398:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

docs/TOC.yml
:white_check_mark:Succeeded
View

docs/index.yml
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-1.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-2.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-3.yml
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/sql-database-engine.png
:white_check_mark:Succeeded

docs/to-be-archive/level2/article3-2-1.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-2.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-3.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


[Bug]  Storage issue : No mount found

Description of the bug
Hello,
I'm running dashdot in a container and I have an issue with the storage graph.
I'm using latest image.
volumes:
  - /:/mnt/host:ro

root@SERVER:~# docker exec dashdot df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /
tmpfs                    65536         0     65536   0% /dev
tmpfs                  4046564         0   4046564   0% /sys/fs/cgroup
shm                      65536         0     65536   0% /dev/shm
/dev/md0               2385528   1553288    713456  69% /mnt/host
tmpfs                  4046564         0   4046564   0% /mnt/host/sys/fs/cgroup
devtmpfs               4042740         0   4042740   0% /mnt/host/proc/bus/usb
devtmpfs               4042740         0   4042740   0% /mnt/host/dev
tmpfs                  4046564<PHONE_NUMBER>   0% /mnt/host/dev/shm
tmpfs<PHONE_NUMBER>         0<PHONE_NUMBER>   0% /mnt/host/dev/virtualization
tmpfs                  4046564     19940   4026624   0% /mnt/host/run
tmpfs                   809316         0    809316   0% /mnt/host/run/user/196791
tmpfs                  4046564      2148   4044416   0% /mnt/host/tmp
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/docker/#snapshot
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/homes/#snapshot
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/SNAPSHOTS/#snapshot
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/surveillance/#snapshot
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/web/#snapshot
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/web_packages/#snapshot
/dev/loop0            15591832     57492  15415556   0% /mnt/host/volume1/@accountdb/@accountcache
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/@docker
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/@docker/btrfs
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /mnt/host/volume1/@docker/btrfs/subvolumes/8b3cd15c8f8e739167e6809e590f76e0126ed337c92851467851b8d8ff730661
tmpfs                    65536         0     65536   0% /mnt/host/volume1/@docker/btrfs/subvolumes/8b3cd15c8f8e739167e6809e590f76e0126ed337c92851467851b8d8ff730661/dev
shm                      65536         0     65536   0% /mnt/host/volume1/@docker/btrfs/subvolumes/8b3cd15c8f8e739167e6809e590f76e0126ed337c92851467851b8d8ff730661/dev/shmdf: /mnt/host/volume1/DESKTOP\040BACKUP/#snapshot: No such file or directory
df: /mnt/host/volume1/Microsoft\040OneDrive/#snapshot: No such file or directory
df: /mnt/host/volume1/SERVER\040BACKUP/#snapshot: No such file or directory
df: /mnt/host/volume1/SFTP\040Folder/#snapshot: No such file or directory
df: /mnt/host/volume1/Share\040Folder/#snapshot: No such file or directory
df: /mnt/host/volume1/Storage\040Reports/#snapshot: No such file or directory
df: /mnt/host/volume1/Sync\040DESKTOP\040DATA/#snapshot: No such file or directory
tmpfs                  4046564         0   4046564   0% /mnt/host/volume1/@docker/btrfs/subvolumes/8b3cd15c8f8e739167e6809e590f76e0126ed337c92851467851b8d8ff730661/sys/fs/cgroup
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /etc/resolv.conf
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /etc/hostname
/dev/mapper/cachedev_0
5621472524<PHONE_NUMBER><PHONE_NUMBER>  43% /etc/hosts
Could you please help me to fix it ?
Thank you
How to reproduce
No response
Relevant log output
No response
Info output of dashdot cli
root@SERVER:~# docker exec dashdot yarn cli info
INFO
=========
Yarn: 3.7.0
Node: v20.11.0
Dash: 5.8.3

Cwd: /app
Hash: f7ac2728b89a6c75502c9c736c46a94ff386889b
Platform: Linux dashdot 3.10.108 #69057 SMP Fri Jan 12 16:59:54 CST 2024 x86_64 Linux
Docker image: base
In Docker: true
In Docker (env): true
In Podman: false

What browsers are you seeing the problem on?
Microsoft Edge
Where is your instance running?
Linux Server
Additional context
Using Portainer within Container Manager on Synology NAS

Hello there! Unfortunately, Synology is not a supported system and I can't help you with that problem, as I don't have a machine running it to get it working. There is a task already open for Synology (#938), so I will close this one for now. Please follow the other one to get updates on the progress.


fix(ci): disable static linking of openssl

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
Openssl static library does not ship in our release build environment (via dnf package repository). We need to build it from source and configure it. This can be done in a separate PR. Will just let it be dynamically compiled, and change backwards compat tests to always build from source first.

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added test labels as necessary. See details.
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[ ] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

Superceded by https://github.com/risingwavelabs/risingwave/pull/18689


Add Pyroscope Adhoc blog post

This is a blog post that we should publish alongside (or shortly after) we release Pyroscope adhoc.. Needs a bunch of gifs / images but definitely looking for feedback here. Trying to find a good balance between simplifying and also making clear the most. common use cases for adhoc mode

We should add this back in once we support pprof
Uploading Alternative Flamegraph formats (i.e. pprof)#
If you run:
pyroscope server
And go to port :4040, you will see a web interface where you can drag and drop flamegraphs into the UI and interact with them on the page.
If you’ve using profiling before, no matter what tool you were using you likely have some stray flamegraph files floating around...
Pyroscope adhoc mode allows you to both view and store those profiles in a centralized place so you can analyze them and compare them to future profiles!
Simply choose the “upload” tab and either select or drag-an-drop a profile [supported formats](documentation for adhoc) onto the page.
[ Gif of Drag and drop ]


Exception when an interrupt controller is in a hierarchy

PYNQ version (e.g. v2.6): 3.0.1
Board name (e.g. Pynq-Z2): Ultra96V2

Description
When the interrupt controller is in a hierarchy, any attempt to access a component with an interrupt that goes through the interrupt controller results in a KeyError exception.
For example, in the following block design, the interrupt controller is named Controller, inside a hierarchy called InterruptController.

When the following Python code is run:
overlay = pynq.Overlay('regfile.bit')
rf_0 = overlay.RegFile_0

A KeyError exception is thrown:
Traceback (most recent call last):
  File "/home/xilinx/regfile/demo.py", line 5, in <module>
    rf_0 = overlay.RegFile_0
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py", line 363, in __getattr__
    return getattr(self._ip_map, key)
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py", line 904, in __getattr__
    driver = ipdescription["driver"](ipdescription)
  File "/home/xilinx/regfile/demo_config.py", line 79, in __init__
    super().__init__(description)
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/overlay.py", line 707, in __init__
    setattr(self, interrupt, Interrupt(details["fullpath"]))
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/interrupt.py", line 65, in __init__
    parent, self.number = _InterruptController.get_parent(
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/interrupt.py", line 152, in get_parent
    return _InterruptController.get_controller(parent), number
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/interrupt.py", line 122, in get_controller
    ret = _InterruptController(name)
  File "/usr/local/share/pynq-venv/lib/python3.10/site-packages/pynq/interrupt.py", line 177, in __init__
    PL.interrupt_controllers[name])
KeyError: 'InterruptController/Controller'

Root cause:
As far as I can tell, the root cause of the problem is that PL.interrupt_controllers is indexed by the instance name (e.g. InterruptController_Controller, while the lookup, coming from PL.intrrupt_pins, is done by the hierarchical name (e.g. InterruptController/Controller).
As long as the interrupt controller is in a hierarchy, the instance name and hierarchical name are the same and everything works.

Solved by #1434


X-Good-Date

https://github.com/googleapis/google-cloud-cpp/blob/d3f7d79d1c612b10cdba4e12294aa04c67fead0c/google/cloud/storage/signed_url_options.h#L164
Shouldn't this header be name "x-goog-date" instead ?

Indeed, that looks like a bug.


[Bug] dbt seed --full-refresh sql compilation error

Is this a new bug in dbt-snowflake?

[X] I believe this is a new bug in dbt-snowflake
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
I recently upgraded my dbt-snowflake from 1.4.0 -> 1.7.1 (also upgrading dbt-core) and noticed a failure when trying to run dbt seed --full-refresh
when looking into the query that runs in snowflake it generates the drop table statement as:
DROP TABLE IF EXISTS <DATABASE>.<SCHEMA>.<SEED_TABLE> .
The added period at the end of the statement is causing the error.
This is the dbt error
20:11:41    Database Error in seed dim_seed_table (seeds/dim_seed_table.csv)
  001003 (42000): SQL compilation error:
  syntax error line 1 at position 94 unexpected '<EOF>'.

Expected Behavior
The table should be dropped with a cascade (at least this is what is happening in 1.4.0).
Steps To Reproduce

create a seed table (csv format)
Only configs under dbt_project.yml are:

seed-paths: ["seeds"]
seeds:
  +tags:
    - "seeds"

run dbt seed --full-refresh

Relevant log output
No response
Environment
- OS: Ventura 13.5
- Python: 3.10.10
- dbt-core: 1.7.8
- dbt-snowflake:1.7.1

Additional Context
No response

Thanks for reaching out @bhagyasharma !
I was not able to replicate this bug report. Could you please try to replicate this again on your end?
If you are able to replicate it, can you share the relevant project files so that we can replicate it as well?
My attempt to replicate
Here are my project files:
seeds/dim_seed_table.csv
id
1

dbt_project.yml
name: "my_project"
version: "1.0.0"
config-version: 2
profile: "snowflake"

seed-paths: ["seeds"]
seeds:
  +tags:
    - "seeds"

I did the following steps:

Activated an environment using dbt-core and dbt-snowflake ~=1.4
Ran dbt seed --full-refresh twice
Activated an environment using dbt-core==1.7.8 and dbt-snowflake==1.7.1
Ran dbt seed --full-refresh twice

And here's my successful command:
$ dbt seed --full-refresh

22:42:44  Running with dbt=1.7.8
22:42:46  Registered adapter: snowflake=1.7.1
22:42:46  Found 1 seed, 0 sources, 0 exposures, 0 metrics, 430 macros, 0 groups, 0 semantic models
22:42:46
22:42:47  Concurrency: 10 threads (target='snowflake')
22:42:47
22:42:47  1 of 1 START seed file dbt_dbeatty.dim_seed_table .............................. [RUN]
22:42:49  1 of 1 OK loaded seed file dbt_dbeatty.dim_seed_table .......................... [CREATE 1 in 1.98s]
22:42:49
22:42:49  Finished running 1 seed in 0 hours 0 minutes and 3.64 seconds (3.64s).
22:42:49
22:42:49  Completed successfully
22:42:49
22:42:49  Done. PASS=1 WARN=0 ERROR=0 SKIP=0 TOTAL=1

Here's the statement that I saw in my logs/dbt.log file:
drop table if exists "ANALYTICS_DEV"."DBT_DBEATTY"."DIM_SEED_TABLE" cascade

@dbeatty10 appreciate the quick response! Some more details about the project:
We have 25 seeds running but for simplicity here is a basic one:
seeds/dim_event_type_id
EVENT_TYPE_ID,EVENT_TYPE
1,SALE
2,LISTING
3,RENTAL

dbt_project.yml
name: 'snowflake_real_estate'
version: '1.0.0'
config-version: 2

profile: 'snowflake_real_estate'

model-paths: ["models"]
analysis-paths: ["analyses"]
test-paths: ["tests"]
seed-paths: ["seeds"]
macro-paths: ["macros"]
snapshot-paths: ["snapshots"]

target-path: "target"
clean-targets:
  - "target"
  - "dbt_packages"

on-run-start:
  - '{{ extract_dict_val() }}'
  - '{{ flatten_keys_list() }}'
  - '{{ merge_dicts() }}'

seeds:
  +tags:
    - "seeds"

~/.dbt/profiles.yml
config:
  send_anonymous_usage_stats: False
  use_colors: True

snowflake_real_estate:
  target: prod
  outputs:
    prod:
        type: snowflake
        account: "{{ env_var('SNOWFLAKE_PROD_ACCOUNT') }}"
        database: ANALYTICS
        schema: PHYS_REAL_ESTATE
        warehouse: TRANSFORMING_M
        role: TRANSFORMER
        user: "{{ env_var('SNOWFLAKE_DBT_PROD_USERNAME') }}"
        password: "{{ env_var('SNOWFLAKE_DBT_PROD_PASSWORD') }}"
        threads: 4
        client_session_keep_alive: false

There is also a dependency of dbt_utils version 1.1.1
packages.yml
packages:
  - package: dbt-labs/dbt_utils
    version: 1.1.1

I was able to reproduce this, here is a portion of logs/dbt.log
09:39:04.186830 [debug] [Thread-1 (]: Began running node seed.snowflake_real_estate.dim_event_type_id
09:39:04.187227 [info ] [Thread-1 (]: 13 of 25 START seed file PHYS_REAL_ESTATE.dim_event_type_id .................... [RUN]
09:39:04.187674 [debug] [Thread-1 (]: Re-using an available connection from the pool (formerly seed.snowflake_real_estate.dim_cs_10_to_counties, now seed.snowflake_real_estate.dim_event_type_id)
09:39:04.187915 [debug] [Thread-1 (]: Began compiling node seed.snowflake_real_estate.dim_event_type_id
09:39:04.188185 [debug] [Thread-1 (]: Timing info for seed.snowflake_real_estate.dim_event_type_id (compile): 09:39:04.188064 => 09:39:04.188066
09:39:04.188410 [debug] [Thread-1 (]: Began executing node seed.snowflake_real_estate.dim_event_type_id
09:39:04.193023 [debug] [Thread-1 (]: Applying DROP to: "ANALYTICS"."PHYS_REAL_ESTATE"."DIM_EVENT_TYPE_ID"
09:39:04.193467 [info ] [Thread-1 (]: DROPPING "ANALYTICS"."PHYS_REAL_ESTATE"."DIM_EVENT_TYPE_ID".
09:39:04.193913 [debug] [Thread-1 (]: Using snowflake connection "seed.snowflake_real_estate.dim_event_type_id"
09:39:04.194154 [debug] [Thread-1 (]: On seed.snowflake_real_estate.dim_event_type_id: /* {"app": "dbt", "dbt_version": "1.7.8", "profile_name": "snowflake_real_estate", "target_name": "prod", "node_id": "seed.snowflake_real_estate.dim_event_type_id"} */
DROP TABLE IF EXISTS "ANALYTICS"."PHYS_REAL_ESTATE"."DIM_EVENT_TYPE_ID".
09:39:04.194375 [debug] [Thread-1 (]: Opening a new connection, currently in state closed

That should be all relevant files, let me know if I can provide any additional info. My teammate was also able to reproduce this on his local environment so it definitely has to be config related.

Thanks for providing that example @bhagyasharma !
I still wasn't able to get the same error as you. Could you try replicating it within a new project in order to isolate what is different between your environment and mine?
One possibility is if you have some special logic within your macros folder, like an override of the ref macro.

You are welcome @bhagyasharma


Fix resin wired keyfile

@imrehg regarding the first point, this PR should go along with https://github.com/resin-os/meta-resin/pull/850
About the second point, I don't think there are issues if we force this on all eth connections on the edison. This provides a stable MAC address, just as when reading the MAC address from a device's EEPROM. No difference on this point. But let's discuss it. @petrosagg , @shaunmulligan care to chime in please?


[SPARK-24345][SQL]Improve ParseError stop location when offending symbol is a token

In the case where the offending symbol is a CommonToken, this PR increases the accuracy of the start and stop origin by leveraging the start and stop index information from CommonToken.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

@ash211 As requested, implemented tests and created the associated ticket

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

cc @maropu @dilipbiswal

Test build #4669 has started for PR 21334 at commit e16ee34.

Test build #4669 has finished for PR 21334 at commit e16ee34.

This patch fails Scala style tests.
This patch merges cleanly.
This patch adds no public classes.

In the PR description, could you put the simple example that this pr could make more accurate in parser errors?

Test build #4684 has started for PR 21334 at commit 4603235.

Test build #4684 has finished for PR 21334 at commit 4603235.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged to master


Unhandled React exception after wallet recovery reached 100%

Detailed Description
TypeError: Cannot read property 'color' of undefined     at file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:318:961758     at rx (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:318:961872)     at fa (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:59532)     at xs (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:104763)     at Ic (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:90342)     at Pc (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:90267)     at wc (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:87607)     at file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:45937     at t.unstable_runWithPriority (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:50:3465)     at Kr (file:///Applications/Zap.app/Contents/Resources/app.asar/dist/renderer.js:42:45646)
Your Environment

Zap version: Zap 0.6.2-beta

Hi, thanks for reporting this. I believe it's a duplicate of https://github.com/LN-Zap/zap-desktop/issues/3258 and https://github.com/LN-Zap/zap-desktop/issues/3277 and should be fixed in master. Fix will be in the next release.


Aborted (core dumped)   io500: aiori-POSIX.c:769: POSIX_Xfer: Assertion `rc >= 0' failed.

Main branch Aborted (core dumped) on aarch64(arm64), OS: openEuler 22.03 LTS SP3
Build and run io500 with config-minimal.ini (no change)
[jenkins@lustre-tzifycl3-01 io500]$ ./prepare.sh && make
[jenkins@lustre-tzifycl3-01 io500]$ ./io500 config-minimal.ini
IO500 version io500-sc23_v1 (standard)
[RESULT]       ior-easy-write        0.113594 GiB/s : time 310.403 seconds
ERROR INVALID (src/main.c:437) Runtime of phase (101.183177) is below stonewall time. This shouldn't happen!
ERROR INVALID (src/main.c:443) Runtime is smaller than expected minimum runtime
[RESULT]    mdtest-easy-write       10.052514 kIOPS : time 101.183 seconds [INVALID]
[      ]            timestamp        0.000000 kIOPS : time 0.000 seconds
io500: aiori-POSIX.c:769: POSIX_Xfer: Assertion `rc >= 0' failed.
[lustre-tzifycl3-01:21666] *** Process received signal ***
[lustre-tzifycl3-01:21666] Signal: Aborted (6)
[lustre-tzifycl3-01:21666] Signal code:  (-6)
[lustre-tzifycl3-01:21666] [ 0] linux-vdso.so.1(__kernel_rt_sigreturn+0x0)[0xffffb936693c]
[lustre-tzifycl3-01:21666] [ 1] /usr/lib64/libc.so.6(+0x83dc0)[0xffffb902bdc0]
[lustre-tzifycl3-01:21666] [ 2] /usr/lib64/libc.so.6(raise+0x1c)[0xffffb8fe4f7c]
[lustre-tzifycl3-01:21666] [ 3] /usr/lib64/libc.so.6(abort+0xe4)[0xffffb8fd2d30]
[lustre-tzifycl3-01:21666] [ 4] /usr/lib64/libc.so.6(+0x368a8)[0xffffb8fde8a8]
[lustre-tzifycl3-01:21666] [ 5] /usr/lib64/libc.so.6(+0x3690c)[0xffffb8fde90c]
[lustre-tzifycl3-01:21666] [ 6] ./io500[0x441eac]
[lustre-tzifycl3-01:21666] [ 7] ./io500[0x427f44]
[lustre-tzifycl3-01:21666] [ 8] ./io500[0x429fe4]
[lustre-tzifycl3-01:21666] [ 9] ./io500[0x42b1a8]
[lustre-tzifycl3-01:21666] [10] ./io500[0x42bd74]
[lustre-tzifycl3-01:21666] [11] ./io500[0x40ad04]
[lustre-tzifycl3-01:21666] [12] ./io500[0x40b9e0]
[lustre-tzifycl3-01:21666] [13] ./io500[0x405f28]
[lustre-tzifycl3-01:21666] [14] /usr/lib64/libc.so.6(+0x2afc0)[0xffffb8fd2fc0]
[lustre-tzifycl3-01:21666] [15] /usr/lib64/libc.so.6(__libc_start_main+0x94)[0xffffb8fd3098]
[lustre-tzifycl3-01:21666] [16] ./io500[0x403d30]
[lustre-tzifycl3-01:21666] *** End of error message ***
Aborted (core dumped)

That source file is not in the repo. Is this from a current branch.

That source file is not in the repo. Is this from a current branch.

It it the main branch. Also try tag io500-sc23_v1, the same issue.

Hi, that error happened in ior-hard-write, can you check the file ior-hard-write.txt in the results directory? There will be an error message printed.

This

mdtest

Hi @JulianKunkel , thanks for your advice. It does really help me a  lot :-).
I reproduce another core dumped. Figure out it is stop at mdtest-hard-write through file result.txt. And found that there is error "No space left on device" in mdtest-hard-write.txt :
[jenkins@lustre-tzifycl3-01 2024.01.31-01.59.52]$ tail -n 4 result.txt

[mdtest-hard-write]
t_start         = 2024-01-31 02:12:12
exe             = ./mdtest --dataPacketType=timestamp -n 1000000 -t -w 3901 -e 3901 -P -G=508879435 -N 1 -F -d ./datafiles/2024.01.31-01.59.52/mdtest-hard -x ./results/2024.01.31-01.59.52/mdtest-hard.stonewall -C -Y -W 300 --saveRankPerformanceDetails=./results/2024.01.31-01.59.52/mdtest-hard-write.csv -a POSIX

[jenkins@lustre-tzifycl3-01 2024.01.31-01.59.52]$ tail mdtest-hard-write.txt -n 5
V-0: Rank   0 Line  2537 Shifting ranks by 1 for each phase.
1 tasks, 1000000 files
WARNING: write(20, 0x25385000, 3901) failed No space left on device
WARNING: task 0, partial write(), -1 of 3901 bytes at offset 0

After using a 100G disk and re-run io500, it can finish running now, thanks again.
[jenkins@lustre-tzifycl3-01 io500]$ ./io500 config-minimal.ini
IO500 version io500-sc23_v1 (standard)
[RESULT]       ior-easy-write        0.109713 GiB/s : time 310.753 seconds
ERROR INVALID (src/main.c:437) Runtime of phase (38.869370) is below stonewall time. This shouldn't happen!
ERROR INVALID (src/main.c:443) Runtime is smaller than expected minimum runtime
[RESULT]    mdtest-easy-write       26.472721 kIOPS : time 38.869 seconds [INVALID]
[      ]            timestamp        0.000000 kIOPS : time 0.000 seconds
[RESULT]       ior-hard-write        0.109988 GiB/s : time 310.931 seconds
ERROR INVALID (src/main.c:437) Runtime of phase (85.696574) is below stonewall time. This shouldn't happen!
ERROR INVALID (src/main.c:443) Runtime is smaller than expected minimum runtime
[RESULT]    mdtest-hard-write       11.814771 kIOPS : time 85.697 seconds [INVALID]
[RESULT]                 find      657.568252 kIOPS : time 3.046 seconds
[RESULT]        ior-easy-read        0.059481 GiB/s : time 573.174 seconds
[RESULT]     mdtest-easy-stat       75.835681 kIOPS : time 14.255 seconds
[RESULT]        ior-hard-read        0.056239 GiB/s : time 608.066 seconds
[RESULT]     mdtest-hard-stat       69.734729 kIOPS : time 15.415 seconds
[RESULT]   mdtest-easy-delete       36.384563 kIOPS : time 28.516 seconds
[RESULT]     mdtest-hard-read        0.795102 kIOPS : time 1258.745 seconds
[RESULT]   mdtest-hard-delete       26.937286 kIOPS : time 38.406 seconds
[SCORE ] Bandwidth 0.079709 GiB/s : IOPS 30.975811 kiops : TOTAL 1.571319 [INVALID]

The result files are stored in the directory: ./results/2024.01.30-05.00.52
[jenkins@lustre-tzifycl3-01 io500]$ git diff -- config-minimal.ini
diff --git a/config-minimal.ini b/config-minimal.ini
index 8ce4e57..506a098 100644
--- a/config-minimal.ini
+++ b/config-minimal.ini
@@ -1,2 +1,2 @@
 [global]
-datadir = ./datafiles
+datadir = /home/jenkins/tmp-mount/io500/datafiles
[jenkins@lustre-tzifycl3-01 io500]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           1.5G  8.8M  1.5G   1% /run
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda3        75G  3.3G   69G   5% /
tmpfs           3.8G     0  3.8G   0% /tmp
/dev/vda1       549M  6.5M  543M   2% /boot/efi
/dev/vdb         98G   32K   93G   1% /home/jenkins/tmp-mount
[jenkins@lustre-tzifycl3-01 io500]$

Hi, that error happened in ior-hard-write, can you check the file ior-hard-write.txt in the results directory? There will be an error message printed.

Hi @JulianKunkel , thanks for your advice. It does really help me a  lot :-).
I reproduce another core dumped. Figure out it is stop at mdtest-hard-write through file result.txt. And found that there is error "No space left on device" in mdtest-hard-write.txt :
[jenkins@lustre-tzifycl3-01 2024.01.31-01.59.52]$ tail -n 4 result.txt

[mdtest-hard-write]
t_start         = 2024-01-31 02:12:12
exe             = ./mdtest --dataPacketType=timestamp -n 1000000 -t -w 3901 -e 3901 -P -G=508879435 -N 1 -F -d ./datafiles/2024.01.31-01.59.52/mdtest-hard -x ./results/2024.01.31-01.59.52/mdtest-hard.stonewall -C -Y -W 300 --saveRankPerformanceDetails=./results/2024.01.31-01.59.52/mdtest-hard-write.csv -a POSIX

[jenkins@lustre-tzifycl3-01 2024.01.31-01.59.52]$ tail mdtest-hard-write.txt -n 5
V-0: Rank   0 Line  2537 Shifting ranks by 1 for each phase.
1 tasks, 1000000 files
WARNING: write(20, 0x25385000, 3901) failed No space left on device
WARNING: task 0, partial write(), -1 of 3901 bytes at offset 0

After using a 100G disk and re-run io500, it can finish running now, thanks again.
[jenkins@lustre-tzifycl3-01 io500]$ ./io500 config-minimal.ini
IO500 version io500-sc23_v1 (standard)
[RESULT]       ior-easy-write        0.109713 GiB/s : time 310.753 seconds
ERROR INVALID (src/main.c:437) Runtime of phase (38.869370) is below stonewall time. This shouldn't happen!
ERROR INVALID (src/main.c:443) Runtime is smaller than expected minimum runtime
[RESULT]    mdtest-easy-write       26.472721 kIOPS : time 38.869 seconds [INVALID]
[      ]            timestamp        0.000000 kIOPS : time 0.000 seconds
[RESULT]       ior-hard-write        0.109988 GiB/s : time 310.931 seconds
ERROR INVALID (src/main.c:437) Runtime of phase (85.696574) is below stonewall time. This shouldn't happen!


Fixed module exporting point.

Codecov Report

Merging #17 (d63b1b3) into main (1f303da) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #17   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         2    +1
  Lines           82        85    +3
=========================================
+ Hits            82        85    +3

Impacted Files
Coverage Δ

index.js
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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

Codecov Report

Merging #17 (d63b1b3) into main (1f303da) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##              main       #17   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         2    +1
  Lines           82        85    +3
=========================================
+ Hits            82        85    +3

Impacted Files
Coverage Δ

index.js
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


TLS: rename of spec and secrets' fields

This would make the fields more aligned with etcd docs and simplify the naming too.

@etcd-bot retest this please

fixed

lgtm


Fix Mobile View

Samsung S20 in vertical mode doesn't use the entire width and in horizontal mode, the Welcome Screen needs some padding at the top.

Desktop mode on mobile isn't quite right (at least Samsung S20 in horizontal) but the mobile view is good in horizontal and vertical.


Uncought exceptions in certain lifecycle methods are handled poorly

Description
Currently, in case of uncaught exception from render, updated and possibly some other methods, LitElement will
a) display stale UI until next update
b) "swallow" the exception from the console on next update (I guess one of the methods wraps previous update promise in an empty catch...?)
Those two combined can make some exceptions on quickly updating elements exceptionally hard to notice early, occasionally making the development more painful then it should be.
Acceptance criteria
I think that at very least LitElement should make sure that uncaught exceptions stay clearly visible in console at all times, but maybe considering more comprehensive approach to failed updates would also be in place? E.g. in analogous situation React will prefer killing the app from displaying stale UI to the user (not suggesting this in particular, just for contrast).

a) display stale UI until next update

This should generally not be the case. The error handling we do is primarily intended to make sure that the update cycle cannot be disrupted by an exception.

b) "swallow" the exception from the console on next update

This is unintentional, and we'll work on fixing it. We may elect to either use console.error or throw the error asynchronously, again, to try to minimize disruption from the error.
I also want to point out that to the next major version of LitElement, we're adding a dev/prod mode switch, and we'll consider making dev mode not do any error handling to surface errors more clearly during development.

Thanks for response.

b) "swallow" the exception from the console on next update

This is unintentional, and we'll work on fixing it. We may elect to either use console.error or throw the error asynchronously, again, to try to minimize > disruption from the error.

This makes me happy and was the most important part really.

a) display stale UI until next update

This should generally not be the case. The error handling we do is primarily intended to make sure that the update cycle cannot be disrupted by an exception.

Let me provide an example, because I don't think I was clear about this one. A component with this code:
render() {
    if (this.counter % 3 == 0) {
        throw new Error();
    }

    return html`
        ${this.counter}
    `;
}

connectedCallback() {
    super.connectedCallback();
    this.counter = 0;
    setInterval(() => {
        this.counter++;
    }, 500);
}

When this.counter == 3, the render method will fail, but the component doesn't do anything about it, and will keep displaying UI described by previous render call, when counter was equal 2, which is what I meant by "stale UI". For me risk of stale UI is a big problem.
I'm currently attempting to solve this in "user-land" by subclassing LitElement and dispatching events that can be handled to restore (or "nuke") the faulty piece of UI, i.e.
render() {
    try {
        return this.renderSafely();
    } catch (ex) {
        this.dispatchEvent(new CustomEvent('unhandled-exception', {detail: ex, composed: true, bubbles: true}))

        return null;
    }
}

but I find user-land solution sub-optimal because I have to rename all life cycle methods, and (more importantly) can't do that to components where I have no control of the code.
This is less important and I'm not sure if LitElement itself should do anything about such exceptions, or if so - what exactly, but I thought it was worth mentioning since I was already creating an issue.

After evaluating the current code, we've determined that squelching errors is important to ensure our contract that an error in one update cycle should not prevent the next update cycle from proceeding normally. However, we are going to make sure to re-fire any caught errors so devs have a chance to observe them. The plan is to do this asynchronously. This way you can implement window.onunhandledrejection to see the error.
If it's important to your use case to see any errors synchronously, you can dispatch an event as you've done. One thing I'd like to point out about this is that you can do this once in performUpdate rather than needing to override individual lifecycle methods. Something like this:
performUpdate() {
    try {
        return super.performUpdate();
    } catch (ex) {
        this.dispatchEvent(new CustomEvent('unhandled-exception', {detail: ex, composed: true, bubbles: true}))
        return null;
    }
}

Hope that helps.

Closing via https://github.com/Polymer/lit-html/pull/1372.


Test

Codecov Report

Merging #131 (a381fe3) into main (0f5f627) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #131   +/-   ##
=======================================
  Coverage   86.83%   86.83%
=======================================
  Files          13       13
  Lines         585      585
=======================================
  Hits          508      508
  Misses         77       77

Impacted Files
Coverage Δ

pyairtable/__init__.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Fix bug with $setSelection

Fixes an issue where you might apply an old (frozen) selection to $setSelection

Curious what was the issue


Bump crates.io for syn-update

May it be possible to forward the version on crates.io to one where syn-0.15 in a dependency of stdweb-derive and stdweb-internal-macros ? Those dependencies have already been updated from 0.14, the currently available version on crates.io still depends on 0.14, though. We could then bump syn, which needs bumping.

Yes, sorry! I will release a new version on crates.io soon!

Adding interest from the Debian packaging team, these are the last two crates that prevent us from updating syn to 0.15.

Apologies for the delay; 0.4.10 was just released!
Please let me know if there are any problems with it.


add ignore flag

Useful when boosting from a node that's in the splits of the podcast you're boosting, as it will always give "no_route" anyway.
Or I guess if you just don't like someone...

Seems pytest is failing on test_podcast_value_with_live:
https://github.com/valcanobacon/BoostCLI/runs/6873823473?check_suite_focus=true


One Call API 3.0

Welcome to Codecov :tada:
Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


Problem with the latest nock version.

In the package.json file, you have floating version of
"nock": "^7.2.2"
As of now, that fails trying to grab the latest version 7.7.1, which appears broken in npm somehow.
So I changed the dependency SPECIFY the earlier 7.22 version. (No ^)
"nock": "7.2.2",

There's a latest of nock which appears to be working fine. So i'll bump it up to 8.0


Expanding README with auth info

Thanks for the great Django module.
I've struggled today getting the authorisation to work with Salesforce, primarily because I'm not familiar with their API and docs. I found all the info I needed in this closed issue: https://github.com/django-salesforce/django-salesforce/issues/83
As per the suggestion there, I've added this info to the quick start in README. Hopefully it'll help other Djangonauts who don't know Salesforce well in the future.

Yes. It is not all. For CONSUMER_KEY and CONSUMER_SECRET can be written

You can create them on the web by
   Setup / App Setup / Create / Apps / Connected apps / New.
Fill any names into Basic information.
Click Enable OAuth Settings in the section API (Enable OAuth Settings).
Fill any unimportant Callback URL.
Select some OAuth Scopes from Available OAuth Scopes.
Save

The minimum is probably "Access and manage your data (api)".
I usually select only "Full access (full)", because I usually want to get the concievable maximum including the access to metadata and I have not tried anything less yet.
What is your latest experience?

Glad to accept this patch, but it would be great if you could clarify that the security code can be omitted from the password if the local IP address has been whitelisted (although certainly for new users, it may be worth circumventing the IP whitelist with the security token).

@hynekcer That looks like good additional info. By searching for some of the phrases you've used, I've found this page: https://help.salesforce.com/apex/HTViewHelpDoc?id=connected_app_create.htm , which has very detailed information. Would it be good to link to this from the README rather than duplicating Salesforce info?
My experience yesterday was that I was given access credentials for the sandbox system, but I hadn't realised that the password and token should be concatenated.
@philchristensen Thanks for the feedback. Happy to add that information about the possible omission of the security code - is there a link which the README could point people at for more info?

Yes, the link is very useful, otherwise there would be questions permanently. But it is too long, complicated and not all.
crib under the desk:

Salesforce web / Setup / App Setup / Create / Apps / Connected apps / New.
Click "Enable OAuth Settings" in API, then select "Access and manage your data (api)" from available OAuth Scopes.
Other red marked fields must be filled, but are not relevant for Django.

All test passed with this, without full access. Even Tooling API works good.
Everything for a project can work under restricted Salesforce user account if it has access to objects in your models. Introspection (inspectdb) doesn't require any permissions. Running tests for django_salesforce requires many permissions or Administrator account for sandbox.

@hynekcer Good information and crib sheet :+1: I've added this info.
@philchristensen I've added the info about whitelisting.

That whitelisting is really great.
I prefer to add details:
... if the local IP address has been whitelisted

in Security Controls / Network Access.

(I would like to add some authentication method without password and it will be able to run with minimal requirements one day.)

@hynekcer Cool. I've added that.
As I get more familiar with this module I can see that there's some space for some documentation. Had you ( @hynekcer @philchristensen ) got anywhere with that?

Thanks for the README fixes @jamescooke ; patches for any other documentation are always welcome!

Yes, thanks. I'm fully occupied by writing code that I can write documentation only for entirely new features. Then I must ask someone someone here to fix my English. I can answer some question to you or tell what is in development and that is better to prepare that text for the new version.


portfolio.start for a given year

Portfolio.start should actually be the value:  portfolio = portfolio - this.sim[i][j].spending + sumOfAdjustments;
This is in calcMarketGains(). After that line it should read:
this.sim[i][j].portfolio.start = portfolio;

Fixed in https://github.com/boknows/cFIREsim-open/commit/ed4d2aff30febd7fa9d842e3e33f807897d6d105


Onem 22983 api extension for drm initialization r2

Additional events exposed for OCDM - initialization flow with re-trying:
Example usage drmalreadyinitialized event:
registration:
{"jsonrpc": "2.0","id": 2, "method": "OCDM.1.register","params": { "event": "drmalreadyinitialized", "id" : "OCDM" }}
event:
{"jsonrpc":"2.0","method":"OCDM.drmalreadyinitialized","params":{"drm":"PlayReady"}}
... will be received one time after initialization failed with CDMi::CDMi_RESULT::CDMi_BUSY_CANNOT_INITIALIZE, to make additional actions by external process (release drm resources).
Practical use case is returning DRM_E_BRCM_PLATFORM_ALREADY_INITIALIZED on Broadcom platform)
Example usage drminitializationstatus event:
registration:
{"jsonrpc": "2.0","id": 2, "method": "OCDM.1.register","params": { "event": "drminitializationstatus", "id" : "OCDM" }}
events examples for PlayReady:
{"jsonrpc":"2.0","method":"OCDM.drminitializationstatus","params":{"status":"BUSY","drm":"PlayReady"}}
meaning: PlayReady is BUSY (Playready is used by another process, practical use case is returning DRM_E_BRCM_PLATFORM_ALREADY_INITIALIZED on Broadcom platform)"
{"jsonrpc":"2.0","method":"OCDM.drminitializationstatus","params":{"status":"SUCCESS","drm":"PlayReady"}}
meaning: PlayReady initialized after BUSY and re-trying (SUCCESS):
{"jsonrpc":"2.0","method":"OCDM.drminitializationstatus","params":{"status":"FAILED","drm":"PlayReady"}}
meaning: PlayReady not initialized after BUSY and re-trying (FAILED):
Depending on decision we could keep both events/APIs or keep only the single one.
It is safe to merge API without implementation (stubs provided for COMRPC Register/Unregister methods)
OCDM service implementation will be upstreamed after API synchronization.
After that need to change Register/Unregister methods to pure virtual to make it working.
Reference to the OCDM implementation: https://github.com/LibertyGlobal/rdkservices/pull/77
Contains also changes from: https://github.com/rdkcentral/ThunderInterfaces/pull/143 (small json API definition refactoring happens here)

Blackduck scan failure details
Summary: 0 violations, 0 files pending approval, 2 files pending identification.

Protex Server Path: /home/blackduck/github/ThunderInterfaces/147/rdkcentral/ThunderInterfaces

Commit: 911cdf66be482afc51e5fbaad402d6df0fddc376

Report detail: gist

WARNING: A Blackduck scan failure has been waived
A prior failure has been upvoted

Upvote reason: R2 - copyright is OK here

Commit: 911cdf66be482afc51e5fbaad402d6df0fddc376


Reloading dataset broken with init_model

Description
Dataset has a save_binary function, and the docstring for the data argument in Dataset suggests that is where you should input the path to this dataset, however I cannot get this to work correctly in combination with an init_model.
My goal here is to save both the dataset binary and the model so I can continue training later without reconstructing either the model or the dataset.
Reproducible example
Here is the setup, similar to my other bug report.
import numpy as np
import lightgbm as lgb

np.random.seed(0)
X, y = np.random.normal(size=(10_000, 20)), np.random.normal(size=(10_000,))

params = {
    "verbose": -1,
    "seed": 1,
    "num_iterations": 10,
    "bagging_freq": 1,
    "bagging_fraction": 0.5
}
dataset_bin = "dataset.bin"
model_txt = "model.txt"

# Train 10 trees
ds = lgb.Dataset(X, label=y, params=params)
model = lgb.train(params, train_set=ds)
ds.save_binary(dataset_bin)
model.save_model(model_txt)
del ds
del model

Loading and training without init_model goes fine:
ds = lgb.Dataset(data=dataset_bin, params=params)
model = lgb.train(params, train_set=ds) #, init_model=model_txt)
model.num_trees()
>>> 10

But then with init_model it fails -- the stack trace suggests that the init_model tries to read the dataset to create initial predictions but doesn't seem to be able to understand that it is a binary file:
ds = lgb.Dataset(data=dataset_bin, params=params)
model = lgb.train(params, train_set=ds, init_model=model_txt)
>>> [LightGBM] [Fatal] Unknown format of training data. Only CSV, TSV, and LibSVM (zero-based) formatted text files are supported.
LightGBMError                             Traceback (most recent call last)
/tmp/ipykernel_3260742/1081693646.py in <cell line: 27>()
     25 # Train 10 more trees
     26 ds = lgb.Dataset(data=dataset_bin, params=params)
---> 27 model = lgb.train(params, train_set=ds, init_model=model_txt)
     28 model.num_trees()

/dev/shm/<redacted>/engine.py in train(params, train_set, num_boost_round, valid_sets, valid_names, feval, init_model, feature_name, categorical_feature, keep_training_booster, callbacks)
    298     # construct booster
    299     try:
--> 300         booster = Booster(params=params, train_set=train_set)
    301         if is_valid_contain_train:
    302             booster.set_train_data_name(train_data_name)

/dev/shm/<redacted>/basic.py in __init__(self, params, train_set, model_file, model_str)
   3569                 )
   3570             # construct booster object
-> 3571             train_set.construct()
   3572             # copy the parameters from train_set
   3573             params.update(train_set.get_params())

/dev/shm/<redacted>/basic.py in construct(self)
   2457             else:
   2458                 # create train
-> 2459                 self._lazy_init(
   2460                     data=self.data,
   2461                     label=self.label,

/dev/shm/<redacted>/basic.py in _lazy_init(self, data, label, reference, weight, group, init_score, predictor, feature_name, categorical_feature, params, position)
   2078                     "The init_score will be overridden by the prediction of init_model."
   2079                 )
-> 2080             self._set_init_score_by_predictor(
   2081                 predictor=predictor, data=data, used_indices=None
   2082             )

/dev/shm/<redacted>/basic.py in _set_init_score_by_predictor(self, predictor, data, used_indices)
   1914         num_data = self.num_data()
   1915         if predictor is not None:
-> 1916             init_score: Union[np.ndarray, scipy.sparse.spmatrix] = predictor.predict(
   1917                 data=data, raw_score=True, data_has_header=data_has_header
   1918             )

/dev/shm/<redacted>/basic.py in predict(self, data, start_iteration, num_iteration, raw_score, pred_leaf, pred_contrib, data_has_header, validate_features)
   1046         if isinstance(data, (str, Path)):
   1047             with _TempFile() as f:
-> 1048                 _safe_call(
   1049                     _LIB.LGBM_BoosterPredictForFile(
   1050                         self._handle,

/dev/shm/<redacted>/basic.py in _safe_call(ret)
    235     """
    236     if ret != 0:
--> 237         raise LightGBMError(_LIB.LGBM_GetLastError().decode("utf-8"))
    238
    239

LightGBMError: Unknown format of training data. Only CSV, TSV, and LibSVM (zero-based) formatted text files are supported.

Environment info
LightGBM 4.0.0

Thanks for the excellent report! Sorry for the long delay in responding, this project is struggling from a lack of maintainer availability.
I was able to reproduce this on the most recent commit on master (https://github.com/microsoft/LightGBM/commit/5dfe7168d42898b66da3513eb8cab68ef2b23eeb), so it's still a problem.
Built the library like this (on an M2 mac, with Python 3.11.7)
cmake -B build -S .
cmake --build build --target _lightgbm -j4
sh build-python.sh install --precompile

And ran your example code. Saw exactly the same error you did.
I see the problem.
When you provide an init_model, LightGBM uses it to fill out initial scores to start boosting from.
https://github.com/microsoft/LightGBM/blob/5dfe7168d42898b66da3513eb8cab68ef2b23eeb/python-package/lightgbm/basic.py#L2042-L2046
That code in the Python package has logic like "if data is a string or pathlib.Path, call LGBM_BoosterPredictForFile()".
https://github.com/microsoft/LightGBM/blob/5dfe7168d42898b66da3513eb8cab68ef2b23eeb/python-package/lightgbm/basic.py#L1150-L1163
LGBM_BoosterPredictForFile() only works with text files of raw data (CSV, TSV, or LibSVM).
https://github.com/microsoft/LightGBM/blob/5dfe7168d42898b66da3513eb8cab68ef2b23eeb/src/io/parser.cpp#L263-L266
So this error comes from the fact that as of this writing, LightGBM's prediction routines (in Python, R, and C) do not support generating predictions on an already-constructed Dataset object.
#4546 is the main feature request tracking that work.
#5191 could also help in the Python package specifically, as an inefficient workaround.
In all those prior discussions about adding predict() support on the Dataset object, I'd never considered this specific case...thanks for bringing it to our attention, with a clear and reproducible example.

Until #4546 is resolved, the best workaround I can think of is to do something like the following:

save the model, the Dataset in binary format, and the raw training data
in the new process, load those all back into memory
create a new Dataset from the raw training data using the one you loaded from that binary file as a reference

Like this
import numpy as np
import lightgbm as lgb

np.random.seed(0)
X, y = np.random.normal(size=(10_000, 20)), np.random.normal(size=(10_000,))

params = {
    "verbose": -1,
    "seed": 1,
    "num_iterations": 10,
    "bagging_freq": 1,
    "bagging_fraction": 0.5
}
dataset_bin = "dataset.bin"
model_txt = "model.txt"

# save the raw training data
np.save("data.npy", X)
np.save("label.npy", y)

# train a model and save it
ds = lgb.Dataset(X, label=y, params=params)
model = lgb.train(params, train_set=ds)
model.save_model(model_txt)
model.num_trees()
# 10

# save the Dataset in binary format
ds.save_binary(dataset_bin)

# clear everything out of memory, to simulate stopping this
# process and starting a new one
del ds
del model
del X
del y

# load the Dataset and raw training data
X = np.load("data.npy")
y = np.load("label.npy")
ds = lgb.Dataset(data=dataset_bin, params=params)

# create a new Dataset, using the bin mappings from the original one
ds2 = lgb.Dataset(
    data=X,
    label=y,
    reference=ds
)

# continue training
model = lgb.train(params, train_set=ds2, init_model=model_txt)
model.num_trees()
# 20

That's inefficient relative to being able to just use a binary Dataset file and a model file together as in your original post. It comes with some undesirable characteristics:

have to spend CPU and disk space serializing / deserializing the raw data
in the training-continuation process, the raw data and 2 Dataset object copies of it have to all live in memory together at the same time

BUT... this should at least be faster than reconstructing a new Dataset from the raw data. By loading the already-created one and passing it through reference=, you are able to avoid needing to re-do the (potentially expensive) process of finding all the bin boundaries. In this pattern, LightGBM will take the bin boundaries for features from ds and just directly convert the raw data into that binned representation in ds2.

Realized today that there was an earlier issue documenting exactly the same thing (but in a different way, and with less details provided).
I've closed that in favor of keeping the discussion here.
see https://github.com/microsoft/LightGBM/issues/4311#issuecomment-2073900693


colmap2mvsnet.py issue

Got error, the invalid key in the end. How could this work since if you run to the end, i+1 will out of range?? Please advice. Thank u
for i in range(num_images):
zs = []
for p3d_id in images[i+1].point3D_ids:

Hi @mxgbs, images is a dict with image id starting from 1 instead of 0, you can see all the indexing are with +1. Maybe some of the images are discarded in sfm. A simple test is to try other scans.

maybe the simplest solution is to remove the missing images and run colmap again

Yes, this would be simpler, but it would lead to unnecessary time costs.


[NoncopyableGenerics] Synthesize conditional conformances

This PR takes care of a few pieces for NoncopyableGenerics:

When ~Copyable is written on the generic parameter of a struct or enum, then synthesize a conditional conformance to ~Copyable. This helps people skip a step in making some piece of generic stored data support noncopyable data.
Ensure that deinits do not appear in conditionally-copyable types.
Provide good fix-its for containment issues.

@swift-ci please smoke test

@swift-ci please test

@swift-ci please test