a python example would be really helpful.

i would like to send an email with attachment from a python function.

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

ID: 67219504-786d-cb28-da42-e36e227a1c8a
Version Independent ID: 9faa4531-ad36-7fda-c9e5-415aa2c5a400
Content: Azure Functions SendGrid bindings
Content Source: articles/azure-functions/functions-bindings-sendgrid.md
Service: azure-functions
GitHub Login: @craigshoemaker
Microsoft Alias: cshoe

@jayhub42 Thank you for the detailed feedback. We are actively investigating and will get back to you soon.

@jayhub42 Looks like this isn't supported yet for Python. Do note that Python support for Azure Functions is currently in preview.
I believe you can use the sendgrid-python library directly until its officially supported.
@asavaritayal Could you confirm if there is a plan for this?

@jayhub42 Hope my previous comment helps for now.
We are assigning this issue to the content author for review and to update this doc accordingly once this is implemented.

@PramodValavala-MSFT  yes i was able to accomplish what i needed. thanks
I will update my function once the new documentation is live.
thanks again.

Closing this issue as Python support is in preview and @jayhub42 has a work around.
#please-close


Put question mark icon into the subquestion - can't figure out how to do it.

housing_code_interview.yml
id: simple conditions
Text says to click on the question mark icon - easier to show the icon and then just say question mark after it, but I couldn't figure out how to get that image in there.

Got it.
Not sure this is the way to do it, but it works for now.


Not yet supported commands: (9)
Del Icon, Make Icon Mask, Get Block. Put Block, Del Block, Get Block, Put CBlock, Del CBlock, Del CBlock
3*100/12 = 25% done


remove gophercloud/utils dependency

The main features of gophercloud/utils are support for reading the entire range of OS_* environment variables, and reading clouds.yaml configuration files. As far as I can see, you need neither here.
While I was at it, I refactored the two occurences of Keystone authentication into a method.

Thanks.


Add ignoreInterpolations util to fourslash for fuzzy diagnostic matching

Context: working on #32901 to stop returning a fix-all when there’s nothing left to fix led me to discover some fourslash codefix tests that seemed to be using verify.codeFixAll instead of verify.codeFix purely to avoid having to write out an interpolated diagnostic message for description. Writing the interpolation is often redundant with the rest of the test, and it makes it hard to use a constant from ts.Diagnostics.

I wanted to put this functionality in a separate PR because I’m not 100% confident when or if the #32901 PR will land since I’ll need to coordinate with VS Code.

@weswigham I’m going to merge so I can rebase the PR I split this off from, but let me know if you have more feedback.


created_by_id is not being populated on save

I've noticed on a couple tables that the created_by_id is not being populated when the data is saved. The created_at field is being populated, but not the user id.
Tables I've noticed this on:
report_verification
report_person_responsible
Todo:

Investigate why the created_by_id is not being populated
Look for other tables where this is not working as expected

@Sepehr-Sobhani Tagging you because you have the most experience with these fields. Not sure if this was a known bug already?

This is not a bug but a known issue we have experienced since the beginning. We have created explicit functions to set the fields created_by, updated_by, and archived_by, which you can find here: https://github.com/bcgov/cas-registration/blob/develop/docs/backend/data-models.md#audit-trail-implementation

Thanks @Sepehr-Sobhani ! I knew you were the right guy to ask :)
I suppose I should turn this "bug" card into a tech debt to make sure that the endpoints creating data in the timestamped tables we've created in reporting are calling those functions.

@Sepehr-Sobhani @dleard  I wonder if we could enforce in our abstract TimeStampedModel that created_by is not null. This will force devs to pass the user upon each record creation and greatly reduce the risk of forgetting to 1) call the set_create_or_update() function and 2) write a test that the user is properly setup

@Sepehr-Sobhani @dleard I wonder if we could enforce in our abstract TimeStampedModel that created_by is not null. This will force devs to pass the user upon each record creation and greatly reduce the risk of forgetting to 1) call the set_create_or_update() function and 2) write a test that the user is properly setup

Then we won't be able to call save method if we are not passing the user. One possible solution would be to pass the user directly to the save method.

@pbastia @dleard What if we set the user_guid as the postgres session in a middleware, something like:
from django.db import connection

class UserUUIDMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        try:
            user_uuid = request.headers.get("...")
            if user_uuid:
                with connection.cursor() as cursor:
                    cursor.execute("<SET SESSION HERE> = %s;", [user_uuid])
            response = self.get_response(request)
        finally:
            with connection.cursor() as cursor:
                cursor.execute("<RESET SESSION HERE>;")
        return response

And then having a trigger in Postgres to set audit fields for us.

@dleard should we just not worry about this one until we have RLS / automatic record amendment setup? Or do you reckon this would be something separate, at least initially?

It could be related if we decide to use postgres triggers to do this for us. We can use the my.guid setting that gets set via middleware in the RLS proof of concept. If we want to keep this a pure django thing then it's probably entirely separate

I'll add the attn_developer tag. I think it's worth some discussion about how to proceed here


XPlanar TrackMove Method

IMO:
It would make more sense to rename the existing TrackMove method "TrackMoveXY" and create a new TrackMove method with the one dimensional track position as an input.
AB#4644

Thank you for the feedback.  I originally used the X and Y input arguments as convenience item to save the user the step of calculating the dimensional track position, but I can see use cases where having that ability would be beneficial.  I will look into getting this implemented in the next release.

Thanks!
In my case I'm indexing a mover along path for an assembly process.  I set it up so that a track would be in the desired mover path, and you move a mover to that track and then index it along the track, so if the customer moves the tooling in the future (especially if you move it to index along Y instead of X for example), you just need to move the track vs re-write the indexing code.

This will become available in a future release.  Closing out the issue.


Show copy code block icon only on hover

Expected Behavior
The copy icon should be displayed when the user hovers over the code block.
Current Behavior
Currently the icon is always visible leading to poor reading experience.
Screenshots

Steps to reproduce
Please provide detailed steps for reproducing the issue

Goto any article with code block e.g. https://www.codu.co/articles/setting-up-metacall-development-environment-on-windows-jxk6iltl

Hi Praveen,
Requirements update:

The copy / clipboard button should be visible for mobile.
The code excerpt / text should be completely visible to reduce side-scrolling.
On desktop the copy / clipboard button should be visible on mouse hover.

Thanks,
Shane

@NiallJoeMaher Suggested enhancement here. Is the underlined empty space on code block is is needed or we can make copy code button positioning absolute so that it will remove this empty space ?

Thanks for that @sudarshansb143! We did that. 🥳


daemon, ipam, option: Introduce ability to bypass IP availability error

In CRD-backed IPAM modes such as ENI mode, some IPs were recently
removed from the IPAM pool 1. In user environments where Cilium was
running a version prior to 1, it is possible for endpoints to be
assigned "unavailable" IPs. Upon upgrade (to a version which includes
1), endpoint restoration will fail with [2].
In order to workaround this failure and not disrupt the upgrade, this
change introduces a hidden flag
(--bypass-ip-availability-upon-restore) which will inform Cilium to
continue on if the restored endpoint's IP is not available for
reallocation, bypassing the specific error "IP is not available". Other
errors will not be bypassed, in order to reduce the scope of this
stop-gap solution.
With the flag set, restored endpoints which had "unavailable" IPs will
keep them. Any new endpoints / pods will be assigned fresh, valid IPs
from the pool.
This flag is only meant to be enabled with CRD-backed IPAM modes such as
ENI mode. The reason is because of the change described in 1, where
the primary ENI IP was removed from the IPAM pool. In any other mode
that this flag is enabled in, the user is warned that the flag is not
intended for other modes and will have no effect.
This patch is intended to be reverted in the future, as this stop-gap
solution will no longer be required, as users of Cilium don't upgrade
from versions prior to 1. I propose that we revert this in the
following release that this patch makes it in (N+1).
How was this tested?

Deployed a Cilium version that doesn't include 1 on EKS cluster
Created a Deployment object which I scaled to max out the ENI IPs,
such that at least one pod is assigned an "unavailable" IP
Upgraded Cilium to a version which does include 1 and observe [2]
failures
Reset cluster back to state from (2)
Upgrade Cilium to the version that contains this commit
Observe log msgs from this commit and endpoint restoration succeeding
Scale Deployment to 0 and back up, to restart all pods
Observe that they all get fresh IPs and none of the "unavailable"
IPs

[2]:
{
"time":"2021-09-20T16:57:00.400086481Z",
"level":"WARN",
"origin":"cilium.io/agent",
"message":"Unable to restore endpoint, ignoring",
"params":{
    "endpointID":"992",
    "error":"Failed to re-allocate IP of endpoint: unable to reallocate <IP_ADDRESS> IPv4 address: IP <IP_ADDRESS> is not available",
    "k8sPodName":"default/pod-1",
    "subsys":"daemon"
  }
}

Signed-off-by: Chris Tarazi<EMAIL_ADDRESS>

/test

/test

Pushed a small bug fix which I caught during manual testing.

/test

Pushed to update commit msg, no code changes. From https://github.com/cilium/cilium/pull/17492#issuecomment-930612836, CI hit known flakes except for test-1.20-4.19 which had its images fail to pull.

/test-1.20-4.19

