Colorize lines based on prefix

Some karaoke software uses a short prefix at the start of a line to determine colorization for songs with multiple singers, which would be nice to have in general but especially useful for large-cast musical numbers. Wikipedia details the example used by Walaoke:

[00:12.00]Line 1 lyrics
[00:17.20]F: Line 2 lyrics
[00:21.10]M: Line 3 lyrics
[00:24.00]Line 4 lyrics
[00:28.25]D: Line 5 lyrics
[00:29.02]Line 6 lyrics
Let's say we use blue for male, red for female and pink for Duet.

Line 1 will use the default color (blue) when no tag is found.
Line 2 lyrics start with red when F: is found.
Line 3 lyrics start with blue when M: is found.
Line 4 lyrics stays blue when no tag is found.
Line 5 lyrics start with pink when D: is found.
Line 6 lyrics stays pink when no tag is found.

Rather than hardcoding the colous to F, M and D, basing colorization on order of appearance would allow support much more complex arrangements. Some lyrics already insert an identifier using an extra pair of square brackets between the timestamp(s) and start of a part's first line as a more user-readable approach than [a-zA-Z0-9]: :
[00:59.00]I'm snappin' off your window lock
[01:02.00]Got no time to knock, I'm a dead girl walking
[01:08.00]M: Veronica? What are you doing in my room?
[01:11.50]F: Shh...
[01:13.00]Sorry, but I really had to wake you

[00:59.00]I'm snappin' off your window lock
[01:02.00]Got no time to knock, I'm a dead girl walking
[01:08.00]J: Veronica?  What are you doing in my room?
[01:11.50][Veronica]Shh...
[01:13.00]Sorry, but I really had to wake you

Would you envision this being configured globally? How consistent do these tend to be between tracks? I would have assume "not particularly"?
Alternatively, if there's a common standard for how these differing voices get labelled (e.g [Name]) then this could be done automatically to recognise all such lines and just assign random different colours to them (or colours from some configured list if that's a problem).

I pulled a sample from my library of concept albums, musical soundtracks and tracks with featuring vocalists, and from most to least common:

Parts aren't identified at all
Parts are identified consistently, with [Name] appearing between timestamp and lyric whenever that part takes over from another
Parts are identified consistently, with [Name] appearing between timestamp and lyrics on all lines
Parts are identified consistently, with [Name] appearing on the preceding line whenever that part takes over from another
Where a song has lead and supporting parts, supporting lines are in parentheses
Parts are identified inconsistently because section and part are identified simultaneously (e.g. [Verse 3: Name])
I didn't find anything using initials.

Thankfully 5) seems relatively uncommon, because I can't imagine it being safe to assume the parentheses are there to identify a subordinate part, and 6) is agravating but blessedly rare. 1) was overwhelmingly most common - easily more than the rest put together - but 2) through 4) were prevalent enough that I think it's probably safe to treat them as de-facto standards.
In terms of what the identifiers are, consistency between tracks is okay provided they're from the same album - consistency between albums is functionally nil. Now I think about it I'd personally be inclined to approach colour assignment on a per-track basis, with the default for the largest part and subsequent colours assigned to parts in descending size order.

https://github.com/marz1877/SyncedLyrics_lrcv2

Thankfully 5) seems relatively uncommon, because I can't imagine it being safe to assume the parentheses are there to identify a subordinate part, and 6) is agravating but blessedly rare. 1) was overwhelmingly most common - easily more than the rest put together - but 2) through 4) were prevalent enough that I think it's probably safe to treat them as de-facto standards.

I think option (2) is the most robust. Option (3) means that lines are no longer independent and ordering & formatting becomes rather more complicated. Option (4) would work but falls over as soon as there's a colon in the actual lyrics (which could easily be the case for lines like "and they said: 'quote'").
Realistically I think that probably means supporting option (2) for display, and possibly providing tools in the editor to help create that data or convert it from options 3/4/6.

Now I think about it I'd personally be inclined to approach colour assignment on a per-track basis, with the default for the largest part and subsequent colours assigned to parts in descending size order.

I assume by "colours assigned to parts in descending size order" you mean "lines not tagged with a voice have the usual colours and then lines that do have a voice use the configured colours with the voice that has the most lines using the first configured colours, and then less frequently-used voices using the later colours". Is that accurate? That seems like a sensible plan.
On that note though, how would this interact with the current notion of an "active" colour? Would we only use voice-based colours on the active line? On all lines and ignore the "active-ness" of the line (I assume not)? Have voice colours defined in pairs: Active & inactive, and then use the appropriate one? The last option seems the most sensible (but also the most complicated, predictably) and would neatly slot in with the current "default" and "active" colours being the colour-pair for "unvoiced" lines.

https://github.com/marz1877/SyncedLyrics_lrcv2

Personally, I think method 9 from this would make the most sense. Users specify all colours themselves similar to HTML tags, having a tag for main, highlight, and past. I think this would be the most flexible. I have made many synced lyrics myself with (Name) (or (Name1/Name2) etc.) tags, but these can appear multiple times per line (ad-libs or background vocals). This is why I think HTML-like tags would be so nice cos you'd just do something like turning
[02:11.43](Wendy) 복잡한 고민에 갇혀있지 않을래 ((Seulgi) 않을래)
into
[02:11.43]<main=#1F3386><highlight=#3555E0><past=#1F3386>복잡한 고민에 갇혀있지 않을래 <main=#996A25><highlight=#FFB23F><past=#996A25>(않을래)

I think option (2) is the most robust.
Having heard why I concur, particularly regards colons. Lines being independent is a fair point, but the way (2) is most widely used doesn't appear to provide for that - voices are usually declared only when they take over from another, rather than on every line.

I assume by [...] Is that accurate?
Whilst it could be that a set of lyrics are tagged such that a lead voice is untagged and every other line of any other voices is - I couldn't find any examples - I doubt it'd be possible to support both that and a functional implementation of (2) as-is. To do that, we'd need to switch back to the main voice on an untagged line, which precludes lines inheriting the last-used voice as (2) expects. The only other option would be to try to determine whether a set of lyrics is using (2) or only tagging lines in non-primary voices, and I can't think of a reliable way to do that programmatically.

If we assume (2) is being used in the "standard" way (or rather, the most common way I found and the one marz1877 appears to endorse) then any line that doesn't have a voice explicitly declared would be assigned the same as the line previous. Any other untagged lines would be right at the beginning of the song, before the first voice is declared - barring the above that's probably an error, and our safest bet in that case would be to assume they belong to the voice which is most common throughout the rest of the song. At that point all untagged lines are inheriting a voice, from either a previous line or a best guess based on the rest of the song; we can tally the lines assigned per voice, give the biggest part the usual colours, and work down the list from there.

how would this interact with the current notion of an "active" colour?
I'd actually completely forgotten about highlight colour. It's potentially much more invasive, but with the default highlight being white and inactive text being -28 lum relative to that perhaps it'd be worth considering using the defined colour as the highlight and deriving inactive lines from there? Perhaps we could use a similar approach to past lines and provide an option to blend the defined (highlight) colour into the background, perhaps to a configurable degree?

Personally, I think method 9 from this would make the most sense
A lot of lyrics already define parts using names per method 2, so if 9 is implemented I think it'd work best as something that overrides whatever colour we'd otherwise have selected when present - and though I could see some utility in "if the part identifier tag contains a hex colour code...", it's probably better implemented to explicitly require the specified [cr=#000000][/cr] syntax. I have to disagree on cribbing from HTML syntax - square brackets are already an established and widely-used part of the format, whereas the only place I've triangle brackets used so far is for per-word timing in marz1877's specification.

Whilst it could be that a set of lyrics are tagged such that a lead voice is untagged and every other line of any other voices is - I couldn't find any examples - I doubt it'd be possible to support both that and a functional implementation of (2) as-is.

Oh. I went back and realised I'd totally mis-read your initial comment. I'd understood "option 2" to mean "every single line that has a defined voice, is tagged/prefixed with the name of that voice". Which is simply not what you were saying. Sorry for the confusion.
In that case I'm less keen because that has similar problems to option 3 (ordering matters, lines can no longer be parsed independently). This may well not prove fatal but its a consideration. I can absolutely see how/why your actual option 2 (tagging when the voice changes) is more common though (you can even see it in some unsynced lyrics from places like Genius.com).

I have a few songs where two male singers are singing completely different lines over each other at the same time. Their ranges, reverb levels and pacing are so different that it's not too difficult to distinguish each part.  A karaoke example track is here, and the original of that track is here. Hopefully whatever solution is implemented isn't gender-based and allows for simultaneous lines.

I have a few songs where two male singers are singing completely different lines over each other at the same time. Their ranges, reverb levels and pacing are so different that it's not too difficult to distinguish each part. A karaoke example track is here, and the original of that track is here. Hopefully whatever solution is implemented isn't gender-based and allows for simultaneous lines.

Are you specifically looking for separate colouring? Are you aware that you can already set two lines to have the same timestamp and they'll highlight simultaneously? Lyrics often display this by surrounding one of the voice's lyrics in parenthesis.

Are you specifically looking for separate colouring?

Not necessarily, but that's one possible solution. For this song, I have each line prefaced with the singer's name in brackets, but that looks kind of awkward. Colors would be one possible solution. Allowing markup would be another, either by italicizing or bolding one line, setting them to different fonts, and/or allowing individual lines to be justified left or right. But mainly what I was saying was that if line colors were implement, I hope they won't be hardcoded to only blue and pink.

Are you aware that you can already set two lines to have the same timestamp and they'll highlight simultaneously?

Yeah, I found that out by accident, and it's a really cool feature. It works well for most of this song because the two sets of lyrics have matching rhythms -- the both usually come in on the downbeat and the lines are the same length (well, 2:1, but close enough).
There's one section that's a bit problematic because the lyrics are syncopated -- they still overlap, but start on and end on different beats. I don't see a way to address that all that well without implementing support for separate start and end timecodes for each line, so that each line can become highlighted or unhighlighted independently. Although to be honest, that seems like a big ask for something that most people won't use and really isn't critical. But hey, if I'm wrong and it's easy to implement an optional feature like that, it could be useful here.

But mainly what I was saying was that if line colors were implement, I hope they won't be hardcoded to only blue and pink.

Oh, yeah don't worry. As with all the colours they'd be configurable.

without implementing support for separate start and end timecodes for each line

Yeah, I agree that sounds like a lot of complication for little benefit. Thanks for being understanding of the effort involved! :)


Feature Request: Possible augments?

