Add pinning support

This is temporary support for pinning. Once I have this fleshed out (shouldn't be too far out - maybe this PR will even do the trick), I will merge.

@joefitzgerald I would love to have an extra pair of eyes here if you don't mind.

@abourget If you don't mind also taking a look at this, I would really appreciate it.


[Complex Text Layouts] Add compatibility for legacy Font resources.

~Depends on #42595 and #43030~
Add support for loading scenes with BitmapFonts and DynamicFonts. All relevant code is inside #ifndef DISABLE_DEPRECATED blocks.
TODO:

[x] Scene loads successfully.
[x] DynamicFonts are converted to Font.
[x] BitmapFont s are converted to Font.

Added extra check to ClassDB::_is_parent_class, to prevent error spam for other resource loaders.

Thanks!


Document how to delay code execution in a non-blocking manner

This closes https://github.com/godotengine/godot-docs/issues/4833.

This needs a rebase :)

Thanks!

I merged a bit fast but while this seems good to cherry-pick for 3.x, it doesn't seem fully up-to-date for 4.0, as yield has been replaced by await.

Cherry-picked for 3.4.

Cherry-picked for 3.3.4.


All Games changed to My Games & Apps

Stupid question, but is there a way to rename All Games to My Games & Apps like it is displayed on an Xbox?

Not without modifying the theme files. The issue is there is no data field in Playnite that says "My Games & Apps" that is translatable. there is a field that says "All Games" though which is why I've used that.


[NUCLEO_F042K6] coide exporter

adding missing coide project template

I dont see this enabled in coide class in exporters folder , should be?

It was already there. Only the template file is missing.

I dont see it there: https://github.com/mbedmicro/mbed/blob/master/workspace_tools/export/coide.py#L25


Broken error handling for karura

In the logs I see:
log/realtps-import.5.log:2022-10-31T11:49:48.719739180+00:00 INFO realtps_import::import - importing at least 3 blocks for chain karura
log/realtps-import.5.log:2022-10-31T11:49:48.719747368+00:00 DEBUG realtps_import::helpers - fetching block 2965699 for chain karura
log/realtps-import.5.log:2022-10-31T11:49:49.063628198+00:00 WARN realtps_import::delay - for chain karura received err connection error: Connection reset by peer (os error 104). retrying in 500 ms
log/realtps-import.5.log:2022-10-31T11:49:50.208977603+00:00 WARN realtps_import::delay - for chain karura received err error trying to connect: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:../ssl/statem/statem_clnt.c:1913: (self signed certificate). retrying in 1000 ms

And then "karura" is never mentioned again. I expect to see a third error printed by the top-level job runner, and then the job to be retried.
I see this error handling working for other chains, so I can't understand what is happening offhand.

I wonder if this task panicked.


Create ML_2_5_Linear_Regression_(A).md

Linear Regression Audio 📜
The file contains a set of 3 audio.mp3 files which provide knowledge covering the basics and introduction to the linear regression algorithm in machine learning
Fixes # <2784>

Type of change 📝

[ ] Audio (Should be in mp3 format Includes speech clarity, Concise ,Low distortion)
[ ] Vi#deo (Animations, screen-recordings, presentations and regular explanatory films are all possibilties etc)
[ ] Doc#umentation (Content Creation in the form of codes or tutorials)
[ ] Other (If you choose other, Please mention changes below)

Domain of Contribution 📊

[ ] Android Dev #(Flutter)
[ ] Android Dev #(Java)
[ ] Android Dev #(Kotlin)
[ ] Backend Dev #(Java)
[ ] Backend Dev #(.NET)
[ ] Backend Dev #(PHP)
[ ] Backend Dev #(Python)
[ ] C/#CPP
[ ] Competitive #Programming
[ ] Cyber #Security
[ ] DS#A
[ ] Data#base
[ ] Datascience with #Python
[ ] Datascience with #R
[ ] Frontend Dev #HTML/CSS/JS
[ ] Frontend Dev #React/Angular/Vue
[ ] Go#lang
[ ] Interview #Prep
[ ] Java_#Domain
[ ] Java#Script
[ ] ME#RN
[ ] Machine Learning
[ ] Open #Source
[ ] Python_#Domain
[ ] Ru#st
[ ] Statis#tics
[ ] UI/#UX

Checklist ✅

[ x] I follow Contributing Guidelines & Code of conduct of this project.

[ x] I have performed a self-review of my own code or work.

[x ] I'm GWOC'21 contributor

Screenshots / Gif (Optional) 📸

Create a fresh PR in the machine learning branch @ishaan107


ASIN of a product that caused AsinNotFoundException

Hi, I'm trying to get a few items in a single request and got an AsinNotFoundException error. How do I know which one ASIN from the list caused the error?
items = amazon.get_items(['XXXX', 'YYYYY'])

Thanks!

Hello, it was not possible, but I have just released version 4.1.1 to solve this by including the search string in the exception message.
Asin not found: the_string_not_containing_the_ASIN
https://github.com/sergioteula/python-amazon-paapi/releases/tag/v4.1.1


[Event Request] Page 132 "Posted Sales Invoice" && Page 143 "Posted Sales Invoices", action CreateCreditMemo: OnBeforeOnActionCreateCreditMemo

Hello,
we need a way to influence opening of the "Sales Credit Memo page" therefore we aks you to add a following publisher.
Thank you in advance!
action(CreateCreditMemo)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'Create Corrective Credit Memo';
                    Image = CreateCreditMemo;
                    Promoted = true;
                    PromotedCategory = Category5;
                    PromotedOnly = true;
                    ToolTip = 'Create a credit memo for this posted invoice that you complete and post manually to reverse the posted invoice.';

                    trigger OnAction()
                    var
                        SalesHeader: Record "Sales Header";
                        CorrectPostedSalesInvoice: Codeunit "Correct Posted Sales Invoice";
      // - new
                        IsHandled: Boolean;
      // + new
                    begin
      // - new
                        IsHandled := false;
                        OnBeforeOnActionCreateCreditMemo(Rec, IsHandled);
                        if not IsHandled then
      // + new
                            if CorrectPostedSalesInvoice.CreateCreditMemoCopyDocument(Rec, SalesHeader) then begin
                                PAGE.Run(PAGE::"Sales Credit Memo", SalesHeader);
                                CurrPage.Close;
                            end;
                    end;
                }