We have approving reviews and CI has passed (https://github.com/cilium/cilium/pull/17492#issuecomment-930863438, https://github.com/cilium/cilium/pull/17492#issuecomment-931002044), marking ready to merge.


Translation update for French

Description
Updated missing or wrong translations for French language
Motivation and Context
Improve translations
How Has This Been Tested?
Local DEV machine
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[X] Translation

Checklist:

[X] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[X] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[X] All new and existing tests passed.

@elgatito : I guess that local testing is enough ? Or is there any automated testing stuff I can run ? :p


Iterate on feedback from Dan

https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Metaprogramming.20tutorial/near/285465861

More: https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Metaprogramming.20tutorial/near/292051009


Switch to fiat-crypto Rust crate

Summary
We use fiat-crypto code to implement various low-level cryptographic primitives. If the generated code from fiat-rust changes, it could mean there's a security vulnerability in it. An easy way to ensure we're notified of these changes would be to fail CI tests if the hash of the file(s) we use changes.
Alternatives

We could set up some kind of Matrix bot that detects if the fiat-rust hash changes and posts to the Orion room. This would require maintaining the bot, though.

I think the best approach is still to make it a part of the daily tests in form a script or similar. Failing the daily tests seems fine IMO.
A bot for the room would be nice as an additional reminder, but as you said it would require to maintain it. Also, then we'd have to start scrolling through chat-logs every once in a while to check if there's a update missing. Of course, you're welcome to add the bot in addition to CI/CD just for fun, if you'd like.

Not really sure if we can. Do you know of some custom way to script Dependabot?
Or was it another approach you had in mind?

If the generated code from fiat-rust changes, it could mean there's a security vulnerability in it

It's more likely that a change will mean that we tweaked the documentation, added a new operation, or tweaked some optimization.  I guess it's possible that we got some parentheses or cast transcriptions wrong (the only unverified part is where we go from our internal AST to Rust code).
Regardless, is there any reason to inline the Rust code rather than depending on our published Rust crate?

Regardless, is there any reason to inline the Rust code rather than depending on our published Rust crate?

When I initially looked at it, IIRC the generated Rust code in the repository was newer than that of the Rust crate. So I simply thought to be able to get the newest version, there'd have to be a manual check. Maybe I misunderstood something there?
Just looked again and there seems to be automatic publishing of the Rust crate now (maybe there was before too?). If this is the case, then I don't see a reason as to why we wouldn't prefer the crate over inlined Rust code.
Anyway, thanks for chiming in here!

Yeah, we update the crate automatically any time we release a version, which we do anytime there are significant changes to the code (and I plan to bump the major version if ever we make a backwards-incompatible change to the interface).

Also, if you ever discover that the crate is out of date in a meaningful way, feel free to open an issue asking us to make a new release.  (But there's no reason to be pegged to the latest version.  Certainly if we find any correctness issues in the generated code we'll immediate make a new release when they're fixed.)
Also, if there's something we have to do on our end to get dependabot to notice when we do a release, I'm happy to set that up on our side.

Yeah, we update the crate automatically any time we release a version, which we do anytime there are significant changes to the code (and I plan to bump the major version if ever we make a backwards-incompatible change to the interface).

Then I definitely don't see a reason not to switch to the crate. Thanks for expanding upon it.

Also, if there's something we have to do on our end to get dependabot to notice when we do a release, I'm happy to set that up on our side.

There shouldn't be. As long as the version number is bumped, which it must either way, Dependabot should detect it.

Changed scope of issue. Please raise any possible concerns @vlmutolo, especially if you don't want to remain assigned to this issue, considering the change.
My initial thinking is to include this in the next minor release.


Don't include fixtures in build

Part 1: Make sure fixtures aren't bundled in build.
Part 2 will come later. That includes moving fixture assignment to the dev server.

Reviewer: @aldipower

well that was pretty easy


Profile saving loading bar never stops

Originally reported by @lauranori inside the internal Slack.
Generic information

OS name and version: iOS 13.5.1
Application build code: 4004
Network type (mobile/Wi-Fi):  mobile and Wi-Fi

Bug description
After saving the profile, the loading bar never stops spinning.
Steps to reproduce

Edit the profile information.
Save the profile.

Expected behavior
The profile should be saved and the loading bar should stop spinning.

Cannot reproduce.
Version: 0.4.0+04010
Device: Google Nexus 5X / Xiaomi Mi 9T
OS: Android 10.0

Apparently, this is a bug caused by Desmos not handling correctly the edit of a profile picture without a moniker. As @bragaz said on Slack (internal message):

checking on the explorer there’s an internal error when she tries to do that

I think there’s some missing checks on a nil pointer

Oh, they are two different problems I think.
Could you guys try to:

Create a new account
Edit the profile adding only the profilePic besides moniker
Save the Profile

What should be done Mooncake-side is improving how errors are managed inside the screen that allows you to edit the account. Currently, there is no error management and the loading bar keeps spinning instead of stopping and displaying an error.
We should fix this by making so that if an error is raised during the saving, it is shown properly to the user.


configuration

Hello, I can't understand, how I can configure this plugin. Just for now, I found only one way - create new npm plugin with this index.js file:

global.rootPath = process.cwd() + (global.srcRootPath ? '/' + global.srcRootPath.replace(/^(/)|(/)$/g, '') : '');
module.exports = require('../babel-root-import/build/index.js');

in this case, I can set  global.srcRootPath variable in my gulpfile.js. Please, modify your code with this lines, or please say, how I can do this customization. Many thanks.

In my case it wasn't necessary - but you're right.. this is a interesting feature and a few guys already asked for this.
Your solution is good, but if we implement a feature which supports the custom-root config it should be defined in the .babelrc
We're already discussed in the #4 issue. (@billyjanitsch @danez)
Has anyone time to implement this feature? I think the next time i've time to dev this is in the christmas time :/ so 2-3 weeks.

I do pull request for today. But, unfortunately, I don't know how to transform 'plugin' directory into 'build'  directory. I test this in 'build', and all work perfectly. Please, check how it will work with with 'build' after es6 transformations.

Ok cool - make some PR then we can discover this issue :)
Do you've already implemented some tests? (i think it's possible - when you've used the .babelrc API)
Thanks!

mauhahaha, this is my fault, I do PR in my repo (https://github.com/degr/babel-root-import/pulls). How I can do PR from my fork into your rep? And one more thing - you already have same functionality here - https://github.com/michaelzoidl/babel-root-import/pull/5 (in my case you use plugin options, in that case you use babel -extra

lol, ya no problem :) you should find a green button
Then you open a new PR here in this repo.. then you should see it on the Pull Requests Tab.
And ya, in the old PR it worked fine, but for the Babel 5.0 Version, they changed the API, i just saw how you pass extra params now:
{
  "plugins": [
    ["babel-root-import", {
      "root": "foo"
    }]
  ]
}

Do you've implemented the root feature with this API? (but just make a PR, then we can discuss there, in a PR you call always update files)

Okay guys... this feature is now (from version 3.1.0) implemented! Thanks to @degr.


AEM Asset Integration

need to determine how we integrate with AEM Assets. this includes both links to assets such as PDFs, and author selection of assets.
some options:

move to franklin
keep /content/dam alive and route at cdn

I believe they should stay in the DAM and we should explore how to improve the authoring experience for DAM-hosted content.

For legacy AEM Asset (On-prem and/or AMS-hosted 6.5) the best option is probably using Asset Selector: https://experienceleague.adobe.com/docs/experience-manager-65/assets/managing/asset-selector.html?lang=en
This integration would not work with AEM CS, and therefore it is worth noting that for AEM CS (including Asset Essentials) the better option is the Micro-frontend Asset Selector: https://github.com/adobe/aem-assets-selectors-mfe-examples

Other considerations for this include the overall authoring workflow including assets (approvals, publish, etc) and also CDN integration for Franklin vs. published AEM Assets content.


Run-time error '429': ActiveX component can't create object

Excel Setup
I have the following setup in my Excel
Tools -> References -> SeleniumWrapper Type Library
Excel VBA
Here is the Excel VBA code I'm running:
Option Explicit
Public Sub SeleniumTest()
Dim driver As New WebDriver
Set driver = CreateObject("WebDriver")  <- I get the  Run-time error '429': ActiveX component can't create object error on this line
driver.Start "IE", "https://www.google.com/"
End Sub
Troubleshooting Comments
I first "repaired" my installation of Excel from control panel.  Then I un-installed and re-installed Excel from control panel.  I'm still getting the error.
I don't have the admin rights or experience to manually edit my registry and DLL files.  Is there a way to fix this without getting too low level?
Thanks, Paul

First, make sure you have properly uninstalled the last version of SeleniumWrapper
and that you have the last version of SeleniumBasic Installed:
https://github.com/florentbr/SeleniumBasic/releases

I have the following setup in my Excel
Tools -> References -> SeleniumWrapper Type Library

The new reference in VBA is:
Tools -> References -> Selenium Type Library

ActiveX component can't create object

The correct syntax for VBA is:
Dim driver As New Selenium.FirefoxDriver
driver.Get "https://www.google.co.uk"
...
driver.Quit

or
Dim driver As New Selenium.WebDriver
driver.Start "firefox", "https://www.google.co.uk"
driver.Get "/"
...
driver.Quit

See, the provided workbook for more examples:
Program > Examples > Excel >Selenium.xlsm
or:
https://github.com/florentbr/SeleniumBasic/raw/master/Examples/Excel/Selenium.xlsm

I don't have the admin rights or experience to manually edit my registry ...

Admin rights are no longer required since the migration.


Add support for Poetry-like groups

Purpose: faster Docker build for increased iteration speed when working with Docker development images.
Background:
Resolving package dependencies means looking at all packages to find the correct versions. This is done by having a lock file, which is then updated each time I make a change in the packages.
When I have a Docker development image I enjoy installing big and slowly changing packages such as torch first, and smaller and more fast-changing packages later. That way, when I add a package my docker layer does not get invalidated and I can rebuild my image much faster, increasing iteration speed.
So how can I resolve my dependencies without invalidating the Docker cached layers?
Solution:
Instead of using the lock file itself inside the Docker image, I first export from the lock file using
poetry export --without-hashes --with heavy-builds -o requirements-heavy-builds.txt
And then I have requirements-heavy-builds.txt in my Docker file.
That way, unless the versions of the packages in requirements-heavy-builds.txt change, the Docker cache does not get invalidated and I keep iteration speed high.
Request:
To support this workflow in uv by adding the commands:

uv export --without-hashes --with heavy-builds -o requirements-heavy-builds.txt
uv add --group heavy-builds

I think all of this is supported today, unless I'm misunderstanding? uv export --group heavy-builds ... and uv add --group already exists.

Thank you!
I must somehow have missed this. Thank you for a great product.
Fredrik
fre 6 dec. 2024 kl. 01:00 skrev Charlie Marsh @.***>:

I think all of this is supported today, unless I'm misunderstanding? uv
export --group heavy-builds ... and uv add --group already exists.
—
Reply to this email directly, view it on GitHub
https://github.com/astral-sh/uv/issues/9664#issuecomment-2521758012, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/BMJPLYXT6QAASWAZT2RZTE32EDSIHAVCNFSM6AAAAABTDQDLH6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRRG42TQMBRGI
.
You are receiving this because you authored the thread.Message ID:
@.***>


fix broken file reference in PSP guide

Fixes the included file reference in the psp guide which was breaking deploy/netlify
https://github.com/kubernetes/kubernetes.github.io/pull/1206#issuecomment-248447241
@nikhiljindal

This change is

lgtm, thanks


make transference number a function

Summary
in Kim 2011( see #824 ) the transference number is a function.

While you're working on that, can you also add the (1+ dlnf/dlnc) term in MacInnes optionally as a function?


Add Pages to Groups GUI

GUI currently lacks the ability to expand beyond the 27 slots, a 28th gets hidden behind the "back" button. And beyond that theyll continue to fill the bottom row of the GUI.  Keep the initial 27 slots but come 28th add support for a 2nd page of Groups to be created.  Also if you use the GUI button to make the 27th Prefix, you wont be able to use it to make more as the "Add" button gets hidden beyond the back button as well.
Thanks

will be added soon

Any ETA on this?

Hey,
please excuse the late respond.
The update will come in the next few hours.
Thank you for using EasyPrefix!
Best regards,
Christian

Additional pages for groups in /ep setup work fine, but for someone who has access to all tags. /ep settings returns an error
https://pastebin.com/m38PTrPZ
Think whatever page system you made for the setup GUI needs to be added to settings GUI.
Thanks!

fixed.
Thanks!

When will the groups in /ep settings be added

Please download the newest version (1.6.4_R1)


TE-3.5 , TE-3.6 : failign to get ARP entry as protocol start missing after OTG config

Failing to get dst mac entry from arp as there is no protocol is started after OTG configuration.

@bkreddy143 , is the configuration specific to HW or KNE?

It is fixed now.


$NSLocationWhenInUseUsageDescription

When the app starts for the first time on iOS, I get the prompt to allow the app to use my location.  However, the description under this prompt reads "$NSLocationWhenInUseUsageDescription".  I saw there was a fix added recently so I downloaded the latest zip and installed it locally but the issue remains.  Do I have to do anything else?

Hey!
Check this: https://github.com/dpa99c/cordova-custom-config#ios-config-blocks

Hey @ZiFFeL1992!  Many thanks - I actually already have that plugin installed but wasn't using it for this purpose.  I assumed there was a way to do it through the Google Maps plugin but if not, this is a decent alternative 👍

Since the custom config plugin does not work on Phonegap Build and intel xdk, we can not use it


The remote video quality very poor, only freezing

Hello y'all,
I am working on a react native video call app, I use react-native-agora, everything works fine except the
remote video quality is extremely bad, I can see nothing, it is only freezing.
I use react native agora version : 3.2.2
My rtcEngine init function :
`const init = async () => {
const {token, appId} = await getToken();
setAppId(appId);
setToken(token);
engine = await RtcEngine.create(appId);
await engine.enableVideo();
await engine.enableAudio();
await engine?.joinChannel(token, 'channelName', null, 0);
    engine.addListener('Warning', (warn) => {
        console.log('Warning', warn);
    });

    engine.addListener('Error', async (err) => {
        if(err === 17){
            if(!engine){
                engine = await RtcEngine.create(appId);
            }
            await engine?.leaveChannel();
            setPeerIds(peerIds => []);
            await engine?.joinChannel(token, `${session.id}`, null, 0);
        }
        console.log('Error', err);
    });

    engine.addListener('UserJoined', async (uid, elapsed) => {
        console.log('UserJoined', uid, elapsed);
        // Get current peer IDs
        // If new user
        if (peerIds.indexOf(uid) === -1) {
            setPeerIds(peerIds => [...peerIds, uid]);
        }
    });

    engine.addListener('UserOffline', (uid, reason) => {
        console.log('UserOffline', uid, reason);
        setPeerIds(peerIds => [...peerIds.filter((id) => id !== uid)]);
    });

    // If Local user joins RTC channel
    engine.addListener('JoinChannelSuccess', (channel, uid, elapsed) => {
        console.log('JoinChannelSuccess', channel, uid, elapsed);
        // Set state variable to true
        setJoinSucceed(true);
    });
}`

I am sorry I cannot get my code well formatted here, I don't now why.
Thanks in advance for your help.

could you pls provide your channel name?

could you pls provide your channel name?

could you pls provide your channel name?

Hello, my channel name depends on an id of a database table : ${session.id}

could you pls provide your channel name?

Hello, my channel name depends on an id of a database table : ${session.id}

Hello plutoless I finally solved my problem thank you.

could you pls share your solution? I think it will help other developers who face the same issue.

Of course for those who have the same issue, I just change my videoEncoderConfiguration like this:
await engine.setVideoEncoderConfiguration(new VideoEncoderConfiguration({         dimensions: new VideoDimensions(320, 240),         bitrate: 140,         frameRate: VideoFrameRate.Fps30,         degradationPrefer: 0     }))


Add sacred logger

Is your feature request related to a problem? Please describe.
For most of our projects we are using sacred for logging the parameters, metrics, ... to a MongoDB database.  For the last project I used pytorch-lightning with the default logger, but I'd prefer sacred.
Describe the solution you'd like
I'd like a SacredLogger for logging with sacred similar to MLFlowLogger for mlflow.
At some point I'll implement this myself but I thought maybe someone else is interested as well.

Could you tackle this yourself? It should be pretty straightforward. You can use the other loggers in https://github.com/williamFalcon/pytorch-lightning/tree/master/pytorch_lightning/logging as examples.

Yes, I can and I will, just like I said in the description of my issue. But since this is an open source project I thought maybe someone else might be interested as well, or already attempted it or might be interested in having it implemented. If no one else is interested (because no one is using sacred except me) I don't need to take the effort and create a pull request (which is a lot more work than just implementing a custom logger for myself).
I am sorry if this is not how issues should be used in this project but I saw this and thought this should be fine.

Sorry, I was unclear. Thanks for opening an issue. That's the correct way to start a discussion on a new feature. I'm not aware of anyone else working on this, but I believe Sacred is fairly widely used, so we'd encourage you to submit a PR  adding this functionality.
Feel free to follow up here if you run into any questions or issues while implementing it.

@expectopatronum still interested in submitting a PR for this? :)

Yes, I am working on it now! :)

