Performance drop

Hi there,
Today I've compared UUID generations with 2.8 vs 3.0 and noticed ~2.5x performance drop.
Pls check gist https://gist.github.com/jaymecd/7dbac8908bacf54b6db6 for more details.

@ramsey gist updated

Thanks! I've got it loaded up in MacCallGrind now. I'll dig through this and report back what we'll do to proceed.

I left a comment on the gist, I may have an idea of whats going on

After having done some tests, it turns out the root of the issue is that the uuid_create function returns a string UUID which then needs to be parsed into a Uuid instance, and that part is expensive. Not sure how to solve that issue without changing the fundamental premise of the lib -- ie, the Uuid::uuidx() start returning string's instead of Uuid instances.

Is it 2.5x slower than Rhumsaa\Uuid because it's using uuid_create() and parsing it into a Ramsey\Uuid object?

Exactly.
My base benchmark results are:
melody run test-benchmark.php
PECL | 0.0410 sec/10000 | 0.0000041 sec/one
RHUMSAA | 0.1500 sec/10000 | 0.0000150 sec/one
RAMSEY | 0.3280 sec/10000 | 0.0000328 sec/one

I tested the following changes:

Return the uuid_create result without parsing => ~ 0.06 seconds
Remove the PECL factory => ~0.20 seconds (vs. 0.15 seconds on 2.8.x, I assume the overhead is due to the decomposition into various classes)
Remove the if branch => ~0.35 seconds

After a bit of pondering, I came to the following conclusion: most use cases for UUID are all about generating a UUID string (ie. database primary keys etc). A potential workaround for the performance issue would be to add a new Uuid class that stores its field data as a string, and only tries to parse it into fields when necessary. That would give a significant performance boost for most scenarios using the PECL lib. Thoughts ?

It sounds like using the PECL library isn't buying us any efficiencies, as I suspected it would. The primary reason to use it was because it uses /dev/urandom, if available.

@aztech-dev I'm going to think on your suggestion for a bit. It sounds like it could be a good solution to "lazy-parse" the UUIDs, but I want to give it some consideration first.

@aztech-dev provides good point, as mostly it's required to get it as a string, sometimes as bytes (eg. Mongo binary uuid_rfc*). and any complex parsing to make lazy when its really needed.

Sure, let me know when you reach a conclusion if you want me to implement it.

Sure thing. I like the solution, so be my guest and proceed. :-)

:+1:

I've issued a P/R for the fix, let me know if anything needs changing/improving.
Performance with the patch is ~0.1s/10K v4 uuid's.

I know it's been a while since we've revisited this, but now that I've released 3.0.0-alpha1, I want to talk a bit more about the performance drop and what we should about it.
The more I think about it, the more I'm not sure I like the LazyUuid approach, though I don't have a better approach to offer at this time. It just feels awkward to me.
I've taken the benchmark script (thanks so much for it @jaymecd), and have put it up in a separate repo here: https://github.com/ramsey/uuid-benchmark. I've added several more benchmarks to the list, so that we can see how ramsey/uuid performs without pecl-uuid, with @ircmaxell's RandomLib, and with PHP 7's generate_bytes(). (Hint: generate_bytes() wins in ramsey/uuid.)
Here are my results:
            PECL | 0.0280 sec/10000 | 0.0000028 sec/one
         RHUMSAA | 0.0400 sec/10000 | 0.0000040 sec/one
     RAMSEY-PECL | 0.1630 sec/10000 | 0.0000163 sec/one
   RAMSEY-NOPECL | 0.0960 sec/10000 | 0.0000096 sec/one
RAMSEY-RANDOMLIB | 100.5020 sec/10000 | 0.0100502 sec/one
     RAMSEY-PHP7 | 0.1040 sec/10000 | 0.0000104 sec/one

Let's keep talking and see if we can come up with a good solution, if there's a solution that will work for us.

Good job @ramsey. Whats next?
I see lazy-parsing as primary option - as majority  don't play with bits of UUID or extract timestamp, unless it's really required.

Pls take a look into https://github.com/ramsey/uuid-benchmark/pull/1 PR.

Just FYI, the performance implications of RandomLib are known. They are intentional, as it's a proof-of-work that protects against poor random sources.
Additionally, I see that you're using a low strength generator. I would suggest raising that to a medium strength as it will then be useful in security contexts.

@ircmaxell I honestly am not so sure that raising the strength of the generator would be very useful because the UUID is, by definition, "practically unique" also I guess that the core of its strength lies on the hashing algorithm...

@fbidu it's "practically unique" provided you use a strong source of randomness. If the source of randomness is predictable, so will the generated UUIDs be. There's no magic source of entropy in there (and no, a hash function is not a source of entropy).

@ircmaxell Well, you're right that we don't have a magic source of entropy but I'm afraid about the performance implications versus how less likely a collision will be...

@ircmaxell we could easily add a test for collisions @ the benchmark!

we could easily add a test for collisions @ the benchmark!