I was wondering if it would be possible to maybe add some augments to this, it works really well and i love being able to quickly start watching the newest episode of a show after searching it up, either by maybe using N or a blank input to just automatically play the first listing that's not flagged as played.
Alternatively, it would be cool if its at all possible to make something like puddler register itself as a remote player in emby so you could cast easily to it from the webui, jellyfin-mpv-shim exists but its a little hit and miss since emby and jellyfin have now drifted apart enough that its not very practical anymore.
would it be possible to implement the mpv nvidia image scaler shader? Found Here
Ive used it a bit with jellyfin and plex mpv shim and for older content it does make a little difference so having it as a toggleable setting would be nice.
Lastly, would it be possible to use lua scripts with the mpv player? with shim i used some scripts, but i cant for the life of me find out how to use scripts with libmpv like i can with standalone mpv. I use dynamic compressor, autocrop and webm.lua and while i can live without them they'd be great additions for me at least if I could implement them somehow, alternatively pass puddler to a standalone mpv player while still retaining the ability to update playback as emby's own external player gui just marks anything opened with an external player as watched. (on that not, might be worth sending watch history updates to emby every X seconds, where X is configurable?)

I did a quick test to build myself by defining config, true and load-scripts and built, and the mpv log did indicate that it actually loaded the scripts like it should but it caused a not implemented crash when trying to play a file.

Hi.
Hope I haven't kept you waiting for too long. Wanted to make myself a clear picture of the situation before making impossible promises.
Play the next unplayed item when only pressing enter.
Well that's at least how I understood your recommendation. So, now, when you are being prompted with an list of items, and you just press enter, the first unwatched item will be selected.
GLSL-Shaders/Lua-Scripts:
These are all pretty much, only mpv-config based stuff, so they go pretty much hand in hand.
I've added an option to load all mpv configs from locations like ~/.config/mpv/, which also includes the scripts directory.
This should take care of the lua-autocrop... situation.
The GLSL-Shader option also got their own cli-argument, since this may be used more individually.
Remote-for-Puddler/MPV:
Although this seems useful for some cases, it isn't worth the amount of work that would be required to achieve that.
I've no experience with websockets, and frankly, I wouldn't see any use in the remote feature any way.
As I understand it, it's mostly just for actual TV-clients so that you don't have to mess around with a remote.
It's late. If I misunderstood any of your requests, please clarify and allow me to catch up :)

Thanks for the quick (relatively) reply, i have some more suggestions/requests, Do you want me to add them here, or create a new issue? As for the points you answered,
Play the next unplayed item when only pressing enter.
You the nail on the head with that one, i might have explained it poorly but my problem was indeed as you assumed, a large list of episodes in a show, but i just wanted to play the next unplayed item.
Shaders/Scripts
Yep, its my understanding as well that these work based on config things, if it is possible I would love to suggest rather than loading from ~/.config/mpv (or in addition if its more practical), would it maybe be possible to define cwd as the folder it looks for configs in? I'm on windows myself so storing the configs uniquely for the player started from puddle in the same folder as the executable would be helpful to compartmentalise.
On the point of working as a remote
Yeah I get the idea of operating as a remote is most likely more work than its actually worth so i can definitively see there being very little use in adding it, its very much a nice to have putting puddler in a "listening" mode, using it from the CLI is plenty if it has the other functionality.

Follow up, I built the latest code and tried to play back an episode, and while mpv generates a log file, it puddler immediately crashes. with the following error. One point of note, though, my request about implementing cwd as a config location seems moot as it already loaded my config and defined scripts from cwd. If its not too much bother adding load_scripts to as a setting to load all scripts from the script folder automatically that'd be great.
Crash error.
thread 'main' panicked at 'not implemented', C:\Users\admin\.cargo\git\checkouts\mpv-rs-bb3b905ee5a8905a\08fadf5\src\mpv_enums.rs:117:56 note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
Additionally; Maybe set up actions to build dev commits but dont push them as releases so the executables could be grabbed quickly from the build artifacts would be nice.

One point of note, though, my request about implementing cwd as a config location seems moot as it already loaded my config and defined scripts from cwd. If its not too much bother adding load_scripts to as a setting to load all scripts from the script folder automatically that'd be great.

So, it loaded the scripts and configs in your current directory, but you have a seperate scripts folder, of which the content has not been loaded?

MPV loads correctly up until the point of which it gets the media url from puddler, then puddler crashes and mpv closes with puddler.
[   0.000][d][global] home path: '' -> 'C:\Users\admin\AppData\Roaming/mpv'
[   0.000][d][global] user path: '~~home/' -> 'C:\Users\admin\AppData\Roaming/mpv'
[   0.000][d][global] user path: '~~old_home/' -> ''

It seems to actually have fully loaded all the scripts from the scripts folders of the above 3 paths.

A "portable mode" is unrealistic and would make everything unnecessarily complicated.

as it already loaded my config and defined scripts from cwd

Are you running Puddler from within AppData?
Just overwriting mpv's default config location would be possible.
Considering the circumstances, it's only worth implementing that as a cli-argument.

Is the libmpv-2.dll, that you've downloaded, the newest one?

Im from Onedrive/Portables/puddler with the config files and scripts in there as i use it on multiple machines, its loading them just fine now but it also loaded from %appdata%/mpv, thus why i suggested a config setting for only loading from the folder puddler is executed from.
I just grabbed the latest libmpv-2.dll and its working well with the current release version, but puddler crashes with the latest commits that enable the loading of configs as soon as its instructed to play a file, but the mpv log indicates that its not mpv crashing.

Ok. So what's likely happening is that you have a script that outputs text or at least sends any kind of message to MPV.
The rust bindings library doesn't have those messages implemented. I've made an attempt to just ignore them.
Could you please try running cargo update and then build again?

Yep, that seems to have been the issue, works just fine upon updating and rebuilding it.

Good.
Check out --mpv-config-dir to tell mpv where to look for configuration files.
You may need to follow mpv's default folder names in order to make scripts and shaders work.
Please create a new issue / request for any unrelated recommendations.

Can confirm that its working.


Check for Serverless 3.x

Serverless 3.x introduced a breaking change for logging. Some customers are using the latest plugin with Serverless 2.x, so for that case, this PR would noop and print a warning.
 Created from JetBrains using CodeStream