if there is an interest in this logger we may add it to upcoming lightning-bolts :robot:

@Borda we haven't decided on whether to move loggers or not.

sure, but with @expectopatronum not having time to add it https://github.com/PyTorchLightning/pytorch-lightning/pull/656#issuecomment-581504898, there is noone to do it now... or do you prefer to keep this open?

Hi, any plans to sacred logger?

@diff7 mind open an issue for it in Bolts as suggested in https://github.com/PyTorchLightning/pytorch-lightning/issues/438#issuecomment-604446913


rename field interchanges -> area_interchanges

Codecov Report

Merging #55 (1143a63) into main (5841551) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #55   +/-   ##
=======================================
  Coverage   94.56%   94.56%
=======================================
  Files           3        3
  Lines         331      331
=======================================
  Hits          313      313
  Misses         18       18

Impacted Files
Coverage Δ

src/types.jl
95.19% <ø> (ø)

Continue to review full report at Codecov.

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


Contributing guide/documentation

Is your feature request related to a problem? Please describe.
Hey this library seems to have a lot of potential, it would be great to have a contributing guide so that it would be easier to contribute.
Describe the solution you'd like
A contributing guide with some guidelines and information about important things to know.
Describe alternatives you've considered
NA
Additional context
NA

Hi, thank you for your interest in this project.
I'm new to open source and don't really know what to put inside the CONTRIBUTING.md file 😅.
I will take a look at others popular project to see how it's done and try to do something understandable.

@fabien-ml no problem, thats how it usually goes 😛 . Feel free to tag me if you make a PR and I can give feedback.

@dannyhw you can check a first draft here

@fabien-ml looks great, nice job!

Closed by #129


openebs.readthedocs.io/en/latest/ - broken

documentation is missing on readthedocs.io .

Hi @qmnonic, the docs have moved to docs.openebs.io

Great.
Google and github ( https://github.com/openebs/openebs/tree/master/documentation ) reference openebs.readthedocs.io, so it's impossible to find that new link.


Update serving section in the homepage

Fix grammar for open-source and added BentoML to the serving section in the website.

/assign @animeshsingh

It seems this content is not longer valid. I recommend to close this PR.
@terrytangyuan @yubozhao @Arhell


Draft 14

This PR prepares for the next major release of the library that would support draft14

[x] Remove CWT proofs
[x] Remove batch endpoint
[x] Multiple proofs to credential request (Batch issuance for the same credential_configuration_id)
[x] Retrieve multiple credentials from deferred endpoint
[x] notification_id applicable to credentials issued (that's a draft 15 feature needed. addresses an inconsistency of draft14)
[x] Issued credential could be either String or/and JSON Object
[x] Remove interval attribute from pre-authorized_code grant

Closes #309
Closes #295
Closes #294
Closes #316
Closes #320
Closes #323

@vafeini Added in scope #316
We need to
a) Re-work the response of the deferred endpoint, since now a transaction_id corresponds to one or more credentials
b) Re-work IssuedCredential. The IssuedCredential.Deferred must be removed
c) Re-work on the SubmissionOutcome. We need to add Sumbission.SuccessDeferred

The following change was necessary:
Submission outcome has now three possible states: Success (or Issued), Deferred, Failed.
sealed interface SubmissionOutcome : java.io.Serializable {

    /**
     * State that denotes the successful submission of an issuance request
     * @param credentials The outcome of the issuance request.
     * If the issuance request was a batch request, it will contain the results of each issuance request.
     * If it was a single issuance request list will contain only one result.
     */
    data class Success(val credentials: List<IssuedCredential>) : SubmissionOutcome

    /**
     * Credential could not be issued immediately. An identifier is returned from server to be used later on
     * to request the credential from issuer's Deferred Credential Endpoint.
     *
     * @param transactionId  A string identifying a Deferred Issuance transaction.
     */
    data class Deferred(val transactionId: TransactionId) : SubmissionOutcome

