Value widgets

I'm still not done with this but my branch accumulated enough changes that I should start writing them down.
Also, diff on this is going to be huge, sorry. I moved around a lot of code and files, and plan to do more similar changes.
Goals:

make widget list more manageable, it was getting unhandy because it was a single large file
prepare widget list to be extensible with third-party widgets, when we get to custom structs eventually
allow React hooks in widgets (in the end I realized that it wasn't necessary and we could put a React.memo boundary around all widgets)

So, the main change is that I removed getSqValueWidget in favor of WidgetRegistry, which contains all widgets, and each widget registers itself in it.

For now, WidgetRegistry is a singleton class; in the future we could allow other patterns (create a custom registry, populate it with custom widgets, pass it to SquigglePlayground or SquiggleViewer), and I think there's mostly a clear route from this PR to there, but I don't want to complicate the codebase until we need it.

There's WidgetConfig and a Widget, and they are two different things. WidgetConfig contains callbacks, but Widget contains real, dynamically-generated React components.

This is a part that might be controversial, because it borders on my inlining preference once again :) So I'll explain the reasoning.
For each "widget" (set of render functions/components for each value type), we need a corresponding React component code. Each of those components accepts the same props, and it'd be useful if each of those components followed the same naming convention (for Number type, it's NumberWidget, for Dist it's DistWidget, etc.)
I could do something like this:
const NumberWidget: FC<{ value: Extract<SqValueWithContext, { tag: "Number" }> }> = ({ value }) => ...;

widgetRegistry.register({
  Main: NumberWidget,
  Preview: NumberPreviewWidget,
});