\\ - new
    [IntegrationEvent(false, false)]
    local procedure OnBeforeOnActionCreateCreditMemo(var SalesInvHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
    begin
    end;
\\ + new

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


2016 county name

Describe the error
The column 'county_name' in the 2016 csv is actually the state name. No county name is included.
To Find
Steps to find the error:

Go to 2016_US_County_Level_Presidential_Results.csv
Look at the column 'county_name'
See error

Agh, the file is accurate it's just the Alaska caused me to misinterpret! Closing now.


Add Docker configuration

Add docker configuration and documentation to run the application in a container.
Some small changes to the application were needed to make it more configurable.

Great contribution! Like the configuration setup far better than the original!
I'm going to try to setup a live Azure docker stack for demoing Opama shortly.


Cursor won't go past end of line

Does this issue occur when all extensions are disabled?: No

VS Code Version: 1.64.2
OS Version: Linux Mint 20.3 Cinnamon

Steps to Reproduce:

If I put the cursor at the end of any line and hit the right arrow key, it doesn't go to the beginning of the next line but stays put.

Solved: Vim emulator was enabled.


Remove the array gates

As far as I can see, they have very little (if any) practical use - there's no reason to use them with E2 (since you can just use E2 code instead) and there's no reason to use them without E2 (because you can't do much).
The one use I can think of is compacting 8 numeric wires into 1. Does anyone do that?

:thumbsup:

There's two entities I can think of that output arrays that these gates can make use of: E2, if you specifically design it to output an array with only numbers, and the plug/socket combo in array mode, if you specifically only fill the array with numbers.
There are other entities that output arrays, but I think most of the other ones don't contain numbers.
So they're not entirely useless.
Also, if you remove them, you'll break any old dupes anyone has which uses these gates.

Without E2, the plug/socket array mode is still only wiring convenience, since you can't put more than 8 numbers through (and the non-array mode passes 8 numbers).

thanks for breaking my stuff lol

If there were a full set of array gates with which you could actually do all the same array operations then I would've voted to keep it - but these gates are half-baked and a pain to work with.

Now you can't handle any arrays in gates, at least no pain to work with them

@suunrider What were you using them for?
Really the only things you could do were:

Compact 8 wires into 1.
Emulate a "select" gate (and save some wiring if you had a bunch of select gates with the same A-H inputs)
Index an array output from an E2 (in which case you could just move the indexing function inside the E2)

I connected them to a data plug which connects to an e2. I know that I can just use normal numbers, which I did now, but removing some "useless" gates to "clean up"  and breaking old dupes with it isn't worth it.
Let's remove gates then, since E2 can already do everything.

@suunrider No, the point is that array gates are not very intuitive to work with as gates. Removing gates as a whole would break a bunch of stuff.

@suunrider I thought data plugs were only for Hi-Speed connections?
Also, if you can do array gates better, feel free.

whoops, meant plug/socket one

No, the point is that array gates are not very intuitive to work with as gates.

Even if array gates are uncomfortable, they are at least one way to handle arrays in gates. This PR just removes that way and it's aim is to clean up wiremod, i think. So this PR results into cleaning up  wiremod from 4 "almost-useless" gates and breaking back-compatibility with it.

This PR is more like deleting the old non-advanced pod controller, because nobody used it.

You can't compare this PR with the pod controller's one, because there were 2 pod controllers. Here we only have one way to have arrays in gates.

Also, if you can do array gates better, feel free.

no ty

Even if array gates are uncomfortable, they are at least one way to handle arrays in gates.

So why are you okay with the lack of table gates?

I never said that i'm ok with them. Wirelink is just e2's highspeed.


react native webview iOS not keep session cookies when app killed from background then webview automatically logout

Bug description:

To Reproduce:

Expected behavior:

Screenshots/Videos:

Environment:

OS: iOS
OS version:13.1
react-native version: 64.1
react-native-webview version: 11.14.2

@naveenr1592  did you find any solution??

I have a same issue

Is there any solution to this? Any options from react-native-webview didn't resolve this issue.
My webview implementation is this
        <WebView
          onMessage={handlePostMessage}
          geolocationEnabled={true}
          decelerationRate={"normal"}
          incognito={false}
          cacheEnabled={true}
          thirdPartyCookiesEnabled={true}
          sharedCookiesEnabled={true}
          style={{ flex: 1 }}
        />

is related to https://github.com/react-native-webview/react-native-webview/issues/1780 ?

I can confirm the issue is still there

I had the same problem.
We fixed the issue by specifying the Expires or Max-Age of the cookie.
iOS has the problem of losing cookies without Expires or Max-Age that exist in web views in the background during memory cleanup.

I was able to find out from the cookie test on iOS safari.
I haven't tested it in all versions of iOS, but it happens in iOS 15 and later.


Could the "Gleis" word be omitted?

In the interest of leaving more horizontal space (for narrow screens like mobile devices), can an option be afforded that would suppress the word "Gleis" in the column of the railway?  Thanks in advance.

Probably I should add an option to set the railway name. So you could use an abbrev. like "Gl." in the SBB app.

Das wäre super.

Use the new option "platform_name" to set a specific abbrevation for the track/railway/platform. If not set, no name is shown.

Das isch super!  Danke vielmals!


Return validation results from verify_compact

I think that would be the way to go.

7 okt. 2016 kl. 16:31 skrev Jakob Schlyter<EMAIL_ADDRESS>@jschlyter commented on this pull request.
In src/jwkest/jws.py:

@@ -566,7 +578,7 @@ def verify_compact(self, jws, keys=None, allow_none=False, sigalg=None):
logger.debug(
"Verified message using key with kid=%s" % key.kid)
self.msg = jwt.payload()

               return self.msg

               return (self.msg, {'key': key})

One could also consider returning only a dictionary with both msg and key.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

-- Roland
"Education is the path from cocky ignorance to miserable uncertainty.” - Mark Twain

We now return a dict.

Have you looked at the tests ?

7 okt. 2016 kl. 22:39 skrev Jakob Schlyter<EMAIL_ADDRESS>We now return a dict.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/rohe/pyjwkest/pull/73#issuecomment-252355616, or mute the thread https://github.com/notifications/unsubscribe-auth/AAGGPAw9shuKLvprsPr4mrsSPpJXOa8Rks5qxq4SgaJpZM4KRF_U.

I have now. Also changed to that JWS self.key contains the last key.

So, if self.key contains the key that was used to verify the signature is there still
a need for getting it return ?
Having the method return a dict changes the API in a not backward compatible way so
if it can be avoided I’d prefer that.

8 okt. 2016 kl. 19:13 skrev Jakob Schlyter<EMAIL_ADDRESS>I have now. Also changed to that JWS self.key contains the last key.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

-- Roland
"Education is the path from cocky ignorance to miserable uncertainty.” - Mark Twain

I'm good with only setting self.key. Want a PR with only that?
--
Sent from my iPhone, hence this mail might be briefer than normal.

10 okt. 2016 kl. 20:01 skrev Roland Hedberg<EMAIL_ADDRESS>So, if self.key contains the key that was used to verify the signature is there still
a need for getting it return ?
Having the method return a dict changes the API in a not backward compatible way so
if it can be avoided I’d prefer that.

8 okt. 2016 kl. 19:13 skrev Jakob Schlyter<EMAIL_ADDRESS>I have now. Also changed to that JWS self.key contains the last key.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

-- Roland
"Education is the path from cocky ignorance to miserable uncertainty.” - Mark Twain
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Although do note that the API was not changed, the new verify_compact_verbose() returns the dict and the old verify_compact() still returns the msg only.
But, isn't storing results in the object itself might be dangerous for concurrency? If two validations happens simultanetously with the same JWS object, they will overwrite each others results.

Ah, right ! Sorry about that !

10 okt. 2016 kl. 20:33 skrev Jakob Schlyter<EMAIL_ADDRESS>Although do note that the API was not changed, the new verify_compact_verbose() returns the dict and the old verify_compact() still returns the msg only.
But, isn't storing results in the object itself might be dangerous for concurrency? If two validations happens simultanetously with the same JWS object, they will overwrite each others results.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

-- Roland
"Education is the path from cocky ignorance to miserable uncertainty.” - Mark Twain


Add more send types

Guess PRs don't work with Travis because of no tokens :/

Looks good to me. Thanks for adding these :)

https://travis-ci.org/davidchua/pymessenger/builds/160484980
You probably need to fix the tests.

@tbsf You need to publish it to PyPI I think?

@davidchua Can you publish these changes?

Thanks @Cretezy! Being able to send video is awesome!
@tbsf bumped pypi version to <IP_ADDRESS>
https://pypi.python.org/pypi/pymessenger
I'll look into the permissions issue today.

@Cretezy can you add some tests into this PR for the new additions?

Yeah I'll work on it soon, thanks for publishing!


Sumstats table download file - no FTP paths

User reported issue: unable to find FTP paths to studies of interest.
https://www.ebi.ac.uk/gwas/downloads/summary-statistics
The table is capped at 5,000 rows.
The old download button (top right of table - csv option, with FTP paths) is also capped at 5,000 rows.
The new link to download all sumstats files (see screenshot) does not contain FTP paths.  Should contain FTP paths.

@ala-ebi to confirm this is included in the new version


Fixed that can't select a different sheet #2307

Refers: Can't select a different sheet than the default in a gSheet importation #2307

Great job. I've tried it, and so far, everything works well.
Thank you.
Regards,
Antoine


[hotfix] Reference interface when creating Listeners class.

Codecov Report

Merging #41 into master will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master      #41   +/-   ##
=======================================
  Coverage   90.75%   90.75%
=======================================
  Files           6        6
  Lines         346      346
  Branches       55       55
=======================================
  Hits          314      314
  Misses         32       32

Impacted Files
Coverage Δ

src/types.ts
100.00% <ø> (ø)

src/listeners.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Add EdgeDetection Post Process Page

Add EdgeDetection Post Process Page.
It's about the contents of "EdgeDetection Post Process"

Please ignore the CI errors :-) I am working on fixing it

snapshot for this PR available at:
https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/DOCS/refs/pull/1224/merge

LGTM! https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/DOCS/refs/pull/1224/merge/toolsAndResources/assetLibraries/postProcessLibrary/edgeDetectionPP/ :-)
Merging.


Notifications: appearance tweaks for loading placeholder

Why
I have spotted that Notifications loading placeholder diverged slightly from feed entry appearance.
https://github.com/user-attachments/assets/2d7ef466-0dcd-4edf-ad64-d430ae0bcfba
How
Tweak sizing of and spacing between loading placeholder elements, add bottom border, randomize second text line width to break up visual repetition a bit.
Preview
https://github.com/user-attachments/assets/7d87f831-fcba-470b-ac09-72a2e3323509
https://github.com/user-attachments/assets/35d69c0e-c95a-416f-82fd-3913ca0f9617

After a bit of UI investigation it looks like most of list placeholders skips entry border. Happy to revert the border addition, if it is an established pattern. 🙂

oh no, i completely forgot about this and then independently made similar changes!
would you like to update this to the stuff i missed? notably, the randomization is cool

I have added a bit more randomization to the posts and notification placeholders.
For posts, the missing menu icon has been added as well as post content loaders has been tweaked a bit. The placeholder can also include an assets/preview box in some cases.
For notifications, there is a chance that the placeholder will became following notification variant, to break up the list a bit.
Updated previews
https://github.com/user-attachments/assets/451e9dac-8d7f-455f-8932-c0747b769143
https://github.com/user-attachments/assets/e6fb548d-0d69-4ea5-96d1-435561e10594
https://github.com/user-attachments/assets/2352a8f2-b009-4ccf-be67-d21965b48ca8
https://github.com/user-attachments/assets/d1101410-c4a7-45e9-ad3e-df0e4a06d31c

@gaearon The updated version should be up for re-review. 🙂


fix: listwidget in formwidget

Description
The list widget should be visible in the Form widget.
Also, updatePageNo shouldn't be called recursively when the List widget Height is adjusted.
Fixes #21113
Type of change

Please delete options that are not relevant.

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

Manual

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] 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
[ ] PR is being merged under a feature flag

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

/ok-to-test sha=e7dd641

/build-deploy-preview sha=e7dd641

the page becomes unresponsive when we increase the size of list item container inside form with SSP on. LOOM

https://github.com/appsmithorg/appsmith/pull/21234#issuecomment-1461520291
EDIT :the page becomes unresponsive when we increase the size of list item container inside form/Modal/Tab/List with SSP on. LOOM
@Tooluloope

/ok-to-test sha=d5e390b

/ok-to-test sha=81dc790

/ok-to-test sha=4ab3953

/build-deploy-preview sha=4ab3953

LGTM !!