    /**
     * State that denotes that the credential issuance request has failed
     *
     * @param error The error that caused the failure of the request
     */
    data class Failed(val error: CredentialIssuanceError) : SubmissionOutcome
}

It seems that in d15, notification_id will be pertinent to the credentials array. That is, each notification event will be associated, not with a single credential but, to the credentials array.
Thus, submission outcome & and the deferred outcome need to change once more
sealed interface SubmissionOutcome : java.io.Serializable {

    /**
     * State that denotes the successful submission of an issuance request
     * @param credentials The outcome of the issuance request.
     * If the issuance request was a batch request, it will contain the results of each issuance request.
     * If it was a single issuance request list will contain only one result.
     *
     * @param credentials The credentials issued
     * @param notificationId The identifier to be used in issuer's notification endpoint.
     */
    data class Success(
        val credentials: List<IssuedCredential>,
        val notificationId: NotificationId?,
    ) : SubmissionOutcome {
        init {
            require(credentials.isNotEmpty()) { "credentials must not be empty" }
        }
    }

    /**
     * Credential could not be issued immediately. An identifier is returned from server to be used later on
     * to request the credential from issuer's Deferred Credential Endpoint.
     *
     * @param transactionId  A string identifying a Deferred Issuance transaction.
     */
    data class Deferred(val transactionId: TransactionId) : SubmissionOutcome

    /**
     * State that denotes that the credential issuance request has failed
     *
     * @param error The error that caused the failure of the request
     */
    data class Failed(val error: CredentialIssuanceError) : SubmissionOutcome
}

To support issued credential both as string and as JSON object the following changes were introduced
sealed interface Credential {
    @JvmInline
    value class Str(val value: String) : Credential {
        override fun toString(): String = value
    }

    @JvmInline
    value class Json(val value: JsonObject) : Credential {
        override fun toString(): String = value.toString()
    }
}

data class IssuedCredential(
    val credential: Credential,
    val additionalInfo: JsonObject?,
)

PS: The additionalInfo is for future use (d15).

There was an issue when interacting with an (draft 13) issuer with regards to the use of not supported proof types.
In particular, library was failing to resolve issuer metadata for configurations that were using proof types other than jwt & ldp_vp. In draft 13, issuer could use cwt proof type, which was removed.
To fix this, a new member was introduced to ProofTypeMeta
sealed interface ProofTypeMeta : Serializable {
    data class Jwt(val algorithms: List<JWSAlgorithm>) : ProofTypeMeta {
        init {
            require(algorithms.isNotEmpty()) { "Supported algorithms in case of JWT cannot be empty" }
        }
    }

    data object LdpVp : ProofTypeMeta {
        private fun readResolve(): Any = LdpVp
    }

    data class Unsupported(val type: String) : ProofTypeMeta
}

Now, during issuer metadata resolution, proof types that are not supported by library are mapped to ProofTypeMeta.Unsupported .
In this way, caller may have the opportunity to be aware that issuer requires some kind of proofs that are not supported by the library.

@vafeini Please remember to rebase main. Some test fixes where added


Susanne

Commit Message Guidelines
Header
Blank Line
Body
Blank Line
Footer

The header should look like:
<type>(<scope>): <subject>

The body should have any necessary detailed info about the commit:
An example, references as to where this idea came from, etc.

The footer should have all the issues tagged:
Fixes #123, Fixes #456

So a commit should look like:
feat(users): Add new Yahoo authentication

Yahoo authentication idea proposed by @codydaig
Example implementation in file.js

Fixes #82

Types:

feat - Features, Enhancements, and overall Improvements
fix - Fixes, Bugs, HotFixs, etc...
doc - Changes to the Documentation and doesn't actually touch any code.

Scope:

The scope should be where the change took place.
Examples: users, core, config, articles

Subject:

The subject line should be clear and concise as to what is being accomplished in the commit.

General Rules:

No Line in the Commit message can be longer than 80 characters.

Reference: Angular Conventions

Hey @susanscfae, please make your own repository to learn pull requesting. Now you're just causing extra work for volunteers here. Thanks.


Explicitly specify DESTDIR when installing

Kiss sets DESTDIR in the environment, but is clearer to explicitly pass it
into make. This matches the style of the community repo and also allows
these packages to be reused in other kiss-like package managers.
This patch was generated by
find . -name  build -exec sed -i 's/make install/make DESTDIR="$1" install/g' {} \+

The Community repository does not specifically require any particular style in this case, but instead allows for either.
It's unimportant to me if this PR is merged (note that I still use DESTDIR in all my own builds), but we should be clear that there isn't any requirement one way or the other (mainly as we only support the latest version of kiss).

@dilyn-corner Why not treat this as a stylistic requirement? I feel like this is more important than some of the other aspects we nit-pick on. It seems like a less opinionated requirement than all the cosmetic rules we have.
I don't really care if it is a "requirement" or not. Most packages in community did so I just assumed that was the style. On the other hand, if the vast majority of packages follow this format, why not just force consistency?

Personally, I was always against implicit DESTDIR and VERSION markers. These features defeat the simplicity and explicitness of kiss package format by needlessly obfuscating everything.
Given that, I'm all for merging this PR(with some additions), but only if we'll be able to reach consensus. If that's not possible, let's at least enforce specific style to resolve this once and for all, so people won't keep coming back to this discussion over and over again.

Personally, I was always against implicit DESTDIR and VERSION markers. These features defeat the simplicity and explicitness of kiss package format by needlessly obfuscating everything.

I absolutely agree with you.

Given that, I'm all for merging this PR(with some additions), but only if we'll be able to reach consensus.

I agree it should only happen with consensus.

If that's not possible, let's at least enforce specific style to resolve this once and for all, so people won't keep coming back to this discussion over and over again.

If this is a democratic Org, then we should take a vote. If it's a unilateral decision, I'm not allowing it.
I don't see why this shouldn't be a democracy, there are plenty of people with opinions on this matter in this Org, and I don't view myself as the end-all-be-all here. I'm not certain we have a quorum though, which makes voting... Hard.
We have acheam, testuser, and you, plus me; probably quorum enough. Thumbs-up on OP for this PR to merge, thums-down on OP for this PR to move towards establishing a different set of guidelines for packages distributed by this Org.

I think my reasons for opposing this are clear but I'm willing to defend those reasons if someone wants to ask.

@dilyn-corner Your reasons aren't clear to me hence my earlier reply. I thought you were neutral to this change and took the stance that either form is correct since it works with the current version of KISS. To me that's different than being against this PR.
I don't believe anyone has stated a downside to either just updating the packages in this repo nor adding a larger requirement. For normal kiss users, it is just a style change and we all seem to think being explicit is better

I don't believe anyone has stated a downside to either just updating the packages in this repo nor adding a larger requirement.

For me, a downside is that it breaks from what KISS Linux allows and becomes unnecessarily restrictive.  This merge request is essentially establishing a passive requirement on package maintainers to include an explicit DESTDIR when no such requirement exists in kiss itself.
Perhaps instead of a style requirement, it could be a style guideline… for example, maybe package maintainers should be given a suggestion to make DESTDIR explicit rather than either being told to do so or having the packages they're maintaining be changed without them really having a choice in the matter (the latter of which is what this merge request would be doing).

For me, a downside is that it breaks from what KISS Linux allows and becomes unnecessarily restrictive.

I don't understand your point. If we only care about upstream kiss, then this doesn't provide any extra restrictions than any purely cosmetic style requirement that community enforces. I'm taking about purely opinionated changes like having all arguments on oneline in configure. Using that as precedent for "unnecessarily restrictive" requirements for the sake of consistency. Which is why I don't understand the objection to this PR.

having the packages they're maintaining be changed without them really having a choice in the matter (the latter of which is what this merge request would be doing).

Isn't @dylanaraps the maintainer of all of these? Perhaps one of the maintainers here took over some of these, but doing it in bulk makes much more sense than making 50+ commits.

I don't understand your point.

Dylan (BDFL of KISS Linux) leaves the choice of implicit or explicit DESTDIR up to the package maintainer.  Requiring one or the other is an extra restriction on this choice that would not exist outside the community fork.

If we only care about upstream kiss, then this doesn't provide any extra restrictions

If "we only care about upstream kiss", then the default should be implicit DESTDIR.  And again, forcing packages to all use explicit DESTDIR (or the other way) would be an extra restriction that does not exist "upstream".

purely cosmetic style

If it is purely cosmetic, then why does it matter one way or the other if you're not the package maintainer?

Isn't @dylanaraps the maintainer of all of these?

Which means he (BDFL of KISS Linux) chose to use implicit DESTDIR... Which means changing this would be going away from what he "decided" ("changing this" specifically meaning if it becomes a requirement for future packages to use one or the other).

If it is purely cosmetic, then why does it matter one way or the other if you're not the package maintainer?

If you want to debug a build failure or manually build using the build script. In these cases you may just pass in "destdir" as the first argument and that may or may not work. Yeah you could just manually set DESTDIR... if you know you need too. If one just saw make; make install they may not know DESTDIR has any effect.
Also consider more-minimal kiss-like packages managers that could read these package formats but don't do all these "extra" vars set. I get that no one seems to care about anything other than upstream kiss and there have been changes that explicitly broke other package managers in the past, but I don't think being more portable is a negative.

And again, forcing packages to all use explicit DESTDIR (or the other way) would be an extra restriction that does not exist "upstream".

I feel like we are talking past each other. I'm not disagreeing about the extra requirement. My point is that we already have more arbitrary requirements so don't think this would make things worse. There are already requirements that aren't enforced by code.

Dylan (BDFL of KISS Linux) leaves the choice of implicit or explicit DESTDIR up to the package maintainer.

That's a very debatable statement if you are claiming his intent. He couldn't stop people from being explicit and one could argue from the packages he maintains, that he'd prefer everything to be implicit. Of course some packages won't read DESTDIR from the env so those would still have to be explicit. So we have to be in a state where we have a mix or are always explicit.

If "we only care about upstream kiss", then the default should be implicit DESTDIR.

So I disagree with this as there is some benefit to just being consistent for all packages (at least the ones that use make)