But this would mean that we'd have to copy-paste this pattern everywhere.
So, instead, widgetRegistry.register takes a raw JS function, like it did before, but that function is actually a React component body (you're allowed to use hooks there). It gets a correct displayName (for React Dev Tools) based on its tag; see WidgetRegistry.register method implementation.
Note: usually, it's a bad idea to create React components dynamically, because React maintains the list of all components and it's important for the performance that there's a fixed limited number of components in the entire app. But here, we create a component just once on .register, so it's fine.
Another benefit here is that the function's signature is inferred (thanks to inlining!), so you don't have to write the types.
Unfortunately, for big components, it's still unhandy to store both the widget definition and all of its code in a single file. So sometimes it's still necessary to add sub-components in separate files and import them in render.

On names: mostly, I'm using FooWidget convention instead of FooChart as we did previously.

DistributionsChart and FunctionChart still have their old names, which seems fine, since they're actual canvas charts.
SquiggleChart has the same name, because Chart there is unrelated; we should rename it later for other reasons.

On code organization:

widgets/index.ts registers all built-in widgets (right now ValueWithContextViewer imports it, but maybe someone else should)
widgets/registry.ts describes the registry class
components/SquiggleViewer/SquiggleValue{Chart,Header,Preview,SettingsMenu}.tsx are thin wrappers around the registry

Full tree of ValueWithContextViewer looks like this:

I'm still thinking about how I could improve it further.

On separation of concerns.

There are a few places that depend on widgets/ internals that shouldn't:

CalculatorState cache in ViewerProvider should be a black box, maybe with generics. The ability to cache stuff in the ViewerProvider shouldn't be just for calculators. (Dist widget local settings could, probably, use the same general mechanism.)
extractSubvalueByPath in utils.ts should, ideally, ask widgets for their value, but it's hard to tell if it'll be worth it
functionChartDefaults could be generalized by exposing globalWidgetSettings, but this will also require generics (widget.register({ renderGlobalSettings: () => {...} and PlaygroundSettings<ExtractWidgetSettings<typeof widgetRegistry>> or something), and passing that generic around through all components is going to be annoying, so probably not worth it for now
export { RelativeValueCell } is... ugh. Don't know what to do with it.

So, instead, widgetRegistry.register takes a raw JS function, like it did before, but that function is actually a React component body (you're allowed to use hooks there).

Turns out eslint doesn't like it:

I'll look for a different approach, or maybe rename fields in WidgetConfig to be capitalized, Render etc.

Most menu items have icons now, except for "Reset Settings".
I'm thinking about arrow-uturn-left for that one:

Very quick thoughts:

Seems good!
Maybe only show expand/collapse children, if item is expanded?

An "unfocused" button would be nice, for focused items.
Later on, it would probably be nice to do a bit of animation for some of this, similar to workflowy, but that's too much for now.

This seems neat. Haven't really looked at it line-by-line, but I look forward to working with this code later.
I think the inlining aspect seems pretty reasonable/good to me in this situation.
Nice work!


Datagrid expandable rows additional features

[ ] bug
[x] feature request
[ ] enhancement

Expected behavior

As I'm requesting a feature my questions are:

Is there any way to expand a row with code?
and are there some event handlers to know which row expands?

And another minor question

For the expandable rows per column, we think it would be great to be able to choose individually for each column to replace the content or not?

Right now we can do it by putting the same content twice plus the content which will be shown as the row expands, but from a performance perspective this could be a nice possibility.
Actual behavior

.. its not mentioned in the official documentation that these possibilities are present.
Environment details

Angular version: 4.0.X

Clarity version: 0.10.0

OS and version: [OSX El Capitan 10.11.6 | Linux Ubuntu 16.4]

Browser: [all]

Haha, actually we were about to add this as part of our *clrIfExpanded unification. Right now you'd still be able to do it, it's just that you need an extra ngProjectAs that we're going to make unnecessary. Here is a plunker showing a working version of what you're trying to do: https://plnkr.co/edit/7Y5wkOcnMnvxisTUTx2q?p=preview
Notice I can both expand rows dynamically, or listen to when they expand or collapse due to user actions.
For the extra minor question, this isn't something we provide or plan on providing. I think the easy workaround you mention (always replace, and just reuse the content of the original cell in the detail if you didn't want to replace for this specific column) is absolutely fine, the performance impact are negligible since the details are only created when the user actually expands the row.
I hope this answers your questions. 😄

Actually, I'm going to close this but link it to #893 and #1240, to make sure we update Datagrid rows for the two-way binding syntax as part of the IfExpanded clean-up.

Thanks for the answers,
The ngProjectAs pretty much does the job, but I stumble on an additional bug.
when using
<ng-template ngProjectAs="clr-dg-row-detail" [(clrIfExpanded)]="expanded[i]" [clrDgReplace]="true">

the clrDgReplace no longer works. Do you have any tweak?

@brankoleone: [clrDgReplace] is an input of the <clr-dg-row-detail> component, so it should go on that rather than on the <ng-template>. Once again, I have to make a note to document this properly once we document the unified *clrIfExpanded for all of our components. 😂
So in your case, just to be clear:
<ng-template ngProjectAs="clr-dg-row-detail" [(clrIfExpanded)]="expanded[i]">
    <clr-dg-row-detail [clrDgReplace]="true">... </clr-dg-row-detail>
</ng-template>

@youdz is there a possibility to not play expanding animation on initial rendering if row is expanded by default?

@sbabich-nix: If you don't mind, we would like questions to be asked on StackOverflow with the tag vmware-clarity. Otherwise we pollute GitHub issues with them, and by asking questions on long-closed issues you risk us completely missing them.
Anyway, the expand animation doesn't play on initial rendering, that's part of @angular/animations itself, it's not up to us. See this stackblitz, there is no animation on initial rendering: https://stackblitz.com/edit/clarity-datagrid-initially-expanded?file=app%2Fapp.component.html

Thank you.
The one reason I am asking here not on stackoverflow is that I personally think these causes should be covered by documentation.
Sent from my Windows 10 phone
From: Eudes Petonnet-Vincent
Sent: 28 березня 2018 р. 21:58
To: vmware/clarity
Cc: Sergiy Babich; Mention
Subject: Re: [vmware/clarity] Datagrid expandable rows additional features(#1295)
@sbabich-nix: If you don't mind, we would like questions to be asked on StackOverflow with the tag vmware-clarity. Otherwise we pollute GitHub issues with them, and by asking questions on long-closed issues you risk us completely missing them.
Anyway, the expand animation doesn't play on initial rendering, that's part of @angular/animations itself, it's not up to us. See this stackblitz, there is no animation on initial rendering: https://stackblitz.com/edit/clarity-datagrid-initially-expanded?file=app%2Fapp.component.html
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
--
Confidentiality Note:  This e-mail and any attachments are confidential
and may be protected by legal privilege. If you are not the intended
recipient, be aware that any disclosure, copying, distribution or use of
this e-mail or any attachment is prohibited. If you have received this
e-mail in error, please notify us immediately by returning it to the sender
and delete this copy from your system. Thank you for your cooperation.


Binary cross entropy

Thanks for the create code. I am just wondering why you use binary cross entropy loss function in your github code and categorical cross-entropy in your blog post.  I have more than 2 categories I wish to classify, and it seems strange to me that you are using binary cross entropy for a classification problem with 3 classes. Can you explain to me why you are using this loss function?

I used categorical cross entropy in both cases.


Add UT for Kafka Producer with noAcks Configuration

What does this PR do?
Adds a test to validate a Kafka producer configured with no acks required.

Motivation
As part of this PR, we observed that no Kafka produce response is sent when the ackRequired field in the Kafka producer client is set to 0 (noAcks). To prevent future issues, we need to add a unit test for this scenario.

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Where is it in the -download-sections documentation that --force-keyframes-at-cuts is needed for downloading specific sections of video?

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2023.07.06 (update instructions) or later (specify commit)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
Someone told me that the reason why yt-dlp https://www.youtube.com/watch?v=8WxqUruNqJo --download-sections "*2-159.9" --ffmpeg-location "C:\Users\froze\Music\Downloaded Youtube Things\ffmpeg-6.0-full_build\bin\ffmpeg.exe" -x --audio-format m4a --audio-quality 0 --yes-overwrite didn't work was because I had to use --force-keyframes-at-cuts, but I didn't see it in the documentation on the main page, did I miss it somewhere? I hope that this can be changed so that others wanting to use --download-sections "*x-y" have less trouble in the future.
Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[ ] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['https://www.youtube.com/watch?v=8WxqUruNqJo', '--download-sections', '*9.9-159.9', '--ffmpeg-location', 'C:\\Users\\froze\\Music\\Downloaded Youtube Things\\ffmpeg-6.0-full_build\\bin\\ffmpeg.exe', '-x', '--audio-format', 'm4a', '--audio-quality', '0', '--yes-overwrite', '-vU']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[b532a3481] (pip)
[debug] Python 3.10.11 (CPython AMD64 64bit) - Windows-10-10.0.22621-SP0 (OpenSSL 1.1.1t  7 Feb 2023)
[debug] exe versions: ffmpeg 6.0-full_build-www.gyan.dev (setts), ffprobe 6.0-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.07.22, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1855 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version<EMAIL_ADDRESS>Current version<EMAIL_ADDRESS>yt-dlp is up to date<EMAIL_ADDRESS>[youtube] Extracting URL: https://www.youtube.com/watch?v=8WxqUruNqJo
[youtube] 8WxqUruNqJo: Downloading webpage
[youtube] 8WxqUruNqJo: Downloading ios player API JSON
[youtube] 8WxqUruNqJo: Downloading android player API JSON
[youtube] 8WxqUruNqJo: Downloading m3u8 information
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, vcodec:vp9.2, channels, acodec, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), channels, acodec, lang, proto, size, br, asr, vext, aext, hasaud, id
[info] 8WxqUruNqJo: Downloading 1 format(s): 251
[info] 8WxqUruNqJo: Downloading 1 time ranges: 9.9-159.9
Deleting existing file 【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].m4a
[debug] Invoking ffmpeg downloader on "https://rr4---sn-nu5gi0c-npoe7.googlevideo.com/videoplayback?expire=1693612051&ei=syPyZLvYI-TkrtoP-_SwyAc&ip=<IP_ADDRESS>&id=o-AGmrBp9xHLD13pzjNtyLLHGfInMHKnxAzeLJLcAxba5C&itag=251&source=youtube&requiressl=yes&mh=NQ&mm=31%2C29&mn=sn-nu5gi0c-npoe7%2Csn-npoeenez&ms=au%2Crdu&mv=m&mvi=4&pl=18&initcwndbps=1881250&spc=UWF9f4VcCqYdt_eFHdp7XRlPJu_I28U&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=2746877&dur=174.021&lmt=1634013233707182&mt=1693590327&fvip=2&keepalive=yes&fexp=24007246%2C51000022&c=ANDROID&txp=5431432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgFf1LSbgZmVm9H9skcb73j21gBw2g7fvljCseevKg7dECIC45JQf7X0fH9zVf1BYWKdsllCCo2jgGZTg3dyGwmNFx&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAJQKYd3blY-X4YZTGQz3CT1SBOkTSLRFhAJ2VDXJ6pQbAiAqjclc6Nataj-pxXRtxrfN_A_H3EO9Pedai3ovR6Zt8g%3D%3D"
[download] Destination: 【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm
[debug] ffmpeg.exe command line: "C:\Users\froze\Music\Downloaded Youtube Things\ffmpeg-6.0-full_build\bin\ffmpeg.exe" -y -loglevel verbose -headers "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Sec-Fetch-Mode: navigate
" -ss 9.9 -t 150.0 -i "https://rr4---sn-nu5gi0c-npoe7.googlevideo.com/videoplayback?expire=1693612051&ei=syPyZLvYI-TkrtoP-_SwyAc&ip=<IP_ADDRESS>&id=o-AGmrBp9xHLD13pzjNtyLLHGfInMHKnxAzeLJLcAxba5C&itag=251&source=youtube&requiressl=yes&mh=NQ&mm=31%2C29&mn=sn-nu5gi0c-npoe7%2Csn-npoeenez&ms=au%2Crdu&mv=m&mvi=4&pl=18&initcwndbps=1881250&spc=UWF9f4VcCqYdt_eFHdp7XRlPJu_I28U&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=2746877&dur=174.021&lmt=1634013233707182&mt=1693590327&fvip=2&keepalive=yes&fexp=24007246%2C51000022&c=ANDROID&txp=5431432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgFf1LSbgZmVm9H9skcb73j21gBw2g7fvljCseevKg7dECIC45JQf7X0fH9zVf1BYWKdsllCCo2jgGZTg3dyGwmNFx&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAJQKYd3blY-X4YZTGQz3CT1SBOkTSLRFhAJ2VDXJ6pQbAiAqjclc6Nataj-pxXRtxrfN_A_H3EO9Pedai3ovR6Zt8g%3D%3D" -c copy -f webm "file:【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm.part"
ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[tcp @ 00000186cbf45240] Starting connection attempt to <IP_ADDRESS> port 443
[tcp @ 00000186cbf45240] Successfully connected to <IP_ADDRESS> port 443
Input #0, matroska,webm, from 'https://rr4---sn-nu5gi0c-npoe7.googlevideo.com/videoplayback?expire=1693612051&ei=syPyZLvYI-TkrtoP-_SwyAc&ip=<IP_ADDRESS>&id=o-AGmrBp9xHLD13pzjNtyLLHGfInMHKnxAzeLJLcAxba5C&itag=251&source=youtube&requiressl=yes&mh=NQ&mm=31%2C29&mn=sn-nu5gi0c-npoe7%2Csn-npoeenez&ms=au%2Crdu&mv=m&mvi=4&pl=18&initcwndbps=1881250&spc=UWF9f4VcCqYdt_eFHdp7XRlPJu_I28U&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=2746877&dur=174.021&lmt=1634013233707182&mt=1693590327&fvip=2&keepalive=yes&fexp=24007246%2C51000022&c=ANDROID&txp=5431432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgFf1LSbgZmVm9H9skcb73j21gBw2g7fvljCseevKg7dECIC45JQf7X0fH9zVf1BYWKdsllCCo2jgGZTg3dyGwmNFx&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAJQKYd3blY-X4YZTGQz3CT1SBOkTSLRFhAJ2VDXJ6pQbAiAqjclc6Nataj-pxXRtxrfN_A_H3EO9Pedai3ovR6Zt8g%3D%3D':
  Metadata:
    encoder         : google/video-file
  Duration: 00:02:54.02, start: -0.007000, bitrate: 126 kb/s
  Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp, delay 312 (default)
Output #0, webm, to 'file:【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm.part':
  Metadata:
    encoder         : Lavf60.3.100
  Stream #0:0(eng): Audio: opus, 48000 Hz, stereo, fltp, delay 312 (default)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
No more output streams to write to, finishing..0kbits/s speed=N/A
[out#0/webm @ 00000186cbff2680] All streams finished
[out#0/webm @ 00000186cbff2680] Terminating muxer thread
[AVIOContext @ 00000186cc5ce600] Statistics: 2523361 bytes written, 2 seeks, 11 writeouts
size=    2464kB time=00:02:29.98 bitrate= 134.6kbits/s speed= 728x
video:0kB audio:2408kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.328627%
Input file #0 (https://rr4---sn-nu5gi0c-npoe7.googlevideo.com/videoplayback?expire=1693612051&ei=syPyZLvYI-TkrtoP-_SwyAc&ip=<IP_ADDRESS>&id=o-AGmrBp9xHLD13pzjNtyLLHGfInMHKnxAzeLJLcAxba5C&itag=251&source=youtube&requiressl=yes&mh=NQ&mm=31%2C29&mn=sn-nu5gi0c-npoe7%2Csn-npoeenez&ms=au%2Crdu&mv=m&mvi=4&pl=18&initcwndbps=1881250&spc=UWF9f4VcCqYdt_eFHdp7XRlPJu_I28U&vprv=1&svpuc=1&mime=audio%2Fwebm&gir=yes&clen=2746877&dur=174.021&lmt=1634013233707182&mt=1693590327&fvip=2&keepalive=yes&fexp=24007246%2C51000022&c=ANDROID&txp=5431432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgFf1LSbgZmVm9H9skcb73j21gBw2g7fvljCseevKg7dECIC45JQf7X0fH9zVf1BYWKdsllCCo2jgGZTg3dyGwmNFx&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIhAJQKYd3blY-X4YZTGQz3CT1SBOkTSLRFhAJ2VDXJ6pQbAiAqjclc6Nataj-pxXRtxrfN_A_H3EO9Pedai3ovR6Zt8g%3D%3D):
  Input stream #0:0 (audio): 7995 packets read (2465806 bytes);
  Total: 7995 packets (2465806 bytes) demuxed
Output file #0 (file:【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm.part):
  Output stream #0:0 (audio): 7994 packets muxed (2465530 bytes);
  Total: 7994 packets (2465530 bytes) muxed
Terminating demuxer thread 0
[AVIOContext @ 00000186cc5c9a00] Statistics: 2523120 bytes read, 0 seeks
[download] 100% of    2.41MiB in 00:00:01 at 1.78MiB/s
[debug] ffmpeg command line: "C:\Users\froze\Music\Downloaded Youtube Things\ffmpeg-6.0-full_build\bin\ffprobe.exe" -show_streams "file:【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm"
[ExtractAudio] Destination: 【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].m4a
[debug] ffmpeg command line: "C:\Users\froze\Music\Downloaded Youtube Things\ffmpeg-6.0-full_build\bin\ffmpeg.exe" -y -loglevel "repeat+info" -i "file:【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm" -vn -acodec aac "-q:a" 4.0 -movflags "+faststart" "file:【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].m4a"
Deleting original file 【オンゲキ bright】メインテーマ『Transcend Lights』PV [8WxqUruNqJo].webm (pass -k to keep)

You don't have to use it. It just improves accuracy of the cuts by re-encoding the video (which is costly, time-wise and compute-wise)

@bashonly sorrry when you say "improves accuracy" what exactly do you mean? I had a problem with --download-sections where for the link https://www.youtube.com/watch?v=8WxqUruNqJo it just doesn't cut at all until the start_time is set to at least 10.1 seconds (no, 10 seconds does not work) when using the parameters and arguments given in my original question. I'll update the original question to have verbose logs.

when you say "improves accuracy" what exactly do you mean?

Without --force-keyframes (and without re-encoding), ffmpeg can only cut to the nearest keyframe. The duration between keyframes can be 10 seconds or greater (it depends on how the video was encoded). So in the example you mention, there was a keyframe at the beginning of the video, and there was a keyframe at 00:00:10.X. --force-keyframes re-encodes the video before cutting, and forces keyframes at the cut points, so that the video can be cut with accuracy

I'll update the original question post to have verbose logs. Edit: I have no idea how to format verbose logs in an edit, pls help

Don't worry about it

ffmpeg can only cut to the nearest keyframe
So does that mean that in the past when i was using --download-sections without --force-keyframes it just so happened that where I picked was a keyframe?

Also different question now, so does ffmpeg just not care about the fact that I only wanted the audio and downloaded only audio and cuts based on the videos keyframes?

So does that mean that in the past when i was using --download-sections without --force-keyframes it just so happened that where I picked was a keyframe?

Yes, or you just did not notice the slight inaccuracy, since the duration between keyframes is often much fewer than 10 seconds

does ffmpeg just not care about the fact that I only wanted the audio and downloaded only audio and cuts based on the videos keyframes?

This is really more of a question for ffmpeg devs than about yt-dlp

Welp, can't help the fact that that happens ig, thanks for quick responses <3

re-encoding is too costly, are there any other ways to post-process the result with ffmpeg (without encoding) to cut the extra parts out?
Or is it possible to tell yt-dlp to start downloading from the keyframe? (instead of black screen just show the slightly extended video)

Losslessly cutting the video after the video+audio streams have been merged will yield better results. Though this would require you to 1) download the entire video and 2) use ffmpeg directly


Data loading is slow due to grabbing frames from huggingface dataset

I ran an experiment where I benchmarked times for running a dataloader on xarm_lift_medium_replay with batch size 256 and 0 workers.
8 batches takes ~ 15s. Here's the breakdown:

dataset.__getitem__: 14.707566491064426
load_previous_and_future_frames: 13.887129129978348
hf_dataset.select_columns(key)[data_ids][key]: 9.562710228981814

In a more recent benchmark I found that even with the video datasets, more time is taken up accessing the hf_dataset, than decoding videos:
from time import perf_counter

from tqdm import trange

from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
from lerobot.common.datasets.utils import load_previous_and_future_frames
from lerobot.common.datasets.video_utils import load_from_videos

fps = 15
horizon = 5

delta_timestamps = {
    "observation.image": [i / fps for i in range(horizon + 1)],
    "observation.state": [i / fps for i in range(horizon + 1)],
    "action": [i / fps for i in range(horizon)],
    "next.reward": [i / fps for i in range(horizon)],
}

dataset = LeRobotDataset("lerobot/xarm_lift_medium", delta_timestamps=delta_timestamps)

get_item_time = 0
delta_timestamps_time = 0
load_video_time = 0
transform_time = 0

def getitem(dataset: LeRobotDataset, idx: int) -> dict:
    global get_item_time, delta_timestamps_time, load_video_time, transform_time

    start = perf_counter()
    item = dataset.hf_dataset[idx]
    print("Get item:", (get_item_time := get_item_time + perf_counter() - start))

    start = perf_counter()
    if dataset.delta_timestamps is not None:
        item = load_previous_and_future_frames(
            item,
            dataset.hf_dataset,
            dataset.episode_data_index,
            dataset.delta_timestamps,
            dataset.tolerance_s,
        )
    print("Delta timestamps:", (delta_timestamps_time := delta_timestamps_time + perf_counter() - start))

    start = perf_counter()
    if dataset.video:
        item = load_from_videos(
            item,
            dataset.video_frame_keys,
            dataset.videos_dir,
            dataset.tolerance_s,
        )
    print("Load video:", (load_video_time := load_video_time + perf_counter() - start))

    start = perf_counter()
    if dataset.transform is not None:
        item = dataset.transform(item)
    print("Transform:", (transform_time := transform_time + perf_counter() - start))

    print()
    return item

for idx in trange(len(dataset)):
    getitem(dataset, idx)

The last iteration prints:
Get item: 3.056344897253439
Delta timestamps: 88.46708550985204
Load video: 65.91246535727987
Transform: 0.009780120220966637

@lhoestq do you have any insights on this issue?

I've been able to pin this down partially to the fact that we use an outer loop over keys to load the delta timestamps (see here):
Here, I show that we can get a 2x speedup by only slicing once (under these specific conditions):
import time

from datasets import load_dataset
from tqdm import trange

N = 256
M = 10
DATASET_REPO_ID = "lerobot/xarm_push_medium_image"

chunk_cols = ["observation.state", "observation.image", "action", "next.reward"]

hf_dataset = load_dataset(DATASET_REPO_ID, split="train")
indices = range(M)

def load_chunk(hf_dataset):
    return hf_dataset.select_columns(chunk_cols)[indices]

def load_chunk_with_outer_loop(hf_dataset):
    for col_name in chunk_cols:
        hf_dataset.select_columns(col_name)[indices]

start = time.perf_counter()
for _ in trange(N):
    load_chunk(hf_dataset)
print(time.perf_counter() - start)

start = time.perf_counter()
for _ in trange(N):
    load_chunk_with_outer_loop(hf_dataset)
print(time.perf_counter() - start)

start = time.perf_counter()
for ix in trange(N * M):
    item = hf_dataset[ix]
print(time.perf_counter() - start)


add S199 quasi-sober, edit sober definition

I could have proven S199 sober, but we get it for free as we already know the space is $T_0$.
Suggested by @david20000813 in https://github.com/pi-base/data/pull/934#issuecomment-2497019867

I added a direct proof that S199|P201 in the file for quasi-sober, because the deduction will use quasi-sober itself if this is merged!

Sorry, but replacing "nonempty" with "non-{P137}" in the argument is just extreme and not helpful, in my opinion.

I used it for the definition of quasi-sober earlier, so either way they should be made consistent.
I don't feel strongly one way or another so I'll remove the cross-reference.

I did not realize quasi-sober (P192) had been changed.
The previous version for both sober and quasi-sober was very clear, using the terminology of "irreducible subspace", which is common in this context.  And it did have an explanation of "irreducible" and a explicit link to "hyperconnected" for the reader's convenience.  Both properties were also parallel to each other.

Every nonempty irreducible closed subset of $X$ is the closure of exactly one point of $X$; that is, every nonempty irreducible closed subset has a unique generic point.  Here, a subset of $X$ is called irreducible if it is {P39} with the subspace topology.

I understand we wanted to link to "generic point" though.

@david20000813 comments on the above?

You beat me by one second :-)