fix: add right sidebar scrollbar (#1746)

Description

Closes #1746
What does this PR change? Give us a brief description.
Adds a scrollbar to right-sidebar for accessibility and navigation.  See details & discussion in #1746.
Did you change something visual? A before/after screenshot can be helpful.
Yes, scrollbar added.

Before:

After:

Additional Information

I was unable to decipher why the sl-container had a width specified but then a max-width set when min-width: 72rem when it only appears that the entire component would ever be visible at min-width: 72rem.  I needed to ensure width: auto now that the parent (.right-sidebar) has a max-width, otherwise a horizontal scrollbar would display which wasn't necessary so to minimize risk in case I'm overlooking something, I just set width to auto when min-width: 72rem to be consistent with styles applied on .right-sidebar.  Based on what I'm seeing in this component, the both the sl-container width and max-width could likely be removed completely but decided to play it safe - let me know if you think these can be removed.
The margin-right on right-sidebar is to provide spacing away from the window scrollbar so they don't end up immediately next to each other.
Manual testing on Windows Chrome/Edge/Firefox/Brave & Linux Chrome

Awesome stuff! Here is a preview of what the scrollbars look like for me on Windows/Firefox:

Sharing a few more screenshots and context. We took a look at your amazing contribution today in a Talkign & Doc'ing session on Discord. It's a great way to have feedback from more people and it's particularly useful for visual changes as people have different browsers, screen sizes, OS, etc.

macOS with the default scrollbar settings and a mouse plugged in

macOS with the default scrollbar settings and no mouse plugged in

Linux with an extension to tweak the sidebar appearance

To summarize the feedback we got:

It can definitely feels weird to have, depending on your browser window size, a potential floating scrollbar for the table of contents.
It maybe could be helpful if "On this page" was always visible, maybe sticked to the top.

Personally, I think this can be pondered with the fact that the comparison is between no sidebar at all at the moment and in the PR preview, having one, so it's definitely a big change. It's also something that would only be visible on pages with a fairly long table of contents, which is not the majority of the pages.
I'll try to research a bit more the topic and see if some other websites have other approaches to this, but so far I did not find any that would be particularly relevant so I think the PR is already an amazing step forward.

@BryceRussell @HiDeoo - Thanks for sharing the screenshots on other devices/browsers and for reviewing the PR in Talking and Docs, seems like a great way to collect feedback!
Regarding @HiDeoo's thoughts:

Agreed on it feeling weird on having a scrollbar on the page.  I do think it's a necessary step forward for accessibility and UX in general but, especially on smaller window sizes, it is a bit overwhelming to be honest.  This is part of the reason why I was suggesting in #1746 that a "thin" or "styled" scrollbar might be beneficial as I think it's a bit "less" overwhelming given the width.  If you haven't yet, take a look at the updated POC (details here) I put together to get a sense of what this would look like.  The more I thought about this, if we do add "thin" styling, I think adding to just left nav & right nav as opposed to everywhere throughout the side anywhere a scrollbar could appear would be most appropriate.  Another thought here is possibly to consider adding a formatter (or Starlight) configuration for "disable scroll" so users have the choice of whether or not they want scrollbar (could always be overridden via CSS as well).
"On this Page" - I did consider sticking this to the top originally but after reviewing other sites, came to the decision to let it scroll. I landed on that decision for a couple of reasons: 1) Other than React.dev, all the other sites ([VueJS}(https://vuejs.org/glossary/), Vercel, nextra, etc.) I reviewed do not have it stick; and 2) The important part of the TOC is the list items themselves as users know what the sidebar is for once they initially see "On this Page" so it seemed more appropriate to show as many of the items as possible since that it why users would be scrolling that area.

Look forward to hearing more thoughts on this and happy to make any adjustments to the PR, thank you!

I'll add that, especially given the feedback shared thus far, my recommendation would be to default to having scrollbars when content overflows (as opposed to a config option since user could override via CSS if they want to disable) and add "thin" styling to the scrollbar, defaulting to standard thin (scrollbar-width: thin) with a fallback to webkit for browsers do not yet support scrollbar-width).  It would behave like the following config from the POC.

Adding a small reminder for myself as I forgot to do that today: I would like to see what is the end result with thin scrollbars when using extension such as the one rendering the gold scrollbars and if the larger size configured in the extension is respected in such cases.

Just got a screenshot based on this webpage from someone using for accessibility purpose a scrollbar related extension:

scrollbar-width: thin are either not supported or override the extension settings so this pretty much means that, with this kind of extensions not working as expected, this option should not be used for now in Starlight.
If I am not forgetting anything, this pretty much leaves us with the current implementation used in this pull request.

Hi @HiDeoo -
Happy to take this in either direction as you see best, however my guess is that in this particular case, this is an issue in the extension not having caught up with the spec as scrollbar-width is a valid css property dating back to 2018 and a part of the latest editors draft.
Even Chrome which previously didn't support scrollbar-width and instead utilized the -webkit::scrollbar* css properties now has official support for scrollbar-width and scrollbar-color and applies them if they exist over the -webkit::scrollbar* properties.
Would be curious if the extension used in the screenshot handles the -webkit::scrollbar* properties since they are likely much more prevelent.  Do you know which extension was used in the screenshot?
If we did implement scrollbar-width: thin, it would include a fallback to -webkit::scrollbar*.  All the above said, happy to stick with standard scrollbars to avoid any potential issues for extensions/browsers that don't support either scrollbar-width or -webkit::scrollbar*.

I just tried with ::-webkit-scrollbar which includes a width and height property as I assume this would be the approach used to mimic thin scrollbars? If yes, the extension still doesn't seem to work and the "thin" scrollbar is always used instead of the custom ones.
I'm also not quite sure to understand how a fallback approach would work in this case as scrollbar-width: thin is supported by the browser so I guess -webkit::scrollbar* would be ignored anw?
The extension in the screenshots is Rescroller but maybe I missed something or misunderstood the idea?

Hi @HiDeoo -
Thanks for the follow-up and testing some situations out.  When using the -webkit::scrollbar* settings, unfortunately things are a little more complex than only setting height/width - in fact, if you set them vs. not setting them it changes the behavior slightly but either way you need to set some of the other -webkit::scrollbar* pseudos' to make it work properly.  See the section at the bottom of this article that stars with the text "Note that when you set the width or height of ::-webkit-scrollbar..."  for more details on width/height and the article in general for ways to achieve modern vs. legacy solution.
If you take a look at the CSS of the POC I built, you'll see various rules configured based on the options in the Control Panel.  If you toggle the "Scrollbar Type" field to "prefer webkit", the scrollbars will change to webkit style falling back to scrollbar-width if the webkit properties aren't supported.  Detection of support for scrollbar-width and -webkit::scrollbar* is done with @supports rules.
I took a look at the Rescroller extension and determined why it doesn't work when scrollbar-width is thin.  In short, the way Chrome behaves now is that if there is a scrollbar-width property, Chrome will use it and ignore any -webkit::scrollbar* properties completely even if they are marked with !important.  The extension injects -webkit::scrollbar* rules to the page (this is how it achieves the custom scrollbars) but does not account for scrollbar-thin being present.  The extension hasn't had any significant updates in over 8 years so I'm not suprised by this.  What needs to occur within the extension itself is to apply scrollbar-width: unset to ensure that the -webkit::scrollbar* properties it injects are always honored (since it won't know if the site visited is using scrollbar-width or not).
You can see this in action as follows:

Install rescroller
After installing its "settings" page should appear but if not, navigate to its settings page
You'll notice the scrolbars on your page have changed to the style selected in settings.
Open dev tools and on the html element, add scrollbar-width: thin
Scrollbar width should change to thin
Add scrollbar-width: unset under the thin
Scrollbar should change back to rescroller settings

You can run a similar test with the POC.
In short, the extension has a bug and does not account for scrollbar-width which makes sense since it was introduced after the extension was last updated.  Anyone using the extension would need to add a custom CSS rule to the extension settings to unset scrollbar-width and apply the styles of their choosing.
If we did apply thin, the CSS would look something like the below which would mean scrollbar-width would be used/applied by the browser unless it didn't support it in which case -webkit::scrollbar* rules would be used/applied (unless browser doesn't support in which case standard scrollbars would be used/applied).  There isn't a need for @supports since if the rule contains properties that the browser doesn't support, it just ignores it (we could wrap with @supports for clarity though.
@media (pointer: fine) {
  :root {
    --sl-scrollbar-size-legacy: 7px;
    --sl-scrollbar-color-track: var(--ec-frm-edBg);
    --sl-scrollbar-color-thumb: var(--ec-frm-edTabBarBrdBtmCol);
    --sl-scrollbar-color-thumb-hover: var(--sl-color-gray-4);
  }

  .right-sidebar,
  #starlight__sidebar {
    scrollbar-width: thin;
  }

  /* Legacy browsers with `::-webkit-scrollbar-*` support */
  .right-sidebar::-webkit-scrollbar,
  #starlight__sidebar::-webkit-scrollbar {
    height: var(--sl-scrollbar-size-legacy);
    width: var(--sl-scrollbar-size-legacy);
  }
  .right-sidebar::-webkit-scrollbar-track,
  #starlight__sidebar::-webkit-scrollbar-track {
    background: var(--sl-scrollbar-color-track);
    border-radius: 10px;
  }
  .right-sidebar::-webkit-scrollbar-thumb,
  #starlight__sidebar::-webkit-scrollbar-thumb {
    background: var(--sl-scrollbar-color-thumb);
    border-radius: 10px;
  }
  .right-sidebar::-webkit-scrollbar-thumb:hover,
  #starlight__sidebar::-webkit-scrollbar-thumb:hover {
    background: var(--sl-scrollbar-color-thumb-hover);
  }
}

All the above said, I think the decision to apply thin or not comes down to the guidelines that Starlight follows in terms of browser support as any CSS rule (not just scrollbars) has the potential to break an extension if the extension doesn't support it properly (assuming the browser itself supports the rule).  As mentioned above, I'm good either way, whichever you and the Starlight team think is best.


Slow

There is a problem in wpf, with fast scrolling, many pages are requested and until all of them are received, the data is not displayed.

I suggest displaying data not based on queue, but based on stack.
Add custom pause for new page request. If the page has changed at the time of pause, then we do not request it.

More information would be helpful, but if I interpret it right, then I like your idea and would like to put it into this project.
So correct me if I am wrong, here comes my interpretation:
At first just to get the concept for simplicity we'll ignore preloading (no preloading). Same goes to page removal (hoarding; no LRU or custom page removal logic). The chosen fetcher kinds shouldn't matter much. But your suggestion is only relevant for async index access.
From user perspective this is what should happen:

User scrolls to approximately desired position (for example by dragging the scroll bar with the mouse)
Placeholder (progress bars/rings/whatever) are shown instantly everywhere
Where the user stops, the placeholders of these items of the ItemsControl are replaced by the "right" thing first

That is why I think that your suggestion will never be relevant for the sync index access. Without placeholders the UI would block until the first page is loaded anyway.
So technically speaking:

Alot of index requests in a relatively small timeframe
We generate (async) pages appropriately