So I've thought about why I take the stand that I do.
In many respects, this is more a technical & design decision than a style choice. Put another way, setting DESTDIR is more of a functional change to a build script than requiring configure options be on new lines or that text be vertically aligned.
As such, we should take cues on what to do from the package manager, as the package manager is ultimately what is interpreting our package recipes.
Because kiss sets DESTDIR itself, there is no requirement to specify it -- including it certainly makes things more explicit; all of my own build scripts are as explicit as possible, for instance.
I view this question very similarly to the question of whether or not we should allow maintainers to use VERSION etc. in their sources file. Ultimately, because kiss supports it, there is no requirement one way or the other.
 Absolutely. But we don't care about other package managers. It's not a problem we should solve, or even be asked to solve.
In my mind, it is a bad decision to use an implicit DESTDIR -- I don't like that kiss sets environment variables in general. I think obfuscating build recipes is a wrong take, and as such I don't participate in the option. But other people like it, for whatever reasons they like it for. I have no interest in forcing maintainers to do something that is very much allowed by the package manager they ostensibly support & use.

But we don't care about other package managers. It's not a problem we should solve, or even be asked to solve.

It is obvious that this is our stance, but it seems strangly against portability. Well kiss itself is like that in many aspects so it isn't unreasonable. I saw adding arbitrary complexity like with the source files as plausible since it reduces work for maintainers as they only have to update one file. I viewed this change as setting it and forgetting. Of course now that I've gone though and updated more packages with non-trivial build scripts I can see why one may want to not worry about forgetting an pass DESTDIR somewhere. It probably is also nice to not have to trust that  packages maintained by others aren't writing to root by mistake...

Put another way, setting DESTDIR is more of a functional change to a build script

I don't really agree that is a functional change since the net result should be exactly the same.
So I getting the feeling that a larger requirement won't be forced until kiss changes its behavior. So may we pivot to looking at just these packages in the "official" repo instead without implying any sort of larger requirement? From what I'm hearing we all agree that being explicit is better but there is debate on weather to force everyone to comply. But if seems reasonable to just update repo and not enforce anything in community

@TAAPArthur this might be useful for you: https://github.com/kisslinux/repo/pull/289

export DESTDIR="$1"  should be added at the top of every package that uses meson/cmake too

Since this repository is essentially intended to be a continuation of the official one, I'd like to maintain the official one's style. But, if Dylan is (or is reasonably assumed to be) done working on KISS for good, then I'm in favor of removing the implicit environment and VERSION, et al from the package manager.

Since this repository is essentially intended to be a continuation of the official one, I'd like to maintain the official one's style. But, if Dylan is (or is reasonably assumed to be) done working on KISS for good, then I'm in favor of removing the implicit environment and VERSION, et al from the package manager.

Why is it bad to use the VERSION? I don't mind, I'm just asking since I don't know much about it.

Why is it bad to use the VERSION?

I'd also add that it provided little benefit and added a fractures.

There are other KISS-like package managers that just don't go along with this insisted that source file be plain text.
The set of variables added are kinda arbitrary. There are more things that could be added (like ARCH) and some that I think are quite rare. Guess it doesn't matter if you don't care about portability. Personally think it would be nice to be able to swap out package managers and still use the same repos.
And I think the main reason against it is that there are just better ways to do it. Like just having a sources.template and having a git -hook that creates sources from the template based on whatever you wanted. Or you known just updating that singular plain text file manually when the version changes. There wasn't really much need to change the package manager.

@ehawkvu :)


AMBARI-25201 check acting users password on change password request

What changes were proposed in this pull request?
Implemented acting user password verification for change password action.
How was this patch tested?

manually
wrote new unit tests

@g-boros @payert FYI

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/5124/
Test FAILed.
Test FAILured.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/5126/
Test PASSed.


Bug: pnpm build 打包失败

Version
Vben Admin V5
Describe the bug?
Tasks:    2 successful, 4 total
Cached:    2 cached, 4 total
Time:    4.198s
Failed:    @vben-core/design#build
ERROR  run failed: command  exited (1)
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.
Reproduction
Tasks:    2 successful, 4 total
Cached:    2 cached, 4 total
Time:    4.198s
Failed:    @vben-core/design#build
ERROR  run failed: command  exited (1)
 ELIFECYCLE  Command failed with exit code 1.
 ELIFECYCLE  Command failed with exit code 1.
System Info
System:
    OS: Windows 10 10.0.19045
    CPU: (16) x64 Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
    Memory: 17.14 GB / 31.91 GB
  Binaries:
    Node: 21.0.0 - C:\Program Files\nodejs\node.EXE
    npm: 10.2.0 - C:\Program Files\nodejs\npm.CMD
    pnpm: 9.10.0 - C:\Program Files\nodejs\pnpm.CMD
  Browsers:
    Chrome: 127.0.6533.89
    Edge: Chromium (113.0.1774.50)
    Internet Explorer: 11.0.19041.4355

Relevant log output
No response
Validations

[X] Read the docs
[X] Ensure the code is up to date. (Some issues have been fixed in the latest version)
[X] I have searched the existing issues and checked that my issue does not duplicate any existing issues.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

怎么build的


Should get parameter from NSURL query property.

NSURL query property can get ride of "#!"
This fix https://github.com/jeyben/IOSLinkedInAPI/pull/71 may fail if Linkedin change parameter order.

Confirmed that this fix works. This should be merged, and podspec update! @jeyben


Null Safety Migration

Dart Null Safety is in beta and packages should start to be migrated.
Migration guide

Thanks for the reminder. Studies and other projects are currently mye priority. I therefore cannot guarantee a fast adoption

Thanks for your awesome work. Maybe i can help if you need, push a pr and upgrade example to Flutter2 in next week.

Hello guys, yes it's a very actual now days


Add program in C++

Why:

Closes #1029
What's being changed:

Program in C++ language to print character of an ascii value .

Kindly add label hacktoberfest-accepted.
Thank you


Fix grpc dependencies

This is a backport of #254 plus a few v0.15 specific fixes to make the CI pass in this old branch.

Bump frequenz-api-common submodule to v0.6.2
Pin grpc related dependencies
Bump mkdocstrings dependencies
Fix mypy configuration
Stop using strict mode in mkdocs.yml

FYI @matthias-wende-frequenz


Add kama

See https://github.com/doficia/project-cordon-sprites/issues/678

Hi @luanorlandi! As always, great sprite. :smiley: Thank you!


Dataverse (D365 CE) Error 429 Too Many Request using Azure Data Factory

[Enter feedback here]
I'm migrating D365 CE production data into test environment using Data Factory. But at around 14k records at 25.653 KB/s I get this error: "The remote server returned an error: (429) Too Many Requests."
What is best practise to move huge amount of data from one spesific table (account) without replicating the whole environment?
We cant simply copy the whole prod environment because prod sync would start sending data through intergrations from the test environment.

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

ID: 0a6c11a1-c9f6-a904-f49a-0fedbe9f511f
Version Independent ID: 7db20846-7922-23d4-f261-4c54e61b6913
Content: Service protection API limits (Microsoft Dataverse) - Power Apps
Content Source: powerapps-docs/developer/data-platform/api-limits.md
Service: powerapps
GitHub Login: @JimDaly
Microsoft Alias: jdaly

@DanielHolth This is a support question but I will provide some useful links.
https://docs.microsoft.com/en-us/power-platform/admin/manage-configuration-data
https://docs.microsoft.com/en-us/power-platform/admin/move-environment-tenant
Read that material and then contact support for further assistance.


fix: ftl dev hanging with --stop flag

I don't love this flow at the moment given how confusing the --stop flag can be to use, but this fixes the issue. Hopefully, as we nail down the ergonomics of how we want this to work we can help to avoid confusion in the future.
Without FTL running:
ftl dev --stop --recreate examples/go
info: Starting FTL with 1 controller(s)
info:controller0: Web console available at: http://localhost:8892
info:time: Building module
info:time: Deploying module
...

If FTL is running in the background:
ftl dev --stop --recreate examples/go
info: `ftl serve` stopped (pid: 41006)
info: Starting FTL with 1 controller(s)
info:controller0: Web console available at: http://localhost:8892
info:time: Building module
...

Any idea why it was timing out?

Yeah the code before wouldn't account for the stop flag inside of the dev command, so it would just run
		g.Go(func() error {
			return d.ServeCmd.Run(ctx)
		})

Which would return pretty quickly since there's nothing to stop, however, the code would continue on to this part:
err := d.ServeCmd.pollControllerOnine(ctx, client)

After that, which would timeout since the server wouldn't be running.


Rename Pause to Delayed

Pause doesn't cover the delayed value use case.

@bwoebi @trowski Opinions?

Not really. I consider it a pretty unnecessary rename: delay continuing execution for X seconds, then return a value vs pause for X seconds, then return a value.
I see no benefit of renaming, except a little bit potential confusion.

@bwoebi It doesn't really pause execution, it's a promise like everything else. And if it's a pause, it shouldn't have a value IMO.

It's a pause within the synchronous context of a coroutine/promise.
Not sure how Pause/Delay are related to the value?

That's how the value is related.. Note that the suggestion is Delayed, not Delay. Delay would be no difference to Pause.

Delayed makes more sense outside of a coroutine and has a nice duality with Loop::delay(). Pause always felt weird… pause what?

I was reading Delay in my mind … well, Delayed is fine.


[Bug]:  YamlCreate prompts locale multiple times

Brief description of your issue
YamlCreate.ps1 prompting for Locale on multiple times
Steps to reproduce
$ ./YamlCreate.ps1

Select New Manifest or Package Version.
Expected behavior
Only ask for locale once and prompt to ask if the user wants add multiple locale.
Actual behavior
Not asking for additional prompt, getting duplicate locale.
Environment
Windows Package Manager v1.1.12701
Windows: Windows.Desktop v10.0.22000.282
Package: Microsoft.DesktopAppInstaller v1.16.12701.0

There is a difference between PackageLocale and InstallerLocale, which is why it is prompted for twice.
The InstallerLocale is the locale or language that the installer is presented in, and is an optional key which applies to each installer individually.
The PackageLocale is the locale or language that the metadata is in, and is a required key. This is also the locale for the defaultLocale file within the manifest.


feat: use existing task definition, allow selection of Fargate platform version

Not going to get a review on this one, as it's simply merging existing code into our fork.


Filtered values get reset in case of multiple selection of items.