@MattWhelan I've got a change that falls back to console if the new Serverless log interface isn't available. Having tested the new fallback with Serverless 2.x, the new version of this PR does now work in the old environment as well. (As a result, I've changed the messaging, noting that logging has changed, and directing which versions of the plugin or Serverless can be used if there are problems.)


SP5 WinUI: Error on SKXamlCanvas.OnUnloaded

Issue:

Open window
Pan and close window
System.NullReferenceException: 'Object reference not set to an instance of an object.'

// SKXamlCanvas.cs
private void OnUnloaded(object sender, RoutedEventArgs e)
{
    loadUnloadCounter--;
    if (loadUnloadCounter == 0)
    {
        base.XamlRoot.Changed -= OnXamlRootChanged; // <- base.XamlRoot is null
        FreeBitmap();
    }
}

If you just open window and close it immediately, this won't happen.
ScottPlot Version:
ScottPlot.WinUI 5.0.20
Code Sample:
<Window
    ...
    xmlns:SP5="using:ScottPlot.WinUI">
    <Grid>
        <SP5:WinUIPlot x:Name="WinUIPlot1" />
    </Grid>
</Window>

public MainWindow()
{
    InitializeComponent();

    WinUIPlot1.Plot.Add.Signal(Generate.Sin(51));
    WinUIPlot1.Plot.Add.Signal(Generate.Cos(51));
    WinUIPlot1.Refresh();
}

https://github.com/ScottPlot/ScottPlot/assets/80553357/d9f75d0b-20b2-4c28-a6c6-7c6e11d5da7e

If you just open window and close it immediately, this won't happen.

Thanks for pointing out this issue @hockerschwan! I'll ping @rafntor (the creator of the WinUI control) to see if they have any suggestions

This looks to me like an error outside ScottPlot, in SkiaSharp - here.
I dont see what we could do to fix it, unless maybe require a newer version of Skia - if that solves anything? (I notice the current code in Skia is changed so it could potentially help to bump that dependency .. but I am just guessing here)

This looks to me like an error outside ScottPlot, in SkiaSharp

Oof, that's not an easy fix from our end! Thanks so much for looking into this. Maybe it's worth opening an issue over at https://github.com/mono/SkiaSharp/issues ?

require a newer version of Skia

I'll ensure that ScottPlot continues to use the latest version of the SkiaSharp controls 👍
Thanks again for your feedback!

maybe require a newer version of Skia

It looks like we use wildcard versions to always build using the latest version published on NuGet 🤷
https://github.com/ScottPlot/ScottPlot/blob/ddfe61b5552509a5dafe1d90bc9a7f52e76712a7/src/ScottPlot5/ScottPlot5 Controls/ScottPlot.WinUI/ScottPlot.WinUI.csproj#L50
https://github.com/ScottPlot/ScottPlot/blob/ddfe61b5552509a5dafe1d90bc9a7f52e76712a7/src/ScottPlot5/ScottPlot5 Controls/ScottPlot.WinUI/ScottPlot.WinUI.csproj#L57
The good news is that when SkiaSharp fixes the bug, ScottPlot will get the fix automatically 😅


Send migration index to datastore when initial data are created

How can I send the migration index to the datastore during the creation of initial data?

See also here.

You do not have to. With https://github.com/OpenSlides/openslides-datastore-service/pull/145 I fixed a little mistake. This is the workflow now:

The manage service sends a single write request[1] to the empty datastore to fill it with initial data. It has a default migration index of -1, so this position will get MI -1.
The migrate-tool must run before the backend starts.[2] If it detects a -1, it will set the datastore's MI to the current MI and quits without doing any migrations. This can only be done by the backend since it is the single service knowing about actual migrations.

The second step currently enforces you to always include up-to-date initial-data with respect to the scheme. If you want to have a different migration index than "current" (-> -1), we have to include an option to set the MI. E.g. adding it as a param to the write request, which is only valid if the DS is empty, so it can just be used on the first write request.
This is more of a "how will the initial data be used". I can imagine that Emanuel maybe wants different initial data for different clients (or not? IDK), so in this case an up-to-data initial data makes sense.
[1] The single write request is essential, if you are just doing create events: within one position the datastore must be consistent, so if you split the initial into multiple write requests, the resulting positions itself may be not consistent. This will break the migrations.
[2] This is the part that will be needed to be done very differently in the productive setup than the development one. Since in the dev setup the backend is started as a singleton-service, I just added it to the entrypoint which works fine there: https://github.com/OpenSlides/openslides-backend/blob/master/dev/entrypoint.sh#L14

Ok, so for the moment I just always use an up-to-date initial-data file with migration_index -1 and I do not send any index so the datastore uses the default. We can change this later if @emanuelschuetze prefers the second way.

Ah the last comment was not up to date, right?

Right, I'll add a way to send an initial MI to the Datastore.

See https://github.com/OpenSlides/openslides-datastore-service/pull/147 and https://github.com/OpenSlides/OpenSlides/wiki/Datastore-Service#interface. I've added migration_index to the payload of write. It is only allowed when the DS is empty, so it is allowed on the first (successful) write request.

SO with this PR you can fix the MI of the initial data (as in https://github.com/OpenSlides/OpenSlides/pull/6205) and the initial data itself.


[Bug] to_anndata fails on a specific SOMA artifact

Describe the bug
When calling to_anndata on this specific artifact (link below), the following error is raised:
AttributeError: 'SparseNDArrayRead' object has no attribute 'to_numpy'
The issue seems specific to the obsm array (ingest.py:1280)
The artifact was generated by opening the pbmc-small.h5ad file that exists in the repo, converting it to Seurat and then back to SOMA.
To Reproduce
import tiledbsoma as soma
pbmc = soma.open("from_seurat_soma")
io.to_anndata(
    pbmc, measurement_name="RNA"
)

SOMA Artifact
Versions (please complete the following information):

TileDB-SOMA version: 1.2.1
Language and language version (e.g. Python 3.8, R 4.2.2): Python 3.10
OS (e.g. MacOS, Ubuntu Linux): MacOS X

Additional context
N/A

Fixed by #1246 which is in 1.2.2


kconfig: Error out in CI if Kconfig files reference undefined symbols

Add a new 'check-undef-kconfig' target to the top-level Makefile that
only succeeds if there are no references to undefined Kconfig symbols
within Kconfig files, using a scripts/ci/check-undef-kconfig.py helper
script.
The target fails if any references to undefined symbols are found, and
prints their locations.
Add a call to 'make check-undef-kconfig' early on in CI.
Example error:

Error: References to undefined Kconfig symbols found

BAR
===

- Referenced at Kconfig:12:

config FOO
      bool
      depends on BAR

- Referenced at Kconfig:16:

menu "menu"
      depends on BAR

CC @nashif @SebastianBoe

Codecov Report

Merging #8411 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #8411   +/-   ##
=======================================
  Coverage   64.61%   64.61%
=======================================
  Files         421      421
  Lines       40296    40296
  Branches     6803     6803
=======================================
  Hits        26037    26037
  Misses      11126    11126
  Partials     3133     3133

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 aa190cd...9e7bfdb. Read the comment docs.

@nashif
Fixed.
Doing a test build without the fix for the undefined reference to SOC_NRF52810 to check that it works.

Yep, seems to work.

recheck


✨ [Feature] Add Has, WhereHas, orWhereHas, DoesntHave , WhereDoesntHave, orWhereDoesntHave for Orm

Before feedback (在反馈之前)

[X] There are no features that I want to submit in Issues (当前 Issues 中没有我将要提交的新功能)

Describe Feature (描述功能)
Like:

https://laravel.com/docs/10.x/eloquent-relationships#querying-relationship-existence
https://laravel.com/docs/10.x/eloquent-relationships#querying-relationship-absence

There is a related PR: https://github.com/goravel/framework/pull/406, but there are some problems with it, you can check the comments for more information.

Hey there! I came across the closed PR and noticed it's a bit old—looks like a lot has changed in the code over the past 5 months. I'm still using it to get some ideas though. Thanks

Yes, the basic logic is good, but some problems need to be solved. You can make an investigation first.

is there any plans to add whereLike? https://laravel.com/docs/11.x/queries#additional-where-clauses

@darakanoit Yes, it's simple, welcome PR.


Week 3 Algorithmic Final

Score: /10   Graded By: Armaan Shamsaasef
Video: https://www.youtube.com/watch?v=nx_WzCntwNw
Deployed Github Pages: https://brianzhang2016.github.io/Brian-Individual/
Notes: https://brianzhang2016.github.io/Brian-Individual/pages/notes
Week 0 Review Ticket: https://github.com/PunarvasuS/PopcornCritics/issues/3
Week 1 Review Ticket: https://github.com/PunarvasuS/PopcornCritics/issues/22
Week 2 Review Ticket: https://github.com/PunarvasuS/PopcornCritics/issues/26
Github Pages Commits: https://github.com/BrianZhang2016/Brian-Individual/commits/gh-pages
Replit Commits: https://github.com/BrianZhang2016/Menu/commits/main
Replit Page: https://replit.com/@BrianZhang2016
Crossover Commits: https://github.com/deimie/individual/commits/main
Grading Akhil Nandhakumar       Score:
Video https://youtu.be/SJqbC-DlWFU

Score- 9.9/10
Just needed to show contributions in GitHub Insights. I feel that because you said in the video that you could not get IntelliJ running till later I can understand the commits not looking too good. At the end of the day, you did an amazing job and the score you got reflects this. Keep up the good work.

Grade For Ackil Nandakumar
Score 9.9/10
WOW!!!!

This video cannot possibly be better as it not only shows all the tasks but is well organized with timestamps which are really impressive. Your voice in the background also is very clear so following along with you is amazing. The only thing that you are missing is the code commits on your crossover Github Repo.


Cache

Add new option "cache" to volumes

Can one of the admins verify this patch?

The code has something wrong.


Documentation Rehaul

🗣 Description

Splits up the main README file into separate files, similar to the ScubaGear README
Simplifies the baseline file names
Change the OAuth scope list into a comma-separated list

💭 Motivation and context
Closes #306.
Closes #314.
Closes #283.

🧪 Testing
I clicked all the links in the new documentation files to ensure none were broken.
✅ Pre-approval checklist

[x] This PR has an informative and human-readable title.
[x] Changes are limited to a single goal - eschew scope creep!
[x] If applicable, All future TODOs are captured in issues, which are referenced in the PR description.
[x] The relevant issues PR resolves are linked preferably via closing keywords.
[x] All relevant type-of-change labels have been added.
[x] I have read and agree to the CONTRIBUTING.md document.
[x] These code changes follow cisagov code standards.
[x] All relevant repo and/or project documentation has been updated to reflect the changes in this PR.
[x] Tests have been added and/or modified to cover the changes in this PR.
[x] All new and existing tests pass.

✅ Pre-merge Checklist

[ ] This PR has been smoke tested to ensure main is in a functional state when this PR is merged.
[ ] Squash all commits into one PR level commit using the Squash and merge button.

✅ Post-merge Checklist

[ ] Delete the branch to clean up.
[ ] Close issues resolved by this PR if the closing keywords did not activate.

Hi Max (@mdueltgen), During the NARA pilot meeting, the person from NARA trying to get Scubagoggles installed unsuccessfully  tried Python 3.7.* (whatever our minimum is).  The problem was that the specific version of the pandas package (as defined in requirements.txt) was not available for the Python version.  Python version 3.7.* is obsolete (same is true really for Python 3.8 and 3.9 (maybe 3.10 as well)), as the current Python version is 3.12).  I don't really remember what version that was installed in that meeting to make progress, but I'm sure it was at least 3.9.

Quick heads up @mdueltgen @mitchelbaker-cisa, I'm going to be reverting the baseline markdown file name changes per David's recommendation so as to not cause merge conflicts with the other ~10 open PRs.


Reconfiguration to use network information from on-chain state

Read Network configuration that is used in the ActiveAuthority / NetworkAuthorityClient from the chain at reconfiguration time and when creating a new node. Currently when creating a new node, we read the information from the genesis config, but for new nodes joining the network after reconfiguration is enabled, they will have already registered themselves and so their network information will be available in a Move Object instead of the config.

I tried to manually turn on reconfiguration locally without any validator changes. It seems that the network would stuck after recreating the network based on the on-chain state network info (which should stay unchanged). Can you take a look? I think this should be reproducible if you have a end to end test that could manually recreate the network based on genesis on chain system state object.

This is done


Adds global binary encoder and fixes scope of mutable-global flag

Before, we denied mutable globals when mutable-global=false, when really
that flag is about import/export. This fixes the flag so that it
disables externalizing a mutable global. Non-exported mutable globals
are common as implenented by compilers such as Emscripten.
See https://github.com/emscripten-core/emscripten/blob/main/system%2Flib%2Fcompiler-rt%2Fstack_ops.S

thanks for the look folks


Block execution time metric

# HELP substrate_block_verification_and_import_time Time taken to verify and import blocks
# TYPE substrate_block_verification_and_import_time histogram
substrate_block_verification_and_import_time_bucket{le="0.005"} 0
substrate_block_verification_and_import_time_bucket{le="0.01"} 0
substrate_block_verification_and_import_time_bucket{le="0.025"} 0
substrate_block_verification_and_import_time_bucket{le="0.05"} 0
substrate_block_verification_and_import_time_bucket{le="0.1"} 0
substrate_block_verification_and_import_time_bucket{le="0.25"} 0
substrate_block_verification_and_import_time_bucket{le="0.5"} 0
substrate_block_verification_and_import_time_bucket{le="1"} 0
substrate_block_verification_and_import_time_bucket{le="2.5"} 0
substrate_block_verification_and_import_time_bucket{le="5"} 0
substrate_block_verification_and_import_time_bucket{le="10"} 0
substrate_block_verification_and_import_time_bucket{le="+Inf"} 0
substrate_block_verification_and_import_time_sum 0
substrate_block_verification_and_import_time_count 0


Release version 7.18.0 to Maven Central

@camunda-community-hub/devrel
Please release the staged version 7.18.0 to Maven Central.

@akeller Tried mentioning devrel in the comment above, but I somehow have the feeling that doesn't work.
Is there something I'm missing or was that mention above enough?

@camunda-community-hub/devrel can you have a look at this?

Released it now - should be on Maven Central any time soon. Sorry for the delay @rohwerj!


Add slip decoder to parser-slip-encoder

Add slip decoder to parser-slip-encoder
Add option to specify slip escape codes
Add optional start and start escape
Resolves #1608

I assume the breaking change is the new require structure?  Is there a cleaner way to handle this?

I just tried this and it works perfectly. Is there any way I can help to get this PR merged?

I'd definitely help with this, but I don't have write access to @doggkruse's branch...

Thanks for getting this merged!  I'm happy to update the docs for the website but not sure how to get started?


Jupyterlab api change in 4.0.0

I just tried this plugin with the latest alpha of jupyterlab-4.0.0a35 and it won't work. I had a similar issue with my jupyterlab-scenes plugin. It was mainly the metadata api of the cell model like used here:
https://github.com/deshaw/jupyterlab-execute-time/blob/ce61432e91719a176a73a16d69859186114f5541/src/ExecuteTimeWidget.ts#L154
For me, the change looked typically like this:

Hope this helps...

Thanks! We plan to upgrade in the near future. I would have thought it requires more to handle windowing (e.g. use tokens via https://github.com/jupyterlab/jupyterlab/pull/13639)

Looks like you were mostly right :) https://github.com/deshaw/jupyterlab-execute-time/pull/83


Local dev environment is broken after recent changes

Describe the bug
Local dev environment is broken
When you try to go to http://localhost:8080/console/shares, you will see this error:

How to Reproduce
When you try to go to http://localhost:8080/console/shares, you will see this error as shown in the screenshot

Expected behavior
No response
Your project
No response
Screenshots
No response
OS
Mac
Python version
3.8
AWS data.all version
2.2
Additional context
No response

Closing this issue as resolved in #967 - thanks for opening and contribution @anushka-singh @TejasRGitHub


What is CUDA graph mode?

I notice some references to CUDA graph mode in the Python runtime. I also read this issue that highlights that CUDA graph mode is not enabled for inflight batching. Can someone explain what this mode is, what it's advantages / disadvantages are? Thank you!

Here is a document https://developer.nvidia.com/blog/cuda-graphs/


Trying to improve odict performance

Odict setitem method is linearly searching if item is present in keys list, which significantly reduces performance on big dict

@artms interesting, can you rebase the PR and add a little more information to the commit message?

I'm gonna create new pull request, I deleted babel some time ago from my list of forked repositories


Question

Is there a way to bypass the game sync cooldown using this? If so then what do I do

There isn't a way to bypass it from the server side as far as I know, but I'd be happy to be proven wrong.


How can I leverage the default service account?

In the app engine Docs it says things like:

Cloud Client Libraries will automatically find and use the service account credentials.

Is that true for this environment? I need to be able to leverage the default service account in a Flex env GAE app to make a query to an API on app start up.

The Elixir libraries delegate to the Goth library for credential handling. Goth understands default account credentials (including those in the App Engine flexible environment) and will fetch them by default. See the "Making a Request" section in the readme of this repo for an example of using Goth to obtain credentials.

Strange I couldn't get it to work at all. If I don't provide config goth seems to just error on start up.


Log Tendermint's res.log property to the console if it exists

When we broadcast a transaction via TendermintQuerier#broadcastTx, we currently just return the transaction hash (via res.hash). That means that all the other properties of res are lost — including res.log, which may contain a useful error or other message.
This ticket is to log res.log to the console if it's truthy.

It's sort of a sad behavior that if there is a tendermint error, it shows up as a string in that response log versus raising.
I think we should consider having some kind of logic to help work around this. Otherwise, like in your case with the output proof did not verify error, it gets swallowed. Proposal:
// Should add more errors as we discover them
const knownErrors = [
  "proof did not verify",
  "is not a valid field element",
]

  async broadcastTx(params: Uint8Array) {
    const req = new BroadcastTxSyncRequest({ params });
    const { hash, log } = await this.client.broadcastTxSync(req);
    if (knownErrors.some(e => log.includes(e)) {
       throw new Error(log)
    }
    return hash;
  }

That sounds perfect. I'll add your proposal to the original ticket description so whoever takes it knows what to do with it.
Is is not a valid field element an actual error we might get from Tendermint?

I took that error from the source code for the verify step in Rust: https://github.com/penumbra-zone/penumbra/blob/main/crates/core/component/shielded-pool/src/output/proof.rs#L163


pinned memory: out of memory

setup -
wsl 2 * Ubuntu-22.04
built with cublas
Running streaming example with any number of n_gpu_layers offloading.
nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Thu_Nov_18_09:45:30_PST_2021 Cuda compilation tools, release 11.5, V11.5.119 Build cuda_11.5.r11.5/compiler.30672275_0
 WARNING: failed to allocate 512.00 MB of pinned memory: out of memory WARNING: failed to allocate 512.00 MB of pinned memory: out of memory AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 |  CUDA error 2 at /tmp/pip-install-dcpg9e3d/llama-cpp-python_0b20594a2c9f4aa6a0b4bdca1b250223/vendor/llama.cpp/ggml-cuda.cu:781: out of memory
also I checked and tried https://github.com/ggerganov/llama.cpp/issues/1230 with no luck

On Linux there is a nvidia-smi command to show how much VRAM memory is being used.
How much VRAM does your GPU have and what model size are you using? A rough rule of thumb is every 1B params needs 0.7GB of VRAM for full offload.

I faced this issue. Seems like it hit known WSL specific limitation mentioned in the Cuda WSL docs.
Known limitations for Cuda Applications
Doing a fresh reinstall of WSL fixes it for me. May be worth trying

I have rtx 2080 ti with 11gb vram - plenty available and tried to  n_gpu_layers=1 to test minimum vram requirement.
llama_init_from_file: kv self size  =  256.00 MB WARNING: failed to allocate 512.00 MB of pinned memory: out of memory WARNING: failed to allocate 512.00 MB of pinned memory: out of memory AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 |  CUDA error 2 at /tmp/pip-install-71q8lg55/llama-cpp-python_fd07c2516d2a4860a5413dbe4eca677f/vendor/llama.cpp/ggml-cuda.cu:781: out of memory
`nvidia-smi
Fri May 19 01:56:19 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 530.46                 Driver Version: 531.61       CUDA Version: 12.1     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                  Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf            Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 2080 Ti      On | 00000000:09:00.0  On |                  N/A |
|  0%   52C    P8               37W / 250W|   1490MiB / 11264MiB |      6%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|  No running processes found                                                           |
+---------------------------------------------------------------------------------------+`
I reinstalled everything, windows 10, wsl 2, right now ubuntu Ubuntu-22.04 and cuda toolkit version 12.1, pip installed with cublas whatever version of this repo is then used. Any hints what steps and versions people have used succesfully?

to add tested
`python
Python 3.10.10 (main, Mar 21 2023, 18:45:11) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import torch
torch.cuda.is_available()
True
quit()  `

Got it working using this solution https://github.com/ggerganov/llama.cpp/pull/1233 .
For newbie friendly solution add enviroment variable GGML_CUDA_NO_PINNED=1
Is there performance penalty? Don't know, but at least this is 10 x speed compared to cpu


[WIP] Enable building clusters from VHD for image testing

What this PR does / why we need it:
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:
If applicable:

[ ] documentation
[ ] unit tests
[ ] tested backward compatibility (ie. deploy with previous version, upgrade with this branch)

Release note:

// TODO apply the changes to VMSS


NPM release

Would be nice to have when using browserify.

https://www.npmjs.com/package/html5sortable

That's not a node package though. Basically the current release on NPM requires just the same effort as when using bower.
What's nice with a proper node release would be the possibility to just do the following within the browserify-run code:
require('htm5sortable')

Now instead I have to use browserify-shim configuration like this in my package.json before being able to require it:
  "browser": {
    "html5sortable": "./node_modules/html5sortable/src/html.sortable.js"
  },
  "browserify-shim": {
    "html5sortable": {
      "exports": "$.fn.sortable"
    }
  }

Well, could you send a PR to fix this?

There ya go :-)

Don't forget to update the version on NPM also! It's still on 0.2.0.

Thanks, I forgot that npm is not like bower and does not auto-fetch the newly tagged versions. Will be adding a publish task later so this does not happen again. :)