@prabau Ah, yeah, I already merged. I find the new version is fine as is, but I do agree that using irreducible is more common in this context. Perhaps we can just add the reference to irreducible back in?

Like, say every nonempty irreducible ({P39}) closed subspace is {P201}.

I also find the new version for sober:

Every nonempty P39: Hyperconnected closed subspace of $X$ is
P201: Has a generic point, witnessed by exactly one generic point.

to be not as clear.  The old version said something like:

Every nonempty irreducible closed subset of $X$ is the closure of exactly one point of $X$; that is, every nonempty irreducible closed subset has a unique generic point.

which seems easier to grasp.  The new version is convoluted, with the witnessing business, just to introduce a link to generic point (such a link could be introduced differently).
Would both of you object if I try a PR to change things a bit?

I have no problem with improving my prose here, as long as we do keep the cross-reference to "has a generic point" somehow.


bug: component directive weird padding on top

Type: bug
Ionic Version: 2.x
Platform: android 6.0 webview
After I upgraded to RC4 and when some element is injected as component directive then  ~10px padding is added on top of the directive component that didn't happen before. This does not seem to happen on iOS.

Please complete the issue template by providing some more information (code, screen shots, steps to reproduce).


Chained execution hooks and reporting through Promises

Pull Request Test Coverage Report for Build 616

0 of 0   changed or added relevant lines in 0 files are covered.
6 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.2%) to 70.125%

Files with Coverage Reduction
New Missed Lines
%

dist/ThundraWrapper.js
6
93.82%

Totals

Change from base Build 614:
0.2%

Covered Lines:
2307

Relevant Lines:
3059

💛  - Coveralls


[Perf] Revisit TextColorer.WhenIndexPassed callback not being raised ASAP

Blocking the UI thread is what matters most, right? Also, the name WhenIndexPassed kind of implies that the callback should be raised as soon as the index is passed, not during the next flush after the index is passed. (note: Will lead to complications with Dispose, it may have to call RaiseIndexPassed() manually. (Actually, no, since the event already will be taken care of in Color().))

This code has been deleted, and the initial text displayed to the user seems to be highlighted by the time it's displayed, so no more need for barriers either. Re-adding this event API likely won't be necessary.


Wizard pauline

Module preparing N(z) for FoM analysis, FoM analysis module and ploting FoM module

Hi Pauline,
Sorry for just now getting to this. I don't think you meant to merge this, as it ends the Pull Request -- but I also am not sure how to open it up without starting yet another PR to revert your changes! gah!
Regardless, comments should be incoming in the code!
---chris


Do I need = None for Optional fields in Strawberry types?

Hey guys, do I need = None in Strawberry type for str, int, or List fields that can have None, or is Optional[...] sufficient?
@strawberry.type
class X:
    id: int
    name: Optional[str] = None
    y_id: Optional[int] = None
    items: Optional[List[Item]] = None

Upvote & Fund

We're using Polar.sh so you can upvote and help fund this issue.
We receive the funding once the issue is completed & confirmed by you.
Thank you in advance for helping prioritize & fund our backlog.

@enginecan it depends on how you want to use your object, if you want to skip passing some fields from the constructor then you need = None, if you want to be able to pass None to one of the field just Optional is fine 😊
Some examples here: https://play.strawberry.rocks/?gist=ac0cbfe7f40c0c50d45b28a74eac9022
Feel free to join our discord if you have more questions 😊 https://strawberry.rocks/discord


All detrending techniques can produce negative RR values

Each of the three detrending techniques (polynomial, smoothed priors, and SG) can yield negative RR intervals, which is obviously problematic.  The detrend methods are designed to remove low-frequency components from the signal including the average. So, when we remove the average from the signal it becomes centered around zero.
Here comes an example: https://scipy-lectures.org/intro/scipy/auto_examples/plot_detrend.html

Hi @noah10, this is behavior is expected. The detrend methods are designed to remove low-frequency components from the signal including the average. So, when we remove the average from the signal it becomes centered around zero.
Here comes an example: https://scipy-lectures.org/intro/scipy/auto_examples/plot_detrend.html

How do you recommend doing time domain analysis on detrended data? If I just call time_domain it will throw an error complaining about the existence of negative RRi values. Is there some technique to make the detrended data positive before calling time_domain?

How do you recommend doing time domain analysis on detrended data? If I just call time_domain it will throw an error complaining about the existence of negative RRi values. Is there some technique to make the detrended data positive before calling time_domain?

The detrend methods are used as a pre-processing step of the frequency-domain analysis. Its goal is to remove low-frequency components that might influence the results.
If you detrend your signal before performing time-domain analysis, most of the results will be affected. Time-domain is a collection of statistical methods and relies on the average (which is removed by the detrend methods).
In other words, you shouldn't detrend your signals before time-domain analyses.

The detrend methods are used as a pre-processing step of the frequency-domain analysis. Its goal is to remove low-frequency components that might influence the results.
If you detrend your signal before performing time-domain analysis, most of the results will be affected. Time-domain is a collection of statistical methods and relies on the average (which is removed by the detrend methods).
In other words, you shouldn't detrend your signals before time-domain analyses.

I wondered about that. Kubios does the mean RR and HR on the pre-detrended data, but all of the rest of the time domain analysis on the detrended data, which seems a bit odd. I'd like researchers who don't have Kubios to be able to replicate work done with Kubios, but I guess I'll just try doing all time-domain analysis on the pre-detrended data and see how well it correlates with the results from Kubios.

I wondered about that. Kubios does the mean RR and HR on the pre-detrended data, but all of the rest of the time domain analysis on the detrended data, which seems a bit odd. I'd like researchers who don't have Kubios to be able to replicate work done with Kubios, but I guess I'll just try doing all time-domain analysis on the pre-detrended data and see how well it correlates with the results from Kubios.


Unique Objects based on Key

I would like to offer an idea for extending the functionality of .enforce. Could we add a key parameter to the constructor which is a string key of the UniqueComparable object that gets returned by .enforce? The store could save that keyed value and return the full object if it passes.
Example if we wanted an object's code key to be unique:
const myUniqueEnforcer = new UniqueEnforcer("code");  // Understands that it'll be working with objects and "code" is a key of enforcable objects.