Filtered values get reset when you have multiple selection data-table.  Data- Table shouldn't keep the state of filter and should only show filtered rows on single or multiple row selection
Current Behavior
On multiple data-table adding a filter and selecting a single or multiple rows on filtered results, control removes filter and shows all rows

Tech
Version

Material-UI
4.4.3

MUI-datatables
2.11.1

React
16.10.1

browser
Chrome/Safari

etc

Hey @manojakuri, not sure I completely understand how to reproduce this. Can you add explicit steps? What does selecting "all all rows from header" mean? The select all checkbox? That doesn't seem to have any impact on the filters for me:

I have the same issue using the steps in your screenshot @gabrielliwerant.
Haven't had time to dig in yet, here are the custom table options I'm using, maybe one of the custom function handlers is the cause?
   const tableOptions = {     customSearch: searchUtil,     customToolbarSelect: () => (       <Box my={'6px'} marginRight={'24px'}>         <BulkEditModal           executeCommand={executeCommand}           selectedData={selectedData}         />       </Box>     ),     download: true,     downloadOptions: {       filename: 'test.csv',       separator: ','     },     filter: true,     filterType: 'checkbox',     fixedHeader: true,     pagination: true,     print: false,     responsive: 'scrollMaxHeight',     rowsPerPage: 6,     rowsPerPageOptions: [6, 12, 18],     rowHover: true,     search: true,     selectableRows: 'multiple' as SelectableRows,     searchText: searchText || '',     sort: true,     viewColumns: false,     onRowsSelect: handleRowSelect,     rowsSelected,   };

Tech
Version

Material-UI
4.0.0

MUI-datatables
2.11.0

React
16.8.5

browser
Chrome

These are the only options I'm using:
const options = {
  filter: true,
  filterType: 'multiselect',
  responsive: 'stacked',
};

Can you start with that and see if you have the issue? If so, can you downgrade material ui to v3 and check again? Then downgrade react to 16.6.3 and try again. Then add options until you reach the error. I need the exact conditions to replicate it and fix it.

Try this one. Follow the same repro steps as your gif above.
https://codesandbox.io/s/muidatatables-example-u6u8b

@acberk Thank you. It looks like it happens on any filter type when there's manual state updating on the selected rows. Will take a look when I get a chance.

@gabrielliwerant Have you had a chance to look at this one?

Not yet, sorry, been a bit swamped, but it's on my list for things to do next time I have a good chunk of time, and would like to get it looked at for the next minor release.

Some quick investigation - appears to be related to v2.5.1:
https://github.com/gregnb/mui-datatables/compare/2.5.0...2.5.1#diff-4f4aff53b74d2c551e37786d32b82e3a
The problem goes away if you roll back the codesandbox page to v2.5.0.

@gabrielliwerant I tested and submitted PR #1058


ROCm container no longer builds (clang++: error: cannot find ROCm device library)

The ROCm container no longer builds. llama-cpp-python fails to compile from source with error message clang++: error: cannot find ROCm device library or clang not found.
The issue is caused by a recent update. Fedora 40 now uses clang-18 as default clang compiler. However rocm-device-libs is build for clang-17 (/usr/lib/clang/17/amdgcn/bitcode). The fix is trivial: append -17 to clang and clang++.

@tiran is this a dup of https://github.com/instructlab/instructlab/issues/1752? if so do you mind if I close this one in favor of the other since there is an associated PR?


heading frame of reference

Hi,
I'm extending a bit  the "truck" example. There is a "heading" option there which I think is supposed to be where the truck is heading geographically. I can change the heading of the truck dynamically (i.e.  trough updateSourceData) and it works fine. However, if I change the orientation of the map interactively with the mouse, and then update the heading of the truck, it appears that the new heading is not correct. In short, it looks like the camera orientation of the map is affecting the geographic heading of the truck.
I hope this explanation was clear enough. Is this the intended behaviour?
Thanks
Marco

cc/ @kronick


Events not starting

Write me in discord

Write me in discord

I don't know what your discord it.
Here's mine so you can add me: ThruBeing#0554


DO NOT MERGE: Prefilter test

Note: Vulkan support is taking a few days because I'm doing a fairly significant refactor of command buffer management to allow for this.


Asynchronous Functionality Breaks due to Timeouts

I'm submitting a ...
Problem

( ) bug report => please search github for a similar issue or PR and test Modbus problems with the modbus-serial package before submitting
(X) unexpected behavior => please visit the Wiki before