:+1:


Dialogflow to gcp

Moving samples from: https://github.com/dialogflow/dialogflow-java-client-v2
To here.

Not sure what this error is: Caused by: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: Current user is null gonna try running again. Haven't seen it before.

Updated some more region tags. PTAL
Should be good to go now.


feat(config): Add support for the overwriting config values

Reason for This PR
closes #533
Description of Changes

Add new field to the config plugin -> Flags []string. This field can be used during the general init phase (when starting RR) to overwrite defined in the .rr.yaml configuration options.
Doc reference: https://roadrunner.dev/docs/intro-config (Console Flags paragraph)

License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the MIT license.
PR Checklist
[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

[x] All commits in this PR are signed (git commit -s).
[x] The reason for this PR is clearly provided (issue no. or explanation).
[x] The description of changes is clear and encompassing.
[x] Any required documentation changes (code and docs) are included in this PR.
[x] Any user-facing changes are mentioned in CHANGELOG.md.
[x] All added/changed functionality is tested.

linked #368


Closes #17070. Strip invalid character from fallback file name

Q
A

Is bugfix?
yes

New feature?
no

Breaks BC?
no

Tests pass?
yes

Fixed issues
#17070

Comment: https://github.com/yiisoft/yii2/issues/17070#issuecomment-501284488

Merged. Thank you!


[wip] Rebase to 1.12.2

/retest

/test unit

/test integration

/test lint

/test integration

/test integration

/test integration-maistra-mc

should we maybe go back to submitting these commits one-by-one?

/test integration

/test integration

I think we should remove these three commits from this PR for now:
[federation] MAISTRA-2640 Add federation integration test (6aa702a)
[misc] OSSM-870 Fix ApplyServiceMeshCRDs function (938f653)
[misc] OSSM-796 add SMMR integration test (039f750)
@jewertow and me can fix them in follow-ups. I suspect the remaining failing test (api: TestTelemetryAPIStats) is a flake.

/test integration

/test unit

/test unit

Federation ticket: https://issues.redhat.com/browse/OSSM-1128


chore: version bump up to 1.7.0

Purpose

Update version to 1.7.0
Pull Request Type
What kind of change does this Pull Request introduce?

[ ] Bugfix
[ ] Feature
[ ] Documentation content changes
[x] Other... Please describe:

Other Information

Closing this PR because the changes should be tested during the migration from rc1 to v1.0.0 of the Cloud Foundry provider.


duckdb 1.1 delta reader ignore  azure secret

azure secret works fine when using parquet but are not passed when using delta_scan
this works
token =notebookutils.credentials.getToken('storage')
storage_options={"bearer_token": token, "use_fabric_endpoint": "true"}
import duckdb
duckdb.sql(f"""
INSTALL azure ;
LOAD azure;
CREATE or replace SECRET secret4 (
    TYPE AZURE,
    PROVIDER ACCESS_TOKEN,
    ACCESS_TOKEN '{token}' ,
    ACCOUNT_NAME 'onelake'
);
""")
duckdb.sql(" select * from<EMAIL_ADDRESS>")

this does not works
token =notebookutils.credentials.getToken('storage')
storage_options={"bearer_token": token, "use_fabric_endpoint": "true"}
import duckdb
duckdb.sql(f"""
INSTALL azure ;
LOAD azure;
CREATE or replace SECRET secret4 (
    TYPE AZURE,
    PROVIDER ACCESS_TOKEN,
    ACCESS_TOKEN '{token}' ,
    ACCOUNT_NAME 'onelake'
);
""")
duckdb.sql(" select * from<EMAIL_ADDRESS>")

IOException: IO Error: Hit DeltaKernel FFI error (from: While trying to read from delta table: 'abfss://cccc@onelake.dfs.fabric.microsoft.com/ETL.Lakehouse/Tables/dbo/results/'): Hit error: 8 (ObjectStoreError) with message (Error interacting with object store: Generic MicrosoftAzure error: Client error with status 401 Unauthorized: <?xml version="1.0" encoding="utf-8"?><Error>NoAuthenticationInformation<Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:f47557aa-c01e-0091-2a10-03480f000000
Time:2024-09-09T23:33:20.7177725Z</Message></Error>)

It works for me using the credential chain / CLI. Maybe it's something with the token auth?

I agree with @djouallah I cannot get it work with with delta_scan, but seems like parquet_scan works:
Simple example of trying to use the new token-based auth with Azure extension. This works exactly like this with a CONNECTION STRING, but using the new token-based auth I get an error, which I'm not sure how to figure out if it is a security policy on my side or something not working with the latest extension. I'm using Duckdb 1.1.0
credential = AzureMLOnBehalfOfCredential()
os.environ['AZURE_ACCESS_TOKEN'] = credential.get_token("https://storage.azure.com/").token

conn = duckdb.connect(':memory:')
conn.install_extension("delta")
conn.load_extension("delta")
conn.install_extension("azure")
conn.load_extension("azure")
conn.execute("""SET azure_transport_option_type =  curl""")
conn.execute(f"""CREATE SECRET secret1 (
    TYPE AZURE,
    PROVIDER ACCESS_TOKEN,
    ACCESS_TOKEN '{os.getenv('AZURE_ACCESS_TOKEN')}',
    ACCOUNT_NAME '{os.getenv('AZURE_STORAGE_ACCOUNT')}'
);""")

full_path=f'abfss://{CONTAINER_NAME}/{delta_table_path}'
query = f"SELECT * FROM delta_scan('{full_path}') LIMIT 3"
conn.execute(query).fetchdf()

Error I get:
Traceback (most recent call last) Cell In [43], line 37      35 full_path=f'abfss://{CONTAINER_NAME}/{delta_table_path}'      36 query = f"SELECT * FROM delta_scan('{full_path}') LIMIT 3" ---> 37 conn.execute(query).fetchdf() IOException: IO Error: Hit DeltaKernel FFI error (from: While trying to read from delta table: 'abfss://xxx'): Hit error: 8 (ObjectStoreError) with message (Error interacting with object store: Generic MicrosoftAzure error: Client error with status 401 Unauthorized: <?xml version="1.0" encoding="utf-8"?><Error>NoAuthenticationInformation<Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.

@djouallah, I'm also just checking: Does using the parquet_scan still provide the correct output, even though it is a delta_table? This can then at least be a workaround (I know you will probably lose some delta table functionality, but as long as it reads the latest version of the data, it is potentially a workaround for now).

@Tikavdm no, you should never ever use parquet scan to read a delta table, you will get wrong results if the table had delete or compact, optimize operation, I used that example only to show the issue with authentication

Confirmed i get the same problem using an ACCESS_TOKEN against my storage account, so it sounds like a problem with that feature.

Oh, that's right. This code needs to be updated to handle access tokens since that is a new feature for the azure extension.
https://github.com/duckdb/duckdb_azure/pull/64

still same issue, using deltalake extension 0.2
IOException: IO Error: Hit DeltaKernel FFI error (from: While trying to read from delta table: 'abfss://sqlengines@onelake.dfs.fabric.microsoft.com/ETL.Lakehouse/Tables/T2/chdb/'): Hit error: 8 (ObjectStoreError) with message (Error interacting with object store: The operation lacked valid authentication credentials for path ETL.Lakehouse/Tables/T2/chdb/_delta_log/_last_checkpoint: Client error with status 401 Unauthorized: <?xml version="1.0" encoding="utf-8"?><Error>InvalidAuthenticationInfo<Message>Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:d2946d3c-601e-001f-7194-0407ae000000
Time:2024-09-11T21:48:26.8575298Z</Message><AuthenticationErrorDetail>Issuer validation failed. Issuer did not match.</AuthenticationErrorDetail></Error>)

@djouallah have you tried the nightly?

@gdubya no but i am using the latest delta extension which 0.2, it should have the fix right

Ah, yes, you're right (according to https://github.com/duckdb/duckdb_delta/releases/tag/v0.2.0). Weird. I'll test it again.

Is this a related issue?
https://github.com/duckdb/duckdb_delta/issues/91

@hirsimaki-markus no, that's a different issue. This one is specifically related to access tokens, but you're using a service principal.

For the record mine works now!! Thanks @gdubya . So token-based authentication works with the latest duckdb 1.1.0 and the updated extension of delta.

@djouallah It looks like is now a Fabric issue, so you can reopen #43
I tested by copying a Delta table from Fabric to a regular ADLS account. ADLS works, Fabric does not.


updates route path parameter names to be more descriptive

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/468/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR-trafficops-test/424/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/476/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR-trafficops-test/432/


Format all code using cargo fmt

This is a change that has been long overdue and it should simplify for
others wanting to contribute to the repo.
Unfortunately it touches a lot of files, which in turn might lead to
some unnecessary merge conflicts for existing pull-requests. On the
other hand it's not really that hard for those contributors to run cargo
fmt on their code as well.
Closes #235

Yes but then we will have conflicts depending on the version of nightly. Is this run on latest nightly?

rustc 1.32.0-nightly (6b9b97bd9 2018-11-15)

Also it would be good to rebase on master and run rustfmt again before telling bors to merge it.

bors: r+


LDAP BaseDN improvements

Disregard branch name, originally idea was a bit different..
Default behaviour is exactly the same as before, however --ldap-base-dn parameter now supports placeholder {username}. If the placeholder is found, the whole --ldap-base-dn is used as a DN.
Addresses issue https://github.com/shipyard/shipyard/issues/695

Since this can be anything perhaps it would be better as {baseDN} or something?

The idea is that the placeholder is for the username variable that is used for authentication.
So for example: A user by the username martin logs in.

When configured with --ldap-base-dn="cn=users,cn=accounts,dc=company" would produce LDAP dn cn=martin,cn=users,cn=accounts,dc=company
When configured as --ldap-base-dn="uid={username},cn=users,cn=accounts,dc=company" would produce LDAP dn uid=martin,cn=users,cn=accounts,dc=company. {username} being the direct replacement from the login form (and variable used inside the method as well).

Hey sorry for the delay -- this needs a rebase.  Thanks!

Branch should be now up to date with master. Removed excess files that were added previously.

lgtm


Auto generated coupon codes are not getting applied.

Bug report
Title
Auto generated coupon codes are not getting applied
Preconditions
1. framework Version. Master

Steps to reproduce
1. step1 - create a cart rule of auto generated coupon type

Expected result:
should get apply
Actual result:
not getting applied

fixed in master


Issue with {game:fanart} image and "Optimize images VRAM use"

Concerned project
Batocera
Distribution Version
39-dev-d84a44e957 2023/12/17 23:59
Architecture
Steam Deck
Issue description
Hello,
The game carousel behaves abruptly and the transition between games isn't smooth when VRAM is enabled for images in the developer options. If I disable VRAM optimizations for images, it becomes smooth.
Scenario, how to reproduce:
- VRAM optimizations for images enabled in developer options
- Playstation-X theme with background Fanart enabled in game lists

If I disable Fanart in theme options, it displays smoothly with VRAM enabled. If I disable optimized VRAM, it always displays smoothly with fanart or not.
Attached a video, the effect might not be very clear, but it can help to understand and reproduce what I mentioned above
https://github.com/batocera-linux/batocera-emulationstation/assets/73712202/cab365f7-fc37-4853-909e-d661b0afaad2
Logs and data
No response

I don't see anything on your video.
If I test the theme myself I don't see any problem...

In the video, it's hardly noticeable due to the poor rendering of the same video. I've created a new video with only one item in the carousel to maximize the effect. You'll see that the game box dont slide and disappears before reaching the edge of the screen when VRAM is activated. To reproduce the issue, it's necessary for the game to have fanart media, otherwise, this won't occur.
https://github.com/batocera-linux/batocera-emulationstation/assets/73712202/9ca54882-0417-46cf-8ed5-ae1771e9a856

I don't reproduce.
I fixed a lot of things in this commit https://github.com/batocera-linux/batocera-emulationstation/commit/db2b0ab3843ed346486ce997d62c391d9eae1864 which is not part of the version you are working with.
It's probably related.
You'll have to wait for the next release ( or test it with Retrobat, updated with the latest continuous build of emulationstation )
If it's fine with the next version, please close the issue.
If not... We'll see...

Okay, understood. Thank you

I found something with your theme that could cause your problem.
The fanart images are defined to be displayed bigger than then screen resolution ( 1.001 1.001).
In the current code, the async loader is limited to the screen resolution (in 1080p images are loaded 1920x1080 even if asked bigger ), but the control asks for a bigger image (something like 1922x1082), but the loader returns 1980x1080... So it keeps on asking loading image and this is done in a synchrounous way, which can cause lags.
I'll make a fix for this particular case, but you should not use a size that makes an image bigger than screen resolution.
Set minSize to 1 and use scaling instead.

Okay, makes sense, I'll remove all the 1.001 instances from my theme. Thanks for your time again ;)


[Operational Tool] Display validator configs even on validator network address decryption failure.

Motivation
This PR updates the operational tool to better handle validator network address decryption failures when running the validator-set command. In the case that we fail to decrypt an address, the tool will currently display an error message for each failed decryption and show an empty validator set. Rather, we should log the error, display the values that we can and then display a dummy address in the place of the encrypted one. See the outputs below.
Have you read the Contributing Guidelines on pull requests?
Yes.
Test Plan
Testing the tool by pointing to it a testnet deployment and forcing a decryption failure, we get the following:
joshlind@joshlind-mbp debug % ./libra-operational-tool validator-set --config <CONFIG FILE>
Unable to decode account d4c4fb4956d899e55289083f45ac5d84: Unable to deocde network address: Failed reading validator_network_address_keys from storage
Unable to decode account 57208e640c623b27c6bba704380825ab: Unable to deocde network address: Failed reading validator_network_address_keys from storage
Unable to decode account a2719315a51388bc1f1e1c5afa2daaa9: Unable to deocde network address: Failed reading validator_network_address_keys from storage
Unable to decode account 1e674e850cb4d116babc6f870da9c258: Unable to deocde network address: Failed reading validator_network_address_keys from storage
{
  "Result": []
}

After this PR we get:
joshlind@joshlind-mbp debug % ./libra-operational-tool validator-set --config <CONFIG FILE>
Unable to decode account d4c4fb4956d899e55289083f45ac5d84: Unable to decode network address: Failed reading validator_network_address_keys from storage. Using a dummy validator network address!
Unable to decode account 57208e640c623b27c6bba704380825ab: Unable to decode network address: Failed reading validator_network_address_keys from storage. Using a dummy validator network address!
Unable to decode account a2719315a51388bc1f1e1c5afa2daaa9: Unable to decode network address: Failed reading validator_network_address_keys from storage. Using a dummy validator network address!
Unable to decode account 1e674e850cb4d116babc6f870da9c258: Unable to decode network address: Failed reading validator_network_address_keys from storage. Using a dummy validator network address!
{
  "Result": [
    {
      "name": "val0",
      "account_address": "d4c4fb4956d89...",
      "consensus_public_key": "0292fbfd7ce56f6888f3ea...",
      "fullnode_network_address": "/dns4/val0-libra-validator-fullnode-lb/tcp/6182/ln-noise-ik/...",
      "validator_network_address": "/dns4/0000"
    },
    ...
  ]
}

Related PRs
None.

Thanks, @gregnazario! 😄

Do we know it's not going to be able to decrypt it beforehand? If so we should probably skip the failed to decrypt messages.

We can't really tell because we require a storage backend to be present -- so it could work.


Qantas DH8D

QantasLink turboprops use the ICAO code QLK ("Q-LINK"). DH8D_QFA.obj and DH8D_QFA.dds should be renamed DH8D_QLK, or at least a new entry added for OBJ8_AIRCRAFT DH8D_QLK to reference the same files.

Already done.
Issue can be closed.

@birdydma This may have been updated in the swift db but that isn't relevant here. The xsb_aircraft.txt should also be updated for the benefit of other pilot clients.


callbackExecutionQueue results in EXC_BAD_ACCESS

I'm trying to perform a background operation using BrightFutures. The result (MKPolyline) should be displayed in a MKMapView; thus the callback should be performed on the main thread. However the callbackExecutionQueue results in an extra dispatch queue on top of the main queue. This results in EXC_BAD_ACCESS when the MKPolyline is added to the MapView. When the highlighted line is removed, everything works as expected.
Simplified usage:
        future(context: Queue.global) { () -> Result<MKPolyline> in
            return Result(polyline)
        }
            .onSuccess(context: Queue.main) { polyline in
                self.mapView.addOverlay(polyline)
            }

The block on the callbackExectutionQueue is executed synchronously, so the main thread should still be 'yours'. Can you check if in the onSuccess block NSThread.isMainThread() returns true (it should)? This use case should be covered by the following test: https://github.com/Thomvis/BrightFutures/blob/master/BrightFuturesTests/BrightFuturesTests.swift#L213.

Ok I hope the comparison of two stack traces helps in this regard. The right one is the default and results in a EXC_BAD_ACCESS, while the left one is my modified version. The default is performed on the main thread, but on the queue named queue serial, while the modified is also performed on the main thread but using the queue named com.apple.main-thread (serial).

Thanks for the additional info. My first idea was that it was an issue with MapKit not supporting non-main thread interaction, but the callback does seem to be on the main thread so that cannot be it?
The self.callbackExecutionQueue.sync is needed to ensure that the callbacks of a single future are executed in serial.
Could you try to experiment with your modified version and see if you can make it crash again. E.g. by wrapping the MapKit instructions in a dispatch_async(dispatch_get_main_thread() or dispatch_sync(custom_serial_queue)` inside the callback. If it is possible, it would be even better if you would have the time to create a failing example project or failing test that I could run myself. Thanks again!

The main thread is already a serial thread, so maybe an alternate branch could be introduced? That would solve the issue with the main thread I guess.

The main dispatch queue is a globally available serial queue that executes tasks on the application’s main thread.

All callbacks should execute on the same serial queue, so that would mean that all callbacks should be executed on the main queue and that is not desired.
I don't think we've yet fully uncovered what causes the crash. You found a solution, but I'm hoping there's an alternate solution that doesn't break current behavior of serial callback execution.

Some experimentation yields the following results:

dispatch_async(dispatch_get_main_queue()) { ... } :white_check_mark:
dispatch_sync(dispatch_get_main_queue()) { ... } :x: (dead lock)
dispatch_async(dispatch_queue_create("queue", DISPATCH_QUEUE_SERIAL)) { ... } :x: (background thread)
dispatch_sync(dispatch_queue_create("queue", DISPATCH_QUEUE_SERIAL)) { ... } :x: (serial queue on main thread)

Still; as the main queue is a serial thread, it already works FIFO. So why create another serial queue for main thread operations?

Thanks again! Did you try those variations with your modified version or the original one? Could you try the first variation with the original BrightFutures? I'd expect that one to succeed, but I am not sure why that is better than without any additional wrapping.

Still; as the main queue is a serial thread, it already works FIFO. So why create another serial queue for main thread operations?

For example:
future {
	return expensive_calculation;
}.onSuccess(context: Queue.main) {
	// callback A: this should happen on the main thread,
}.onSuccess(context: Queue.global) {
	// callback B: this one shouldn't block the main thread
}

In this example, callback A and B should be executed serially, but B should not block the main thread. I believe that the usage of an additional serial queue on top of the callback context is the only way to achieve this, with queues. Or maybe I should try rewriting it with a semaphore or lock.

I've added a test for the serial execution of callbacks: https://github.com/Thomvis/BrightFutures/commit/ee68cdc6021c26fd1d7d86f402e88d8055290a27. This test will probably fail with your modifications. The next step is to write a modification (probably using semaphores/locks) that still passes the test but doesn't crash for you.

A tangential question: is the bad access in your code or inside MapKit? The latter could indicate a threading issue, the former could indicate a different problem. Have you tried running it with zombies enabled, to see what exactly disappeared? Is it self, self.mapView, polyline or something else?

Hello Thom,
I experience the same problem. I setup a simple example so that you can see the problem. Here is the link:
https://github.com/siskaj/BrightFuturesTest1.git

Hi siskaj,
Thank you so much for the information :+1:. I think I now know what is causing the issue. Somewhere deep in MapKit (+[VKDispatch defaultDispatch] to be exact) there is the assumption that MapKit code is executed on the main queue, so not only on the main thread but also on the queue. You can easily reproduce this bug by adding an overlay to a map from the main thread on a private serial queue, e.g.:
var queue = dispatch_queue_create("test", nil)
dispatch_sync(queue) {
    self.mapView.addOverlay(pl!)
}

Even if BrightFutures is not involved at all.
This seems to indicate that we cannot assume that Apple frameworks don't care about the current queue as long as it is on the main thread. It might be a bug (I'll see if I can file a radar), but we can probably write a workaround. I'll see if I can come up with one.
Thanks again, @Bouke too, for bringing this to my attention.

I believe the issue has been resolved on master. Could you let me know if it works for you?

Hi Thomvis
I have tried it and it seems to work fine. Thank you very much for your quick response.


SW-5038 Set country code and internal name during pre-screen submissions

This fixes an issue where internal name and the country columns are not set for an application. This happens when a user uploads a shapefile boundary instead of drawing one.
This implementation will read the country variable at pre-screen submission time, and set both columns.

#2422  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @tommylau523 and the rest of your teammates on  Graphite

Updated the ticket number!


This policy breaks Citrix and RDP logins on pre-Server 2016 systems

Within minutes of enabling this policy all RDP and Citrix logins to pre-Server 2016 systems were blocked. I backed out of the policy, but the registry change on the servers wasn't reversed. Rather than manually edit the registry on several hundred servers I re-enabled the policy, but added Authenticated Users to the ACL to recover. Did anyone at Microsoft ever consider that Server 2008 and Server 2012 are still in use and should be included in testing?

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

ID: af4ac6cb-9755-50f5-b7f1-b7ce2a2a2f17
Version Independent ID: 88cde4bc-114b-31ed-7eba-f3aefdce7dda
Content: Configure SAM-R to enable lateral movement path detection in Advanced Threat Analytics
Content Source: ATADocs/install-ata-step9-samr.md
Service: advanced-threat-analytics
GitHub Login: @rkarlin
Microsoft Alias: rkarlin

Is this means is fixed?

Hi, @cmilte-lsuhsc. This product feedback is better suited for our UserVoice channel at https://microsoftsecurity.uservoice.com/forums/905158-advanced-threat-analytics.  Thank you! #product-question


4.0 C# Signal.Connect Doesn't Work as Documented in Object.Connect Documentation

Godot version
v4.0.beta14.mono.official [28a24639c]
System information
Windows 10, .Net SDK 6.0.405
Issue description
The 4.0 docs for Object.Connect suggest that Signal.Connect (the docs for which are lacking any C# entry) or object.event += Signal are the preferred ways to hook up signals in C# via code. However, trying to make use of these commands result in errors which prevent building the project.
Here is the code for the class containing the statements which are erroring (you can view my Player implementation in the attached reproduction project):
using Godot;
using System;

public partial class Example : Node2D
{
    public override void _Ready()
    {
        var button = new Button();
        // C# supports passing signals as events, so we can use this idiomatic construct:
        button.ButtonDown += OnButtonDown;

        // This assumes that a `Player` class exists, which defines a `Hit` signal.
        var player = new Player();
        // Errors with the message:
        // The event 'Player.Hit' can only appear on the left side of += -=
        player.Hit.Connect(OnPlayerHit, new Godot.Collections.Array { "sword", 100 });

        // Errors with the message:
        // 'Example.OnPlayerHit(string, int)' is a method, which is not valid in the given context
        player.Hit += OnPlayerHit.Bind("sword", 100);

        // NOTE: this statement isn't in the docs, but I used to check whether an explicit `Callable` could use the `Bind` method
        // Errors with the message:
        // 'Callable' does not contain a definition for 'Bind' and no accessible extension method 'Bind' accepting a first argument of type 'Callable' could be found (are you missing a using directive or an assembly reference?)
        player.Hit += new Callable(this, nameof(OnPlayerHit)).Bind("sword", 100);

    }

    private void OnButtonDown()
    {
        GD.Print("Button down!");
    }

    private void OnPlayerHit(string weaponType, int damage)
    {
        GD.Print(String.Format("Hit with weapon {0} for {1} damage.", weaponType, damage));
    }
}

Steps to reproduce
To reproduce, simply open the attached reproduction project and attempt to either open the Example.cs script in Visual Studio, or press the Build button in the top right of the Editor, which should result in the errors which I documented in the Issue Description.
Minimal reproduction project
ReproduceSignalConnectIssue.zip

Yes, the documentation is incorrect. It should be fixed by https://github.com/godotengine/godot/pull/64930.
The valid ways to connect to a signal in C# are:
// Option 1: In C#, we can use signals as events and connect with this idiomatic syntax:
button.ButtonDown += OnButtonDown;
// Option 2: Object.Connect() with a constructed Callable from a method group.
button.Connect(Button.SignalName.ButtonDown, Callable.From(OnButtonDown));
// Option 3: Object.Connect() with a constructed Callable using a target object and method name.
button.Connect(Button.SignalName.ButtonDown, new Callable(this, MethodName.OnButtonDown));

Bind is not implemented so if you need to bind values, use lambdas:
player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, "sword", 100);

Thank you so much for the clarification! I really appreciate it - I'm a bit newer to the features of C# being used here, so I missed the possibility of adding Lambdas to bind arguments.
Just one more quick question on your example for binding values:

player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, "sword", 100);

Isn't that too many arguments passed to OnPlayerHit? In this context, wouldn't we either want  player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level); if we wanted to pass arguments through to OnPlayerHit from the signal itself, or player.Hit += (hitBy, level) => OnPlayerHit("sword", 100); if we wanted to hardcode those values in OnPlayerHit for any emission of the player.Hit signal (though, in this case, it may be preferable to remove the arguments from player.Hit)?

Oh, sorry, I copied the example from the documentation that has a OnPlayerHit method with this signature:
void OnPlayerHit(string hitBy, int level, string weaponType, int damage);

The idea was to show you can use methods with a different signature than the one required by the signal delegate type if you "bind" the missing parameters with a lambda.
For the method signature in your MRP:
void OnPlayerHit(string weaponType, int damage);

You are correct:
// Works because the method signature matches the signal delegate type:
player.Hit += OnPlayerHit;
// Using the values emitted by the signal:
player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level);
// Ignore the values emitted by the signal and "bind" different values:
player.Hit += (hitBy, level) => OnPlayerHit("sword", 100);


Our travis_retry doesn't appear to work

We regularly get transient bundle install failures in our travis builds.  We use travis_retry (which we ported from travis's scripts so that we can use it from ours -- it's not automatically available from within scripts) but it doesn't appear to work.  We should figure out why.

Stale issue. Closing for the moment.


Decimal accepting both point and comma

Versions:

VueJs: 2.4.2
Vee-Validate: 2.0.0-rc.27

Description:
Hello!
Can decimal rule be enchanted to allow not only point as a separator, but comma as well?
For example: v-validate="'decimal:2,both'"
So user can enter either 3.14 or 3,14.
P.S.:
Is it possible to use vuex-i18n (or vue-i18n) style pluralization in a dictionary?
const dictionary = {
  en: {
    messages: {
      universal_decimal: 'The value must be numeric and may contain {count} symbol after the decimal point. ::: The value must be numeric and may contain {count} symbols after the decimal point.'
    }
  },
};

You can create a custom rule for that, I don't think it will be introduced anytime soon.
As for your PS, currently only basic messages are supported, and only in list format due to how vee-validate parses rules args as arrays rather than objects, I will try to find a better approach for handling most of vue-i18n features but my options are limited atm.

OK, thank you!


add dynamic row attributes

closes #752
closes #751

reading my issues and working on some as i go, i implemented the solution in your issue before seeing this! anyway, i think my solution is a wider 'catch all' as you can change anything on the row, not just attributes, and requires less code on the grid side (easier to maintain). so i'll stick with my implementation. thanks :)


Avoid sorting flicker. Fixes #162

Changed placeholder position to be based on element vertical middle and mouse position.

Coverage decreased (-0.2%) to 79.915% when pulling 7f012d776a7f7080ca3fbc56f513c78e54efa6d7 on PiranhaCMS:fixes/avoid-sorting-flicker into 75aef2089f3d6de0670efa735b3f487b492f947d on lukasoppermann:master.


Output (visible) message in case of error

Fix #30.
As-is, trying to fetch from an unreachable repository will end abruptly, with no output error message, as so
➜  bug ✗ rebar3 update-deps
===> Analyzing applications...
===> Compiling rebar3_depup
===> Looking for dependencies to update in rebar.config...
===> cowboy can be updated from 2.8.0 to 2.9.0
➜  bug ✗

Using DIAGNOSTIC=1 rebar3 update-deps on the other hand, will output more useful information, but that flag tends to be used in case of error, which is not shown (at first I was even thinking everything was Ok with my deps).
The current pull request proposes more visible output in the form of
➜  bug ✗ rebar3 update-deps
===> Analyzing applications...
===> Compiling rebar3_depup
===> Looking for dependencies to update in rebar.config...
===> cowboy can be updated from 2.8.0 to 2.9.0
failed with return code 128 and the following output:
ssh: connect to host <HOST> port <PORT>: Network is unreachable
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
➜  bug ✗

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


File Converter

File converter didn't work, didn't recognise .ims filetype

Fixed now!
The script checked the whole series first, while it should check individual files.


Make buildable with gcc.

With this patch, piface compiles with vc4 gcc, though I've not heavily tested the result. SD card access may be broken.

Yeah, __vc4_init (https://github.com/puppeh/newlib-vc4/blob/vc4/libgloss/vc4/vc4-init.c), called from crt0.S. It's not amazingly clear to me whether that's a good idea or not, tbh.

Fair enough --- just checking. LGTM. Thank you very much!


Incorrect error with variable issues in a view composer

When a view composer has an issue with a variable missing, or calling a method on a null variable, etc. the suggested fix is for the template rather than the view composer.
The screenshot shows this best:

(original issue https://github.com/facade/ignition/issues/355)

I don't think this issue still exists in spatie/ignition. Closing :)


Move files to canonical locations under /usr

Thanks for this package. I noticed that files are currently installed under /etc, which is generally where files that are not managed by the package manager should go. So I moved them to the canonical install locations under /usr.

/etc/pacman.d/hooks -> /usr/share/libalpm/hooks
/etc/pacman.d/hooks.bin -> /usr/share/libalpm/scripts
/etc/systemd/system -> /usr/lib/systemd/system

This should not have any effect on the users of this package.

Closing in favour of #2.


[Event Request] Table 36 - "Sales Header" - OnBeforeValidatePaymentMethodCode

Dear ALAppExtensions team,
through this issue we would like to request the addition of an event publisher OnBeforeValidatePaymentMethodCode in Table 36 "Sales Header" with the following signature:
[IntegrationEvent(false, false)]
local procedure OnBeforeValidatePaymentMethodCode(var SalesHeader: Record "Sales Header"; PaymentMethod: Record "Payment Method"; var IsHandled: Boolean)
begin
end;

which would be used in the OnValidate trigger of "Payment Method Code" as follows:
trigger OnValidate()
var
	// >>>> New >>>>
	IsHandled: Boolean;
	// <<<< New <<<<
begin
	// >>>> New >>>>
	IsHandled := false;
	OnBeforeValidatePaymentMethodCode(Rec, PaymentMethod, IsHandled);
	if IsHandled then
		exit;
	// <<<< New <<<<
	UpdateDirectDebitPmtTermsCode();

	"Bal. Account Type" := PaymentMethod."Bal. Account Type";
	"Bal. Account No." := PaymentMethod."Bal. Account No.";
	if "Bal. Account No." <> '' then begin
		TestField("Applies-to Doc. No.", '');
		TestField("Applies-to ID", '');
		Clear("Payment Service Set ID");
	end;
end;

Thanks in advance!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 10806.


Windows detecting both DS3 and x360 emulated controller (is there a workaround/fix?)

Is there a way to stop windows from detecting the DS3 at the same time as the emulated 360 when using dshidmini with DS4Windows? My games seem to be showing both the xbox and ds3 inputs when I connect a controller

Yes tick Hide Ds4 Controller in Ds4Windows settings.

Until there's a better solution available check out the previous comment and the documentation provided in regards to setting up HidGuardian.

Yes, tick (enable) Hide Ds4 Controller in Ds4Windows settings.
Thanks! This seemed to do the trick. For some reason I had missed it when looking through the settings and thought it had been removed in an update or something. Guess I was mistaken.

Until there's a better solution available check out the previous comment and the documentation provided in regards to setting up HidGuardian.
I did a bit of a readthrough on hidguardian and I was having trouble grasping how exactly to use it and what all the options mean. Is there a good place for documentation on it?

Same site, mate 😁

Okay thanks will take a look


Does not work with non-standard key mapping

I have "i" mapped to "move right" (I think the standard for that is "l"). Nonetheless the plugin assumes that I have a default one and whenever I hit Edit (which is "s" in my case) after "C-n"ing couple positions, it inserts something like that:
:call <SNR>164_apply_user_input_next('i')
Is there any way to set it up correctly?

Why was this closed? It claimed to be the duplicate of issue https://github.com/terryma/vim-multiple-cursors/issues/47, which seems like a separate issue to me, but no reason for closing was provided.

Can't remember why I closed this, I should have left a comment. Apologies!

@varepsilon @sheerun @still-dreaming-1 could you please update this plugin and let us know if you still see the issue ?
It should be fixed now... Just let us know!

Works for me, it seems.


Remove elevationX200, remove factor base in raw tokens, refactor color semantic tokens

Note: Please transform - [ ] into - (NA) in the description when things are not applicable
Related issues

None
Description

Figma JSON parser won't output multiplier base factor, it should be removed
Elevation X Index 200 is, in fact, never used

Motivation & Context

Types of change

Refactoring (non-breaking change)

Previews

Checklist

Contribution

[x] I have read the contributing guidelines

Accessibility

(NA) My change follows accessibility good practices

Design

(NA) My change respects the design guidelines of Orange Unified Design System

Development

[x] My change follows the developer guide
[x]  I have added unit tests to cover my changes (optional)

Documentation

[x] My change introduces changes to the documentation and/or I have updated the documentation accordingly

Checklist (for Core Team only)

[x] The evolution have been tested and the project builds for iPhones and iPads
[ ] Code review has been done by reviewers according to CODEOWNERS file
(NA) Design review has been done
(NA) Accessibiltiy review has been done
(NA) Q/A team has tested the evolution
[x] Documentation has been updated if relevant
[x] Internal files have been updated if relevant (like CONTRIBUTING, DEVELOP, THIRD_PARTY, CONTRIBUTORS, NOTICE)
[x] CHANGELOG has been updated respecting keep a changelog rules and reference the issues

@ludovic35 Commit message for example should be like:
refactor: remove `elevationX200`, remove factor base in raw tokens, light and dark mode scolors management


[Timeline] Add support for align override on items

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Summary 💡
<Timeline /> component supports 3 different alignments: align: 'alternate' | 'left' | 'right'. While this is enough for most cases, I believe it could be useful to add support for override in each <TimelineItem /> with a align: 'left' | 'right' property or something similar.
Examples 🌈
import * as React from 'react';
import Timeline from '@material-ui/lab/Timeline';
import TimelineItem from '@material-ui/lab/TimelineItem';
import TimelineSeparator from '@material-ui/lab/TimelineSeparator';
import TimelineConnector from '@material-ui/lab/TimelineConnector';
import TimelineContent from '@material-ui/lab/TimelineContent';
import TimelineDot from '@material-ui/lab/TimelineDot';

export default function AlternateTimeline() {
  return (
    <Timeline align='alternate'>
      <TimelineItem align="right">
        <TimelineSeparator>
          <TimelineDot />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent>Eat</TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineSeparator>
          <TimelineDot />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent>Code</TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineSeparator>
          <TimelineDot />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent>Sleep</TimelineContent>
      </TimelineItem>
      <TimelineItem align='right'>
        <TimelineSeparator>
          <TimelineDot />
        </TimelineSeparator>
        <TimelineContent>Repeat</TimelineContent>
      </TimelineItem>
    </Timeline>
  );
}

Motivation 🔦
It will allow to build an alternating timeline with grouped TimelineItem(s):

I believe that the keyword is "groups". When you build a long <Timeline /> with multiple <TimelineItem />(s) rich of contents, align='alternate' helps to reduce void space in the page, but could also lead to a disorienting UI because similar components are placed in opposite positions. The best way to solve this problem is to group similar items.

@simonecervini This sounds like a fair request. I have tried a quick POC:
diff --git a/packages/material-ui-lab/src/TimelineItem/TimelineItem.d.ts b/packages/material-ui-lab/src/TimelineItem/TimelineItem.d.ts
index 17647152af..0974ecc629 100644
--- a/packages/material-ui-lab/src/TimelineItem/TimelineItem.d.ts
+++ b/packages/material-ui-lab/src/TimelineItem/TimelineItem.d.ts
@@ -4,6 +4,10 @@ import { Theme } from '@material-ui/core/styles';
 import { InternalStandardProps as StandardProps } from '@material-ui/core';

 export interface TimelineItemProps extends StandardProps<React.HTMLAttributes<HTMLDivElement>> {
+  /**
+   * The position where the timeline's item should appear.
+   */
+  align?: 'left' | 'right';
   /**
    * The content of the component.
    */
diff --git a/packages/material-ui-lab/src/TimelineItem/TimelineItem.js b/packages/material-ui-lab/src/TimelineItem/TimelineItem.js
index 95de69a498..a0e5362ffa 100644
--- a/packages/material-ui-lab/src/TimelineItem/TimelineItem.js
+++ b/packages/material-ui-lab/src/TimelineItem/TimelineItem.js
@@ -67,8 +67,8 @@ const TimelineItemRoot = experimentalStyled(

 const TimelineItem = React.forwardRef(function TimelineItem(inProps, ref) {
   const props = useThemeProps({ props: inProps, name: 'MuiTimelineItem' });
-  const { className, ...other } = props;
-  const { align = 'left' } = React.useContext(TimelineContext);
+  const { align: alignProp, className, ...other } = props;
+  const { align: alignContext } = React.useContext(TimelineContext);

   let hasOppositeContent = false;

@@ -80,19 +80,21 @@ const TimelineItem = React.forwardRef(function TimelineItem(inProps, ref) {

   const styleProps = {
     ...props,
-    align,
+    align: alignProp || alignContext || 'left',
     hasOppositeContent,
   };

   const classes = useUtilityClasses(styleProps);

   return (
-    <TimelineItemRoot
-      className={clsx(classes.root, className)}
-      styleProps={styleProps}
-      ref={ref}
-      {...other}
-    />
+    <TimelineContext.Provider value={{ align: styleProps.align }}>
+      <TimelineItemRoot
+        className={clsx(classes.root, className)}
+        styleProps={styleProps}
+        ref={ref}
+        {...other}
+      />
+    </TimelineContext.Provider>
   );
 });

Most of our components have an equivalent feature, this would make it consistent.

This works perfectly with a <Timeline align="left|right" />, but it gets more complicated with an alternating timeline:

In real applications I think you want the alternating pattern (which is now achieved with :nth-child(even)) to restart after the last overridden element. What do you think about it?

In real applications I think you want the alternating pattern (which is now achieved with :nth-child(even)) to restart after the last overridden element. What do you think about it?

I think that we should ignore this use case.

Perfect! Considering that with <Timeline align="right"> all the items are currently moved to the left of the timeline, what approach should be followed for the same prop on the <TimelineItem /> component?
Personally I think that align="right" applied to a <TimelineItem /> should move the item to the right of the timeline. In order to make everything more consistent, I think it would make sense to invert the current behavior of the align prop on the <Timeline /> component.
I'm not even sure if this is an issue or not, because this demo with <Timeline align="right" /> has the subtitle "The timeline can be positioned on the right side of the events". But from the API page the align property is described as "The position where the timeline's content should appear."

@simonecervini Oh yeah, I got trapped by this as well working on the git diff POC! How about?
diff --git a/docs/src/pages/components/timeline/timeline.md b/docs/src/pages/components/timeline/timeline.md
index 2a2a6c25d4..d76cc91cab 100644
--- a/docs/src/pages/components/timeline/timeline.md
+++ b/docs/src/pages/components/timeline/timeline.md
@@ -19,9 +19,9 @@ A basic timeline showing list of events.

 {{"demo": "pages/components/timeline/BasicTimeline.js"}}

-## Right-aligned timeline
+## Left-positioned timeline

-The timeline can be positioned on the right side of the events.
+The main content of the timeline can be positioned on the left side; relative to the time axis.

 {{"demo": "pages/components/timeline/RightAlignedTimeline.js"}}

diff --git a/packages/material-ui-lab/src/Timeline/Timeline.tsx b/packages/material-ui-lab/src/Timeline/Timeline.tsx
index f64427aa74..f1c599929b 100644
--- a/packages/material-ui-lab/src/Timeline/Timeline.tsx
+++ b/packages/material-ui-lab/src/Timeline/Timeline.tsx
@@ -18,10 +18,10 @@ export type TimelineClassKey = 'root' | 'alignLeft' | 'alignRight' | 'alignAlter

 export interface TimelineProps extends StandardProps<React.HTMLAttributes<HTMLUListElement>> {
   /**
-   * The position where the timeline's content should appear.
-   * @default 'left'
+   * The position where the TimelineContent should appear relative to the time axis.
+   * @default 'right'
    */
-  align?: 'left' | 'right' | 'alternate';
+  position?: 'left' | 'right' | 'alternate';
   /**
    * The content of the component.
    */

cc @mnajdova

I think it's a lot more clear. I've created a pull request as a proof of concept with all these changes


Kapt is failing without clear error place

I see the next error message:
 symbol: class AssistedInject_AppAssistedInjectModule/app/build/tmp/kapt3/stubs/debug/com/android/AppComponent.java:40: error: [Dagger/MissingBinding] com.android.budgets.ui.overview.BudgetsOverviewViewModel.Factory cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent {
                ^
      com.android.budgets.ui.overview.BudgetsOverviewViewModel.Factory is injected at
          com.android.budgets.ui.overview.BudgetsOverviewNavigation(viewModelFactory)
      com.android.budgets.ui.overview.BudgetsOverviewNavigation is provided at
          com.android.budgets.BudgetsComponent.overviewNavigation() [com.android.AppComponent → com.android.user.UserSessionComponent → com.android.user.UserComponent → com.android.budgets.BudgetsComponent]/app/src/main/java/com/yolt/android/recovery/recover/ui/pin/PinDigitsViewModel.kt:12: warning: Assisted injection without at least one non-@Assisted parameter doesn't need a factory
class PinDigitsViewModel @AssistedInject constructor(@Assisted private val onComplete: (ByteArray) -> Unit) {
^app/build/tmp/kapt3/stubs/debug/com/android/dagger/AppAssistedInjectModule.java:9: error: [ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.

If check the Model class I see it requires injection another class that has generics and one of the constructor params is also assisted injected class.
I saw an issue with generics and assisted inject. Or I wonder what another thing can be wrong. For example, this generic class operates with data binding generated code.

Can you provide a minimal example that reproduces the issue?

Decided to stop migration from AutoValue to AssistedInject for now.


allow custom shape and/or label in to_graphviz()

[x] Tests added / passed
[x] Passes flake8 dask
[ ] Fully documented, including docs/source/changelog.rst for all changes
and one of the docs/source/*-api.rst files for new API

This extends the data_attributes and function_attributes arguments to support shape and label.   Without this change, to_graphviz fails with TypeError: node() got multiple values for keyword argument 'shape'.  I don't think these arguments are currently documented so I'm not sure whether new documentation is needed.

I like your implementation here.  It looks like it's general to any attribute that we might want to pass through by key.  It would be useful to check this generality in tests just to verify that it sticks around in the future.
The failures in tests are unrelated and have since been resolved.  They should go away if you end up pushing again.

I found this useful today!  Thanks for your work here!
We're waiting on #2973 to merge for tests to pass.

This looks good to me. Anything else left to do here?

Thanks for the reminder @jcrist , thanks for the work @sheppard !

Thanks!


Update rebar3 to 3.16.1

More info: https://ferd.ca/you-ve-got-to-upgrade-rebar3.html

Looks good.


Calibration

you could end up with a blank calibration file ( for example, if you shutdown the phone while the calibration deamon is writing the file) and the calibration process seem to stop doing it's job properly after this. i noticed that i had a blank calibration file in /sdcard that dated from january 1st even tough i did a lot of driving since then. the file was there , but zero byte in size. i deleted the file and the whole calibration process restarted. I just did an hour of driving and it's now perfectly aligned.

I'm working on a simple fix in which we never intentionally write an invalid calibration file and discard an existing file if it is invalid. This should be in the next openpilot release.

Fixed in 0.2.4


getInactiveIntimations API returns active intimation for the user too

getInactiveIntimations API must return only the inactive intimations

Fixed in master