If you can add a test for collisions, you should submit it as a PHD thesis. Because it'll get accepted on-the-spot. Proving something is or isn't random is hard.
Snark aside, testing randomness is an extremely difficult problem. All of the "low" strength sources have known vulnerabilities against them (rand(), mt_rand(), etc) or offer at best offer few bits of entropy (microtime adds about 4 bits of entropy). It tries to mitigate these issues using a mixing function. But the mixer can't create entropy that wasn't there to begin with.
Medium strength adds /dev/urandom, which is the correct way of generating random numbers to be used in security sensitive code. Period. The mixing algorithms and philosophy that RandomLib uses prevents a compromise of any one system from taking down the set of them. But the quality of the output is only as good as the strongest source (this is provable).
Hence why the recommendation that medium be used for all security context usages. It adds little cost to the generation (it's not going to double runtime), but it greatly improves the provable security of the output.

Even though we will default to the medium-strength generator, we aren't locking you in. You may always opt to pass in the low-strength generator to the UuidFactory or FeatureSet and use it however you wish.

@ircmaxell thanks for your answer! It was really thorough.
To be fair I wasn't thinking about a formal proof of (non?) randomness of the current system. Rather I was wondering if we could add a stochastic simulation that would allow for an evaluation of the likelihood of a collision. But as @ramsey pointed out, there will be no hard binding to a specific generator so I'd say that this is not a pressing issue anymore

https://github.com/ramsey/uuid/commit/a95140c25c26ce0a887cd9aeeaaeccc6d639e0e2 should close this right ?

I think so. I wanted to run some benchmarks again for the https://github.com/ramsey/uuid-benchmark project, and then we can close this out.

I've updated the thread on the uuid-benchmark project (https://github.com/ramsey/uuid-benchmark/issues/2).
At this point, I think we've done all we can to optimize the ramsey/uuid library while maintaining flexibility.
The benchmarks are still showing a performance drop between rhumsaa/uuid 2.8.2 and ramsey/uuid 3.0.0-alpha3, and without looking at the callgraphs, I think this is due in large part to the greater OOP abstraction in the new version. It's this abstraction that provides a great deal of flexibility to implement many of the features that others have asked for (e.g. COMB, other PRNGs, etc.). In order to provide this level of flexibility, I think it's acceptable to sacrifice some performance.
@jaymecd, since you opened this issue, I'd like to hear your thoughts on the changes made and the performance between versions. Is this performance drop acceptable in light of the more advanced features of the library? If not, how can we improve?

Features and OOP abstraction are great for developers to simplify their life, but here comes the question: which operations would be used at most, let's say in high-load project?
I think for casual use-case it should perform very well and rest features should load on-demand.
In general I like how it is right now. Tnx.

Performance is definitely something we need to be aware of and keep an eye on when we make changes like this. Thanks for bringing it to my attention. I'll hang on to that uuid-benchmark repo for reference and will strive to improve the performance of this library over time.
Thanks!


AbstractListingResource: Generic id handling

Make the id handling of the AbstractListingResource as generic as possible.

Coverage decreased (-0.7%) to 95.359% when pulling 09a3c6682a97fcf6fd9151b11860edc125b620b8 on generic_id into 2929f52cb6b8ea0ea0e51a7bcd5361d06716b92b on master.

maybe you should leave the AbstractListingResourceTest?


bbr not working thru socks5 tunnel

I have a socks5 tunnel running, I have export BOSH_ALL_PROXY=socks5://localhost:9999 set, and my bosh commands run thru the tunnel just fine, but I tried bbr (via https://www.starkandwayne.com/blog/bucc-bbr-finally/) and its failing:
finding scripts failed on bosh/0: ssh.Run failed: ssh.Stream failed: ssh.Dial failed: dial tcp <IP_ADDRESS>:22: connect: connection refused

<IP_ADDRESS> is the IP of my BOSH, but it is only accessible via the SOCKS5 tunnel. Should this "just work" if I have $BOSH_ALL_PROXY set?

Hi @drnic thanks for filing this issue. We will add support for proxies. The work isn't top of backlog but we'll get to it soon.

Just as another anecdote, this should also make using bbr easier for bbl users. We're currently using sshuttle to get a locally running bbr tunneled through the bbl jumpbox.

👍 We also were looking to use this feature.

@drnic We introduced support for $BOSH_ALL_PROXY in bbr v1.2.6. See the BOSH docs on tunnelling.
Note: If you are using bosh bootloader, bbr also supports the ssh+socks5 scheme, which is generated by bbl print-env. With this scheme, you do not need to create the ssh tunnel beforehand as bbr will do it for you.


build: cleanup

Remove unsed and dead code.
Signed-off-by: Leandro Dorileo<EMAIL_ADDRESS>

Seems fine.

applied


extra bottom space

Reproduce

Problem
when we focused a text input and scroll to bottom, an extra space is added at the bottom. besides that, android and ios behaves different.
Questions
why does this happen?
how to avoid from this behave?
and thank you
Code That I Used*

Your Android issue might be related with your android:windowSoftInputMode in your AndroidManifest.xml. It seems to be adding double keyboard-height padding. Also, is there any reason to use enabledOnAndroid? Android seems to handle well these kind of situations without any configuration.
The iOS extra value seems to be the bottom SafeAreaInset. Not sure why, tho. (It seems the same height value os the pink bottom area).

for android:
android:windowSoftInputMode was adjustResize by default. but if i use this default value the keyboard focus losing when the text input focused suddenly. I had to change adjustPan to avoid lose focus.

Is this issue still being tracked? As I encounter the same issue.

Is this issue still being tracked? As I encounter the same issue.

i am telling with sadness, yes

i am telling with sadness, yes

Having the same issue on iOS.

This may be a safe area inset issue on iOS. You may be able to get the bottom safe area from a library like react-native-static-safe-area-insets and set the extraScrollHeight to the negative of that value.

At the moment disabling android insert will solve this problem
enableOnAndroid={false}

On Android try to set extraHeight to 0(According to the docs Default is 75)

Adding to the solution provided previously, I use useBottomTabBarHeight() + a custom useKeyboardHeight() hook:
extraScrollHeight={-(keyboardHeight + bottomTabBarHeight)}

I got a solution on this.. Tested on iPhone 13, iPhone 13 Pro Max, iPhone 6s, iPhone SE (3rd generation) and android.
try:
  const [contentBottom, setContentBottom] = useState(0);
  const [keyboardActive, setKeyboardActive] = useState(false)

  const {height} = useWindowDimensions()
  const keyHeight = useKeyboardHeight()

  useEffect(()=>{
    if (keyboardActive){
      const diff = (parseFloat((height - keyHeight)/2))
      setContentBottom(diff)
    } else{
      setContentBottom(0)
    }
  },[keyHeight, keyboardActive]

<KeyboardAwareScrollView
            keyboardOpeningTime={0}
            enableResetScrollToCoords
            onKeyboardWillHide={() => setKeyboardActive(false)}
            onKeyboardWillShow={()=>setKeyboardActive(true)}
            contentInset={{ bottom: contentBottom }}
            automaticallyAdjustKeyboardInsets={true}
            automaticallyAdjustContentInsets={false}
          >

Previous
with extra white space at the bottom of the background image and before the keyboard for iPhone 13

Changes
no extra white space anymore

goodnight everyone!

extraScrollHeight={-insets.bottom}
contentContainerStyle={{ flexGrow: 1 }}

this working for me.... thanks

I've tried all aboved mentioned solutions but no one is worked.
Finally this is worked for me:
` 0 && Platform.OS == 'ios'
? -500
: keyboardHeight > 0 && Platform.OS == 'android'
?-200
: 0,
}}

`


[Enhancements] Decommissioning use of legacy widgets in the new Devhub app

Problem
In the new Devhub app, we still reference/use some of the old gigs-board widgets hosted by devgovgigs.near account.
Solution
Here are the different files in the current project the refer to the old app's widget. We need to port them to the current Devhub app.

Would simply adding these widgets to new codebase and using them on new account be considered good?

@ori-near @jaswinder6991 I would like to take this ticket

@Megha-Dev-19 now that you have access, feel free to pick up tickets and assign yourself to them! And ideally keep a work in progress limit of 1-2 max. Thank you.


Nette is not defined - nette.ajax.js:319

This component looks like stand-alone component with only jQuery as dependency.
But that's not true - there is also dependency on netteForms.js (older version worked fine)
nette.ajax.js:319
Possible fix:
Add netteForms.js to README as dependency

Duplicate of https://github.com/vojtech-dobes/nette.ajax.js/issues/144, https://github.com/vojtech-dobes/nette.ajax.js/issues/148 and https://github.com/vojtech-dobes/nette.ajax.js/pull/150


Bypass proxy caching

Add a HTTP Header that prevents HTTP proxy from caching the download file. Tested with Bluecoat ProxySG in between.

Please read the contributing.md document before submitting pull requests.


Test this library.

Test this Library in your PC.
Change the branch to 'test'
Write if there was bugs or errors
Send PR to machaao-py:test branch

Wanna work on this.

@Codedude1 sure go for it


Updated with the latest changes (#15)

Remove the .vscode folder

@solidate The .vscode folder contains some basic (but important) linting configs that we would want our contributors to follow.

Remove the .vscode folder

@solidate The .vscode folder contains some basic (but important) linting configs that we would want our contributors to follow.

All contributor not necessarily use vscode. The lint guide should be part of CONTRIBUTING.md
WDYT @vagrantism

Remove the .vscode folder

@solidate The .vscode folder contains some basic (but important) linting configs that we would want our contributors to follow.

All contributor not necessarily use vscode. The lint guide should be part of CONTRIBUTING.md WDYT @vagrantism

Done, PTAL


added logging to latest web projects

Added logging to web projects as it is useful to know the port when you get the up and running. It now only works on WebListener I assume but it's still useful.

Hi @tugberkugurlu, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla2.dotnetfoundation.org.

TTYL, DNFBOT;

Hmm, I think @dnfclas is confused :smile:

Who are you and what have you done with @tugberkugurlu?
Can you try running through the process again?

:smile: I'll recreate the PR.


Sdk 2039 go support for non latin documents when fetching supported documents

IDV
Added

Support for non latin documents when fetching supported documents

Requested with
result, err := client.GetSupportedDocuments(true)

Yes it has dependencies with multiple commits.


Implement BERT layer using torch.nn.TransformerEncoderLayer

We have decided to not do this and wait until there is a stable API to use the fastpath.


Add absolute_api_v2_url property to NodeWikiPage

Purpose
This fixes wiki comment decaching.
Changes
I added absolute_api_v2_url property to NodeWikiPage model. An unhandled AttributeError was being caused during the decaching process. This caused none of the objects modified during the request to be decached, including the comments URL.
Side effects
In the future, if people use absolute_api_v2_url property for other things they may get back html instead of JSON since NodeWikiPage does not have a v2 url I just used it's absolute_url which returns HTML. Since varnish is only keeping track of v2 pages now it will be adding NodeWikiPage to it's banlist which will do nothing. If we eventually start caching non-v2 urls this cache invalidation will already be in place.

@samanehsan This should fix it.

@sloria Here's the smallest PR ever.

@cwisecarver We'll need to revert this for now. It is causing this test to fail https://github.com/CenterForOpenScience/osf.io/blob/368aea4c2fbb539ae1470a38c35fd41cfb37a16d/api_tests/guids/views/test_guid_redirect.py#L70-L74 , which assumes that that an API route is not implemented for wikis (which is true).

Ah, okay. That's a shame. It was just a quick and dirty fix anyway. I'll see if I can find another way around it.


How to read SQL Database/Tablespace using Microsoft Bot Composer

Hi There,
I am using the Microsoft Bot Framework composer to make an API call via HTTP to SQL Database/Table. Before that I want to try with a Mockapi resource. There is an open API on the other end. The HTTP call works fine in the Browser. But when I run the bot and the HTTP call is executed, I am getting an error as follows:
‘dailog’ does not match memory scopes:[turn,settings,dialog,dialogContext,dialogclass,class,this,conversation,user] (Parameter ‘key’)
The call is made as follows:
https://5fd6cd8aea55c4001604238c.mockapi.io/Service_Details?ServiceNumber=${user.ServiceNumber}
Result Property: dailog.api_response
Content Type: set to existing default values on the composer
Response Type:json
I can't find any explanation as to why I am getting this error......Can somebody provide me more inputs to over this ERROR. Many Thanks.

Hi mn-invia
are you aware that you have misspelt dialog ? "dailog.api_response" -- it should be dialog, not dailog?
it could be a mistype but maybe it is that simple?! that would be nice.
it would certainly account for why the scope does match.

Hi Uggi,
It was a typo error in my issue-notes. The ‘dialog’ has been spelt correctly in the Composer. Thanks for pointing out…Hope I get some positive response to my query. Thanks once again.
Cheers
From: Uggi<EMAIL_ADDRESS>Sent: Tuesday, 16 February 2021 11:15 AM
To: microsoft/BotFramework-Composer<EMAIL_ADDRESS>Cc: Murali Nagaraj<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [microsoft/BotFramework-Composer] How to read SQL Database/Tablespace using Microsoft Bot Composer (#5794)
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
Hi mn-invia
are you aware that you have misspelt dialog ? "dailog.api_response" -- it should be dialog, not dailog?
it could be a mistype but maybe it is that simple?! that would be nice.
it would certainly account for why the scope does match.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/BotFramework-Composer/issues/5794#issuecomment-779504474, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AS3UCXI35B62ZDHZF7NGU63S7G2JJANCNFSM4XVOQMOQ.

Hi @mn-invia It's not quite clear to me; is your issue resolved?
Or are there two aspects?:

how-to query SQL
getting the error (due to typo)

Hey Dana,
Thanks for touch base. Let me provide you more clarity….

The TYPO error was in the ‘Question’ that I posed to the forum and there was not TYPO error in the Composer as such.
I would really get more understanding as to how do I make a call to a Microsoft SQL Database/Table. I want to use the HTTP feature and make a call (Of course, there will be an open API on the Database/Table side). I also know that I can use the different HTTP Methods to make the call. My ONLY Question is what type of data can I expect from my query…..Is it a ARRAY or STRING or JSON?

Many Thanks & Best Regards,
Murali
From: Dana V<EMAIL_ADDRESS>Sent: Wednesday, 17 February 2021 5:42 AM
To: microsoft/BotFramework-Composer<EMAIL_ADDRESS>Cc: Murali Nagaraj<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [microsoft/BotFramework-Composer] How to read SQL Database/Tablespace using Microsoft Bot Composer (#5794)
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
Hi @mn-inviahttps://github.com/mn-invia It's not quite clear to me; is your issue resolved?
Or are there two aspects?:

how-to query SQL
getting the error (due to typo)

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/BotFramework-Composer/issues/5794#issuecomment-780040268, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AS3UCXPHE7KRXF7K3CAVVATS7K37ZANCNFSM4XVOQMOQ.

The TYPO error was in the ‘Question’ that I posed to the forum and there was not TYPO error in the Composer as such.

Ah, gotcha. Thank you for clarifying.

I would really get more understanding as to how do I make a call to a Microsoft SQL Database/Table. I want to use the HTTP feature and make a call (Of course, there will be an open API on the Database/Table side). I also know that I can use the different HTTP Methods to make the call. My ONLY Question is what type of data can I expect from my query…..Is it a ARRAY or STRING or JSON?

That will depend on what the API and how you've written it. If needed, you can set an Accept header, in the call to the API.
But regardless of the type of content you decide to supply from your API, the actual content can be received from the .content property of the result. So, for example, if you've set the Result Property to be something like dialog.someresults, then you can access the actual content from dialog.someresults.content. Very similar to how you could access the response code from dialog.someresults.statusCode.
If you need to transform from or to json, xml, etc you can use some of the Adaptive Expressions prebuilt functions.
This might help as well.
Hope that answers your question. If not, let know where I went wrong.

Closing as answered.
The Microsoft Bot Framework team prefers that how to questions be submitted on Stack Overflow. The official Bot Framework Github repos are the preferred platform for submitting bug fixes and feature requests.


Endpoint for discovery

Summary
Create "static" endpoint to get some public configuration of Gatekeeper.
Just like [.well-known/openid-configuration]
Why?
I have some application connecting to Gatekeeper.
For example SPA connecting to API through Gatekeeper.
Application want to use some of service endpoints:

/oauth/authorize << send user to auth service
/oauth/logout << to logout user, nothing unusual
/oauth/token << to check if user has been logined already (cookie authentication)
I don't see any usefullness of other oauth-endpoints for SPA (but I can mistake)

But keyword "oauth" can be modified in config ("oauth-uri")
There are to obvious solutions:

Set this keyword in SPA config. It's not stable to further modifications (one setting in two configurations).
[see below]

How
Make "static" endpoint (just like [/.well-known] in OAuth/OpenId) to obtain public configuration
This endpoint doesn't change route on Gatekeeper configuration changes.

@RusTigra i think this could be nice feature


Usage for consistency prediction

Hi,
I'm looking to use factCC to try and evaluate summaries produced by a summarization system.
I've seen the scripts for evaluation (factCC-eval.sh) and it reports eval_results (bacc, f1 and loss).
But is there a way to get the output of the algorithm, so for each of the inputs a label "consistent" or "inconsistent" and the span that either supports the claim (in case of a correct claim) or the span that contradicts the claim (in the case that the claim was incorrect).
I could not find this in the Usage part of the readme.
I'd be happy to hear how to do this.
Regards,
Michel Botros

Hi Michel,
You have to edit the evaluation code to collect the model outputs. Then you can process them as you wish.

Wojciech


Azure subscription support

Is any topic being discussed around Azure subscription support for hosts creation?

In this upcoming release (v0.39.0), generic machine drivers are added to the UI and should be able to add an azure host. Previously, you could only do it through the API, but we've added it to the UI.

Thanks @deniseschannon ! :)

I just found out that the generic machine drivers that had Azure related items did not account for some Azure specific needs. So it will need some additional UI work. I'm re-opening the issue until the special UI for Azure comes out.

@cusspvz Apologies for the false info.

Currently creating images trough docker-machine, but it would be nice if it could store subscription-id and subscription-cert.

I've created successfully machines using docker-machine driver over UI (tried yesterday).
Seems that cert needs to be provided as base64.
Since i didn't tried any other drivers, is there any features on others that docker-machine doesn't have?

@deniseschannon
On 0.39.0 i was able to create Azure instances as I've explained above.
But it seems its broken on 0.40.0-rc1. :disappointed:

@aruneli Can you take a look at this for v0.40.0-rc1?

forgot to mention whats the error it was throwing...
this.get('driverChoices') is returning undefined instead of Array instance.

D'oh, broken in the UI in the last "one more thing" before the rc tag...  Will be fixed next build.

Component 	Version
Rancher 	v0.40.0-rc2
Cattle 	v0.96.0
User Interface 	v0.54.0
Rancher Compose 	beta/latest

generic machine creation works now.


Test and lint all the nox commands

See #1962
It looks like some of the nox commands have been broken for a while.
This should be tested/linted in CI.
I also realized we don't run typechecker like mypy on the codebase – yes this is a theme, and docutils might trigger a number of false-positive but I think we should still add mypy.

+1 on using mypy - we are moving away from nox. I just had not gotten around to moving the translation bits to tox, but this should be done in #1959
So let's close this issue and open one for mypy checks


[Feature request] Add support for better highlights in yaml(Ansible), Vagrantfile, Dockerfile, Terraform

Or make your theme compatible with this extension please
https://github.com/jeff-hykin/better-dockerfile-syntax/
@shaodahong  🙏🏻

Please check what extension dev told about compatibility with theme in this issue
https://github.com/jeff-hykin/better-dockerfile-syntax/issues/15

Please check what extension dev told about compatibility with theme in this issue jeff-hykin/better-dockerfile-syntax#15

I’ll take a look over the weekend


libjingle_peerconnection_java.jar is now split in many jars

Probably because of one of these commits

There is no libwebrtc.jar file in my $SOURCE_DIR/lib.java/sdk/android/.

I see it when building the M65 release. What are you building?

Latest build from WebRTC's master branch, AFAIK. I'm not specifying the release/commit anywhere.

Also, libwebrtc.jar is not mentioned anywhere in the original script, so I don't think it's relevant.

Yup, it works. We're using it here also for audio and video.
OT: Hi @wojta, long time no see. I'm still teaching "your" Android course at Gopas. :)

The latest versions of WebRTC include a python script that builds an AAR. It might be better if you switch to using it. I'll merge this for anyone that still wants to use it


Move processing time to qos

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: francesconazzaro:x: alexamiciYou have signed the CLA already but the status is still pending? Let us recheck it.


Upgrade Rugged, netrc, octokit versions

:heart: Thanks! I think I did this locally and then forgot to submit a PR. :disappointed:


MSBuild target incorrect framework when using project dependencies to enforce build order

I have a solution that has multiple projects. Most of the projects are targeting multiple frameworks using the new .csproj format and one of them is only targeting a single framework (net 4.6.1). If you set up build order MSBuild attempts to build the referenced project with (what appears to be) the wrong target framework.
When building from within Visual Studio everything works fine.
When building with MSBuild (MSBuild.exe" /t:rebuild) on the command line the build fails.
The impact is we can't build on our CI server.
Attached is a test project.
ResharperTests.zip

If you remove the project dependency the build order is wrong but MSBuild succeeds. If you need to enforce build order, adding a project dependency causes MSBuild to fail.

Probably related to https://github.com/Microsoft/msbuild/issues/1915.

Do you have a workaround for this issue ?
Is it necessary to return to old csproj for build my solution on my CI server again ?

@Kassoul I simply created two solutions and executed them in the appropriate order on the build server. I only had one dependency so it wasn't too big of an issue. Not a great solution but the team wanted to retain the build output structure instead of the default.

An additional workaround. As the project was a binary executable, adding the "netstandard" build target wasn't an option. However I was able to add a target that changed the output type. This allowed us to target multiple framwworks without any build errors.
`

Library

`

#3200


home page is not attractive

I would like to work on the homepage section of this project

Hi! I am a GSSOC extended 2024 contributor. Please assign me this issue @vishanurag. I would love to work on it.

I think we can design the home page in a more appealing way. I would like to work on it

Hi! I am a GSSOC extended 2024 contributor. Please assign me this issue @vishanurag. I would love to work on it.


Update copyright to point to LICENSE file

Please review quickly for my own sanity....
closes #228

I'm kind of at a loss why the ruby account is no longer working.  It definitely worked on the previous PR.  Did something change on the machine?


fix: Update devworkspace git credentials automounting to only use one conf…

…igmap and one secret
What does this PR do?
This PR makes it so that instead of having one configmap and one secret to store gitconfig and gitcredentials per workspace, there is a global one that are shared across devworkspaces
What issues does this PR fix or reference?
https://github.com/devfile/devworkspace-operator/issues/580
Is it tested? How?

Create a secret on the cluster containing:

kind: Secret
apiVersion: v1
metadata:
  name: git-credentials-secret
  namespace: devworkspace-controller
  annotations:
    controller.devfile.io/mount-path: /home/theia/.git-credentials/
  labels:
    controller.devfile.io/git-credential: 'true'
data:
  credentials: >- ${your base64 credentials here}
type: Opaque

${your base64 credentials here} should be base64 encoded in the format of<EMAIL_ADDRESS>E.g. echo -n<EMAIL_ADDRESS>| base64
2. Create a devworkspace
3. Verify that one configmap is created (devworkspace-gitconfig) storing the gitconfig and one secret is created (devworkspace-merged-git-credentials) storing the git credentials
4. Create another devworkspace
5. Verify that the devworkspace-gitconfig configmap and devworkspace-merged-git-credentials secrets are used there as well and no new secrets/configmaps were created
PR Checklist

[ ] E2E tests pass (when PR is ready, comment /test v8-devworkspace-operator-e2e, v8-che-happy-path to trigger)

[ ] v8-devworkspace-operator-e2e: DevWorkspace e2e test
[ ] v8-che-happy-path: Happy path for verification integration with Che

/test v8-devworkspace-operator-e2e

/test v8-devworkspace-operator-e2e


[core] Fix migrate hive partitioned table with null partition

Purpose
Fix migrate hive partitioned table with null partition
Tests

API and Format

Documentation

+1


XML::Parser Improperly Compiles in dylds on Mac OS X [rt.cpan.org #1468]

Migrated from rt.cpan.org#1468 (status was 'new')
Requestors:

<EMAIL_ADDRESS>
From<EMAIL_ADDRESS>on 2002-08-22 18:55:22
:
Distribution: XML-Parser-2.31

I've found that, even though I've compiled and installed expat-1.95.4 into /usr/local/lib, XML::Parser will fail all of its tests after it builds. The failures look like this:

mercury# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/astress.........dyld: /usr/bin/perl Undefined symbols:
_XML_DefaultCurrent
_XML_ErrorString
_XML_ExternalEntityParserCreate
_XML_GetBase
_XML_GetBuffer
_XML_GetCurrentByteCount
_XML_GetCurrentByteIndex
_XML_GetCurrentColumnNumber
_XML_GetCurrentLineNumber
_XML_GetErrorCode
_XML_GetInputContext
<snip/>

The solution is to pass the paths in to Makefile.PL as you have documented in Makefile.PL:

perl Makefile.PL EXPATLIBPATH=/usr/local/lib EXPATINCPATH=/usr/local/include

The Makefile this generates is identical to the makefile generated without those arguments, so I can't tell how or why it makes a difference. But it does. All tests pass.

Note that, because C<ExtUtils::Liblist->ext('-lexpat')> returns a value on Mac OS X v. 10.2 (although it does generate the warning "Note (probably harmless): No library found for -lexpat"), the section in which you actually test for the presence of the dynamic library never gets executed. Therefore, the helpful information about the EXPATLIBPATH and EXPATINCPATH arguments never gets printed.

Hrm...I just commented out the whole ExtUtils::Liblist section, which allowed Makefile.PL to find the dyld in your "# Test for existence of libexpat" section. I'm not sure what kind of magic you're using to get this information to the compiler, but the upshot is that, on Mac OS X at least, C<ExtUtils::Liblist->ext('-lexpat')> isn't doing the job.

Enough blather. Here's my config:

mercury# perl -V
Summary of my perl5 (revision 5.0 version 8 subversion 0) configuration:
  Platform:
    osname=darwin, osvers=6.0, archname=darwin
    uname='darwin mercury.kineticode.com 6.0 darwin kernel version 6.0: sat jul 27 13:18:52 pdt 2002; root:xnuxnu-344.obj~1release_ppc power macintosh powerpc '
    config_args='-des -Uversiononly -Dprefix=/usr/local -Dccflags=-I/sw/include -Dldflags=-L/sw/lib<EMAIL_ADDRESS>    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-I/sw/include -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing',
    optimize='-O3',
    cppflags='-no-cpp-precomp -I/sw/include -pipe -fno-common -no-cpp-precomp -fno-strict-aliasing'
    ccversion='', gccversion='3.1 20020420 (prerelease)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags ='-L/sw/lib -flat_namespace'
    libpth=/usr/lib
    libs=-lm -lc
    perllibs=-lm -lc
    libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dyld.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-L/sw/lib -flat_namespace -bundle -undefined suppress'

Characteristics of this binary (from libperl):
  Compile-time options: USE_LARGE_FILES
  Built under darwin
  Compiled at Aug 18 2002 23:33:47
  %ENV:
    PERL5LIB=":/usr/local/bricolage/lib:/Users/david/dev/perl/myco/classes:/usr/local/bricolage/lib:/Users/david/dev/perl/myco/classes"
  @INC:
    /usr/local/lib/perl5/5.8.0/darwin
    /usr/local/lib/perl5/5.8.0
    /usr/local/lib/perl5/site_perl/5.8.0/darwin
    /usr/local/lib/perl5/site_perl/5.8.0
    /usr/local/lib/perl5/site_perl
    .

Thanks!

David

From  on 2006-01-07 18:41:03
:
[DWHEELER - Thu Aug 22 14:55:22 2002]:
TIGER:  perl Makefile.PL EXPATLIBPATH='/usr/local/lib -L/usr/X11R6/lib' EXPATINCPATH='/
usr/local/include -I/usr/X11R6/include'

> Distribution: XML-Parser-2.31
>
> I've found that, even though I've compiled and installed expat-1.95.4
>    into /usr/local/lib, XML::Parser will fail all of its tests after
>    it builds. The failures look like this:
>
> mercury# make test
> PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
>    "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
> t/astress.........dyld: /usr/bin/perl Undefined symbols:
> _XML_DefaultCurrent
> _XML_ErrorString
> _XML_ExternalEntityParserCreate
> _XML_GetBase
> _XML_GetBuffer
> _XML_GetCurrentByteCount
> _XML_GetCurrentByteIndex
> _XML_GetCurrentColumnNumber
> _XML_GetCurrentLineNumber
> _XML_GetErrorCode
> _XML_GetInputContext
> <snip/>
>
> The solution is to pass the paths in to Makefile.PL as you have
>    documented in Makefile.PL:
>
> perl Makefile.PL EXPATLIBPATH=/usr/local/lib
>    EXPATINCPATH=/usr/local/include
>
> The Makefile this generates is identical to the makefile generated
>    without those arguments, so I can't tell how or why it makes a
>    difference. But it does. All tests pass.
>
> Note that, because C<ExtUtils::Liblist->ext('-lexpat')> returns a
>    value on Mac OS X v. 10.2 (although it does generate the warning
>    "Note (probably harmless): No library found for -lexpat"), the
>    section in which you actually test for the presence of the dynamic
>    library never gets executed. Therefore, the helpful information
>    about the EXPATLIBPATH and EXPATINCPATH arguments never gets
>    printed.
>
> Hrm...I just commented out the whole ExtUtils::Liblist section, which
>    allowed Makefile.PL to find the dyld in your "# Test for existence
>    of libexpat" section. I'm not sure what kind of magic you're using
>    to get this information to the compiler, but the upshot is that, on
>    Mac OS X at least, C<ExtUtils::Liblist->ext('-lexpat')> isn't doing
>    the job.
>
> Enough blather. Here's my config:
>
> mercury# perl -V
> Summary of my perl5 (revision 5.0 version 8 subversion 0)
>    configuration:
>   Platform:
>     osname=darwin, osvers=6.0, archname=darwin
>     uname='darwin mercury.kineticode.com 6.0 darwin kernel version
>    6.0: sat jul 27 13:18:52 pdt 2002; root:xnuxnu-344.obj~1release_ppc
>    power macintosh powerpc '
>     config_args='-des -Uversiononly -Dprefix=/usr/local
>    -Dccflags=-I/sw/include -Dldflags=-L/sw/lib
><EMAIL_ADDRESS>>     hint=recommended, useposix=true, d_sigaction=define
>     usethreads=undef use5005threads=undef useithreads=undef
>    usemultiplicity=undef
>     useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
>     use64bitint=undef use64bitall=undef uselongdouble=undef
>     usemymalloc=n, bincompat5005=undef
>   Compiler:
>     cc='cc', ccflags ='-I/sw/include -pipe -fno-common -no-cpp-precomp
>    -fno-strict-aliasing',
>     optimize='-O3',
>     cppflags='-no-cpp-precomp -I/sw/include -pipe -fno-common
>    -no-cpp-precomp -fno-strict-aliasing'
>     ccversion='', gccversion='3.1 20020420 (prerelease)',
>    gccosandvers=''
>     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
>     d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=8
>     ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
>    lseeksize=8
>     alignbytes=8, prototype=define
>   Linker and Libraries:
>     ld='cc', ldflags ='-L/sw/lib -flat_namespace'
>     libpth=/usr/lib
>     libs=-lm -lc
>     perllibs=-lm -lc
>     libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true,
>    libperl=libperl.dylib
>     gnulibc_version=''
>   Dynamic Linking:
>     dlsrc=dl_dyld.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
>     cccdlflags=' ', lddlflags='-L/sw/lib -flat_namespace -bundle
>    -undefined suppress'
>
>
> Characteristics of this binary (from libperl):
>   Compile-time options: USE_LARGE_FILES
>   Built under darwin
>   Compiled at Aug 18 2002 23:33:47
>   %ENV:
>     PERL5LIB=":/usr/local/bricolage/lib:/Users/david/dev/perl/myco/classes:/usr/local/
bricolage/lib:/Users/david/dev/perl/myco/classes"
>   @INC:
>     /usr/local/lib/perl5/5.8.0/darwin
>     /usr/local/lib/perl5/5.8.0
>     /usr/local/lib/perl5/site_perl/5.8.0/darwin
>     /usr/local/lib/perl5/site_perl/5.8.0
>     /usr/local/lib/perl5/site_perl
>     .
>
> Thanks!
>
> David

Given the age of this case, I'm closing it. If someone has this problem recently, I might be open to looking at it.


I got different classname by same css

Environment

System:

OS: macOS 11.2.3
CPU: (8) x64 Intel(R) Core(TM) i5-1038NG7 CPU @ 2.00GHz
Memory: 101.36 MB / 16.00 GB
Shell: 5.8 - /bin/zsh

Binaries:

Node: 14.16.0 - /usr/local/bin/node
Yarn: 1.22.10 - /usr/local/bin/yarn
npm: 6.14.11 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman

Reproduction
https://codesandbox.io/s/xenodochial-liskov-bhsd2?file=/src/App.tsx
Steps to reproduce
Passing same css into two components.
Expected Behavior
Got same classname by same css.
Actual Behavior
Got different classname by same css

IMO, that feels like expected behavior...

Yes, that's expected. Different components are expected to insert different rules, which necessitates them having different names and generated classes. This comes down to specificity and CSS rule ordering.


Apply schema to forked PALs

Carbon for IBM Products: https://github.ibm.com/CDAI-design/pal
Cloud PAL: https://github.ibm.com/ibmcloud/pal
Carbon for IBM.com: https://github.com/carbon-design-system/carbon-for-ibm-dotcom
Watson Moments: https://github.ibm.com/watson-developer-cloud/carbon-watson-moments


[Bug] Double-clicking clear notifications crash system

Describe the bug
When clearing notifications, double-clicking it will call for an infinite loop and eventually crash the system
To Reproduce
Click to clear notifications, and double-cliking
Video
Log
(com.github.Aylur.ags:81406): Gjs-CRITICAL **: 11:16:09.726: Attempting to run a JS callback during garbage collection. This is most likely caused by destroying a Clutter actor or GTK widget with ::destroy signal connected, or using the destroy(), dispose(), or remove() vfuncs. Because it would crash the application, it has been blocked.
The offending callback was draw(), a vfunc.
== Stack trace for context 0x313d3940 ==
#0       3149fe08 i   resource:///org/gnome/gjs/modules/core/overrides/GLib.js:266 (2b4cabe7d560 @ 139)
Gdk-Message: 11:16:09.727: Error flushing display: Broken pipe

Distribution: NixOs
Window Manager/Desktop Environment: Hyprland

Not sure that it causes an infinite loop as much as it tries to access a resource that's already been deleted (consecutive clicks) and crashes in the process.
But I added in house notification removal that tracks and disables the removal button.


sort query string

sort query string for HTTP accelerator, such as varnish

@vicanso would you be willing to review and unify query string handling comprehensively now that we have the request-base.js file for common code. I believe we could have the same code running in node and the browser, but currently both the behavior and implementations are different. It would take some analysis to describe the differences, choose the most correct behavior, code that into request-base.js, update tests and docs. That would be part of #830.
My initial thought was the query string should respect the order values are added across several .query() calls, but if there are real caching benefits to be had by sorting, I'd definitely consider it. Generally more deterministic behavior is desirable but I couldn't say with confidence whether there would be negative consequences of sorting by default.

I think it's useful to sort query string, but there are problems with this implementation:

AFAIK it doesn't give any option to have a custom non-sorted order. If someone has settled on another order already, or has a server sensitive to the order, it may be problematic.
It relies on browser sorting being stable. There's a convention of setting ?foo[]=1&foo[]=2 to represent an array, and order of these identical keys has to be preserved.

I suggest limiting sort by default to a case of using JSON to set the qs, on the basis that order of keys in JSON is not supposed to matter, i.e. sort on .query({foo:1,bar:2}), but not .query("foo=1&bar=2").

Closing in favor of sortQuery PR


konf: 0.5.1 -> 0.7.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/SimonTheLeg/konf-go/releases.
meta.description for konf is: Lightweight and blazing fast kubeconfig manager which allows to use different kubeconfigs at the same time
meta.homepage for konf is: https://github.com/SimonTheLeg/konf-go
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.7.0 in filename of file in /nix/store/hwicqccffkxwn2d0glkiz7l5fd2z50nh-konf-0.7.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

konf

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/hwicqccffkxwn2d0glkiz7l5fd2z50nh-konf-0.7.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A konf https://github.com/r-ryantm/nixpkgs/archive/32a70105ba1ffdae90ae89c51007d1686a63e019.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/32a70105ba1ffdae90ae89c51007d1686a63e019#konf

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/hwicqccffkxwn2d0glkiz7l5fd2z50nh-konf-0.7.0
ls -la /nix/store/hwicqccffkxwn2d0glkiz7l5fd2z50nh-konf-0.7.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

konf

Maintainer pings
cc @arikgrahl for testing.

@NixOS/nixpkgs-merge-bot merge

@NixOS/nixpkgs-merge-bot merge

You may open a PR to move all your package into the by-name hierarchy.


Update JobViewSet.create() & export tasks to use json tags instead of {hdm|osm}_presets.xml

Coverage decreased (-0.7%) to 88.027% when pulling 46e0468efe9ec1278c6936a57beceeaaada72cd1 on JivanAmara:json-tags into ecfb0c6968e3fab2664ade09760d6b8fda615d3a on terranodo:master.

Coverage decreased (-0.7%) to 88.027% when pulling 53d19bbb26b37399d19a1744cf3e63cf7a268fbe on JivanAmara:json-tags into ecfb0c6968e3fab2664ade09760d6b8fda615d3a on terranodo:master.

Coverage decreased (-0.7%) to 88.039% when pulling c5841e49c282b6238cbcdf2de9b6a42a3ce2aeb6 on JivanAmara:json-tags into 2c9c953ff1911857792ec4a672427fc050cd6dd9 on terranodo:master.

Coverage decreased (-0.5%) to 88.204% when pulling fe90844dc43683a6c26fbc8a9ac74c2a91ce4ba6 on JivanAmara:json-tags into 2c9c953ff1911857792ec4a672427fc050cd6dd9 on terranodo:master.

Coverage decreased (-0.5%) to 88.204% when pulling 6a1d7ff32638f0a6c085d515389dc38c09410782 on JivanAmara:json-tags into 67e8a7701020214a99f4e367c18057754c215796 on terranodo:master.

Coverage decreased (-0.7%) to 88.084% when pulling cf79634dfbf10ab761a0884d44ffada5160b6559 on JivanAmara:json-tags into 67e8a7701020214a99f4e367c18057754c215796 on terranodo:master.

Coverage decreased (-0.3%) to 88.482% when pulling 4d3ce8aefbe973bd28780bf8baecdca03386ada9 on JivanAmara:json-tags into 67e8a7701020214a99f4e367c18057754c215796 on terranodo:master.


Update -  addition of DDG edge for capturedIdentifiers

Have updated 2 test cases in JS, for some reason they were failing

Ah, this is nice, I think this probably means that we can remove some code in SourcesToStartingPoints, e.g. this line that goes down captured declarations

Can you provide a brief description of what's happening here?

The Idea here is to create DDG edge for identifiers to their captured CounterParts.
Ex -
List<String> userNamesList = new ArrayList<>();  // LNo 1
userPayload.forEach(item -> {                                  // LNo 2
   sink3(userNamesList);                                           // LNo 3
   sink4(userPayload);                                                // LNo 4
});
sink1(userNamesList);                                                // LNo 6
       ```

Here we create following REACHING_DEF edges
userNamesList(1) ----> userNamesList(3)
userNamesList(3) -----> userNamesList(6)


Strange preloading bug in Ecto 3.5.0-rc.0

Environment

Elixir version (elixir -v): 1.10
Database and version (PostgreSQL 9.4, MongoDB 3.2, etc.): PostgreSQL 12.4
Ecto version (mix deps): 3.5.0-rc.0
Database adapter and version (mix deps): postgrex 0.15.5
Operating system: Ubuntu

Current behavior
While testing Ecto 3.5.0-rc.0 I've noticed a strange preloading bug. In some cases, a list of multiple preloads sets the association fields to nil even though the corresponding rows exist in the database. Here's a demonstration:
process = Repo.get!(Process, process_id)

IO.inspect(process.patient)
# #Ecto.Association.NotLoaded<association :patient is not loaded>

IO.inspect(process.encounter)
# #Ecto.Association.NotLoaded<association :encounter is not loaded>

IO.inspect(Repo.preload(process, [:encounter]).encounter)
# %Encounter{...}

IO.inspect(Repo.preload(process, [:patient, :encounter]) |> Map.take([:patient, :encounter]))
# %{encounter: nil, patient: nil}

In other words, each association is correctly loaded if it's preloaded individually, but neither is fetched when both are being preloaded.
Looking at Ecto logs, it seems that correct database queries are issued.
Both, :patient and :encounter associations are defined in the Process schema as belongs_to. I've also tried the same experiment on another schema with has_one associations, and that worked fine.

I cannot reproduce this. I have added this test to our suite:
test "preload multiple belongs_to" do
    %User{id: uid} = TestRepo.insert!(%User{name: "foo"})
    %Post{id: pid} = TestRepo.insert!(%Post{title: "1"})
    %Comment{id: cid} = TestRepo.insert!(%Comment{post_id: pid, author_id: uid})

    comment = TestRepo.get!(Comment, cid)
    comment = TestRepo.preload(comment, [:author])
    assert comment.author.id == uid

    comment = TestRepo.preload(comment, [:author, :post])
    assert comment.author.id == uid
    assert comment.post.id == pid
  end

And it works fine! You can try playing with the test by cloning both ecto and ecto_sql in the same directory and then from ecto_sql you run:
 ECTO_ADAPTER=pg mix test ../ecto/integration_test/cases/preload.exs

So, I forgot to mention one important piece of information: this happens on a dynamic repo.
After going through the depts of ecto & ecto_sql, I was able to narrow it down to maybe_pmap. I first established that if I disable parallel preloads, everything works.
Then, I reverted back to parallel preloading, and inside the task function I hardcoded:
MyRepo.put_dynamic_repo(repo_name)
Ecto.Adapters.SQL.Sandbox.allow(MyRepo, parent_pid, self())

With this, parallel preloading works. Note that I had to do both, set the dynamic repo, and setup sandbox allowance. Not sure what the proper fix should be, but hopefully this gives you some useful information. Let me know if I can assist further.

If you don’t set allowances, it raises an error? Because it should be using the mechanism that sets allowances based on the task caller

Good question! If allowance is not set it returns nothing but doesn't raise. Which reminded me to double check something else, and I've noticed that sandbox mode was not set to manual. When I do that then everything is working as expected, so it seems the problem was in my code after all, right? The funny thing is that the same code works fine with Ecto 3.4. Has perhaps the default sandbox mode changed?

@sasa1977 we did change the preloader. The only changes to the sandbox were the ones related to dynamic repo. :) But did the dynamic parallel preload work on v3.4? Because I wouldn't have expected it to.

But did the dynamic parallel preload work on v3.4?

Not sure if dynamic parallel preload worked, but all tests are passing on 3.4.6 :-) We're using a copy of the sandbox from 3.5, so that hasn't changed when I updated ecto_sql. Was perhaps parallel preload not used by default before 3.5?

The default is the same. Can you please try checking out this commit and let us know if it fails or pass?

I first tried with 3.4.6 and can confirm that preloads are done in parallel, and everything works correctly. Same thing for the commit you linked. I went on to do manual bisection, and I established that this change breaks the behaviour for me. If I manually return the line 130 it works again.

I double checked DBConnection and that line is necessary if you are not running in :manual mode. So the question is indeed why you are not running on manual or {shared, _}. If you run in automatic, it means that each process run on its own transaction, including those tasks. In any case, I will add the line back for now. Thank you so much for bisecting!

So the question is indeed why you are not running on manual or {shared, _}

That was an error on our side :-)


Add WES/WGS docs

Adding documentation for the whole exome- and genome-seq pipelines. Tested with mkdocs.

Everything looks good @mtandon09, thank you for setting aside some time to knock this out!


Support xarray and fix bug

Fix the content would not be shown if pandas has not imported yet
Support xarray

Hi, I'll try to fix the build stage in the CI pipeline in the next days.  And once the checks are green we can merge :-)


pipe-viewer: 0.3.0 -> 0.4.8

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/trizen/pipe-viewer/releases.
meta.description for pipe-viewer is: "CLI+GUI YouTube Client"
meta.homepage for pipe-viewer is: "https://github.com/trizen/pipe-viewer"
meta.changelog for pipe-viewer is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.2.3 with grep in /nix/store/0adgnx5wnz2sb9vsgsbihmd2hcwcjpbh-perl5.34.1-pipe-viewer-0.2.3
found 0.2.3 in filename of file in /nix/store/0adgnx5wnz2sb9vsgsbihmd2hcwcjpbh-perl5.34.1-pipe-viewer-0.2.3

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gtk-pipe-viewer
pipe-viewer

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/0adgnx5wnz2sb9vsgsbihmd2hcwcjpbh-perl5.34.1-pipe-viewer-0.2.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pipe-viewer https://github.com/r-ryantm/nixpkgs/archive/d809abdff738017e56109c125dfc6e3a54f39124.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/0adgnx5wnz2sb9vsgsbihmd2hcwcjpbh-perl5.34.1-pipe-viewer-0.2.3
ls -la /nix/store/0adgnx5wnz2sb9vsgsbihmd2hcwcjpbh-perl5.34.1-pipe-viewer-0.2.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

Maintainer pings
cc @ju1m for testing.

Result of nixpkgs-review pr 186488 run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

Result of nixpkgs-review pr 186488 run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

It is missing mpv.
sh: line 1: mpv: command not found

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/trizen/pipe-viewer/releases.
meta.description for pipe-viewer is: "CLI+GUI YouTube Client"
meta.homepage for pipe-viewer is: "https://github.com/trizen/pipe-viewer"
meta.changelog for pipe-viewer is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.3.1 with grep in /nix/store/9bji3935criavwnbm40pg0h3cfald991-perl5.36.0-pipe-viewer-0.3.1
found 0.3.1 in filename of file in /nix/store/9bji3935criavwnbm40pg0h3cfald991-perl5.36.0-pipe-viewer-0.3.1

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gtk-pipe-viewer
pipe-viewer

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/9bji3935criavwnbm40pg0h3cfald991-perl5.36.0-pipe-viewer-0.3.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pipe-viewer https://github.com/r-ryantm/nixpkgs/archive/04e7bec1b151d90507b96ad4768f8e3bd52375a8.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/9bji3935criavwnbm40pg0h3cfald991-perl5.36.0-pipe-viewer-0.3.1
ls -la /nix/store/9bji3935criavwnbm40pg0h3cfald991-perl5.36.0-pipe-viewer-0.3.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

Maintainer pings
cc @ju1m for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/trizen/pipe-viewer/releases.
meta.description for pipe-viewer is: "CLI+GUI YouTube Client"
meta.homepage for pipe-viewer is: "https://github.com/trizen/pipe-viewer"
meta.changelog for pipe-viewer is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.4.2 with grep in /nix/store/6s8hssk35bi779ddzwcik5iw98kkzy0v-perl5.36.0-pipe-viewer-0.4.2
found 0.4.2 in filename of file in /nix/store/6s8hssk35bi779ddzwcik5iw98kkzy0v-perl5.36.0-pipe-viewer-0.4.2

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gtk-pipe-viewer
pipe-viewer

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/6s8hssk35bi779ddzwcik5iw98kkzy0v-perl5.36.0-pipe-viewer-0.4.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pipe-viewer https://github.com/r-ryantm/nixpkgs/archive/d8112bc3bcdb593182ddfca7cb756c6a8a09b501.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/6s8hssk35bi779ddzwcik5iw98kkzy0v-perl5.36.0-pipe-viewer-0.4.2
ls -la /nix/store/6s8hssk35bi779ddzwcik5iw98kkzy0v-perl5.36.0-pipe-viewer-0.4.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

Maintainer pings
cc @ju1m for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/trizen/pipe-viewer/releases.
meta.description for pipe-viewer is: CLI+GUI YouTube Client
meta.homepage for pipe-viewer is: https://github.com/trizen/pipe-viewer
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.4.5 with grep in /nix/store/b225siiliabxy21m4lma4i852bh1pz9r-perl5.36.0-pipe-viewer-0.4.5
found 0.4.5 in filename of file in /nix/store/b225siiliabxy21m4lma4i852bh1pz9r-perl5.36.0-pipe-viewer-0.4.5

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gtk-pipe-viewer
pipe-viewer

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/b225siiliabxy21m4lma4i852bh1pz9r-perl5.36.0-pipe-viewer-0.4.5 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pipe-viewer https://github.com/r-ryantm/nixpkgs/archive/3ff14a33a802f45983849d50f7f1f91be3429e6f.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/b225siiliabxy21m4lma4i852bh1pz9r-perl5.36.0-pipe-viewer-0.4.5
ls -la /nix/store/b225siiliabxy21m4lma4i852bh1pz9r-perl5.36.0-pipe-viewer-0.4.5/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

Maintainer pings
cc @ju1m for testing.

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/trizen/pipe-viewer/releases.
meta.description for pipe-viewer is: CLI+GUI YouTube Client
meta.homepage for pipe-viewer is: https://github.com/trizen/pipe-viewer
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.4.8 with grep in /nix/store/3pzxn2b8dm8kj5rh0y1qcn25saqjyn18-perl5.36.0-pipe-viewer-0.4.8
found 0.4.8 in filename of file in /nix/store/3pzxn2b8dm8kj5rh0y1qcn25saqjyn18-perl5.36.0-pipe-viewer-0.4.8

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath
gtk-pipe-viewer
pipe-viewer

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/3pzxn2b8dm8kj5rh0y1qcn25saqjyn18-perl5.36.0-pipe-viewer-0.4.8 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pipe-viewer https://github.com/r-ryantm/nixpkgs/archive/a6612dcfeb944b336dc1607423536d40b6c35737.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/3pzxn2b8dm8kj5rh0y1qcn25saqjyn18-perl5.36.0-pipe-viewer-0.4.8
ls -la /nix/store/3pzxn2b8dm8kj5rh0y1qcn25saqjyn18-perl5.36.0-pipe-viewer-0.4.8/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

gtk-pipe-viewer
pipe-viewer

Maintainer pings
cc @ju1m for testing.

Result of nixpkgs-review pr 186488 run on aarch64-darwin 1

4 packages built:

gtk-pipe-viewer
gtk-pipe-viewer.devdoc
pipe-viewer
pipe-viewer.devdoc


When static resource is replaced by common name，Vite not refresh

Vite does not wath file replaced

it's better for the user to manually reload in this case

See https://github.com/vitejs/vite/issues/126#issuecomment-628912850.


Collection Mode Toggle resets filters

On Desktop, when I toggle the Collection Mode toggle, the cards displayed are reset to the unfiltered results.

Ohh yeah, that needs to be fixed asap. Gonna push a change in a bit.

Just fixed it and it should work live in a few minutes.

Toggle is working correctly for me again. Thanks for the quick fix.


chore(package): Prebuild for all targets & runtimes

This enables prebuilding for all Node & Electron target ABIs
Change-Type: patch
Connects To: #16

I think we should be fine, given that the tests have passed so far – and if not, we can always go back to specifying them in detail :)


Fix an alignment typo in Git LFS batch API v1 documentation

This JSON key is only indented one space, but should be indented two spaces to align with the rest of the structure.

Thanks!


Fixed AJAX call for compatibility with jQuery 3

jQuery 3 deprecated the jqXHR.success callback, which breaks the plugin.
Changing .success to .done fixes this issue.

@tehsven pointed out that we should test to make sure the example files still work with this change.

Double checked compatibility with both older versions of jQuery, and the current example files.
Only the custom.html one is broken, due to an engine key that belongs to a non-existent engine.


send API differences?

service.send will accept a string followed by an object payload. (https://xstate.js.org/docs/guides/interpretation.html#sending-events)
But when invoking callbacks, the callback argument (which sends an event to the parent) does not. (https://xstate.js.org/docs/guides/communication.html#invoking-callbacks)
Any reason for this discrepancy? I've tripped over this a few times now.

I don't think there is any particular reason for this discrepancy. I think that we should just unify both in the upcoming v5 and drop support for service.send(type, payload). That would also match send action which doesn't support this (type, payload) thing. @davidkpiano WDYT?

For V5, here's what we should do:

✅ Keep service.send(string)
➕ Allow actor.send(string) (can really be actor.send(any) - implementation details should not be mandated by XState)
❌ Remove service.send(string, payload)
✅ Add send(string, payload) to:

@xstate/react
@xstate/vue
All other future framework integrations

✅ Keep service.send(object) and actor.send(object) of course

So send(type, payload) should be kept at the "leaf-node" integrations (@xstate/react, @xstate/vue, etc.) but removed from core.

A little sad to lose send(type, payload) from the interpreter — imho, it's a very intuitive expansion of the send(string) form. That said, a consistent, simpler API for core probably makes the most sense.

➕ Allow actor.send(string) (can really be actor.send(any) - implementation details should not be mandated by XState)

We already use a certain "protocol" for sent events (that it is an object with a type property) and we send such to actors. IMHO it's a good thing to enforce this simple (and familiar to most) protocol as it simplifies the implementation in most cases and makes things more predictable by removing the need for defensive code. Seems like a good common denominator that should/could be enforced. If one really, really needs to send thing of a different shape they can always implement deserialization logic on the receiving end of things.

So send(type, payload) should be kept at the "leaf-node" integrations (@xstate/react, @xstate/vue, etc.) but removed from core.

 What is the benefit of accepting those by the integrations?

 What is the benefit of accepting those by the integrations?

It will not and it has not (or at least I haven't heard anything about it yet). It's a developer experience item, influenced by Vuex: https://vuex.vuejs.org/guide/actions.html#dispatching-actions
If you feel strongly about removing it, we can ask the community what they think, but I feel like it's a harmless and useful addition.

We can forego actor.send(string) but definitely not service.send(string) - that is in very common use.

@akbr A simple change can be made to allow passing strings to callback(stringType), which will be equivalent to callback({ type: stringType })

Just a note - I was strictly advocating for removing send(type, payload), not a simple send(type) form, and was arguing against supporting send(any) in actors.

It will not and it has not (or at least I haven't heard anything about it yet). It's a developer experience item, influenced by Vuex: https://vuex.vuejs.org/guide/actions.html#dispatching-actions

IMHO it's (send(type, payload)) just yet another way of doing the same thing (the third one), which for me seems like too much - such things often only bring inconsistencies across codebases and needless discussions in teams about which one is preferred etc. Personally I also don't see any particular advantage in this API (besides maybe some minor visual appeal) - it's disconnected from declared TS event types and requires TS-shenanigans to be typed correctly, something like:
  send<Type extends TEvent["type"]>(
    type: Type,
    payload: Omit<Extract<TEvent, { type: Type }>, 'type'>
  ): void;

which is rather far from "easy".

I suppose a good compromise would be a helper function:
import { eventFrom } from 'xstate/event';

// ...

send(eventFrom('CHANGE', { field: 'name', value: 'alice' }));

I want to drop into this thread an example of something that makes send('EVENT', { data }) a useful construct.
My goal is to be able to have semi-dynamic dispatch. You know where you are, and where you need to go, but the receiving state needs additional information (known statically in advance) in order to continue. I don't see it to be remarkably different from done data for invoked state machines. I also believe that this is a generally useful tool for providing backpressure/queuing behavior within the state machine itself.
I've read into the 4.X code to figure out how to insert this behavior. The most-relevant piece is this:
sendWithPayload(
  'ALERT',
  {
    data: {
      prompt: 'This window has timed out. What would you like to do?',
      answers: [
        { label: 'Keep Waiting', action: 'WAIT' },
        { label: 'Try Again', action: 'RETRY' },
        { label: 'Give Up', action: 'ABORT' }
      ]
    }
  }
)

This traverses up through the state machine, and then back down into a singular, modal, alert component. (Think alert, prompt, and confirm.)
A full version is below.

Machine Definition
import { actions, assign, spawn, Machine, interpret, send, sendParent } from 'xstate';

// Piggyback on the send action creator, mimic the actual behavior behind the scenes.
function sendWithPayload(action, payload) {
  var temp = send(action);
  payload.type = action;
  Object.assign(temp.event, payload);
  return temp;
}

// This is a window manager. Multiple windows (child components).
function applicationConfigGen() {
  return {
    id: 'application',
    type: 'parallel',

    states: {
      // This thing can timeout, necessitating an alert.
      'child-component1': childComponentConfigGen(),

      // This is a singleton across the entire window manager.
      'alert': alertComponentConfigGen()
    },

    on: {
      // This is far-more-clear to me than '*' with dispatch based upon `JSON.parse(the event name)`.
      // This thing doesn't actually care about the payload, it just needs to direct it
      // to the correct place.
      'ALERT': {
        actions: [
          actions.pure((context, event) => { return sendWithPayload('FOREGROUND', event)})
        ]
      }
    }
  };
}

// This is a singleton. You can only have one alert at a time.
// This component is not, however, just an "OK" type of alert.
// It is designed to receive a configuration that would inform
// what content to display.
function alertComponentConfigGen() {
  return {
    id: 'alert-component',
    initial: 'background',

    states: {
      // NOTE: this doesn't currently handle back-pressure or modality.
      'background': {
        on: {
          'FOREGROUND': 'foregrounding'
        }
      },
      'foregrounding': {
        invoke: {
          id: 'foregrounding-promise',
          src: Machine(promiseConfigGen()),
          onDone: 'foreground'
        }
      },
      'foreground': {
        on: {
          'BACKGROUND': 'backgrounding'
        }
      },
      'backgrounding': {
        invoke: {
          id: 'backgrounding-promise',
          src: Machine(promiseConfigGen()),
          onDone: 'background'
        }
      }
    }
  };
}

function childComponentConfigGen() {
  return {
    id: 'child-component',
    initial: 'load',

    states: {
      'load': {
        invoke: {
          src: Machine(cancellablePromiseConfigGen()),
          onDone: [
            {
              target: 'resolve',
              cond: (context, event) => {
                return event.data && event.data.target === 'resolve';
              }
            },
            {
              target: 'reject',
              cond: (context, event) => {
                return event.data && event.data.target === 'reject';
              }
            }
          ]
        },
        on: {
          'TIMEOUT': 'timeout'
        }
      },

      'timeout': {
        entry: [
          // Magic is here. We need an alert!
          // The point of invocation knows where it is, and what can be done in this state.
          sendWithPayload(
            'ALERT',
            {
              data: {
                prompt: 'This window has timed out. What would you like to do?',
                answers: [
                  { label: 'Keep Waiting', action: 'WAIT' },
                  { label: 'Try Again', action: 'RETRY' },
                  { label: 'Give Up', action: 'ABORT' }
                ]
              }
            }
          )
        ]
      },
      'resolve': { type: 'final' },
      'reject': { type: 'final' }
    }
  };
}

function cancellablePromiseConfigGen() {
  return {
    id: 'cancellable-promise',
    initial: 'spawn',
    context: {},

    states: {
      'reset': {
        always: [
          {
            target: 'spawn',
            actions: [
              actions.pure((context) => { return actions.stop(context.promise.id); })
            ]
          }
        ]
      },

      'spawn': {
        always: [
          {
            target: 'waiting',
            actions: [
              assign({
                promise: () => {
                  return spawn(Machine(promiseConfigGen()), { sync: true });
                }
              })
            ]
          }
        ]
      },

      'waiting': {
        after: {
          1000: 'timeout'
        },
        on: {
          'TIMEOUT': 'timeout'
        }
      },

      'timeout': {
        entry: [
          sendParent('TIMEOUT')
        ],
        on: {
          ABORT: 'abort',
          RETRY: { target: 'reset' },
          WAIT: 'waiting'
        }
      },

      'abort': { type: 'final', data: { target: 'abort' } },
      'resolve': { type: 'final', data: { target: 'resolve' } },
      'reject': { type: 'final', data: { target: 'reject' } }
    },

    on: {
      'xstate.update': [
        {
          target: 'resolve',
          cond: (context, event) => {
            return event.state.done && event.state.value === 'resolve';
          }
        },
        {
          target: 'reject',
          cond: (context, event) => {
            return event.state.done && event.state.value === 'reject';
          }
        }
      ]
    }
  };
}

function promiseConfigGen() {
  return {
    id: 'invocable-promise',
    initial: 'promise',

    states: {
      'promise': {
        invoke: {
          src: () =>
            new Promise(function (resolve, reject) {
              setTimeout(resolve, 2000);
            }),
          onDone: 'resolve',
          onError: 'reject'
        }
      },

      'resolve': { type: 'final' },
      'reject': { type: 'final' }
    }
  };
}

const applicationMachine = Machine(applicationConfigGen());
const applicationInterpreter = interpret(applicationMachine);

applicationInterpreter.onTransition((state, event) => {
  console.log('state:', state.value);
  console.log('event:', event.type);
});

applicationInterpreter.start();

How is it different from:
send({
  type: "ALERT",
  data: {
    prompt: "This window has timed out. What would you like to do?",
    answers: [
      { label: "Keep Waiting", action: "WAIT" },
      { label: "Try Again", action: "RETRY" },
      { label: "Give Up", action: "ABORT" },
    ],
  },
});

and
actions.pure((context, event) => {
  return send({ ...event, type: "FOREGROUND" });
});

I've tested locally both versions and they yield the same results as far as I can tell.

You're, of course, correct. 😊 I just didn't know how to send using that approach. Since what I understand was semi-limited—"it is all just an action creator!"—I went with the most blunt-force approach to doing it that I found.
(I appreciate the consistent "yo, you're making this harder on yourself than necessary" comments. I'm going to turn this into something, promise.)


ws-sbom-generator - customer reported issue

Bug Description
ICICI from Meteonic has tried setting up the ws-sbom-generator and they are facing the issue presented in the attached screenshot
Screenshots
If applicable, add screenshots to help explain your problem.

the customer asked for WS to create this issue on their behalf. any additional details needed from their side please let us know

Hi @ioana-nicolae,
The upstream spdx-suite version we are using (0.7) was not released yet.
In order to use our tool now, it is required to manually download and install our spdx-tools package as instructed in the README.
I hope this will change soon.


Pass Relays on Invest Action

When users click the invest button and are redirected to Angor, ensure the relays containing the project data are passed as per NIP standards (possibly BECH32).

this requires we also make changes on the angor app


Add imageSmoothingQuality to BaseRenderingContext2D

https://html.spec.whatwg.org/multipage/canvas.html#canvasimagesmoothing

An equivalent change to this one was submitted internally.


UI: Make the results table look like this example

Problem
The current regression shows outputs that are not descriptive enough.
Tasks
Make the output look like the attached image. This is a screenshot of the old COINSTAC output, so it should be in a past version somewhere.

Updated code at https://github.com/MRN-Code/coinstac_ssr_fsl and https://github.com/MRN-Code/coinstac_drne_fsl

Corrected a small error in the aforementioned repos. Should be good now.


New Smartthings restful API

https://smartthings.developer.samsung.com/docs/api-ref/st-api.html#section/Overview
https://smartthings.developer.samsung.com/develop/index.html
Smartthings has a beta API available now that allows you to perform RESTful http calls to their cloud to perform various functions.
Rather than the complicated process of adding code in the IDE, this bridge could use the HTTP API.  Dropping in the new HTTP API version of smartthings-mqtt-bridge shouldn't change anything about how the MQTT messages are processed.  Only the transmission mechanism would change under the hood.
The benefit is fairly obvious, aside from no need to add code via the IDE.  You only have to use the IDE to generate a token, one time, that you'd paste into the yml configuration file.
As is, I really appreciate the bridge and use it as a core piece of my custom home automation software.
https://github.com/RoboDomo

Thanks for sharing this!  You may also be interested to know there is a new SmartThings native integration in Home Assistant that uses this API

That's where I probably found out about the new API.
That said, I'm not much of a fan of any of the existing solutions like HA.
In fact, that this is now native in HA is kind of contrary to my desired architecture.  Which is microservices, each doing MQTT protocol and obscuring the oddities of the API/protocols beneath.  For everything.
The advantages are numerous.  But start with the ability to have cron jobs.
My Nest thermostat doesn't let me turn on the heat from 6AM to 9AM due to a "rush hour" program I joined with the gas company.  A cron job runs at 5:45 and turns on the heat; the cron task just runs the mqtt commandline command to do it.
Cheers

Looking at the API and their cli example, I don’t see how it’s feasible for the MQTT bridge.
There’s no notification or event API, no EventSource or WebSocket.
The cli example has an “all devices status” method, but it enervates all devices (1 request), then makes one request per device to get each device status.
The rate limiter they put on requests means an unacceptable latency in update to a UI when a switch is turned on or off.  Depending on how many things on your hub.  I have ~30.  A fan switch and dimmer for two ceiling fans, dimmers on 10 lights.  Several motion sensors.  Two multifunction sensors, two garage door sensors, etc.  maybe 1/3 of my switches are z wave,  the rest the stock non smart kind.
I will look at the HA implementation to see what they do.
Until then, this bridge software is definitely the way to go.  If HA has big latency, this bridge is a better way to go.  IMO.

Take a look here https://smartthings.developer.samsung.com/docs/guides/smartapps/basics.html
There is a mechanism to receive webhooks, which is part of the new SmartApp/Automation construct.  This is what the HASS integration uses in conjunction with the API.

Yeah, I saw that already.  The problem is I don't want to open an HTTP port on my home LAN to support the web hooks.
This is one of the sillier things I've seen in all the cloud IoT services.  I have an Amazon Echo in my house.  To add/create commands through Amazon, I have to open an HTTP port.  Now for this new API, same thing.

Instead of simplifying things, that server at the open HTTP port has to be secured and made more and more complex as more cloud services want to post to it (e.g. SmartApp and Alexa).
I have an Echo and ST Hub on my LAN already.  They can talk to every device on my LAN, as long as I don't have firewall rules blocking them.  Why don't THEY do the HTTP to my webhook server behind my firewall from the device?
THIS bridge does exactly what #2 says should be done.  To configure, I put the MAC address and local LAN IP in the configuration dialogs, not some public IP with an open http port.

I might be pretty good about hardening and securing a server I expose to the hacker infested internet, but not a lot of "regular" users are.


Support install from pre-build binaries

appveyor

[x] build for windows.

[x] x86

[x] node 8
[x] node 7
[x] node 6
[x] node 5
[x] node 4

[x] x64

[x] node 8
[x] node 7
[x] node 6
[x] node 5
[x] node 4

[ ] publish binaries to github releases. #265

travis ci

[x] build for linux

[x] node 8
[x] node 7
[x] node 6
[x] node 5
[x] node 4
[x] node 0.x

[x] build for macos

[x] node 8
[x] node 7
[x] node 6
[x] node 5
[x] node 4
[x] node 0.x

[ ] publish binaries to github releases. #265

[ ] mirror of github releases in mainland China. https://github.com/cnpm/mirrors
test

[ ] install from github releases.

[ ] install on windows.
[ ] install on linux.
[ ] install on mac os.

[ ] install from mirror.

[ ] install on windows.
[ ] install on linux.
[ ] install on mac os.

@BYVoid 马上就要成功了，还差一点点，我为这个功能跟进了半年了，求大神行行好，可怜可怜我吧。

請問如何設置npm自動下載預編譯？


RHIDP-4853 - Update locations of migrated plugins in docs

Note: Updated tables are based on the release-1.4 branch

IMPORTANT: Do Not Merge - To be merged by Docs Team Only
Version(s):
1.4
Issue:
RHIDP-4853

/cherry-pick release-1.4

/cherry-pick release-1.4

because plugin version content will drift between main and release-1.4 branches, you can't really cherypick these PRs but instead have to re-run the ./rhdh-supported-plugins.sh -b release-1.4 --clean or ./rhdh-supported-plugins.sh -b main --clean scripts.

Ok. Not sure if deleting the cherry pick comment will cancel the bot action. Let's try.

Replaced by PR 769


Fix EntityManagerInterface wrapInTransaction stub

wrapInTransaction's callable takes self as a parameter.

More like $this but we should test what it does with subclasses.

I went with self because that's what the EntityManagerInterface actually declares in its @psalm-param typehint on that method.
However, I wonder if neither is strictly accurate, since the EntityManagerDecorator passes the callable directly through to its wrapped EntityManagerInterface, so calling wrapInTransaction on a decorator is going to get your function called with the wrapped EM, which from the caller's point of view, is neither $this nor self. Perhaps loosening the type to EntityManagerInterface would be more accurate. Do you want me to make that change?

No, it's okay, thank you!


SectioningException <-- java.lang.ClassNotFoundException

The software is logging about a thousand times a day:
org.unitime.timetable.gwt.shared.SectioningException:
at org.unitime.timetable.solver.jgroups.OnlineStudentSchedulingContainer.createInstance(OnlineStudentSchedulingContainer.java:166)
at org.unitime.timetable.solver.jgroups.OnlineStudentSchedulingContainer.createSolver(OnlineStudentSchedulingContainer.java:116)
at org.unitime.timetable.solver.jgroups.LocalSolverServer$Updater.checkForNewServers(LocalSolverServer.java:209)
at org.unitime.timetable.solver.jgroups.LocalSolverServer$Updater.run(LocalSolverServer.java:159)
Caused by: java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at org.unitime.timetable.solver.jgroups.OnlineStudentSchedulingContainer.createInstance(OnlineStudentSchedulingContainer.java:151)
... 3 more

Looks like you have a wrong value set in the application property named unitime.enrollment.server.class (probably a blank value). It either should not be set at all (in which case the online student scheduling solver implementation is selected automatically based on whether the replication is enabled) or set to a class implementing the org.unitime.timetable.onlinesectioning.OnlineSectioningServer interface.
Please check you custom properties file (if you have any) and/or the Administration > Defaults > Configuration page.

I have a default installation, using mostly default setting with no external solvers nor ldap connection.
So, i have found timetable.jar\org\unitime\timetable\onlinesectioning within webapps/ROOT/WEB-INF/lib/timetable.jar
What shall i have to do?
Also, thanks for the fast response and analisys.

Go to the Administration > Defaults > Configuration page and check for the unitime.enrollment.server.class property while "Show all properties" toggle at the bottom of the screen is not checked. If you see the property there, click on it and hit the Delete button. If the Delete button is not there, go to your custom properties file (if you have created one) and look for a line like this:
unitime.enrollment.server.class=

If you see such line in there, delete it (or comment it out).
If this does not help, set the property to org.unitime.timetable.onlinesectioning.server.InMemoryServer using the Application Configuration page mentioned earlier, or in the configuration file:
unitime.enrollment.server.class=org.unitime.timetable.onlinesectioning.server.InMemoryServer

Seems to work good.
Thanks !


Date not preserved from CSV to XLSX

I'm reading some csv data and try to convert it to XLSX. I have a datetime column and it seems the data is not preserved correctly between CSV and XLSX.
I joined some screenshot opened with numebrs and google spread sheet. It is a known issue ? If I use excel will the data be preserved (having a datetime and not a date or just a number) ? Or maybe I did miss an option ? ( I added cellDates: true on reading and writing) ?

CSV

XLSX

import on google spreadsheet

I found similar and ended up (rightly or wrongly) using this function/library to do the conversion
import { getJsDateFromExcel } from 'excel-date-to-js


Implement Data Structures

Data Structures to be implemented are:

[ ] Segment Trees
[ ] Binary Search Tree
[x] Graphs

@manrajgrover would love to work on this

@itsthecheat Yes, please go ahead! Don't forget to write test cases and maintain code quality.
Also, let me know which data structure you're beginning with.

was this binary search tree ever completed? if not, I would like to do it.

I want to contribute to this too, are any of the binary search tree or segment tree incomplete? Let me know.

hi @manrajgrover if binary search tree is not yet completed then i want to take this task !!

@manrajgrover  can i do the binary search tree implementation?

hi @manrajgrover  I would like to work on the segment tree. Can I start this task?

@manrajgrover  I would like to contribute with Binary Search Tree,  if any let me know.

Hello, I wonder if this repository is still maintained? and can I grab those issues?

hi  @manrajgrover  I want to contribute to the Binary search tree .

Hey @manrajgrover , i am proficient in Data Structures and Algorithms , would love to work on this issue.


 in bulletphysics.gwt.xml correct?

Not sure if this project is still developed, and I am probably doing something wrong myself....but anyway.
Trying to use this in a GWT project setup in eclipse.
I added the folder to the project, then added;
  <!-- Other module inherits                                      -->
 <inherits name='com.badlogic.gdx'/>
 <inherits name='bulletphysics'/>

To my own gwt.xml, as well as adding the gdx jar.
When trying to compile though I get;
[ERROR] Unable to find 'javax/Vecmath.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
Which is referenced in;
BulletPhysics.gwt.xml
Is that right ? Isnt the point of this project to avoid the user of vecmaths due to licencing? Or is this a different vector maths?
Any pointers would be helpfull,
Cheers,

You are fully right ; I did not use it in GWT so I did not update the dependencies. The library does not depend on vecmath anymore, so I changed the GWT dependency to point to the LibGdx ones.


cleaning

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.6%) to 85.837%

Totals

Change from base Build<PHONE_NUMBER>:
0.6%

Covered Lines:
1278

Relevant Lines:
1453

💛  - Coveralls


Maintenance status?

PR merging and releases have slowed down a bit recently. nothing merged since January this year.
I'd be great to get maintenance unstuck, heapless is a great crate and very widely used. I volunteer myself, hopefully other people will too.
To increase the bus factor, I propose moving the repo to rust-embedded-community. Adding individual maintainers helps, but they can always get bus'd, which is what rust-embedded-community exists to avoid.
What do you think @japaric ?

This is a very useful crate. Thanks for making it! I hope you find some solution to help maintaining it, you probably have a significant amount of users by now.

Fixed in https://github.com/rust-embedded/wg/issues/710 🎉


adding custom library

For general questions, please use [the PYNQ discussion forum](https://discuss.
pynq.io/). We actively monitor the forum and try to answer every question
there.
Before submitting a pull request, you can also raise an issue that explains the
problem the pull request is trying to resolve. Feel free to close the issue once
the pull request has been merged.
If you still want to raise an issue here, please give us as much detail as
possible to the issue you are seeing - we've listed some helpful fields below.

PYNQ version -v2.4:
Board name microzed 7010::
Description:
can i  add my custom library code in the rootfs and build it again.so that libraries's so files will be loaded at the booting time?

Hi @savan1213, as this is a technical question more than a bug, I would advise you to use our forum and post your question there: https://discuss.pynq.io
The issue tracker is meant to report bugs in the code base, so I will have to close this one. Hope to see you on https://discuss.pynq.io


possible to set maximum number of markings?

The maximum number of markings would be helpful to prevent errors. (Maybe minimum too but maximum would be a lot more helpful)

@ggdhines this sounds more like a front end issue to me.

sorry - I will move it


[Settings> Add new profile]: Confirmation message is not announced by Screen Reader when user create a new profile and duplicate the profile.

Windows Terminal version
1.12.3472.0
Windows build number
10.0.22504.1010
Other Software
Test Environment:
OS: Windows 11 Version Dev (OS Build 22504.1010)
App: Windows Terminal Preview
Screen Reader: Narrator
Steps to reproduce
Repro Steps:

Open Windows Terminal.
Open Settings page using 'Ctr+,'.
Open Narrator using 'Win + Ctrl + Enter' keys.
Activate 'Add a new profile' tab, then activate 'New Empty profile' and 'Duplicate' button.
Observe the issue.

User Experience:
Screen Reader users UX will not be good if there will not be able to know whether the action is performed successfully or not.
Guideline Reference:
EN 301 549 V3.2.1: <IP_ADDRESS> Change notification
Attachments:
Confirmation message is not announced by Screen Reader when user create a new profile and Duplicate the profile..zip
Expected Behavior
Confirmation message should be announced by Screen Reader when user create a new profile and duplicate the profile.
i.e. When New profile created successfully, Screen Reader should 'profile name created successfully' and When user duplicated a profile Screen Reader should announce 'profile name created successfully'.
Actual Behavior
Confirmation message is not announced by Screen Reader when user create a new profile and duplicate the profile.
Observation: Issue repro with NVDA and JAWS Screen Reader.

Since we can't fail to create a new profile, this should be pretty easy. Just after invoking the button, send a notification event saying "profile created successfully".