let value = myUniqueEnforcer({name: "Bobby Brown", code: "BB"}) // Works, saves "BB" in store
// value === {name: "Bobby Brown", code: "BB"}

value = myUniqueEnforcer({name: "Billy Bob", code: "BB"}) // Fails, since "BB" is already in store
// EnforceLimitError is raised

value = myUniqueEnforcer({name: "Bobby Brown", code: "BB2"}) // Works, saves "BB2" in store
// value === {name: "Bobby Brown", code: "BB2"}

This sounds like an interesting feature to me
I would encourage to use an options object for the constructor, so it is more future proof and can enhance without introducing breaking changes.
something like: new UniqueEnforcer({ key: 'code' })

Hi, thanks a lot for the idea!
Before we dive deeper, I wanted to point out that it’s currently possible to generate a whole database model or JavaScript Object with some unique fields without needing this suggested feature. Here’s an example:
import { UniqueEnforcer } from 'enforce-unique';

const uniqueEnforcerCode = new UniqueEnforcer();

function createRandomUser() {
  const name = faker.person.fullName();
  const code = uniqueEnforcerCode.enforce(() =>
    faker.datatype.uuid(),
    {
      maxTime: 50,
      maxRetries: 50,
    }
  );

  return {
    name,
    code,
  };
}

Does this approach feel cumbersome or inconvenient for your needs? Or is there something specific that this method doesn’t cover for you?
I’m asking because I want to keep the package as simple as possible and avoid adding complexity unless it’s really necessary. However, if you feel that the new feature would provide significant value, I’m open to considering it. Let’s discuss further!


Proxy Username and Password

<Type>://<Host>:<Port><User=Optional>:<Password=Optional>
Isn't there a separator between the port and the username?

And are there any recommendation to get high speed proxy servers ?

Fixed
<Type>://<Host>:<Port>@<User=Optional>:<Password=Optional>


Fix receiver to client.Do

This fixes the issue a couple of other people have noticed:
calling method Do with receiver client (type **http.Client) requires explicit dereference

Thanks!


Do I need to do training to improve prediction results?

The current models are trained on 2 different datasets. To suit your needs for different objects or specific scenes you can retrain to make the model prediction better.


[Bug] it didn't work when using tp on RTX 3090

Checklist

[x] 1. I have searched related issues but cannot get the expected help.
[x] 2. The bug has not been fixed in the latest version.
[x] 3. Please note that if the bug-related issue you submitted lacks corresponding environment info and a minimal reproducible demo, it will be challenging for us to reproduce and resolve the issue, reducing the likelihood of receiving feedback.
[x] 4. If the issue you raised is not a bug but a question, please raise a discussion at https://github.com/sgl-project/sglang/discussions/new/choose Otherwise, it will be closed.
[x] 5. Please use English, otherwise it will be closed.