As always it would create the placeholders right away
However instead of triggering the fetch of the right items from the backend in parallel right away (this leads to queue-like behavior/First In First Out FIFO)
We'll delay it (the 2. point of your suggestion)
This delay gives us time to collect the pending backend request and we'll priotize the most recent first (this leads to stack-like behavior/Last In First Out LIFO) => the 1. point of your suggestion

Like I mentioned before, I like that idea (thank you) and I also would like to integrate it in BFF.DVC. But I guess it will be some effort, so I cannot guarantee you that it will get done quickly. On top of the complexity of a naive configuration which I chose for this comment at the end I cannot just ignore preloading and page removal. I'll have to decide what to do about it. Either I'll figure out how to integrate these configurations or I'll exclude them for stack-/LIFO-mode. Another decision is whether to transition from FIFO to LIFO completely or offer both. That's all interesting and I am excited. What I know for sure is that this feature will mark a new major release!
Until then if you cannot wait that long. I think you could - to some extend - accomplished the desired behavior with the current version of BFF.DVC. The page fetchers are giving control from BFF.DVC back to the using developer/project (in this case you). Instead of fetching the page right away you could delay and priotize it yourself. Of course it would have some drawbacks. For example it would become complicated with LRU page removal and so on. But if you cannot wait I would suggest such an experiment for you in the mean time. However, if I am successful with this issue, then your effort of this experiment will go to waste. You'll have to decide whether that is worth your time.
By the way, I like the irony of the title of the issue being "Slow" and then suggesting pauses to make it faster. 👍

Intermediate results:
I think that I've come pretty far this weekend, but nothing pushable sofar. I'll need at least the next weekend, but I am on it.
And I cannot promise anything, but it seems that it won't be to complicated.

@Yeah69 Yes, you got it right. You can take your time, the main thing is high-quality implementation

in general, is it worth relying on fixed-width pages. for example, I drag the slider to a certain place with the mouse and get into a page break.
As I understand it, two requests will go to the backend. I would do this.
Option 1 is simple to combine two queries into one.
Option 2 is more difficult to set the page size from and to.

@Yeah69 Thanks, I will test


Update thumbnails only when they are visible (to improve scrolling through large documents)

This PR postpones highlighting the current page thumbnail in PDFThumbnailViewer.scrollThumbnailIntoView() until the thumbnail view is opened. Setting the style of thumbnails can take long and become a bottleneck if the document (and thus, the DOM tree) is very large. Scrolling through very large documents is now smoother with this PR.
Good tests:
[1] pdf (2000+ pages) from #5207 and
[2] pdf (3000+ pages) from https://bugzilla.mozilla.org/show_bug.cgi?id=885287#c6.
[3] pdf (5000+ pages)
A benchmark: Scrolling through the first 50 pages of [3] with the ↓ key:

Browser
w/o patch
w/ patch

FF 34
1:01
0:49

FF Nightly 37.0a1
1:50
1:07

Another benchmark: While scrolling through the first 10 pages of [1] with the ↓ key, the frame rates are now much more often at the 60 fps mark (FF Nightly 37.0a1):

EDIT: Added correct link to [3] which I had used for benchmarking, added Firefox 24 results (which shows performance regression of Nightly)

I added a second commit: Update thumbnail images only when sidebar is visible.
This finally makes scrolling smooth as butter, as long as thumbnails are off. Updating the thumbnail images causes one or two reflows (setting the image and setting the data-loaded css class), which were causing the lags.

Browser
w/o patch
w/ patch
w/ 2nd patch

FF 34
1:01
0:49
0:46

FF Nightly 37.0a1
1:50
1:07
0:46

/botio-linux preview

Fixes #3120.

@Snuffleupagus I agree. Commit is updated.

I also changed the css style of the hidden sidebar container from visibility: hidden (= do the reflow and show things transparently) to display: none. This saves layouting of 4 extra DOM elements per page and so makes everything even smoother (it almost makes the first two commits obsolete ;-)

I also changed the css style of the hidden sidebar container from visibility: hidden (= do the reflow and show things transparently) to display: none.

This is a great idea, but unfortunately it causes the "open sidebar" animation to behave strangely. The sidebar now opens instantaneously, while the toolbar still transitions correctly. Interestingly the "close" animation still works as it should.
To easily reproduce this, try increasing the transition-duration to a couple of seconds (instead of the current 200ms).

@Snuffleupagus You're right, good point. It seems like this cannot be fixed in pure CSS, because the display property does not support transition. Since there's no trivial fix to this, I removed the commit again.
So I see three possibilities for this change:

Reject the idea
It might be possible to fix the transition with JavaScript and a timer (less elegant. I'd open a separate PR)
Somebody has a more elegant idea.

Reasons for 1: It's only relevant in edge cases, where documents have thousands of pages and thumbs are off. And performance issues are mostly resolved already in this PR. Solution 2 is kinda hacky.
Reasons for 2: A slimmer DOM tree is always welcome, and removing thousands of DOM elements from the layout are definitely noticeable in the UI responsiveness for large documents. Also saves some memory (1KB / page).
Any opinions?

preferring display: none over visibility hidden is a good idea. it should be worked on in a follow up pr.

My opinion is that we should not regress the current behaviour. I think we can try to implement the display: none (or similar) idea in a follow-up PR instead.

@fkaelberer Will manually setting the height/width to 0 instead of using display: none achive the same result? If so, doing something like this might just work:
diff --git a/web/viewer.css b/web/viewer.css
index 91e64ea..affcc9a 100644
--- a/web/viewer.css
+++ b/web/viewer.css
@@ -166,7 +166,8 @@ html[dir='rtl'] .innerCenter {
   top: 0;
   bottom: 0;
   width: 200px;
-  visibility: hidden;
+  max-height: 0px;
+  max-width: 0px;
   -webkit-transition-duration: 200ms;
   -webkit-transition-timing-function: ease;
   transition-duration: 200ms;
@@ -186,7 +187,8 @@ html[dir='rtl'] #sidebarContainer {

 #outerContainer.sidebarMoving > #sidebarContainer,
 #outerContainer.sidebarOpen > #sidebarContainer {
-  visibility: visible;
+  max-height: inherit;
+  max-width: inherit;
 }
 html[dir='ltr'] #outerContainer.sidebarOpen > #sidebarContainer {
   left: 0px;

Needs merge.

Merged.

I think together with #5617 this is good to go.

I reported the scrolling performance regression of FF37 upstream:
https://bugzilla.mozilla.org/show_bug.cgi?id=1117322

@fkaelberer Could you rebase this again since the thumbnail code has been refactored in #5673?

Rebased.

/botio-windows preview

Thank you


[symfony2 plugin] Fix deprecated usage

When using the command alias sfcontainer or sfrouter, the following warning occurs:

! [CAUTION] The use of "container:debug" command is deprecated since version 2.7 and will be removed in 3.0. Use the "debug:container" instead.

👍


Simulator Issue

After installing we are running into an issue accessing our database (CouchDB) server hosted on an external url, runs ok on device and doesnt impact browser (via serve).
Any ideas?
We are just getting a 404 Object not found error.
Many thanks,
S

Hi, we need more info to debug, thanks.


feat(asset): Validate calibration forecast interval

Pull Request
🤨 Rationale
Task: Show appropriate errors when timeframe exceeds limits
👩💻 Implementation
Validate query before running it
🧪 Testing
Added 3 test+

✅ Checklist

[x] This PR has a title that follows the commit message format.

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

v3.20.0
GitHub release

Your semantic-release bot :package::rocket:


Updated NetworkConfigurationDiagnostic API + example

This checklist is used to make sure that common issues in a pull request are addressed. This will expedite the process of getting your pull request merged and avoid extra work on your part to fix issues discovered during the review process.
PR information

[ ] The title of the PR is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For information on cleaning up the commits in your pull request, see this page.
[ ] Except for special cases involving multiple contributors, the PR is started from a fork of the main repository, not a branch.
[ ] If applicable, the PR references the bug/issue that it fixes.
[ ] Swagger files are correctly named (e.g. the api-version in the path should match the api-version in the spec).

Quality of Swagger

[ ] I have read the contribution guidelines.
[ ] My spec meets the review criteria:

[ ] The spec conforms to the Swagger 2.0 specification.
[ ] The spec follows the guidelines described in the Swagger checklist document.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.

Automation for azure-sdk-for-ruby

Automation for azure-sdk-for-python

@irrogozh  why is it going to master?

Automation for azure-sdk-for-go

Automation for azure-sdk-for-node

Can one of the admins verify this patch?

Reassigning since I won't be available for starting this evening

@MikhailTryakhov These are changes to the stable API that we just merged. PTAL

Guys, I'll close this pr. We don't need it for Ignite. It will be in the next release. Will send it to network-October-release branch

@irrogozh  you can retarget branch from here

Replaced by https://github.com/Azure/azure-sdk-for-python/pull/3344

Ok, sorry messed up my links with myself, re-opening :p

Seems I'm tired this morning, I actually wanted to close this PR....
See https://github.com/Azure/azure-rest-api-specs/pull/3905 instead


Even if I did not modify this part, /etc/docker/daemon.json was also modified to point the mirror to the master node.

Even if I did not modify this part, /etc/docker/daemon.json was also modified to point the mirror to the master node.
#######################################################################
#                    OpenPAI Customized Settings                      #
#######################################################################
# enable_hived_scheduler: true
# enable_docker_cache: false
# docker_cache_storage_backend: "azure" # or "filesystem"
# docker_cache_azure_account_name: ""
# docker_cache_azure_account_key: ""
# docker_cache_azure_container_name: "dockerregistry"
# docker_cache_fs_mount_path: "/var/lib/registry"
# docker_cache_remote_url: "https://registry-1.docker.io"
# docker_cache_htpasswd: ""
# enable_marketplace: "false"

Originally posted by @siaimes in https://github.com/microsoft/pai/issues/5445#issuecomment-827291642

When calling this command, the conditional check that ensure enable_docker_cache=True is missing:
ansible-playbook -i ${HOME}/pai-deploy/cluster-cfg/hosts.yml docker-cache-config-distribute.yml || exit $?

quick-start-kubespray.sh#L60

For a workaround, you can just remove this line.
I think it is caused by https://github.com/microsoft/pai/blob/68d29eff32db171b46293b6dfc066d671e565e13/contrib/kubespray/docker-cache-config-distribute.yml#L8 .

For a workaround, you can just remove this line.
I think it is caused by
https://github.com/microsoft/pai/blob/68d29eff32db171b46293b6dfc066d671e565e13/contrib/kubespray/docker-cache-config-distribute.yml#L8
.

Thank you for your reply. Remove this line is my current practice. I just report this bug so that contributors can fix it.

fix in #5574


Add implementation for std::iter::Sum

This is useful when combining multiple items which implements quote::ToTokens, as follows:
struct SomeT { ... }
impl ToTokens for SomeT { ... }

let items: Vec<SomeT> = generate_some_t_items();
let body: Tokens = items().into_iter().sum();

Did you consider using repetition instead?
- let tokens: Tokens = items.into_iter().sum();
+ let tokens = quote! {
+     #( #items )*
+ };

Six advantages of repetition over your approach:

Does not requires the explicit type ascription tokens: Tokens.

sum() is for numbers... look at the existing implementations of std::iter::Sum. collect() may have been more appropriate.

Composes well with other output in the same quote block.
quote! {
    match *self {
        #(#arms)*
    }
}

Supports separators just like macro_rules, for example comma-separated output.
quote! {
    let ret = util::frobnicate( #(#args),* );
}

Supports other tokens inside of the repetition.
quote! {
    struct S( #( ::std::marker::PhantomData<#ty> )* );
}

Easily extends to multiple zipped iterators.
quote! {
    match *self {
        #( #patterns => #expressions )*
    }
}

Thanks for your fast and exhaustive reply.
I'm closing the PR and trying to use macro-style repetition instead of sum() .


Added XML documentation to API.

I have added some simple XML documentation for our API. Please review carefully.  This is a draft, and if you believe a different style would fit better I would be happy to change it. As a heads-up, this PR conflicts with PR #26 since it also modifies canvas.fsi. It would be easy to make it compatible though.

Having somewhat hastily read through the changes, I'll say this looks good.

The documentation is now merged.
Thanks!
(And sorry for the latency)


No need to prefix flex for the supported browsers

This change is

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Add action to open all iCloud tabs in Safari and remove the tabs

Very often I get lots of links open on my phone and I go to iCloud icon in Safari and cmd + click through all the open iCloud tabs and then close them:

It would be awesome to get an action that would do this for me automatically. Open all iCloud tabs in my mac browser for me to go through. And delete the tabs in iCloud too as they are now transferred.
I have a feeling that you can't delete open iCloud tabs from code, I hope I am wrong. If you can't, an action to just open all the iCloud tabs in my browser would work good too. I can then delete the tabs manually in the cloud icon myself in Safari.

going to give this a go. As I want to add #17 too

I have a feeling that you can't delete open iCloud tabs from code

Your feeling is correct. You can't.


Update version: CarstenGehling.JiraStopWatch version 2.3.0

Pull request has been created with WinGet Automation 🪟📦🤖

Hi @vedantmgoyal2009,
This manifest adds Apps and Features entries that aren't present in previous PR versions. Should these entries also be added to the previous versions?
(Automated response - build 582.)


Redundant entries

Hi, thanks for this. If I have two tabs open, why does it show 4 entries?

Fixed this on the next release. Those duplicate items are supposedly for the #tabs filter when you enable the enable_tags setting.
I'll close this issue for now. Feel free to reopen if you are still having the same issue

Hi, I don't know what the tags feature is. (Don't see documentation on the README.)
I'm running 2.1.2 and "enable_tags": false, but I'M still seeing 4 entries as in the screenshot above.
Also, what order are the tabs placed in. Last used, or left-to-right, or something else? I have "jump_to_most_recent_on_show": true, to default, so that sets last used? If it's false, then what is the order?

I assume you restarted Sublime? Can you try it on a new project and see if that still happens. It might be a cache problem.
As for the order, it shows MRU (last used). If jump_to_most_recent_on_show is enabled, it will show the compass and "jump" to the tab below your current tab. Disabling it will show the compass without moving it.

Perhaps I failed to restart. I just did so now and I'm not see duplicate entries. Also, perhaps, the tags and jump features could be documented in the README? Thanks for your help.


declareQueue report Success before OnSuccess callback is installed.

LibraryVersion: 4.3.14
Hi
Using demo program in example, and connecting to a rabbitmq on localhost, I found out that running code below, both OnSuccess and OnError might never get called.
I look inside AMQP-CPP and found  out that in channelimpl.h, function reportSuccess is called with _oldestCallback== nullptr, and only after that the OnSuccess is executed.

channel_->declareQueue("SomeName", AMQP::durable).OnSuccess([](const std::string &name, uint32_t messagecount, uint32_t consumercount){
    std::cout << "declared queue " << name << std::endl;
}).OnError([](const char* msg){
    std::cout << msg << std::endl;
});

Anyway I can install the OnSuccess callback and OnError callback before reportSuccess is called?

I do not know what you mean. Do you have an example program in which neither the onSuccess nor the onError callback gets called?

Because my code are in company secured network, I cannot put it here, but I modified the example a little bit and it has the same effect.
In code below, declare_queue's OnSuccess and OnError both won't be called(appears aproximate every 20 times ).
I did some debuging and found out that when both function are not called, the function call time sequence looks like this:
(MainThread)declare_queue -> (MainThread)channel_impl:declareQueue -> (MainThread)channel_impl:send->(MainThread)tcpconnected: send -> (UVThread)tcpconnection:OnRecieve ->(UVThread) channelimpl:reportSuccess -> _(UVThread)oldestCallback is nullptr so return -> (MainThread) channelimpl:push ->  (MainThread) Now oldestCallback is nolonger nullptr.
Which will result on none of OnSuccess/OnError be called.
Using the slightly modified example:
/**
 *  LibUV.cpp
 *
 *  Test program to check AMQP functionality based on LibUV
 *
 *  @author Emiel Bruijntjes<EMAIL_ADDRESS> *  @copyright 2015 - 2017 Copernica BV
 */

/**
 *  Dependencies
 */
#include <uv.h>
#include <amqpcpp.h>
#include <amqpcpp/libuv.h>
#include <thread>
#include <unistd.h>

/**
 *  Custom handler
 */
class MyHandler : public AMQP::LibUvHandler
{
private:
    /**
     *  Method that is called when a connection error occurs
     *  @param  connection
     *  @param  message
     */
    virtual void onError(AMQP::TcpConnection *connection, const char *message) override
    {
        std::cout << "error: " << message << std::endl;
    }

    /**
     *  Method that is called when the TCP connection ends up in a connected state
     *  @param  connection  The TCP connection
     */
    virtual void onConnected(AMQP::TcpConnection *connection) override
    {
        std::cout << "connected" << std::endl;
    }

public:
    /**
     *  Constructor
     *  @param  uv_loop
     */
    MyHandler(uv_loop_t *loop) : AMQP::LibUvHandler(loop) {}

    /**
     *  Destructor
     */
    virtual ~MyHandler() = default;
};

void UVRunner(uv_loop_t* loop){
    uv_run(loop, UV_RUN_DEFAULT);
}

/**
 *  Main program
 *  @return int
 */
int main()
{
    // access to the event loop
    auto *loop = uv_default_loop();

    // handler for libev
    MyHandler handler(loop);

    // make a connection
    AMQP::TcpConnection connection(&handler, AMQP::Address("amqp://guest:guest@localhost/"));
    auto uv_thread = new std::thread(&UVRunner, loop);

    // we need a channel too
    AMQP::TcpChannel channel(&connection);

    // Both function below might never be called.
    channel.declareQueue("SomeRandomQueue",AMQP::exclusive).onSuccess([&connection](const std::string &name, uint32_t messagecount, uint32_t consumercount) {
        // report the name of the temporary queue
        std::cout << "declared queue " << name << std::endl;
    }).onError([](const char* msg){
        std::cout << "declared queue error: " << msg << std::endl;
    });

    sleep(10);
    return 0;
}

The objects (like channel, connection, etc) are not thread safe. You cannot call channel.declareQueue() from one thread, while the whole connection is managed in an other. I think your issue is caused by the fact that you are using threads. I am therefore closing this issue. If I am wrong, please provide a simpler example without using threads.

Replace the sleep(10) by uv_run(loop, UV_RUN_DEFAULT) and remove auto uv_thread = new std::thread(&UVRunner, loop);

Than may I ask what is the correct way to declare_queue or publish data after uv_thread is running?
Should I pass the data/command into uv_thread and run it from there?

I don't see the point of starting a thread in the first place.

If main thread is running uv_run, how to publish some msg periodic?

You can use a timer for that: http://docs.libuv.org/en/v1.x/timer.html
Set up and "start" the timer before calling uv_run(loop, UV_RUN_DEFAULT)


Requiring commands in activationEvents seems unnecessary and error-prone

Why do you require everything to be manually spelled out in activationEvents?  It's easy to forget to add it when you add a new command, and then you have a bug which is quite likely to be noticed only by the end user.
It seems like you've got all the information you need already in the package.json to fill out 99% of the activation events automatically.  It seems much better to only require activationEvents for stuff that can't be determined manually.
Thx.

@StephenWeatherford Most of the times, there is a correlation between the contributes section and the activationEvents section. But that is not necessary.
Take, for example, keymap extensions, like this one -- https://github.com/Microsoft/vscode-atom-keybindings/blob/master/package.json . That extension contributes a lot of keybindings where a lot of commands are named. That does not mean that extension needs to be activated when those commands are invoked.
So, contributing a keybinding (a binding from a key press to a command) should not necessarily result in the activation of an extension. Similarly, contributing a UI binding (a binding from a F1 list title to a command) should not necessarily result in the activation of an extension. Technically, when one contributes a commands, one simply adds an entry with that title in the F1 list.
I think it is a solid approach to have the activationEvents spelled out and not do any magic here on our side.
I agree that can get tedious for you as an extension author, so why don't you write an extension or a task that fills those in for you all the time.
e.g. of a quick js snippet I put together that can help you automate this:
const fs = require('fs');

let pkg = JSON.parse(fs.readFileSync('package.json'));
let commands = pkg.contributes.commands.map(item => item.command);

commands.forEach(function(command) {
    let activationEvent = `onCommand:${command}`;
    if (pkg.activationEvents.indexOf(activationEvent) === -1) {
        pkg.activationEvents.push(activationEvent);
    }
});

fs.writeFileSync('package.json', JSON.stringify(pkg, null, '    '));


Cookies setting and getting & demo

The only real change in EWC is to add SetCookie and GetCookie.
The demo shows setting, refreshing (in case cookies have been changed in the dev console, and clearing a cookie. Best way to test is to set a cookie and close things down and then come back again and see that the demo remembers.

Added title to this change as well, as it's trivial and in the same area


Aws

Fixes #93 adds functionality to upload user profile image to AWS.
Accidentally merged into wrong branch - reopening to merge into the dev branch.

Two tiny suggestions that I just noticed, but otherwise good to go! :ship:

Thanks, Dave!


add stats for video & audio frames sent & FlvTagCache resizing

Added tracking for sent frames & the ability to extend the FlvTagCache. This gives the user the ability to adapt bitrate before you have to drop frames.

Nice feature, but I have a suggestion.
Maybe mAudioFramesSent  and mVideoFramesSent should be long because after 20h of stream (30fps) int limit is exceeded and library will crash.

I thought about that but I got it to 828 days of streaming, must have counted wrong somewhere. I did this:<PHONE_NUMBER> / 30 / 60 / 60 / 24. I'll change them to longs

You are right 828 days, my bad. Anyway this will be more secure. I will merge after a little test.


Generate CI pipeline

Generate a CI pipeline for running the unit tests. There should also be an ESLint workflow and a CodeQL one too. This may also involve mocking up the API and rewriting some tests, so tests can be executed without the API running.

Pipelines create


v2: Config page

A separate web page, accessible at http://hud.example/config. Similar to the old "config window".
Should show an input to change the used theme, and inputs for all options provided by that theme and its parent themes.
Changes should be saved via a dedicated button (so that typing something in mid-broadcast isn't visible on stream), and Ctrl+S. Changes should be saved to userspace/theme.json.
Immedately after saving, the settings should be re-indexed and broadcast via websockets.
Changing the theme (and saving) should trigger a refresh of all HUD instances. There should also be a button to trigger a reload (e.g. for when developing themes).
The radar should also be embedded on this page.

Idea: having some simple theme settings will be good. (Like T/CT Color, Fonts, etc.)


[docs-infra] Upgrade next to v14.2.14

Next.js v14.2.14 introduced a change that broke our docs build. We discovered this after running pnpm dedupe in a release PR. See https://github.com/mui/material-ui/pull/43957#issuecomment-2387932132 for more info.
This change in Next.js was the culprit: https://github.com/vercel/next.js/pull/70382/files#diff-5f441142eb8ba9bcba515aa36fbc420a113307bd191e54a4e9e6c43529fc2613R861

Ouch, more problems after pnpm dedupe; this time some types from @mui/base: https://github.com/mui/material-ui/actions/runs/11141069280/job/30961190258?pr=43964#step:7:443

This is fix is now part of https://github.com/mui/material-ui/pull/43555


cli tests flake on appveyor

It seems like we have cli test flake on appveyor ci.
https://ci.appveyor.com/project/joyeecheung/node-core-utils/build/318.master#L192

I thought I fixed that in https://github.com/nodejs/node-core-utils/pull/167 , guess I just got lucky and the test didn't fail...as I said in https://github.com/nodejs/node-core-utils/pull/167 , they are basically testing the behavior of ora - we should at least stub cli.spinner instead of depending on how ora manipulates it (although the tests would still be pretty superfluous that way, e.g. testing cli.startSpinner has done this.spinner.text = text and this.spinner.start() by testing assert.strictEqual(cli.spinner.text, text) and assert(cli.spinner.start.calledOnce())

I think its does make sense to remove code testing ora, which works on windows, and not test our side of functionality provided.
@alopezsanchez would you be up for this, since you wrote the tests?

Yes, no problem. Let me take a look!

Updating ora to 1.4.0 also causes test failures in macos not just windows and they are not flaky so we that might also be use while tracing this.

We have removed tests against the spinner so this can be closed.


[Question] Save transformed images

There is a method to access image source with all transformations applied?

Find out GetImageAsJPG in source

There's a new API for such purposes:
var stream = ImageService.Instance.LoadUrl("http://example.org/test.png")
 .DownSampleInDIP(width: 200)
 .Transform(new CircleTransformation())
 .AsPNGStreamAsync(); // or AsJPGStreamAsync

Then just save content of a stream to the disk :)

hey can you please show how you would steam new re-size image to cache or app data folder?


TS: export AnimatedLottieViewProps

Hey,
This would be helpful if the Props TS def of the Lottie view would be exported
Currently I have to use this trick to get it:
import Lottie from 'lottie-react-native'

type extractComponentPropsType<Type> = Type extends Component<infer X>
  ? X
  : null

type LottieProps = extractComponentPropsType<Lottie>

Here is some additional context: https://github.com/react-native-community/lottie-react-native/issues/412#issuecomment-450916588


Add functionality for HDF5 storage

When we start to think about running these models in parallel and over long periods of time, they will generate a lot of data.
One way to easily deal with this data on disk is instead of writing separate files for different save states, we could write back and forth from an HDF5 file format. This is something I just learned about and am actively trying to figure out right now, but it seems like a promising way to aggregate and easily access all of the data generated by a model like this.
In particular, I find it attractive to learn that this format works well with parallel computing, if for example, we want to try to run separate model instances in parallel to speed up computation.

I think this has really proven not to be necessary for the pyDeltaRCM outputs, considering that we have achieved everything we needed to easily with netcdf, on the DeltaMetrics side, xarray works fine with both.


Doesn't load_resource on index only with combination of can & cannot block

cancancan doesn't load resource on index only which:
lib/cancan/controller_resource.rb#L77
resource_base.respond_to?(:accessible_by) # => true
current_ability.has_block?(authorization_action, resource_class) # => true

lib/cancan/ability.rb#L311
relevant_rules(action, subject) # => [#<CanCan::Rule:0x007f857c2182a8 @match_all=true, @base_behavior=false, @actions=[nil], @subjects=[nil], @conditions={}, @block=#<Proc:0x007f857c218870@/Users/itsmechlark/Desktop/GitHub/itsmechlark/cms/app/models/ability.rb:23>, @expanded_actions=[nil]>, #<CanCan::Rule:0x007f857c2191a8 @match_all=true, @base_behavior=true, @actions=[nil], @subjects=[nil], @conditions={}, @block=#<Proc:0x007f857c219270@/Users/itsmechlark/Desktop/GitHub/itsmechlark/cms/app/models/ability.rb:17>, @expanded_actions=[nil]>, #<CanCan::Rule:0x007f857c21a2d8 @match_all=false, @base_behavior=true, @actions=[:read, :create, :update], @subjects=[Lda::Section(id: integer, user_id: integer, name: string, ancestry: string, rank: integer, created_at: datetime, updated_at: datetime)], @conditions={}, @block=nil, @expanded_actions=[:read, :index, :show, :create, :new, :update, :edit]>]

Fulltrace
undefined method `order' for nil:NilClass
app/controllers/lda/sections_controller.rb#8
app/controllers/lda/sections_controller.rb:8:in `index'
actionpack (4.1.4) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (4.1.4) lib/abstract_controller/base.rb:189:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.1.4) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.1.4) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:113:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:149:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:229:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:166:in `block in halting'
activesupport (4.1.4) lib/active_support/callbacks.rb:86:in `call'
activesupport (4.1.4) lib/active_support/callbacks.rb:86:in `run_callbacks'
actionpack (4.1.4) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
activesupport (4.1.4) lib/active_support/notifications.rb:159:in `block in instrument'
activesupport (4.1.4) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.1.4) lib/active_support/notifications.rb:159:in `instrument'
actionpack (4.1.4) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.1.4) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.1.4) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.1.4) lib/abstract_controller/base.rb:136:in `process'
actionview (4.1.4) lib/action_view/rendering.rb:30:in `process'
actionpack (4.1.4) lib/action_controller/metal.rb:196:in `dispatch'
actionpack (4.1.4) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.1.4) lib/action_controller/metal.rb:232:in `block in action'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:82:in `call'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:82:in `dispatch'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:50:in `call'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:71:in `block in call'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:59:in `each'
actionpack (4.1.4) lib/action_dispatch/journey/router.rb:59:in `call'
actionpack (4.1.4) lib/action_dispatch/routing/route_set.rb:678:in `call'
pdfkit (0.6.2) lib/pdfkit/middleware.rb:17:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.5.2) lib/rack/etag.rb:23:in `call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
rack (1.5.2) lib/rack/head.rb:11:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/flash.rb:254:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.1.4) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.1.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
activerecord (4.1.4) lib/active_record/migration.rb:380:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.1.4) lib/active_support/callbacks.rb:82:in `run_callbacks'
actionpack (4.1.4) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.1.4) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.1.4) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.1.4) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.1.4) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.1.4) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.1.4) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.1.4) lib/action_dispatch/middleware/static.rb:64:in `call'
rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
railties (4.1.4) lib/rails/engine.rb:514:in `call'
railties (4.1.4) lib/rails/application.rb:144:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
thin (1.6.2) lib/thin/connection.rb:86:in `block in pre_process'
thin (1.6.2) lib/thin/connection.rb:84:in `catch'
thin (1.6.2) lib/thin/connection.rb:84:in `pre_process'
thin (1.6.2) lib/thin/connection.rb:53:in `process'
thin (1.6.2) lib/thin/connection.rb:39:in `receive_data'
eventmachine (1.0.3) lib/eventmachine.rb:187:in `run_machine'
eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
thin (1.6.2) lib/thin/backends/base.rb:73:in `start'
thin (1.6.2) lib/thin/server.rb:162:in `start'
rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
rack (1.5.2) lib/rack/server.rb:264:in `start'
railties (4.1.4) lib/rails/commands/server.rb:69:in `start'
railties (4.1.4) lib/rails/commands/commands_tasks.rb:81:in `block in server'
railties (4.1.4) lib/rails/commands/commands_tasks.rb:76:in `tap'
railties (4.1.4) lib/rails/commands/commands_tasks.rb:76:in `server'
railties (4.1.4) lib/rails/commands/commands_tasks.rb:40:in `run_command!'
railties (4.1.4) lib/rails/commands.rb:17:in `<top (required)>'
script/rails:6:in `require'
script/rails:6:in `<main>'

app/controllers/lda/sections_controller.rb
class Lda::SectionsController < LdaController

  load_and_authorize_resource

  # GET /lda/sections
  # GET /lda/sections.json
  def index
    @lda_sections = @lda_sections.order('`lda_sections`.`ancestry` ASC, `lda_sections`.`rank` ASC, `lda_sections`.`name` ASC')
  end

  # GET /lda/sections/new
  def new
    @lda_section.user_id = current_user.id
  end

  # GET /lda/sections/1/edit
  def edit
  end

  # POST /lda/sections
  # POST /lda/sections.json
  def create
    respond_to do |format|
      if @lda_section.save
        format.html { redirect_to @lda_section, notice: 'Section was successfully created.' }
        format.json { render status: :created, json: @lda_section }
        format.js { render status: :created, nothing: true }
      else
        format.html { render action: 'new' }
        format.json { render json: @lda_section.errors, status: :unprocessable_entity }
        format.js { render status: :unprocessable_entity, nothing: true }
      end
    end
  end

  # PATCH/PUT /lda/sections/1
  # PATCH/PUT /lda/sections/1.json
  def update
    respond_to do |format|
      if @lda_section.update(lda_section_params)
        format.html { redirect_to @lda_section, notice: 'Section was successfully updated.' }
        format.json { render status: :ok, json: @lda_section }
        format.js { render status: :ok, nothing: true }
      else
        format.html { render action: 'edit' }
        format.json { render json: @lda_section.errors, status: :unprocessable_entity }
        format.js { render status: :unprocessable_entity, nothing: true }
      end
    end
  end

  # DELETE /lda/sections/1
  # DELETE /lda/sections/1.json
  def destroy
    @lda_section.destroy
    respond_to do |format|
      format.html { redirect_to lda_sections_url }
      format.json {  render status: :ok, nothing: true }
      format.js { render status: :ok, nothing: true }
    end
  end

  private
    # Never trust parameters from the scary internet, only allow the white list through.
    def resource_params
      params.require(:lda_section).permit(:user_id, :name, :ancestry, :rank)
    end
end

app/models/ability.rb
class Ability
  include CanCan::Ability

  def initialize(user, *args)
    lda_initialize(user, args)
    global_ability(user, args) # Add special and constraints to ability
  end

  # Load all permission from the database. This will overwrite ability previously declared.
  # It will add constraints if it's a cannot? permissions specified at ability_can == false.
  # Load this in the end of initializing abilities to fully use the constraints.
  #
  # @params [Class] user - an authenticated user
  # @params [Hash] args
  def global_ability(user, *args)
    # Abilities
    can do |action, subject_class, subject|
      user.permissions.where(action: aliases_for_action(action), ability_can: true).any? do |permission|
        permission.subject_class_type == subject_class.to_s && (subject.nil? || permission.subject_class_id.nil? || permission.subject_class_id == subject.id)
      end
    end
    # Constraints
    cannot do |action, subject_class, subject|
      user.permissions.where(action: aliases_for_action(action), ability_can: false).any? do |permission|
        permission.subject_class_type == subject_class.to_s && (subject.nil? || permission.subject_class_id.nil? || permission.subject_class_id == subject.id)
      end
    end
  end

  # Add ability to authenticated user for Lda which inherited from roles.
  #
  # @params [Class] user - an authenticated user
  # @params [Hash] args
  def lda_initialize(user, *args)
    can [:read, :update, :destroy], Lda::Document, # Allow only the author to :read & :update a Lda::Document for privacy :private
        {privacy: {privacy_type: :private},
         lda_document_authors: {author_id: user.profile_id}}
    can :create, Lda::Document if user.has_role?(:lda_author) # Allow author to create a Lda::Document
    can [:read, :create, :update, :destroy], Lda::Document if user.has_role?(:lda_editor, :lda_partner) # Full access to Lda::Document
    can :read, Lda::Document, privacy: {privacy_type: :public} # Allow to :read a Lda::Document for privacy :public
    can [:read, :create, :update], Lda::Section if user.has_role?(:lda_admin) # Allow to :update a Lda::Section if has_role?(:admin)
  end
end

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]
rails (4.1.4)
cancancan (1.9.2)

Closing as this seems to be abandoned. Please reopen if you are still having issues.


Do we need to update AbstractArray for duck arrays?

What happened?
I'm calling cupy.round on a DataArray wrapping a cupy array and it raises an error here:
https://github.com/pydata/xarray/blob/3f7cc2da33d81e76afbfb82da57143b624b03a88/xarray/core/common.py#L155-L156
Traceback below:

--> 25     a = _core.array(a, copy=False)
     26     return a.round(decimals, out=out)
     27

cupy/_core/core.pyx in cupy._core.core.array()

cupy/_core/core.pyx in cupy._core.core.array()

cupy/_core/core.pyx in cupy._core.core._array_default()

~/miniconda3/envs/gpu/lib/python3.7/site-packages/xarray/core/common.py in __array__(self, dtype)
    146
    147     def __array__(self: Any, dtype: DTypeLike = None) -> np.ndarray:
--> 148         return np.asarray(self.values, dtype=dtype)
    149
    150     def __repr__(self) -> str:

~/miniconda3/envs/gpu/lib/python3.7/site-packages/xarray/core/dataarray.py in values(self)
    644         type does not support coercion like this (e.g. cupy).
    645         """
--> 646         return self.variable.values
    647
    648     @values.setter

~/miniconda3/envs/gpu/lib/python3.7/site-packages/xarray/core/variable.py in values(self)
    517     def values(self):
    518         """The variable's data as a numpy.ndarray"""
--> 519         return _as_array_or_item(self._data)
    520
    521     @values.setter

~/miniconda3/envs/gpu/lib/python3.7/site-packages/xarray/core/variable.py in _as_array_or_item(data)
    257     TODO: remove this (replace with np.asarray) once these issues are fixed
    258     """
--> 259     data = np.asarray(data)
    260     if data.ndim == 0:
    261         if data.dtype.kind == "M":

cupy/_core/core.pyx in cupy._core.core.ndarray.__array__()

TypeError: Implicit conversion to a NumPy array is not allowed. Please use `.get()` to construct a NumPy array explicitly.

What did you expect to happen?
Not an error? I'm not sure what's expected
np.round(dataarray) does actually work successfully.
My question is : Do we need to update AbstractArray.__array__ to return the underlying duck array instead of always a numpy array?
Minimal Complete Verifiable Example
No response
MVCE confirmation

[ ] Minimal example — the example is as focused as reasonably possible to demonstrate the underlying issue in xarray.
[ ] Complete example — the example is self-contained, including all data and the text of any traceback.
[ ] Verifiable example — the example copy & pastes into an IPython prompt or Binder notebook, returning the result.
[ ] New issue — a search of GitHub Issues suggests this is not a duplicate.

Relevant log output
No response
Anything else we need to know?
No response
Environment

xarray v2022.6.0
cupy 10.6.0

I believe so. The other ones that uses .values will fail as well with sparse.

Not sure, but maybe cupy.round is not supposed to be called on anything other than cupy (or numpy.ndarray)? If I understand correctly, it is converting everything to cupy (or numpy) using _core.array before actually doing the computation.
Also, my impression of __array__ is that it should only be used to convert custom objects to np.ndarray (usually using np.array or np.asarray)

cupy.round is not supposed to be called on anything other than cupy (or numpy.ndarray

Yeah I'm not sure what the expectation is but I was calling cp.round on a DataArray that wrapped a cupy array. Which is why the __array__ triggered an error. I'll update the first post to clarify.

my impression of array is that it should only be used to convert custom objects to np.ndarray (usually using np.array or np.asarray)

OK that would suggest that the current behaviour is correct

Probably out of my depth here (so please forgive me), but one thing that might be worth looking at is Array API support, which CuPy 10+ supports and Dask is working on support for ( https://github.com/dask/dask/pull/8750 ). Believe XArray is taking some initial steps in this direction recently ( https://github.com/pydata/xarray/pull/6804 ), but could easily be misunderstanding the scope/intended usage of the changes there.

My understanding is that if __array_function__ is working correctly you should never need to call cupy.round on your dataarray. Instead you should always be able to call np.round and trust that the __array_function__ implementation will dispatch to cupy's equivalent of round automatically.
Is there actually a case where we need the library-specific version of a numpy function to work too?

Do we need to update AbstractArray.array to return the underlying duck array instead of always a numpy array?

(Having said all that we might still want to make this change anyway, this was just an argument for the current behaviour being "good enough".)

My understanding is that if array_function is working correctly you should never need to call cupy.round on your dataarray. Instead you should always be able to call np.round and trust that the array_function implementation will dispatch to cupy's equivalent of round automatically.

:+1: Question is whether we are expected to also make cp.round work.

Is there actually a case where we need the library-specific version of a numpy function to work too?

Someone's going to try it =) . At least we should document what's expected.


Import draco compressed gltf/glb

Blender is able to export the models to draco compressed .glb files but not able to import them.
Not sure why this is like this but I guess since draco destroys the model it is hard to import.
What I would like to do is to import the draco model into blender again to use blender as a rendering engine for some nicer lights shadows using cycles.
But this is a feature that I think alot of people want since they want to be able to use modes from the web. More and more 3D are coming to the web and its nice to download models and import them into blender.
If the models are draco then you first need to use a draco decompress and then import them. An extra step that is kinda boring.
Describe the solution you'd like
If I import a gltf or glb I would like it to get into blender. There are simple draco concerter
Describe alternatives you've considered
Now I am solving it by using two types of models, draco and nondraco.
Additional context
Just love BLENDER and all good people that are contributing!

It should already work with latest 2.92/2.93. https://builder.blender.org/download/

@danielsegertun Let us know if you find problems importing Draco into 2.92+.  Thanks!

Draco import seems to work excellent! Good work team!

Thanks especially to UX3D and Google, for Draco import.

It worked! Thanks!
/Daniel
From: Ed Mackey<EMAIL_ADDRESS>Reply to: KhronosGroup/glTF-Blender-IO<EMAIL_ADDRESS>Date: Monday, 22 February 2021 at 15:57
To: KhronosGroup/glTF-Blender-IO<EMAIL_ADDRESS>Cc: Daniel Segertun<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [KhronosGroup/glTF-Blender-IO] Import draco compressed gltf/glb (#1333)
@danielsegertunhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdanielsegertun&data=04|01|daniel.segertun%40inter.ikea.com|76fae03e067847c41e0508d8d7421cd1|a33c6ac4a52e45c5af07b972df9bd004|0|0|637496026240808741|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=7P3UZdfL6DW7zTYGBJGfVK7Rbc8Wrfx%2Ft5spOKjGyM8%3D&reserved=0 Let us know if you find problems importing Draco into 2.92+. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKhronosGroup%2FglTF-Blender-IO%2Fissues%2F1333%23issuecomment-783432444&data=04|01|daniel.segertun%40inter.ikea.com|76fae03e067847c41e0508d8d7421cd1|a33c6ac4a52e45c5af07b972df9bd004|0|0|637496026240818736|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=yPszIHxQOH56AFrpmbDrXHDqnP8LuF3nFgP1DHfwZw4%3D&reserved=0, or unsubscribehttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FASCE3QC4RASAOEIML6OJ2CTTAJWD3ANCNFSM4X4P23NA&data=04|01|daniel.segertun%40inter.ikea.com|76fae03e067847c41e0508d8d7421cd1|a33c6ac4a52e45c5af07b972df9bd004|0|0|637496026240818736|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=uQ8AKnueWDD9pZnsyetTCUoXYs4J93LBucIB0aLzy9w%3D&reserved=0.


Run gprofiler without root/sudo

Description
This PR adds support for running gprofiler without root/sudo as discussed in issue 905. There are several assumptions and components that I will mention here.
This PR requires a change in the granulate-utils repo that defines the run_in_ns_wrapper function found in PR 265 on that repo https://github.com/Granulate/granulate-utils/pull/265.
Assumptions when running without root:

When running without root, the user must use --pids to select user owned processes only.
The user must direct the log and pids files to a user owned directory (e.g. with --log-file and --pid-file parameters).
The user must set certain system parameters such as kernel.perf_even_paranoid as needed to allow gprofiler to run.
Some of the corner cases that require fallback rw exec directories for POSSIBLE_AP_DIRS may not be resolved.

Components:

Replaced exit/error when is_root check fails in verify_precondiftions and replaced it with this message: "Not running as root, and therefore functionality is limited. Profile is limted to only processes owned by this user that are passed with --pids. Some additional configuration (e.g. perf_event_paranoid) may be configured to operate without root."
Created run_in_ns_wrapper function which bypasses the code to enter name spaces when not root (as we assume we're always in the correct namespace for the processes being profiled)
Added a parameter to the pgrep_maps function to ignore permissions errors. Each time a profiler calls this function, it will check if root and if not, will pass "True".
Redirected the default value of TEMPORARY_STORAGE_PATH to the resources directory.
Added mkdir_owned_user function which is used in main where the TEMPORARY_STORAGE_PATH creates gprofiler_tmp, so that it doesn't throw an error when we aren't root, but still ensures the directory is owned by the current user.

Potential issues:

Is there anything I should add/change in the message that is displayed when the is_root check in verify_preconditions fails? Also, is print() to stdout correct here?
Is it fine to redirect TEMPORARY_STORAGE_PATH to the resources directory even in the default case, or should I add a check to only do this when not root?
Do we need to resolve the fallback rw exec directories for POSSIBLE_AP_DIRS?
I've tested this on two systems and it works on both, but on one of them I receive this warning (though gprofiler completes and produces valid results). I discuss this more in the corresponding granulate-utils PR since that is the source of the error.

[2024-12-02 19:59:55,557] WARNING: gprofiler.profilers.java: Failed to enable proc_events listener for exited Java processes (this does not prevent Java profiling)
Traceback (most recent call last):
File "granulate_utils/linux/proc_events.py", line 222, in start
PermissionError: [Errno 1] Operation not permitted
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "gprofiler/profilers/java.py", line 1395, in start
proc_events.register_exit_callback(self._proc_exit_callback)
File "granulate_utils/linux/proc_events.py", line 272, in wrapper
File "granulate_utils/linux/ns.py", line 305, in run_in_ns_wrapper
File "granulate_utils/linux/ns.py", line 299, in run_in_ns_wrapper
File "granulate_utils/linux/proc_events.py", line 260, in _start_listener
File "granulate_utils/linux/proc_events.py", line 225, in start
PermissionError: This process doesn't have permissions to bind/connect to the process events connector

Related Issue
https://github.com/Granulate/gprofiler/issues/905
Motivation and Context
Users of this gprofiler have requested this feature as some cloud instances do not have root access, but still want to profile user owned processes.
How Has This Been Tested?
I ran stress-ng and targeted gprofiler to the stress-ng pids without sudo. It successfully produced flamegraphs
Sample command line: ./build/x86_64/gprofiler --pids 1421864 -o results/ -d 15 --log-file ./gprofiler.log --pid-file ./gprofiler.pid
I have tested this on x86 using scripts/build_x86_64_executable.sh script. Centos 9 Stream w/ kernel 6.6
Also tested using sudo targeting specific pid(s) and system-wide, and it still works.
Was not able to run tests/test.sh as it required apt-get/debian environment.
Screenshots

Checklist:
The code is linted.
I have not updated the README.md doc here. Might need some guidance.

[x] I have read the CONTRIBUTING document.
[ ] I have updated the relevant documentation.
[ ] I have added tests for new logic.

Is there anything I should add/change in the message that is displayed when the is_root check in verify_preconditions fails? Also, is print() to stdout correct here?

I prefer that the rootless mode will be opt-in, and not a default in case of non-root user (which allows misconfigurations to continue misusing the profiler).
So a flag like --rootless that enabled this behavior & checks that we're not root. And the verify_preconditions() function will suggest using --rootless.

Is it fine to redirect TEMPORARY_STORAGE_PATH to the resources directory even in the default case, or should I add a check to only do this when not root?

I left some comments on the PR about this topic.

Do we need to resolve the fallback rw exec directories for POSSIBLE_AP_DIRS?

Not sure I got you here.

I've tested this on two systems and it works on both, but on one of them I receive this warning (though gprofiler completes and produces valid results). I discuss this more in the corresponding granulate-utils PR since that is the source of the error.

Yeah, it's fine - as I commented on granulate-utils, proc_events are expected to fail in rootless.


Force logout konga user by setting expiry in JWT

Provisioning the KONGA_JWT_TOKEN_EXPIRY property to force logout of the users after certain interval of time.

@rahulgoel27 , what you can do is change the TOKEN_SECRET env var. That will force all users to logout but it's the only supported way at this point.

Actually I introduced KONGA_JWT_TOKEN_EXPIRY property and did following changes and wanted to submit same for the review

Let me know if this seems ok.

Created the pull request https://github.com/pantsel/konga/pull/423, please review

@pantsel  please review


[Do not merge] More CI bits

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


App Launcher

Description of the new feature / enhancement
App Launcher feature like macos
`
Scenario when this would be used?
when you are On the desktop page, you can view all apps by clicking just on the app launcher icon.
Supporting information
No response