Current behavior
When attempting to setup an asynchronous Modbus Read to an RTU slave:
GlobalFunction (function-node) => Modbus-Flex-Getter-Node => CallbackNode (function-node)
CallGlobalFunction (function-node)
Node-RED Sample Workflow (working only is slave exists and doesn't timeout):
[
    {
        "id": "83baa70e.e903d8",
        "type": "tab",
        "label": "Flow 4",
        "disabled": false,
        "info": ""
    },
    {
        "id": "5117a231.9bda0c",
        "type": "function",
        "z": "83baa70e.e903d8",
        "name": "run callback",
        "func": "msg.callback(msg.payload);",
        "outputs": "0",
        "noerr": 0,
        "x": 650,
        "y": 140,
        "wires": []
    },
    {
        "id": "759653a.244dcac",
        "type": "inject",
        "z": "83baa70e.e903d8",
        "name": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "",
        "crontab": "",
        "once": true,
        "x": 90,
        "y": 140,
        "wires": [
            [
                "5d0de017.290a9"
            ]
        ]
    },
    {
        "id": "5d0de017.290a9",
        "type": "function",
        "z": "83baa70e.e903d8",
        "name": "set readModbus",
        "func": "var readModbus = function(unitid, address, quantity, callback) {\n    fc = 3;\n    unitid = unitid || 1;\n    address = address || 0;\n    quantity = quantity || 1;\n    \n    \n    // modbus request\n    msg= {payload:{fc, unitid, address, quantity}};\n    \n    // assign callback to msg\n    msg.callback = callback;\n    \n    // return copy of msg\n    node.send(Object.assign({}, msg));\n};\n\n\n// make global\nglobal.set('readModbus', readModbus);",
        "outputs": 1,
        "noerr": 0,
        "x": 260,
        "y": 140,
        "wires": [
            [
                "9202417e.dbc51"
            ]
        ]
    },
    {
        "id": "dbe64ea3.f3e2e",
        "type": "inject",
        "z": "83baa70e.e903d8",
        "name": "",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "repeat": "0.5",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "x": 90,
        "y": 200,
        "wires": [
            [
                "866b7315.7bfe6"
            ]
        ]
    },
    {
        "id": "866b7315.7bfe6",
        "type": "function",
        "z": "83baa70e.e903d8",
        "name": "run readModbus(unitid, address, quantity, callback)",
        "func": "global.get('readModbus')(95, 26, 2, function (mbresponse) {\n    msg.payload = mbresponse;\n    node.send(msg);\n});",
        "outputs": 1,
        "noerr": 0,
        "x": 370,
        "y": 200,
        "wires": [
            [
                "c54cf931.be87c8"
            ]
        ]
    },
    {
        "id": "c54cf931.be87c8",
        "type": "debug",
        "z": "83baa70e.e903d8",
        "name": "",
        "active": true,
        "console": "false",
        "complete": "false",
        "x": 670,
        "y": 200,
        "wires": []
    },
    {
        "id": "9202417e.dbc51",
        "type": "modbus-flex-getter",
        "z": "83baa70e.e903d8",
        "name": "",
        "showStatusActivities": false,
        "showErrors": false,
        "logIOActivities": false,
        "server": "4e882045.79912",
        "useIOFile": false,
        "ioFile": "",
        "useIOForPayload": false,
        "x": 450,
        "y": 140,
        "wires": [
            [
                "5117a231.9bda0c"
            ],
            []
        ]
    },
    {
        "id": "9a8025fd.e44728",
        "type": "modbus-queue-info",
        "z": "83baa70e.e903d8",
        "name": "",
        "topic": "",
        "unitid": "",
        "queueReadIntervalTime": "500",
        "lowLowLevel": 25,
        "lowLevel": 75,
        "highLevel": 150,
        "highHighLevel": 300,
        "server": "4e882045.79912",
        "errorOnHighLevel": true,
        "x": 450,
        "y": 80,
        "wires": [
            []
        ]
    },
    {
        "id": "4e882045.79912",
        "type": "modbus-client",
        "z": "",
        "name": "",
        "clienttype": "serial",
        "bufferCommands": true,
        "stateLogEnabled": false,
        "tcpHost": "<IP_ADDRESS>",
        "tcpPort": "502",
        "tcpType": "DEFAULT",
        "serialPort": "/dev/ttyM0",
        "serialType": "RTU-BUFFERD",
        "serialBaudrate": "115200",
        "serialDatabits": "8",
        "serialStopbits": "1",
        "serialParity": "none",
        "serialConnectionDelay": "1000",
        "unit_id": "1",
        "commandDelay": "50",
        "clientTimeout": "100",
        "reconnectOnTimeout": true,
        "reconnectTimeout": "200",
        "parallelUnitIdsAllowed": true
    }
]

The issue:
If the request reaches timeout or there is no response from the unit then no message gets sent out from the Modbus-Flex-Getter-Node. This event can happen because of a missing slave or because the slave took to long to respond (timeout).
Expected behavior
Message is sent from Modbus-Flex-Getter-Node but with an empty msg.payload and the msg.status with relevant information about the request.
Minimal reproduction of the problem with instructions

Copy example workflow into node-red flow.
Click Inject node to create global function.
Click 2nd Inject node to call that global function.
Make sure that the values passed to the global modbus read function result in a timeout.

Your Environment
Please tell us about your environment:

System: Debian 9
I am using the flex-getter as a modbus client.
Request is being sent to a Modbus RTU Slave Device over an RS485 Serial Interface.
The slave device returns vibration levels.
Vendor: Machine Saver Inc.
Model: Tri-Vibe

(X) I am using just the Node-RED package and got modbus-serial package installed with it

( ) I have installed modbus-serial package global from source (using git clone)

( ) I have installed modbus-serial as a global package (using npm i -g)

Device :

(X) Linux: v Kernel 4.4

Description of the connecting Modbus system:

Name   :  Tri-Vibe
Version:  112
Vendor : Machine Saver Inc
Link   : https://www.machinesaver.com

node-red-contrib-modbus version: v5.2.0

Node: (min. 10.x)
node --version = v12.2.0

Do you know how long it might take to implement this feature?
I have been given the okay from my company to sponsor this feature up to $200.

@drowsylogic https://osi.bianco-royal.com/ - you need min. business support for that, please.

Payment has been made.
Please let me know the next steps.
Thanks!

@drowsylogic you've got an e-mail for the next steps. Thank you for the support!

Please, test v5.4.0 and reopen with new information if the problem is not fixed.


Live

Test PR

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

Test PR


Change CLI install instructions

Changes:

Changed the URL for the binary to be pinged to the dcos release version.
Remove $ from the examples so that the user can copy and paste them.
Minor removal of empty white spaces.

cc @tamarrow

I ran through the instructions in Linux and they worked.


nom 5 with custom errors

This PR is built on top of #78, which already kinda works.
nom 5 removed ErrorKind::Custom and requires that user of the library implements their own error type instead. Since named_args! macro does not support custom errors yet and named! macro does not offer much, I am replacing calls to both with ordinary functions, so I can specify error type explicitly.

This is currently stuck beause of upstream bug https://github.com/Geal/nom/issues/1078
Apparently nobody used nom 5 with generic errors to parse bits yet.

closing for now, feel free to reopen if you make any progress


FIX: allow raw_fif to parse brainvision events

This PR fixes this (see discussion in #6326):
raw = read_raw_brainvision(...)
raw.save(fname)
raw_read = read_raw_fif(fname)
events_from_annotations(raw_read, event_id='auto') == events_from_annotations(raw, event_id='auto') # now they are equal!!

The other concern I have with this implementation is that right now is strict. Only if all the descriptors belong to 'brainvision' it would be considered brainvision. If you have some extra markers, then it would be considered not brainvision. Which to me is fine. If you have been messing up the markers, saving and reloading etc.. you should be knowing what you are doing.

I would implement it like this:
def _check_event_id(event_id, raw):
    from mne.io.brainvision.brainvision import _BVEventParser
    from mne.io.brainvision.brainvision import _check_bv_annot

    if event_id is None:
        return _DefaultEventParser()
    elif event_id == 'auto':
        if _check_bv_annot(raw.annotations.description):
            return _BVEventParser()
        else:
            return _DefaultEventParser()
    elif callable(event_id) or isinstance(event_id, dict):
        return event_id
    else:
        raise ValueError('Invalid input event_id')

I've made the imports relative but they can't go outside of the function.

mne/viz/raw.py:        from ..io import RawFIF, RawArray
mne/viz/raw.py:        if not isinstance(raw, (RawFIF, RawArray)):
RawFIF is just link to Raw but this would work no?

Not as it is here:
https://github.com/mne-tools/mne-python/blob/3f4c82a7e7401a38c485deca7d9e3b655d605b62/mne/io/__init__.py#L50
This is the problem of fif being the base object.
But we can always resurrect RawFIF

Scratch anything I said. RawBrainVision(BaseRaw) not Raw. Raw and RawBrainVision they are indeed siblings.

I think this makes it. Merge if everyone is happy.

good enough for me !
@massich can you see why travis complains?

I would say its not related. its a precision error in lcmv.

does this happen in other PRs?

I could not replicate in my machine. so I restarted Travis to see if its just random.
~/code/mne-python bv_events*
(mne35) ❯ pytest mne/beamformer
Test session starts (platform: linux, Python 3.5.5, pytest 3.8.1, pytest-sugar 0.9.2)
rootdir: /home/sik/code/mne-python, inifile: setup.cfg
plugins: sugar-0.9.2, faulthandler-1.5.0, cov-2.6.0

 mne/beamformer/tests/test_dics.py s✓✓✓✓✓✓✓✓✓✓                                                                                19% █▉
 mne/beamformer/tests/test_external.py ✓✓✓✓                                                                                26% ██▋
 mne/beamformer/tests/test_lcmv.py ✓ssss✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                   95% █████████▌
 mne/beamformer/tests/test_rap_music.py ✓✓✓                                                                                100% ██████████
------------------------------------- generated xml file: /home/sik/code/mne-python/junit-results.xml --------------------------------------

========================================================= short test summary info ==========================================================
SKIP [1] mne/beamformer/tests/test_dics.py:107: Test test_make_dics skipped, requires h5py. Got exception (No module named 'h5py')
SKIP [4] mne/beamformer/tests/test_lcmv.py:199: Test test_make_lcmv skipped, requires h5py.  If you notify when you've addressed my two short comments, I would merge.

I've also rebased. Feel free to merge.

The Travis builds are failing?

Yes and the failure is real
https://travis-ci.org/mne-tools/mne-python/jobs/544263546

yes I think that sync or some other had some extra space. rstrip should work

Thanks @massich

Thanks @massich !

Oh wow, I found a file that's become unreadable with this PR!
    826         pat = re.compile(r'^(\s*def\s)|(\s*async\s+def\s)|(.*(?<!\w)lambda(:|\s))|^(\s*@)')
    827         while lnum > 0:
--> 828             if pat.match(lines[lnum]): break
    829             lnum = lnum - 1
    830         return lines, lnum

IndexError: list index out of range

I am investigating.


Debian package not working

It seems something has gone wrong in the building of the latest debian package:
bash: /usr/bin/bups: /home/travis/virtualenv/python2.7_with_system_site_packages/bin/python: bad interpreter: No such file or directory

Looking at /usr/bin/bups the shebang is
#!/home/travis/virtualenv/python2.7_with_system_site_packages/bin/python

Ubuntu 16.04

Thanks for the quick fix! ETA on when the new build will be available?

I have been trying to setup an automatic build server with travis, but I still can't get the .deb files right. For now, I'll just to continue to build manually .deb files. The latest version is available here: https://fs.emersion.fr/public/bups/


onAttach and onRender are not executing

As-salamu-alikum
Zazakallah khair for answering my issue by spending your valuable time.
Sorry for my weakness in english as well as in english may I do not understand your responce and also might not convey my issue in #195.My issue is that, is it possible to trigger attach, before:attach, render, before:render on the view from the 2 function below in Component portion of Marionette.Toolkit.Component
 show: function show(viewOptions) {
      var region = this.getRegion();

      if (this._isShown) {
        throw new Marionette.Error({
          name: 'ComponentShowError',
          message: 'Component has already been shown in a region.'
        });
      }

      if (!region) {
        throw new Marionette.Error({
          name: 'ComponentRegionError',
          message: 'Component has no defined region.'
        });
      }

      this.triggerMethod('before:show');

      this.renderView(viewOptions);
      this._isShown = true;

      this.triggerMethod('show');

      // Destroy the component if the region is emptied because
      // it destroys the view
      this.listenTo(region, 'empty', this._destroy);

      return this;
    },
renderView: function renderView(options) {
      var ViewClass = this._getViewClass(options);

      var viewOptions = this.mixinOptions(options);

      var view = this.buildView(ViewClass, viewOptions);

      // Attach current built view to component
      this.currentView = view;

      this._proxyViewEvents(view);

      this.triggerMethod('before:render:view', view);

      // _shouldDestroy is flag that prevents the Component from being
      // destroyed if the region is emptied by Component itself.
      this._shouldDestroy = false;

      // Show the view in the region
      this.getRegion().show(view);

      this._shouldDestroy = true;

      this.triggerMethod('render:view', view);

      return this;
    },

I am very weak in English as well as in programming, so please pardon me again if I have done any mistake.
Zazakallah khair again for reading and answering my post with irritating english by spending your valuable time with passions.May Allah bless you for your effort
Allah-hafiz
Nadvi

We can continue talking on the closed issue.


Update Link example

When passing a custom component to Link, you will get a warning if you pass all the props through to the anchor element. The navigate prop must be removed before passing through.
https://github.com/ReactTraining/react-router/issues/6962

Thanks!


"invalid configuration: no configuration has been provided" error with microk8s

I'm trying to get compose running with microk8s.
Originally I ran in to an error about .kube/config not being present:
$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml foo
stat /home/foo/.kube/config: no such file or directory

I was able to resolve that by asking kubectl to set a context name (this writes out a basic config file):
$ kubectl config set-context microk8s
Context "microk8s" created.

but then I get stuck on a less obvious error:
$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml foo
invalid configuration: no configuration has been provided

It'd be great if this error could give more context because it's unclear where it's coming from and what config is missing.
I can see with strace that docker itself is attempting to read a token file that's not present in my set up:
19480 execve("/usr/bin/docker", ["docker", "stack", "deploy", "--orchestrator=kubernetes", "-c", "docker-compose.yml", "foo"], 0x7ffc2ae6aea8 /* 65 vars */) = 0
[...]
19480 newfstatat(AT_FDCWD, "/var/run/secrets/kubernetes.io/serviceaccount/token", 0xc4202c32e8, 0) = -1 ENOENT (No such file or directory)
19480 write(2, "invalid configuration: no config"..., 58) = 58

I'm not clear what that token is actually for or how I'd tell docker where to find it.
P.s I originally logged this at https://github.com/moby/moby/issues/38602 as SEO guides me there - it'd be great to have a prominent guide for where to find bugs for the various docker projects.

Hi! Thanks for your feedback. Unfortunately we're no longer maintaining this repository so I will close this issue.


chore: add relay exchange icon

Changes

added relay icon to replace empty state here in App/BX

We'll need to do this for more exchanges and update the swap route source list in the SDK

@fringlesinthestreet Follow-up work for the Relay Swap SDK upgrade


[WIP] Port the project to Godot 4

I finally decided to bite the bullet and make a serious attempt to port Catapult to Godot 4. I already looked into it before and know that it will be a lot of work, but it will have to be done eventually.
Some things will probably have to be seriously rewritten, especially the more hacky parts related to theming and windowing.

If anyone is curious, this is how it looks so far, after a couple of evenings of fixing.
It launches (barely, still with some errors), but many systems are completely broken.

wonderfull

wonderfull

@Ruteski please use github reactions. :+1:

Must have

[x] Fix any immediate blocking problems (script parsing errors, etc.).
[ ] Verify core functionality and fix if needed:

[x] Game installation.
[x] Game launching.
[ ] Handling of multiple game installations.
[x] Mod installation and management.
[x] Soundpack installation/deletion.
[x] Font customization.
[ ] Backups.

[x] Fix localizations.
[ ] Fix tab disabling method in Tabs.gd (or find an alternative).
[ ] Fix stable/experimental selection UI.
[ ] Fix appearance of custom icon buttons.
[x] Revisit OSExecWrapper and decide what to do with it.
[ ] Fix invisible scroll bars.
[ ] Fix visual issues in themes.
[ ] Fix icon scaling.
[ ] Fix font scaling.
[ ] Fix any other issues with theme scaling.
[ ] Playtest on Linux.

Nice to have

[ ] Zipping and unzipping can now be done by Godot itself. There is no need to rely on external commands or exe's anymore.
[ ] Use OS.create_process for game launching.

Extra ideas (can be done later)

[ ] Centralize duplicated JSON loading code that exists in many places.
[ ] Add a new theme based on Godot 4 editor theme.
[ ] Create a watchdog for the game process that will track if the game is running.

While trying to work on #182 , I opened the project in Godot 4 (I was not aware this project was done in v3). Wow, this seems like a huge task. Ill take a look at your godot4 branch on some spare time and see if I can help.


enabling testKitGen to run STF based JCK test

jck and systemtest are using the same src of stf & openjdk-systemtest
require JCK_ROOT to be exported before compiling and running JCK tests
add api-java_math as an example to run STF JCK tests
add jck subset
works with target jck_${JAVA_VERSION}

Signed-off-by: Tianyu Zuo<EMAIL_ADDRESS>

change set tested on my local machine, it passed on both SE80 and SE90


ENH: stats.bootstrap: add BCa method for multi-sample statistic

Reference issue
Closes gh-16433
What does this implement/fix?
Currently, stats.bootstrap only supports method='BCa' for single-sample statistics. This adds support for multi-sample statistics.
I need to add a test. @FlorinAndrei can you help me devise one? One way to do this would be to provide output from R's boot.ci  to compare against. Ideally, this would be performed with many (say ~100k resamples) to avoid discrepancies due to the choice of random samples, and it would be nice if the data/statistic chosen result in a BCa interval that is substantially different from the 'perc' and 'basic' versions. Also, if you could provide the bootstrap replicates of the statistic from R (boot.out$t), I could check the BCa interval that I'd get with the same bootstrap distribution. There might also be other functions in the boot package that could provide relevant output to compare against.
Additional information
We would have supported multi-sample statistics in the original PR, but we were unsure how the jackknife should be performed (to approximate the acceleration parameter) when there are multiple samples.
In this PR, the jackknife removes one observation from one sample at a time because this seems to be the recommendation in Missing Data, Imputation, and the Bootstrap. This is in contrast to what would seem like the more careful (and much more time-consuming) option: removing one observation from every sample (in each possible way), which is the recommendation of Quantifying effects in two-sample environmental experiments using bootstrap confidence intervals. However, that article mentions performing a comparison with the fast method implemented here, and they found "only very small differences (vs. nested sums) in case of robust measures and small differences in case of non-robust measures, not affecting the main conclusions of this paper". I'll continue to look into the theory, but @steppi if you know or are interested in the theory of the bootstrap, this is (yet) another one I could use some help with!
Efron presents the calculation of the acceleration parameter in the multi-sample case in Chapter 15.4 of An Introduction to the Bootstrap, specifically Equation 15.36.
See https://github.com/scipy/scipy/issues/16433#issuecomment-1161358545 for additional discussion.

I'm dealing with a time crunch right now, I'm not sure if I can help. I'll add a comment here if that changes. Sorry!

I'll continue to look into the theory, but @steppi if you know or are interested in the theory of the bootstrap, this is (yet) another one I could use some help with!

Looks interesting. I’ll take a look over the weekend.

@steppi I think I corrected this based on equation 15.36 of An Introduction to the Bootstrap. The code attempts to mirror the math in the paper, so hopefully it's not too hard to follow.
One thing that I considered using as a unit test is Efron's example calculation of the acceleration parameter from the text. Unfortunately, I can't get my numbers to match his : ) I'm not certain that the mistake is mine, though. I'm pretty confident because:

The acceleration parameter I calculate for one-sample statistics using this PR (line 143) is the same as the acceleration parameter I get in main (line 122).
A very straightforward implementation of Efron's example (included below) gives the same value of the acceleration parameter as this PR.

So I think either I'm misinterpreting the math in the equation, I'm mixing up the data or statistic used in the example, or the numerical result in the book is not quite right.
If you could help check my work - perhaps by implementing your own calculation of the equation 15.36 - I'd really appreciate it!

Here is the equation in question:

At the end, he gives a value of $\hat{a} = 0.06$ for some statistic $\hat{\theta}_0$ and some data.
A few pages earlier, the statistic $\hat{\theta}_0$ appears to be defined as the difference between two sample means:

And I think the example was performed on the "mouse data" from Table 15.1 / Table 2.1:

A very straightforward implementation of the calculation is here:
import numpy as np

y = [10, 27, 31, 40, 46, 50, 52, 104, 146]
z = [16, 23, 38, 94, 99, 141, 197]

def statistic(z, y, axis=0):
    return np.mean(z, axis=axis) - np.mean(y, axis=axis)

n = len(z)
m = len(y)

theta_z_i = []
for i in range(n):
    zi = z[:i] + z[i+1:]
    theta_z_i.append(statistic(zi, y))

theta_y_i = []
for i in range(m):
    yi = y[:i] + y[i+1:]
    theta_y_i.append(statistic(z, yi))

theta_z_i = np.array(theta_z_i)
theta_y_i = np.array(theta_y_i)

theta_z_dot = np.sum(theta_z_i) / n
theta_y_dot = np.sum(theta_y_i) / m

U_z_i = (n - 1) * (theta_z_dot - theta_z_i)
U_y_i = (m - 1) * (theta_y_dot - theta_y_i)

num = np.sum(U_z_i**3) / n**3 + np.sum(U_y_i**3) / m**3
den = np.sum(U_z_i**2) / n**2 + np.sum(U_y_i**2) / m**2

a_hat = 1/6 * num/den**(3/2)  # 0.011008228344026734

If we execute:
from scipy import stats
data = (z, y)
stats.bootstrap(data, statistic)

in debug mode and inspect the value of a_hat (which is not returned by the function), it has the same value.

If you could help check my work - perhaps by implementing your own calculation of the equation 15.36 - I'd really appreciate it!

Sure! I should have some time this coming weekend.

OK! I have a test that does not clearly show this is wrong!
When bootstrapping the difference between skewnesses of two skewnorm distributions, SciPy and wBoot BCa methods agree. Furthermore, there is a clear distinction between the three different methods (so the agreement isn't because, say, BCa is the same as the other methods and the other methods agree with wBoot).
Here's the SciPy code:

import numpy as np
from scipy import stats
m, n = 7, 8
method = 'basic'
rng = np.random.default_rng(0)
skew1 = stats.skewnorm(1)
skew2 = stats.skewnorm(2)
x = skew1.rvs(size=m, random_state=rng)
y = skew2.rvs(size=n, random_state=rng)
def statistic(x, y, axis):
s1 = stats.skew(x, axis=axis)
s2 = stats.skew(y, axis=axis)
return s1 - s2
ref = skew1.stats('s') - skew2.stats('s')
res = stats.bootstrap((x, y), statistic, method=method, axis=-1, batch=100)
a, b = res.confidence_interval
print(a, b, res.standard_error)
print(np.mean([a, b]))

Here is the CI low, CI high, and standard error for each of the three methods:
Percentile: -3.04659090989246    0.5429236319778981   0.9238995381294645
BCa:        -3.3341025959302417  0.1775610397990395   0.9260825841011494
Basic:      -3.5861151007055416 -0.059122444701895205 0.9039647046062937

(For the CIs, of course there is some variability between runs, but they are always within 0.1 of these values.)
And for the R wBoot package boot.two.per and boot.two.bca:
Percentile:  -3.041              0.4816               0.9093398
BCa:         -3.281              0.1772               0.9088609

Maybe the best way to sum it up is with the midpoint of the confidence interval.
(SciPy) percentile: -1.2518, BCa: -1.5782, percentile: -1.8226
(wBoot) percentile: -1.2797, BCa: -1.5519
R code can be run at https://rdrr.io/snippets/

```
library(wBoot)
library(moments)
x = c( 0.75859206,  0.5910282 , -0.4419409 , -0.36654601,  0.34955357, -1.38835871,  0.76735821)
y = c(1.41186073, 0.49775975, 0.08275588, 0.24086388, 0.03567057,
0.52024419, 0.31966611, 1.32067634)
twoskew<- function(x1, y1) {
skewness(x1) - skewness(y1)
}
boot.two.bca(x, y, skewness, conf.level = 0.95, R = 9999, stacked = FALSE)
</details>

@mdhaber, hey I haven't forgotten about this, just in a very busy period now. I hope to look into it over the weekend. Please ping me on anything else that needs a look.
My schedule should stabilize in October, and I should have a free couple hours per week to contribute afterwards. Things are tough now though.

No problem. Thanks!

Thanks so much for looking into this! I'll add the mouse data acceleration parameter example and the comparison against R as a test, then I'll be done with this. After that, would you like to merge?

Thanks so much for looking into this! I'll add the mouse data acceleration parameter example and the comparison against R as a test, then I'll be done with this. After that, would you like to merge?

No problem. Sounds good!

@steppi I added the tests. I think CI failures are just because I didn't merge main (and CircleCI doesn't do that automatically). LMK if you'd like me to do that and re-run CI before merging. Otherwise, I think this is good to go.

@mdhaber Oh sorry. Just getting to this now. I saw that the only docs you touched built correctly so figured it was OK to merge as is.


Update project file to reflect correct marketing versions

What does this PR do
For recent releases, the Info.plist shipped inside the xcframeworks does not match the release version. Fixing that to reflect the latest marketing version.
@nathanfallet should we think of a better approach of updating this every time a release is created? (like a script that does that)

Closing this as already added these commits in other linked PR