Describe the bug
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/dfs/data/github/sglang/python/sglang/launch_server.py", line 19, in
raise e
File "/dfs/data/github/sglang/python/sglang/launch_server.py", line 17, in
launch_server(server_args)
File "/dfs/data/github/sglang/python/sglang/srt/server.py", line 365, in launch_server
raise RuntimeError(
RuntimeError: Initialization failed. controller_init_state: Traceback (most recent call last):
File "/dfs/data/github/sglang/python/sglang/srt/managers/controller_single.py", line 149, in start_controller_process
controller = ControllerSingle(
File "/dfs/data/github/sglang/python/sglang/srt/managers/controller_single.py", line 83, in init
self.tp_server = ModelTpServer(
File "/dfs/data/github/sglang/python/sglang/srt/managers/tp_worker.py", line 99, in init
self.model_runner = ModelRunner(
File "/dfs/data/github/sglang/python/sglang/srt/model_executor/model_runner.py", line 109, in init
min_per_gpu_memory = self.init_torch_distributed()
File "/dfs/data/github/sglang/python/sglang/srt/model_executor/model_runner.py", line 140, in init_torch_distributed
initialize_model_parallel(tensor_model_parallel_size=self.tp_size)
File "/usr/local/lib/python3.10/dist-packages/vllm/distributed/parallel_state.py", line 931, in initialize_model_parallel
_TP = init_model_parallel_group(group_ranks,
File "/usr/local/lib/python3.10/dist-packages/vllm/distributed/parallel_state.py", line 773, in init_model_parallel_group
return GroupCoordinator(
File "/usr/local/lib/python3.10/dist-packages/vllm/distributed/parallel_state.py", line 164, in init
self.ca_comm = CustomAllreduce(
File "/usr/local/lib/python3.10/dist-packages/vllm/distributed/device_communicators/custom_all_reduce.py", line 130, in init
if not _can_p2p(rank, world_size):
File "/usr/local/lib/python3.10/dist-packages/vllm/distributed/device_communicators/custom_all_reduce.py", line 31, in _can_p2p
if not gpu_p2p_access_check(rank, i):
File "/usr/local/lib/python3.10/dist-packages/vllm/distributed/device_communicators/custom_all_reduce_utils.py", line 227, in gpu_p2p_access_check
result = pickle.loads(returned.stdout)
_pickle.UnpicklingError: invalid load key, 'W'.
, detoken_init_state: init ok
Reproduction
python3 -m sglang.launch_server --model-path ../llama3/safesensor_models/ --port 30000 --trust-remote-code --disable-radix-cache --tp 2 --enable-p2p-check
Environment
WARNING 09-06 09:46:19 cuda.py:22] You are using a deprecated pynvml package. Please install nvidia-ml-py instead. See https://pypi.org/project/pynvml for more information.
Python: 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
CUDA available: True
GPU 0,1: NVIDIA GeForce RTX 3090
GPU 0,1 Compute Capability: 8.6
CUDA_HOME: /usr/local/cuda
NVCC: Cuda compilation tools, release 12.3, V12.3.107
CUDA Driver Version: 525.116.04
PyTorch: 2.4.0+cu121
sglang: 0.3.0
flashinfer: 0.1.6+cu121torch2.4
triton: 3.0.0
transformers: 4.44.2
requests: 2.32.3
tqdm: 4.66.5
numpy: 1.24.4
aiohttp: 3.9.1
fastapi: 0.112.3
hf_transfer: 0.1.8
huggingface_hub: 0.24.6
interegular: 0.3.3
packaging: 23.2
PIL: 10.2.0
psutil: 5.9.4
pydantic: 2.8.2
uvicorn: 0.30.6
uvloop: 0.20.0
zmq: 25.1.2
vllm: 0.5.5
multipart: 0.0.9
openai: 1.43.0
anthropic: 0.34.2
NVIDIA Topology:
GPU0    GPU1    NIC0    CPU Affinity    NUMA Affinity
GPU0     X      SYS     SYS     6-11,54-59      1
GPU1    SYS      X      SYS     36-41,84-89     6
NIC0    SYS     SYS      X
Legend:
X    = Self
SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
PIX  = Connection traversing at most a single PCIe bridge
NV#  = Connection traversing a bonded set of # NVLinks
NIC Legend:
NIC0: mlx5_0
ulimit soft: 1048576

The sglang document indicates using -- tp to represent tensor parallelism, but in reality, the parameter in the source code is -- tp-size, and -- tp cannot be found

ok, thank you. I'll try --tp-size

The sglang document indicates using -- tp to represent tensor parallelism, but in reality, the parameter in the source code is -- tp-size, and -- tp cannot be found

work for me.

try --disable-custom-allreduce


feat: Weigh price votes by power

Description
closes: #149

Author Checklist
All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.
I have...

[ ] included the correct type prefix in the PR title
[ ] added ! to the type prefix if API or client breaking change
[ ] added appropriate labels to the PR
[ ] targeted the correct branch
[ ] provided a link to the relevant issue or specification
[ ] added a changelog entry to CHANGELOG.md
[ ] included comments for documenting Go code
[ ] updated the relevant documentation or specification
[ ] reviewed "Files changed" and left comments if necessary
[ ] confirmed all CI checks have passed

Reviewers Checklist
All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.
I have...

[ ] confirmed the correct type prefix in the PR title
[ ] confirmed all author checklist items have been addressed
[ ] reviewed state machine logic
[ ] reviewed API design and naming
[ ] reviewed documentation is accurate
[ ] reviewed tests and test coverage
[ ] manually tested (if applicable)

Codecov Report

Merging #153 (5d83f5d) into main (c41680b) will increase coverage by 0.16%.
The diff coverage is 96.22%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #153      +/-   ##
==========================================
+ Coverage   16.97%   17.14%   +0.16%
==========================================
  Files          41       41
  Lines       11918    11946      +28
==========================================
+ Hits         2023     2048      +25
- Misses       9788     9790       +2
- Partials      107      108       +1

Impacted Files
Coverage Δ

x/oracle/types/ballot.go
95.00% <94.87%> (-1.94%)
:arrow_down:

x/oracle/abci.go
81.10% <100.00%> (+0.14%)
:arrow_up:

x/oracle/keeper/ballot.go
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Point ChainAPI router links to Airnode latest

Should ChainAPI doc set internal links to Airnode point to $themeConfig.latestversion.airnode? In doing this ChainAPI would need to support new released to Airnode as they come out without delay.

ChainAPI would need to support new released to Airnode as they come out without delay

I don't anticipate this is the plan. CC @andreogle

I am concerned if v0.8 will be supported by ChainAPI right away in that there are several changes. No breaking changed  that I am aware of. I want to use the new $themeConfig.latestversion.airnode variable for internal links in the ChainAPI doc set that point to the latest release of the Airnode doc set. This means I do not need to update ChainAPI docs every time there is a new release of Airnode.
Not sure this is a good idea so for now the ChainAPI doc set needs to be updated manually until we have this discussion with ChainAPI team members. @RyanMakiola @tamra9991

So this:
[Airnode](/airnode/v0.7)

Would becomes this if we implemented:
<router-link :to="$themeConfig.latestVersions.airnode">Airnode</router-link>

@wkande I think its safe to say that its better to keep ChainAPI manual. We do not have any plans at the moment to support the latest Airnode version on ChainAPI at the same time you release it. There will be a bit of a buffer between when it is released and when it is supported by ChainAPI

We go with manual then.


Show version in settings window

Use case:

User hits issue
Contacts support
We ask them to open settings and export logs and tell us which version

This info can be found in the About


Log In with a user who doesn't have access to the App on OKTA

Describe the bug?
I'm testing the demo app, WebSIgnIn (iOS).
I've a valid OKTA configuration
I've tested different use cases :

SignIn
Display Profile
Delete the App then install it
Log in with a user who doesn't have access to the App on OKTA

What is expected to happen?

1 When we sign out: display a popUp with a signOut  description message
2 Have the possibility to change the user

What is the actual behavior?

1

2 - we can't change the user even if we uninstall then reinstall the app

!!
And if we try to sign in, it's looping on opening / closing the browser.
Reproduction Steps?

Log In with a user who doesn't have access to the App on OKTA
Try to logIn with another user

Additional Information?
No response
SDK Version(s)
1.3.0
Build Information
No response

It sounds like the browser is caching a cookie / session from a previous log in attempt. How are you signing the user out @mohamed-59?  Unless you use the WebAuthentication.signOut(from:credential:options:) function (or its block-based equivalent), the cookie won't be cleared in the browser session.
I wrote an article in the API documentation on how to sign out which you might find helpful.
Finally, you can supply additional parameters at sign-in that can provide a hint to the authorization server for what you would like to have happen.  If you look at the documentation on the prompt parameter, you can see that the default behaviour will be for the user to be silently authenticated in the event a session already exists.
The signIn(from:options:) function accepts an array of Options, one of which controls the prompt behaviour.
So for your sign in action, you can try running code like the following:
let token = try await WebAuthentication.shared?.signIn(from: view.window, options: [ .prompt(.login) ])

Alternatively, you can try to ensure your user is signed out from the browser session.

To sign In, I have a WebAuthentication object initialized according to the app env
var auth: WebAuthentication?
func initAuth() {
       // ...
       do {
           if let url = Bundle.main.url(forResource: "Okta_DEV", withExtension: "plist") {
               auth = try WebAuthentication(plist: url)
           }
       } catch {  }
       // ...
   }

Sign in and signOut, from a view controller button clicks:
@IBAction func signIn0(_ sender: UIButton) {

        auth?.signIn(from: self.viewIfLoaded?.window, options: []) { result in
            switch result {
            case .success(let token):
                print("signIn-OK")
                Credential.default = Credential(token: token)
            case .failure(let error):
                print("signIn-KO")
                print(error.localizedDescription)
            }
            self.ubuttonsVisibility()
        }
    }

@IBAction func signIn0(_ sender: UIButton) {

        auth?.signIn(from: self.viewIfLoaded?.window, options: []) { result in
            switch result {
            case .success(let token):
                print("signIn-OK")
                Credential.default = Credential(token: token)
            case .failure(let error):
                print("signIn-KO")
                print(error.localizedDescription)
            }
            self.ubuttonsVisibility()
        }
    }

func setbuttonsVisibility() {

        if Credential.default == nil {
            print("hide logOUT / show logIN")
             // hide logOUT
             // show logIN
        } else {
            print("show logOUT / hide logIN")
            // hide logIN
            // show logOUT
        }
    }

Now to reproduce, it is quiet simple, you need:
1_ a valid OKTA configuration for an application with restricted access.
2_ an okta user account not authorized to use this app with this OKTA configuration.
3_ sign In -> fill the user mail/password
signIn-KO
Authentication error: User is not assigned to the client application. (code 41,297,856).
And signOut not available, and even if i call signOut, i have an error "missingIdToken"

I have also replaced
Credential.default = Credential(token: token)
Credential.default = nil

by
try? Credential.store(token)
try? Credential.default?.remove()

--> same result

And for an okta user account authorized to use this app with this OKTA configuration. Everything is OK.
Click signIn->
signIn-OK
show logOUT / hide logIN
Click signOut->
signOut-OK
hide logOUT / show logIN

Thank you for those reproduction steps and sample code. I'll give this a try locally shortly, and I'll see what I can find out.
Internal reference: OKTA-597669

Hi @mohamed-59 I was able to reproduce the problem locally, which is definitely odd. My reproduction steps were:

Create two Applications in Okta, one the user has access to, and another one that doesn't.
Sign in to App "A".
I change the client_id in my app settings and attempt to log in again.

I even attempted to pass the .prompt(.login) option to force the login screen to show, but that wasn't working for me.
I was able to work around this by setting ephemeralSession to true, which could be an option for you.
I'm going to continue investigating why the prompt option isn't working as expected.

One additional note I'd like to add @mohamed-59 is that you shouldn't encounter this issue if you ensure either of the following:

That you sign your users out using the signOut function (e.g. do not use remove or revoke explicitly). This will result in the Apple alert being shown to your users during sign out, but that will ensure the session is removed from the user's browser. See this section of the documentation for more information.
Set the ephemeralSession property to true. This will ensure the user's existing Okta session will not impact their ability to sign in, and they won't be presented with that error.  This means you should use the revoke function to sign the user out. See this section of the documentation for more information.

If your device or simulator is stuck, because you have a preexisting okta session getting in your way, you can go into Settings -> Safari, and can reset your browser cache.

I'm going to close this issue due to inactivity, but please feel free to reopen the issue in the future if these steps didn't resolve your problem @mohamed-59.


Fix Invalid Warning Log With Non-Blocking Retries

Foreign deserialization exception header in (kgh2496-retry-2000-0-0@33) ignored; possible attack?

Work around:
logging.level.org.springframework.kafka.retrytopic.DeadLetterPublishingRecovererFactory=error

I got this exception today after upgrading to boot 3.2.0-M2 and took me a while to figure out what it was. I wanted to submit a patch, but you already fixed it! :)

@jucosorin - fixed in 3.0.11 (and 2.9.12) which are available in Maven Central now.
See https://docs.spring.io/spring-kafka/docs/current/reference/html/#update-deps for how to override Boot's prescribed version.

Thank you @garyrussell for all your amazing work!


Fix DVM/DVMP hotlooping, remove remote watch TouchAnnotation, fix requeues so they used values from r.Migrate()

Closes #1011

I verified there is no observable perf change from this PR, which is what I expected. The goal of this PR is to reduce pointless API requests without reducing our migration performance.
Migration time for rocket-chat (this PR):
2 minutes, 55 seconds
Migration time for rocket-chat (master)
2 minutes, 56 seconds


Modify Administration/User Management/Permissions/Add_or_Edit_Destinations

Feature request:
I need, using terraform, to add destinations to my artifactory_permission_target
Currently I have to manually to go

Administration
User Management
Permissions
Click on either "Add Destinations" or "Edit Destinations"

to manually add them.
I want to be able to do this via terraform.

@marcosdiez Currently 'Destination' is not supported by the JFrog REST API.

And what can I do or to whom should I talk for that to be supported by the JFROG REST API ? I do work for a paying Jfrog customer. @alexhung

@marcosdiez Please open a support ticket with JFrog (or have your JFrog customer to open it). You can reference this GitHub issue in your feature request.

Just for the record, I got an improvement requested created with jfrog: https://jfrog.atlassian.net/browse/RTFACT-30011


Allow using dart:indexed_db in flutter apps

The dart analyzer fails with the following message when I try to import dart:indexed_db:
Target of URI doesn't exist: 'dart:indexed_db'.
Try creating the file referenced by the URI, or Try using a URI for a file that does exist.

The package compiles without errors and can use the dart:indexed_db library just fine but the error message from the analyzer (and possible pana penalty) is still a problem.
Steps to Reproduce
import dart:indexed_db in a flutter app or package
flutter doctor -v
Flutter (Channel master, v1.11.1-pre.57, on Mac OS X 10.14.5 18F132, locale en-DE)
    • Flutter version 1.11.1-pre.57 at /Users/simon/flutter
    • Framework revision eae05c7daf (36 minutes ago), 2019-11-14 13:19:40 -0800
    • Engine revision 7d6e376d83
    • Dart version 2.7.0

Hi @leisim
thank you for your contribution
(hive is the best)

@goderbauer Is this more work than just "flipping a switch"? Is there something I can help with?

@iapicca Anything I can help with?

The same problem, how I can solve it? Using 1.13.6-pre.44

Any news @iapicca? It is blocking error for me. Is any chance for fixing this or is it possible to estimate time for solution?
Try pls this:

run flutter create test_app
open created test_app folder in vs code
in lib/main.dart file insert import 'dart:indexeddb'; into the first line (there is no problem to import other files, e.g. import 'dart:html';)
after that, no running and debugging app is possible`

Thanks a lot for help.

Is there a reason indexed_db is blocked on Flutter in the first place?
I'm trying to get some internal DB working for my Flutter app and with the mess of plugins I just want to do conditional imports and be done with it, but that seems to not be an option.

I had the same problem, right? Does anybody know how to do that?

I personally use package:idb_shim.
It has an API that pretty much exactly matches the indexed_db api, but has implementations for every platform. All you need to do is provide it with a different IdbFactory depending on the platform.
On mobile:
import "package:idb_shim/idb_shim.dart";
import "package:idb_shim/idb_io.dart";
import "package:path_provider/path_provider.dart";

/// Provides access to an IndexedDB implementation.
///
/// The mobile implementation is based on a .json file.
Future<IdbFactory> get idbFactory async => getIdbFactoryPersistent(
	(await getApplicationDocumentsDirectory()).path
);

On web:
import "package:idb_shim/idb_shim.dart";
import "package:idb_shim/idb_browser.dart";

/// Provides access to an IndexedDB implementation.
///
/// The browser has an implementation built-in.
Future<IdbFactory> get idbFactory async => idbFactoryBrowser;

To coordinate it all, simply include these lines to import the correct IdbFactory:
import "idb_factory_stub.dart"
	if (dart.library.io) "idb_factory_io.dart"
	if (dart.library.html) "idb_factory_web.dart";

Future<Database> getDatabase async => (await idbFactory).open(/* initialization logic here */);

This approach does work once set up, and with a mobile implementation as well, may be simpler than a native indexed_db.

ref: https://www.gitmemory.com/issue/flutter/flutter/44937/570559644
According to what is said above, the reason has been found.

Isn't that just a link to the above comment? It just says the indexed_bd is blocked on Flutter, but not why, or if it can be put back.

+1. Still hoping to use indexed_db in Flutter Web apps.

Is there a specific reason this isn't supported? Is this as simple as adding dart:indexed_db to the copy of the Dart SDK used for analysis as was done in #12435 for dart:html, dart:js, & dart:js_util? If so, are you open to contributions?
CC: @devoncarew

Still waiting for this lol

Adding a comment here because since web browser supports this, all other platforms can easily support. Please provide a solution, since adding more and more packages makes the app grow in complexity. Using standard core libraries should be preferred.

indexed_db was only ever available in flutter_web applications, it does not work in flutter as we did not ship an indexed_db implementation in the engine. We have no plans to do so in the future.


Feature request: support text buttons

Currently FAB is based on ImageButton/ImageView, but it would be great to support texts instead:
– Users would be able to use icon fonts such as Material Font or Font Awesome
– Users would not need to think about sizes, colours, transparency, etc
I think using images in apps is very 90ies ;-) Imagine you want to replace your fully-white "plus" icon in the FAB with slightly greyish one – how much time is it going to take? With icon fonts – one second.

+1


Pakets get dropped because tperf client sends too large pakets

Using the default values for max_receive_packet_size all pakets from the tperf client get dropped because they are truncated on Linux and macOS using the loopback device.
Tested this inside a docker container, a Linux VM and native macOS.
The default for IPv6 is 1233 bytes but somehow the client sends initial pakets larger than that.
If I manually set max_receive_packet_size to 1235 bytes it works.
I collected a pcap trace of the packets from the client and can upload that in a couple of days if needed.

hey can you pull latest and try again? The default receive packet size should also be fixed now.

Current master seems to work. I consider this fixed.


5G Location selection Policies implementation

Description
Operational policy implementation is aimed to allow for the customization of the deployment and location planning process but not only. The Policies aim to allow to change the system's behaviour in a user-controlled manner.
The 2 Policy types were distinguished:

system-scoped - applicable to the whole system functioning
resource-scoped - applicable to the specific resource like a robot or the Network Application instance

The Policies available in the Middleware will be predefined. Their operational properties will be user managed, but the end-user will not be able to delete or add any new custom policy definitions.
The user-managed properties of the Policies will be:

Is Policy active,
Priority of the Policy,
Assignment of the resource-scoped policy to the specified Network Application

As an initial policy, the LocationSelection Policy type has been created to support the integration with the 5G testbed. The developed UrllcSliceLocation Policy aims to find the Middleware location with the Urllc slice that has the lowest latency.
Fixes #124, #67
Type of change

[x] New feature (non-breaking change which adds functionality)
[x] This change requires a documentation update

What has been changed?

Feature: Allow to assign policies to the Instance
Feature: DefaultLocation Policy that always returns the current location to keep the existing functioning of the system by Default.
Feature: UrllcSliceLocation Policy to find the best possible location that has Urllc Slice
Feature: Negotiation of the best location when more than one Location Policy is applied to the object. The Negotiation process takes into consideration how many policies from the applied set, the specified location meets, and the specified Policy Priority.
Feature: Negotiation of the policies for the specified Instance, and for the Action. All Instances within an Action are deployed in the same location. The identified Locations are negotiated to establish the best possible location for Action from the assigned set.
Doc: documentation of the Policies and the Location Negotiation mechanism

How Has This Been Tested?

[x] Testing of the existing functionality through the Unit Tests
[ ] Integration with the Slicing mechanism to be completed when all the building blocks are completed

Checklist:

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

@radu-popescu, when you will be checking the changes, don't be afraid of the scope. A lot of files are changed only due to the autoformatting applied :) The Meat of the PR is in the /src/ResourcePlanner/Policies.


Fix cilium-health endpoint probing with either IPv4 or IPv6 disabled

Previously, if either IPv4 or IPv6 was disabled, then we would fail out of attempting to probe health endpoint IPs. Change this to allow probing of IPs which are being used.
Fixes: #7456

This change is

test-me-please

test-me-please

Coverage increased (+0.01%) to 42.341% when pulling aa98679aee6ef0e8a4eface115adcd7fe7bdc2f8 on joestringer:submit/health-ep-fix into 80912fc6cb2b2dd6ef92cec3080c66d33d36a925 on cilium:master.


Checksum for 9bd9ffd3e52ab9e92b4f7b43051d83231743f231 intermittently changed?

Today (2022-02-01) at around 11:30 - 11:55 UTC (we didn't get much development time so can't provide a better time range) our CI builds started failing with this message:
java.io.IOException: Error downloading [https://github.com/bazelbuild/rules_scala/archive/9bd9ffd3e52ab9e92b4f7b43051d83231743f231.zip] to /builder/home/.cache/bazel/_bazel_root/eab0d61a99b6696edb3d2aff87b585e8/external/io_bazel_rules_scala/9bd9ffd3e52ab9e92b4f7b43051d83231743f231.zip: Checksum was 815a0c585ec76293753a2866d128d88f792bd705982b235ddda8ccde27638bc5 but wanted 438bc03bbb971c45385fde5762ab368a3321e9db5aa78b96252736d86396a9da
Builds after 13:18 UTC have passed.
wanted to raise it as we would not expect the Checksum for the commit hash to change and if there was any security implications?
Thanks

Thanks for the quick response :smile: we will move to that asap


Total is displayed with the high precision (which may totally destroy the layout)

Expected behavior and actual behavior:
The chart uses toFixed() to round slices to a configurable amount of digits after the decimal point.
I'd expect total to be treated in the same way (at least provide an option for that).
Steps to reproduce the problem:
Use any v1.x.x version of px-vis-pie with slices like: [4.05, 0, 0, 4.35]
Environment (component version number, Browser (including version), operating system, hardware, etc):
v1.x.x
Screenshots (optional, but very helpful):

Ok, I've added this, total now uses toFixed(this.decimalPercentage)

Thanks!

Fixed with 1.0.0 release


SNOW-1815432: Support include_nulls in unpivot

Which Jira issue is this PR addressing? Make sure that there is an accompanying issue to your PR.
<!---
In this section, please add a Snowflake Jira issue number.
<p>Note that if a corresponding GitHub issue exists, you should still include
the Snowflake Jira issue number. For example, for GitHub issue
https://github.com/snowflakedb/snowpark-python/issues/1400, you should
add "SNOW-1335071" here.
--->
Fixes SNOW-1815432

Fill out the following pre-review checklist:

[x] I am adding a new automated test(s) to verify correctness of my new code

[ ] If this test skips Local Testing mode, I'm requesting review from @snowflakedb/local-testing

[ ] I am adding new logging messages
[ ] I am adding a new telemetry message
[ ] I am adding new credentials
[ ] I am adding a new dependency
[ ] If this is a new feature/behavior, I'm adding the Local Testing parity changes.
[x] I acknowledge that I have ensured my changes to be thread-safe. Follow the link for more information: Thread-safe Developer Guidelines

Please describe how your code solves the related issue.
https://docs.snowflake.com/en/sql-reference/constructs/unpivot#parameters

Is there a local testing change that need to be made with this?

unpivot is not supported in local testing https://github.com/snowflakedb/snowpark-python/blob/61c2efbb2389a9273f82d7badd1775cf6aa1db47/src/snowflake/snowpark/mock/_analyzer.py#L921-L926


Document openExternalLinkInNewTab config.settings

Fixes #4380
Added Document for openExternalLinkInNewTab config.settings

@Manas-Kenge you need to sign the Plone Contributor Agreement to merge this pull request.
Learn about the Plone Contributor Agreement: https://plone.org/foundation/contributors-agreement

@Manas-Kenge please read and follow Contributing to Plone and First-time contributors.

@Manas-Kenge please read and follow Contributing to Plone and First-time contributors.

I have signed the Plone Contributor Agreement

@Manas-Kenge you need to sign the Plone Contributor Agreement to merge this pull request.
Learn about the Plone Contributor Agreement: https://plone.org/foundation/contributors-agreement

@Manas-Kenge the agreement may take up to a week to process. When you receive the notification, then please add a comment notifying that this pull request is ready for review.
Also clearly you did not follow my guidance, otherwise all the other GitHub Workflow Actions would pass. Can you see what is missing from this pull request?

@Manas-Kenge you need to sign the Plone Contributor Agreement to merge this pull request.
Learn about the Plone Contributor Agreement: https://plone.org/foundation/contributors-agreement

@Manas-Kenge you need to sign the Plone Contributor Agreement to merge this pull request.
Learn about the Plone Contributor Agreement: https://plone.org/foundation/contributors-agreement

@Manas-Kenge you need to sign the Plone Contributor Agreement to merge this pull request.
Learn about the Plone Contributor Agreement: https://plone.org/foundation/contributors-agreement

@Manas-Kenge please read and follow Contributing to Plone and First-time contributors.

I have signed the Plone Contributor Agreement

@Manas-Kenge from https://plone.org/foundation/contributors-agreement:

I signed the Agreement, but haven't been given access yet?
Please allow a week for a response. Volunteers process the Contributor Agreements. If you have issues, such as making a spelling error in your email or GitHub username, please contact<EMAIL_ADDRESS>

@Manas-Kenge some things have changed in the components that were at one point using this setting and now they are not. For the moment until we get everything aligned on what we need and want todo there is nothing for you todo or change.

@Manas-Kenge some things have changed in the components that were at one point using this setting and now they are not. For the moment until we get everything aligned on what we need and want todo there is nothing for you todo or change.

Ok, no problem. Let me know if anything comes up.


Fixed Command Injection

⚙ Description *
The vulnerability is caused due to the usage of child_process's exec() function which is vulnerable to Command Injection. Replacing the exec() function with execFile() function will mitigate this vulnerability.
💻 Technical Description *
The occurrence of this vulnerability is caused due to the usage of the exec() function. So replacing the exec() function with execFile() is enough to fix the issue.
Here is how it works:
var cmd = [
  'rpmbuild',
  '-bb',
  '--buildroot',
  buildRoot,
  specFile
];
var cmdFile = cmd[0];
cmd.shift();

The cmd array which includes user inputs is being mutated here. The first element is obviously the binary/shell execution file. Here it is rpmbuild. Then the first element is deleted from the array with the shift() function, this is to give it as arguments array to the execFile() function. So all together it becomes:
var cmd = [
  'rpmbuild',
  '-bb',
  '--buildroot',
  buildRoot,
  specFile
];
var cmdFile = cmd[0];
cmd.shift();

logger(chalk.cyan('Executing:'), cmd);

execOpts = execOpts || {};

execFile(cmdFile, [cmd], execOpts, function rpmbuild(err, stdout) {

  if (err) {
    return cb(err);
  }

  if (stdout) {
    var rpm = stdout.match(/(\/.+\..+\.rpm)/);

    if (rpm && rpm.length > 0) {
      var rpmDestination = rpm[0];

      if (rpmDest) {
        rpmDestination = path.join(rpmDest, path.basename(rpmDestination));
        logger(chalk.cyan('Copying RPM package to:'), rpmDestination);
        fsx.copySync(rpm[0], rpmDestination);
      }

      return cb(null, rpmDestination);
    }
  }
});

🐛 Proof of Concept (PoC) *
Place this file under the root directory of the project (poc.js)
// poc.js
var buildRpm = require('./index.js');
buildRpm({'tempDir':'test; touch HACKED; #'}, function(e){console.log(e)});

🔥 Proof of Fix (PoF) *
$ cd node-rpm-builder/
$ npm install
$ node poc.js

As you can see in the above screenshot, there is no file named HACKED thus fixing the issue.
NOTE:
The folder 'test; touch HACKED; #' is not part of the issue, that folder is created by the following code:
fsx.mkdirpSync(path.join(tmpDir, dirName));

👍 User Acceptance Testing (UAT)
The replacement of the exec() function with execFile() is the only change implemented.

Congratulations @mufeedvh - your fix has been selected! :tada:Thanks for being part of the community & helping secure the world's open source code.If you have any questions, please respond in the comments section. Your bounty is on its way - keep hunting!


Merge AnalyzerScattering

added analyzer for scattering intensity
updated README.md

Integrated static structure factor analyzer to main branch.


Let getAuthoriseUrl return a plaintext url

Why does getAuthoriseUrl(), in the test download,  returns a plaintext url and redirect me in a browser?
I need the url, but i can't figure out why it redirects me in stead of returning a plaintext url.
Who can explain to me, how i can get this work?

I'm not sure why this is closed, it still redirects.


TensorRT and ONNX

Hello
Thanks for your great work
How can i convert the model to onnx or TensorRT?
Thank you

Sorry, we do not try this currently.


Cupy.full does not have order parameter

Hello,
I noticed that Cupy.full does not have an order parameter, this both exists in Numpy.full and all the other Cupy.full like functions like full_like, ones_like and zeros_like. Is there any reason for that? I'm trying to use CuPy in a project as a drop in replacement and this errors out.
Thank you!

Thanks for pointing this out.  Adding support for order='F' was one of the first things I worked on in CuPy. I'm not sure why full and ones got left out of that previous work, but I have now added them in #3655.

Thank you, nice to see such a quick fix to this!


PreUnified now works with DateStamps only

Previous to this work, GCToolKit required TimeStamp even in the presence of DateStamp. This PR removes that dependency. PreUnified logs can now have a TimeStamp or a DateStamp or both.

@kcpeppe You've marked several (but not all) of @karianna's comments as 'resolved', but I don't see any changes.


engine: Implement iscsi session clean up after integration test

As we discussed, we need to make sure even if the test was interrupted or failed, the environment can be properly cleaned up, especially for iscsi sessions used during the test.
It's better to use trap in bash to clean it up properly.

Also using different volume name to make sure there won't be interference between the test running on the same node.

Done


Enable view template caching

This change caches view templates in memory:
# Current
$ time curl -s localhost:2000 >/dev/null
real	0m0.058s

# After change
$ time curl -s localhost:2000 >/dev/null
real	0m0.021s

Alternatively, this can be enabled by setting NODE_ENV=production but I couldn't figure out how to generate a plist with the environment variable.

Hi,
You can update nodemon.json to set NODE_ENV to development and enable or not caching based on that.

I tried that but the performance was similar to before the explicit cache enable.

Oh, this cache should be enabled for daemon mode, which doesn't use nodemon:
<array>
  <string>/opt/nodes/7.6.0/bin/node</string>
  <string>/Users/fengb/.config/yarn/global/node_modules/hotel/lib/daemon</string>
</array>

I see, actually if it's too complicated I wouldn't bother too much.
Even though it's a nice catch :+1:, the benefit is just 0.02 seconds which is unnoticeable and the daemon is just run locally. For a public website it would definitely make sense though.
I'm curious if this can work?
// daemon-prod.js
process.env.NODE_ENV = 'production'
require('./') // src/daemon/index.js

My intent is to speed up proxied requests. I believe the browser will hit the proxy every request so the 2ms adds up:

Actually, I remember needing to refresh my browser's proxy so it's probably not per request. Since the rest of the app doesn't use the view layer, this is probably not needed.
Thanks for your quick replies!


In-memory Engine: the tag in CacheRange may be inaccurate

Bug Report

After region split, in-memory engine changes range respectively, but it does not update the tag, because it does not know the region id. As the result, the tag might be misleading during debugging.
See https://github.com/tikv/tikv/pull/17137#discussion_r1637634602
What version of TiKV are you using?

Nightly, 2024-06-13.
What did you expect?
The tag should match the actually region ID.

Tag is removed, see https://github.com/tikv/tikv/pull/17331#discussion_r1716331463


Remove comment text

Inspired by Laravel, I guess. Just to keep the default config cleaner 🤷♂

Those seem like placeholders until the actual comments get added when 1.0 is released.

@devcircus You know what yeah that would make sense. I'm sure Adam has plans for that 😅


[Bug] [Knowledge Cli Command]Fail to delete the knowledge space using command caused by httprequest 'data':null.

Search before asking

[X] I had searched in the issues and found no similar issues.

Operating system information
Linux
Python version information
3.10
DB-GPT version
latest release
Related scenes

[ ] Chat Data
[ ] Chat Excel
[ ] Chat DB
[X] Chat Knowledge
[ ] Model Management
[ ] Dashboard
[ ] Plugins

Installation Information

[X] Installation From Source

[ ] Docker Installation

[ ] Docker Compose Installation

[ ] Cluster Installation

[ ] AutoDL Image

[ ] Other

Device information
GPU: 4090 , Count:1
Models information
LLM: Qwen2.5-14B-Instruct, Embedding:text2vec-large-chinese
What happened
when I try delete knowledge space or name just created on command line like,
 dbgpt knowledge delete --space_name testdbgpt_knowledge
but, get response error Exception like,
Exception: Http request error, code: 400, message: {"success":false,"err_code":"E0001","err_msg":"body.desc:Input should be a valid string;","data":null}
I found that dbgpt/app/knowledge/_cli/knowledge_client.py
def knowledge_delete(
    api_address: str, space_name: str, doc_name: str, confirm: bool = False
):
    client = KnowledgeApiClient(api_address)
    space = KnowledgeSpaceRequest()

    space.name = space_name
    space_list = client.space_list(KnowledgeSpaceRequest(name=space.name))
    if not space_list:
        raise Exception(f"No knowledge space name {space_name}")

when I adjust to assign space.desc='DB-GPT Cli' and sent request using the space parameter, deletion successed.
What you expected to happen
2024-12-01 13:20:13 nsscyk dbgpt.serve.core.schemas[1113687] ERROR validation_exception_handler catch RequestValidationError: success=False err_code='E0001' err_msg='body.desc:Input should be a valid string;' data=None
INFO:     <IP_ADDRESS>:47498 - "POST /knowledge/space/delete HTTP/1.1" 400 Bad Request

when I adjust to assign space.desc='DB-GPT Cli', deletion successed.
How to reproduce
Use dbgpt knowledge Command Line

dbgpt knowledge load --space_name testdbgpt_knowledge --vector_store_type Chroma --local_doc_path ~/test
dbgpt knowledge delete --space_name testdbgpt_knowledge

Additional context
No response
Are you willing to submit PR?

[x] Yes I am willing to submit a PR!

which dbgpt version you use?

which dbgpt version you use?

dbgpt --version
dbgpt, version 0.6.1

which dbgpt version you use?

dbgpt --version
dbgpt, version 0.6.1

dbgpt, version 0.6.2  was the same exception as like,
Exception: Http request error, code: 400, message: {"success":false,"err_code":"E0001","err_msg":"body.desc:Input should be a valid string;","data":null}


sqlite3.winmd could not be found error in windows 8.1 html app

Hi All,
I am receiving the error "sqlite3.winmd could not be found" when building the windows html app.
I followed all the steps to refer the sqllite component project..adding a reference and so on.
Please help to troubleshoot the problem.I am using VS 2013 ultimate and have all the prerequisites installed.
Thanks,

FYI EionRobb / phonegap-win8-sqlite got a version of this library working with Windows 8.1, and I am able to build it with Visual Studio Express 2013. Related to #135/#136. I will raise a pull request whenever I get a chance.


feat: lsc template and new commands

lsc create app command
angular template upgrade with ng8

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Remove build folder from source code in GIT

In GitLab by @ jberlin on Jul 29, 2022, 17:28
Unless there is a good reason to keep the compiled code together with the source code:
https://earth.bsc.es/gitlab/es/autosubmitreact/-/tree/master/build
I would suggest to completely remove this folder since takes space and is not useful to have it under git, unless of course as it was mentioned before there is a strong and good reason,
@mcastril @ggcr

In GitLab by @ jberlin on Jul 29, 2022, 17:39
mentioned in issue autosubmit_api#3

mentioned in commit 22e42f7d561729917bd57e045e20f552d5d426e0

marked this issue as related to #87


Serializer generator does not recognize op_wrapper

./js_operation_serializer generates the following:
proposal_create = new Serializer(
    "proposal_create"
    fee: asset
    fee_paying_account: protocol_id_type "account"
    expiration_time: time_point_sec
    proposed_ops: array operation
    review_period_seconds: optional uint32
    extensions: set future_extensions
)

This will not include the op variable was expected here:
json:
"proposed_ops":[{"op":[0,{"fee":

c++
struct proposal_create_operation : public base_operation
   {
       ...
       asset              fee;
       account_id_type    fee_paying_account;
       vector<op_wrapper> proposed_ops;
       ...
   }

   /**
    *  @brief necessary to support nested operations inside the proposal_create_operation
    */
   struct op_wrapper
   {
      public:
         op_wrapper(const operation& op = operation()):op(op){}
         operation op;
   };

} } // graphene::chain

FC_REFLECT_TYPENAME( graphene::chain::operation )
FC_REFLECT( graphene::chain::op_wrapper, (op) )

Updating this patch to follow new guidelines

This is safe to merge anywhere.. It only effects the generated javascript serialization file that gets manually ran then compared and checked into graphene-ui.

Looks good.


Could You Share the COCO JSON File for SynthTree43k?

I hope this message finds you well.
I am currently working on a project related to your work on SynthTree43k and am very interested in replicating your results. I was wondering if you could share the COCO format JSON file for SynthTree43k. It would be incredibly helpful for my project.
Thank you very much for your time and assistance!

The JSON files used for my work are those provided by the SynthTree43k dataset on the following Github repository: https://github.com/norlab-ulaval/PercepTreeV1. These are the whole-tree labeling files (train_RGB_entire_tree.json, val_RGB_entire_tree.json and test_RGB_entire_tree.json).

Oh, thank you for your invaluable assistance and support.


"check for updates" does not respect Windows' browser setting

All the "check for updates" function in the settings does is open a browser to the github "releases" page, which should use the browser that is set as default browser in Windows, not "Edge, because we're a microsoft product".

Hi @Pomax
I can't repro this in PowerToys 0.27.1 and Windows 10 20H2.
Which version of PowerToys and Windows 10 are you using?

Updated to 0.27.1 but that's the latest version so I'll have to recheck this once 0.27.2 comes out and the button actually does something again =S

@Pomax
just testing setting Firefox or Chrome as default browser and the link was opened in the selected browser.
Closing the issue since we don't have any hard-coded reference to Edge.
It is reproduces it's a problem on the system non in PowerToys.


Labels not working on qBittorrent server v3.3.5

Labels not working on qBittorrent server v3.3.5
Reported by Andrea thru Google Play Console & email

torrent list sort by "Date" don't work too.
Andrea.

little update:
"qBittorrent v3.3.6 was released. Minor bugfixes of v3.3.5. It also fixes crashes on launch for some Windows setups. It is a libtorrent problem. On Windows it uses libtorrent 1.0.9+git f716aef5 with commit 45cff5837f7b4af reverted as this one is causing the crashes. Investigation is ongoing. Mac OS X builds are ready too. Ubuntu PPA will follow.
BUGFIX: Do not create save folder in advance (glassez)
BUGFIX: Fix upper-bound limit of command line for "Run External Program" in Windows. Closes #5399. (Chocobo1)
BUGFIX: Invoke system's cmd.exe directly. (Chocobo1)
BUGFIX: Workaround space issues in file path for running external program on Windows. (Chocobo1)
BUGFIX: Fix icons are missing when using RTL languages in Options dialog. Closes #5398. (Chocobo1)"

@giogio11 Issue #99 created for the "Added on" problem.
I tested all the reported issues to start working on them for the next release.

Ciao Luis,
con l'ultima versione (Release 4.3.9) sono stati risolti i problemi che
avevo riscontrato con le ultime versioni di qBittorent server (3.3.6).
Grazie.
È possibile implementare, nel menù contestuale del singolo torrent di
qBittorrent Controller, l'opzione "limit share ratio to" (the ability to
ignore the global share ratio) ?

2016-07-24 17:29 GMT+02:00 Luis M. Gallardo D<EMAIL_ADDRESS>
@giogio11 https://github.com/giogio11 Issue #99
https://github.com/lgallard/qBittorrent-Controller/issues/99 created
for the "Added on" problem.
I tested all the reported issues to start working on them for the next
release.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lgallard/qBittorrent-Controller/issues/96#issuecomment-234783481,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOpVXQXN5by52rvIrzt4e_7p5B5obbi7ks5qY4TfgaJpZM4JOXt5
.

--
Andrea Spetti


How to deal with duplicate files?

Duplicate files in rpmtree tar files can be quite problematic when exporting them as container image layers!
This is what happens when I try to load a container image created from an rpmtree layer that contains duplicate files:
docker load --input /path/to/docker/image.tar
31ff0fbf1732: Loading layer [=================================>                 ]  607.7MB/916.2MB
Error processing tar file(duplicates of file paths not supported):

When looking at the image layer and searching for duplicate entries, I find these:
tar -tf layer.tar | sort | uniq -d
./usr/share/licenses/systemd/LICENSE.LGPL2.1
./usr/share/man/man3/nfs4_uid_to_name.3.gz

In my case they come from

systemd-251.13-6.fc37.x86_64.rpm + systemd-libs-251.13-6.fc37.x86_64.rpm (both containing the LICENSE file)
libnfsidmap-2.6.2-1.rc2.fc37.x86_64.rpm + nfs-utils-2.6.2-1.rc2.fc37.x86_64.rpm (both containing the nfs4_uid_to_name.3.gz file)

Can I somehow filter for duplicates or remove one duplicate manually?
I believe that this may be an issue with the rpms that I should report upstream (not a redhat engineer, but having to packages that may be installed together ship the same files sounds like a bug). But this is something that can always happen whenever you create large trees.
EDIT: upstream bzs:

systemd
nfs-utils

Hm, it may make sense to add a way to pick one of those and by default just take the first one and do not add the second one to the tar archive (but write a warning).

Adding a way to pick would just be advanced, just picking one to unblock you is fine by me if you can create a PR.

Thanks for taking PRs for this. I'll try to understand the current implementation and create a fix.

In pkg/rpm/cpio2tar.go the Tar function should be the place where to track if a file was already added and skip it if necessary.


Activate node using ngOnInit

I have the tree in a component, but want to activate the first node in the tree by default.
How can this be done?

Try:
<Tree #tree (onInitialize)="activateFirstNode()"></Tree>

activateFirstNode() {
  this.tree.roots[0].toggleActivated();
}

On Mon, Jul 18, 2016 at 6:28 PM, Gillardo<EMAIL_ADDRESS>wrote:

I have the tree in a component, but want to activate the first node in the
tree by default.
How can this be done?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/500tech/angular2-tree-component/issues/16, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACUsQ8ERtuBfGxFUIWle4-9Gr5SPxzp-ks5qW5ubgaJpZM4JO1VK
.

--
Adam Klein
CTO & Co-Founder
Tel. +972-52-747-5633
blog.500tech.com http://blog.500tech.com
meetup.com/angularjs-il

Sorry should of explained my problem a bit further.
I need to select the first node in the tree from within the ngOnInit event of my component.
My component has a tree component on it, i then load the data within the ngOnInit event and set nodes equal to my list of data.  After that, i need to select the first node.
I have tried using this.tree.roots[0].toggleActivated(); but i get an error of

TypeError: Cannot read property 'toggleActivated' of undefined

Here is my typescript code
export class LibraryComponent implements OnInit {

    @ViewChild('tree')
    tree : TreeComponent;

    folders: ReportFolder[] = new Array<ReportFolder>();

    constructor(
        private reportFolderService: ReportFolderService,
        private reportService: ReportService) {

    }

    ngOnInit() {
        this.reportFolderService.getAll(null, '', false)
            .then(result => {
                this.folders = result;

                // select the first folder in the tree
                this.tree.treeModel.getFirstRoot().toggleActivated();
            });
    };

    onActivate($event) {
        // this should be called when a node is activated
    }
}

My html is very basic, and has the tree on it like so
<Tree #tree [nodes]="folders" (onActivate)="onActivate($event)"></Tree>

change the code to this it works, but i do not think this is the right solution
// select the first folder in the tree
setTimeout(() => {
    this.tree.treeModel.getFirstRoot().toggleActivated();
}, 1000);

If you use ngIf to hide the tree until the data arrives,
and then use the (onInitialized) callback on the tree to toggle the first
root,
it should work (onInitialized will be called after the tree model is
initialized).
On Tue, Jul 19, 2016 at 12:16 PM, Gillardo<EMAIL_ADDRESS>wrote:

change the code to this it works, but i do not think this is the right
solution
// select the first folder in the tree
setTimeout(() => {
this.tree.treeModel.getFirstRoot().toggleActivated();
}, 1000);
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/500tech/angular2-tree-component/issues/16#issuecomment-233575845,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUsQ2i9eA3Q4fRbmWNn8T8nFfIl25l_ks5qXJXZgaJpZM4JO1VK
.

--
Adam Klein
CTO & Co-Founder
Tel. +972-52-747-5633
blog.500tech.com http://blog.500tech.com
meetup.com/angularjs-il

Try ngAfterViewInit instead of ngOnInit. Also you don't need to pass a time-value to setTimeout, 0 should work, too. This is because the component is not yet initialized and you have to wait for the next cycle until you can access it.

That will probably also work.
On Tue, Jul 26, 2016 at 2:47 PM, Alexander Ciesielski <
<EMAIL_ADDRESS>wrote:

Try ngAfterViewInit instead of ngOnInit. Also you don't need to pass a
time-value to setTimeout, 0 should work, too. This is because the component
is not yet initialized and you have to wait for the next cycle until you
can access it.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/500tech/angular2-tree-component/issues/16#issuecomment-235244736,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUsQ93hvcvsVQI_YT5cn8Nm2udIfxfGks5qZfPKgaJpZM4JO1VK
.

--
Adam Klein
CTO & Co-Founder
Tel. +972-52-747-5633
blog.500tech.com http://blog.500tech.com
meetup.com/angularjs-il

Have you succeeded? @Gillardo ?
Can I close the issue?

Yeah this is all ok, i used the setTimeout(() => {}, 0); option, thank you

Is it possible to focus arbitrary selected node and not the first one? I need this to select node based on routing parameter.

You can find the node using either getNodeById, getNodeByPath, or
getNodeBy(...),
and then select it using setIsActive(true)
On Tue, Sep 20, 2016 at 4:58 PM, Tomasz Ściso<EMAIL_ADDRESS>wrote:

Is it possible to focus arbitrary selected node and not the first one? I
need this to select node based on routing parameter.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/500tech/angular2-tree-component/issues/16#issuecomment-248308934,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUsQzMFbw87TX6vTpXkkGG8wGxU03Zkks5qr-ZtgaJpZM4JO1VK
.

--
Adam Klein
CTO & Co-Founder
Tel. +972-52-747-5633
blog.500tech.com http://blog.500tech.com
meetup.com/angularjs-il

You can do this for any node, by using the getNodeById method, or another api method to find the node

sorry @500tech-user didnt see you replied :)

:)
On Tue, Sep 20, 2016 at 5:58 PM, Gillardo<EMAIL_ADDRESS>wrote:

sorry @500tech-user https://github.com/500tech-user didnt see you
replied :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/500tech/angular2-tree-component/issues/16#issuecomment-248327495,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACUsQ7UF4xmPtmv34akw06fsu3HBepGCks5qr_SugaJpZM4JO1VK
.

--
Adam Klein
CTO & Co-Founder
Tel. +972-52-747-5633
blog.500tech.com http://blog.500tech.com
meetup.com/angularjs-il


feat(key-identifier): add meaningful toString()

Add a toString() implementation to the key identifier that shows the derivation path and algorithm. Makes it more convenient to show key identifier information in logs or error messages. Not printing assetName as it is only needed for legacy use cases and the coin type part of the derivation path identifies the asset anyway.

btw, bitcoin and bitcointestnet will collide with this string value

btw, bitcoin and bitcointestnet will collide with this string value

assetName in key identifier is a really ugly crutch for legacy support and I'd like to keep it out of new implementations. Really if you have a key identifier with an asset name and key type legacy, it means that you don't have an actual key identifier. Instead you have a reference to some ominous function in some dark corner of the codebase.

I wonder if it would be convenient to return something like {derivationPath}-{derivationAlgorithm}

let's keep toString for human readable representation, and add an id getter or similar in case we want to use this for caching, feels a little more reliable.


service account privileged

Trying to understand why logdna-agent require privileged access?
oc adm policy add-scc-to-user privileged system:serviceaccount:logdna-agent:logdna-agent
https://github.com/logdna/logdna-agent#openshift-logging
Is there any kind of community slack or email group for these type of questions?

This has been resolved in the latest release of the k8s agent - see release notes here specifically the 'running as non-root' section : https://docs.logdna.com/changelog/logdna-agent-for-kubernetes-and-openshift-v3-0
Closing this issue, but if you have additional questions, please open another issue and we'll be sure to respond.

This has been resolved in the latest release of the k8s agent - see release notes here specifically the 'running as non-root' section : https://docs.logdna.com/changelog/logdna-agent-for-kubernetes-and-openshift-v3-0
Closing this issue, but if you have additional questions, please open another issue and we'll be sure to respond.


Add logo and icon

We need an icon and a logo.

Delivered to master.
Added a logo made from these sources:
Business and finance icons created by Kiranshastry - Flaticon
Golden retriever icons created by surang - Flaticon
Commit
commit bbc529e999f5cc6574e589253fde9775cd2082b2
Author: Alex Hunt<EMAIL_ADDRESS>Date:   Thu Mar 17 00:23:10 2022 -0400
Issue19: Added icon and logo.

Testing

Tested that the logo displays appropriately when running from VS and when running from the exe manually.
Tested that it scales properly and still looks nice.
Tested that the icon appears in the window and the task tray.