What0s wrong with the all apps section in the start menu?
/needinfo


How to call an async function from a normal function?

I found if I use an async function, the other codes using this function must implement as an async function. Is there some suggestion for using async function from normal function?

Either use
futures::executor::block_on(your_future)

or
use runtime_tokio::Tokio;

fn main() {
    runtime::raw::enter(Tokio, your_future);
}

If you want to run it using this crate.

We could / should probably expose some convenience methods here, so nobody ever needs to use runtime::raw directly:
with #[runtime::main]
runtime::task::block_on(async move {
    /* code goes here */
})

without #[runtime::main]
runtime_tokio::block_on(async move {
    /* code goes here */
})

Related: https://github.com/rustasync/runtime/issues/42


Add the possibility to change the ui basepath to avoid using nginx sub_filter

#460

Hi @pletessier
Is this PR still relevant?

Hi @brasseld
I don't need it anymore since I'm using Traefik and "Host" rules rather than "Path".
But I still think it should be configurable, preferably in Angular.

Unfortunately, the base path can not be configured using Angular so we are forced to rely on the RP in front of the UI to "rewrite" this path...

A lot of configuration has been changed since this PR.
To be closed.


refactor: rewrite enum members

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

12 of 12 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-1.3%) to 38.413%

Totals

Change from base Build<PHONE_NUMBER>:
-1.3%

Covered Lines:
121

Relevant Lines:
315

💛  - Coveralls


Deprecate term EUPATH_0000064 clinical characteristics

We added EUPATH_0000064 'clinical characteristics' for grouping phenotype and disease long time ago. Current the term is not used by any VEuPathDB projects. It is not aligned well with BFO and causes confusion. I proposed to deprecate the term.

Besides, we need to revisit term: EUPATH_0000046 'severe malaria symptom or sign'.
It is the only term asserted under EUPATH_0000064 'clinical characteristics'. The term EUPATH_0000046 is a kind of diagnosis and used in the ClinEpi Project. We need to make corresponding updates in the ontology.

I agree, and since EUPATH_0000046 is about signs & symptoms, I think we can categorize it as information.

Agree to deprecate clinical characteristics and move children to follow standard OBO Foundry hierarchy.
Also make EUPATH_0000046 'severe malaria symptom or sign' an information content entity under http://purl.obolibrary.org/obo/EUPATH_0000309 'symptom or sign information'