Button missing prop target typings

When we provide the href prop, it should allow props to be passed to the a tag. One example is target but the type is missing in TypeScript (and in the documentation).

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯

Doing the following:
<Button href="https://google.com" target="_blank" >Test</Button>

Produces the error:
Property 'target' does not exist on type

Expected Behavior 🤔

It should not provide any error as it is rendering a a tag and target is a valid prop.
Steps to Reproduce 🕹

<Button href="https://google.com" target="_blank" >Test</Button>

Steps:

The above codeblock should work properly

Context 🔦

Rendering a link using the button component should work as expected, especially since the option to provide a href is given. And the underlying component renders a a instead of a button.
Your Environment 🌎

Tech
Version

Material-UI
v4.11.0

React
v16.9.0

Browser
All browser

TypeScript
4.0.2

I can't reproduce this issue: https://codesandbox.io/s/gallant-framework-jw7t9?file=/src/index.tsx
Could you post your tsconfig.json? Please be aware that we only support strictNullChecks: true.

Setting the strictNullChecks: true seems to have fixed the issue. Thanks!

Hello, I'm meeting the issue at the moment with "@mui/material": "^5.14.11",
Overload 1 of 3, '(props: { href: string; } & ButtonOwnProps & Omit<ButtonBaseOwnProps, "classes"> & CommonProps & Omit<Omit<DetailedHTMLProps<AnchorHTMLAttributes, HTMLAnchorElement>, "ref"> & { ...; }, "color" | ... 24 more ... | "startIcon">): Element', gave the following error.
Type 'string | undefined' is not assignable to type 'string'.
as soon as I had target to my Button wth href :
<Button data-testid="open-link-btn" href={shortLink} target="_blank" ...

Same problem.


Image is not well rotated on Android 8

Hi,
I installed the package the previous week to fix the rotation image issue in latest iOs versions, but today we notice that the image is get rotated in Android 8 (my current phone) with the latest WebKit version (we wrapp the application with cordova.js and is written in top of Angular 9).
The bug is only for vertical images.
Android details:

Samsung Galaxy S7 Edge
Android 8.0.0
Webview Version: the latest one (13 oct 2020)
Latest Chrome version installed

This is the code I'm using to read and rotate the image:
return from(
  loadImage(file.file, {
    canvas: true,
    maxWidth: this.optimizeImages.maxWidth,
    maxHeight: this.optimizeImages.maxHeight,
    orientation: true,
  })
).pipe(
  switchMap(
    (data: any) =>
      new Observable((observable) => {
        data.image.toBlob((blob) => {
          data.blob = blob;
          observable.next(data);
          observable.complete();
        }, "image/jpeg");
      })
  )
).subscribe(() => {});

Any suggestion?
Thanks,
Best regards.

Fixed, it was a bug with a cordova.js plugin.

Glad you could fix it and thanks for clearing that up @ProtocolNebula!


Let requests handle kwargs

I think requests will do what's necessary to merge kwargs from the session attributes

A test is failing interestingly...

Discussed with @sergei-maertens, this is working as expected


Acquisition via scoop, chocolatey, etc.

Acquisition via scoop, chocolatey, etc. is much easier to script and already common for many tools used in CI/CD and development loops. Please consider publishing to something like scoop. You can set up auto-updates fairly easy, like I did here for https://github.com/microsoft/vswhere.

Hey @heaths ,
It seems someone from community is already maintaining AzCopy package via chocolatey. Refer this to know more.


Pantheon 7 updates 2022-06-14

Description of changes
#170361
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

pantheon.elementary-tasks: 6.2.0 → 6.3.0

[ ] Auto refresh task lists and collections (#330)
[ ] CalDAV: Offline support for newly added task lists (#328)
[ ] Release 6.3.0 (#332) Tagged: 6.3.0

pantheon.switchboard: 6.0.1 → 6.0.2

[ ] Bundle app icon (#230)
[ ] Update io.elementary.switchboard.appdata.xml.in
[ ] AppData: Reorganize (#235)
[ ] Release 6.0.2
[ ] Update meson.build Tagged: 6.0.2

@ofborg test pantheon

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

25 packages built:

pantheon-tweaks
pantheon.elementary-greeter
pantheon.elementary-tasks
pantheon.switchboard
pantheon.switchboard-plug-a11y
pantheon.switchboard-plug-about
pantheon.switchboard-plug-applications
pantheon.switchboard-plug-bluetooth
pantheon.switchboard-plug-datetime
pantheon.switchboard-plug-display
pantheon.switchboard-plug-keyboard
pantheon.switchboard-plug-mouse-touchpad
pantheon.switchboard-plug-network
pantheon.switchboard-plug-notifications
pantheon.switchboard-plug-onlineaccounts
pantheon.switchboard-plug-pantheon-shell
pantheon.switchboard-plug-power
pantheon.switchboard-plug-printers
pantheon.switchboard-plug-security-privacy
pantheon.switchboard-plug-sharing
pantheon.switchboard-plug-sound
pantheon.switchboard-plug-wacom
pantheon.switchboard-with-plugs
pantheon.wingpanel-applications-menu
pantheon.wingpanel-with-indicators


Make sure you are granted access to the crawl log via the SharePoint search admin center at ...

The command was working fine but since a couple of days, I received this error.
Maybe Micrososft restricted the permissions.
$results = Get-PnPSearchCrawlLog -Filter $env:TargetLibraryUrl -EndDate (Get-Date).AddDays(-1) -LogLevel Error Get-PnPSearchCrawlLog : Make sure you are granted access to the crawl log via the SharePoint search admin center at  https://<tenant>-admin.sharepoint.com/_layouts/15/searchadmin/TA_searchadministration.aspx     + CategoryInfo          : AuthenticationError : (:) [Get-PnPSearchCrawlLog], Exception     + FullyQualifiedErrorId : Attempted to perform an unauthorized operation.,SharePointPnP.PowerShell.Commands.Search.GetSearchCrawlLog

Awesome thanks Patricia Collier<EMAIL_ADDRESS>

@officedocsbot assign @yogkumgit

Hello @philippe-entringer
I found the issue created at PnP Powershell repo here https://github.com/SharePoint/PnP-PowerShell/issues/2242
Please follow up there for updates on this issue, as this issue resource is specific about documentation, if by any chance a documentation is needed based on the outcome of that issue, we will update it accordingly.
Thank you!

The command was worked last time on Friday 30-08-2019, not sure what happened after that

@Prasanna234 Thanks for your feedback, please follow up the issue you created at Pnp-Powershell, thank you!

I see this issue is closed. I am experiencing the same thing. Crawl permissions have been granted and I can see this on SharePoint Online but cannot get the crawl log.
Connect-PnpOnline -Url https://.sharepoint.com -UseWebLogin
This authenticates fine as one would expect.
Get-PnPSearchCrawlLog: Make sure you are granted access to the crawl log via the SharePoint search admin center at https://-admin.sharepoint.com/_layouts/15/searchadmin/crawllogreadpermission.aspx
I have tried this on several machines, configurations and tried to remove/re-add the crawl permissions but nothing seems to work.
Any ideas on what my options are?
Thanks

I'm out traveling  so cannot test right now. If your user is added you wait a little bit, and connect using that user with eg -Weblogin, and it fails, the next step is to log a support case.

Thanks. Will open a case. Its been ~ 2 weeks now. I've been testing it occassionally but still nothing.

I am also having the same issue, but no solution found.

@nsksaisaravana What have you tried? I can get crawl log entries with my tenant.

@wobba I am taking care of few clients, error is happening for one client where they got around one million documents. It is working fine for clients having less number of documents. Please check the screenshot for the command and error.

@nsksaisaravana how are you connecting using Connect-PnPOnline? And you have ensured your user is added to the allowed people on the crawl log permission page?

@wobba  Connect-PnPOnline -Url https://xxx.sharepoint.com/Sites/TEST-Data -UseWebLogin - I have used this command to connect. Except this command, all other pnp commands are working fine. Already I added the user in the crawl permission page.

@nsksaisaravana If you add start and end date does that help? That said, crawl log is for debugging purposes, so my question is what issue are you investigating?

@wobba Start date end date not working, I am trying to investigate whether a specific file is crawled or not. Below is the query for this.
Get-PnPSearchCrawlLog -Filter "https://xxxx.sharepoint.com/sites/xxx/TeamsDocuments/Draft/Test to be deleted.docx"

Got it... I would file a support ticket if it's not coming back in search once you have verified:

Are access control set as expected?
Do you get other results from the folder?
Is the library set to not be indexed?
Is the document in draft mode, v0.1 (not published)?
Is approval activated, and is the doc approved?

I have checked all the steps and still it is not working.
For testing purpose, I have created a new site collection and created few documents in the shared document library, even for the few documents it is not working. Below are the steps I followed.
Please check the screenshots, search a document is not working and using powershell command to check the issue and it is also not working.
I went to M365 ediscovery core and search for crawl information for this new site collection and it returns no results. Overall nothing works for this tenant to check the issue why the search is not working.

If nothing works, that seems like a weird service issue and you should open a support case. Only way to figure out what is happening.

@wobba Thanks a lot for your support. Already opened a support case and last one week still they are checking the issue.

@wobba Thanks a lot for your support. Already opened a support case and last one week still they are checking the issue.

@nsksaisaravana, did you resolve your issue? If yes can you share the solution?
Thanks.


Low Sleep Mode

Hi,
I am trying to use put NRF52840 to sleep.
I have tried Arduino_nRF5x_lowPower library but it seems to not work with thislinrary showing the following error:
.pio/libdeps/nrf52840_dk_adafruit/Arduino nRF5x lowPower/src/Arduino_nRF5x_lowPower.h:25:10: fatal error: nrf_sdm.h
I simply want to put the device to sleep and wake up on interrupt, while using ADXL362 and interrupt source.
Otherwise great library that I want to keep on using.
Thanks!

This is not a function of this library, more of a core function. That said you can follow the Nordic examples and use NRF_POWER->SYSTEMOFF = 1; to enter system off sleep mode after enabling a GPIO wakeup.

Just to add to my response above, the  Arduino_nRF5x_lowPower library is only for use with the softdevice, not NimBLE. n-able core has the systemPowerOff() function that should work for this purpose.


Re-enable SignalR npm functional tests in Arcade.

These tests were disabled in https://github.com/aspnet/AspNetCore/pull/11122 due to test failures. Need to investigate how to re-enable these again.

Checked the build logs and the functional tests seem to be running (and passing 😄) now
Acceptance checklist (check one item)

[ ] We decided not to take this fix.
[x] The fix is tests-only.
[ ] This is a Docs issue.
[ ] The fix contains product changes (check all items below).

[ ] Relevant XML documentation comments for new public APIs are present. - Not needed
[ ] Narrative docs (docs.microsoft.com) are updated. (check one item below)

[ ] The change requires a new article. An issue with an outline has been filed here: [ISSUE LINK]
[ ] The change requires a change to an existing article. A closed docs PR with these changes is linked here: [https://github.com/aspnet/AspNetCore.Docs/pull/12875]
[ ] The change requires no docs changes.

[ ] Verification has been completed. (check one item below)

[ ] The change is in the shared framework and was verified against the following versions

SDK installer: [version]
ASP.NET Core Runtime: [version]
.NET Core Runtime: [version]

[ ] The change is in an OOB NuGet/NPM/JAR package and was verified against the following version of that package: aspnet-signalr-3.0.0-preview7.19325.3


Add visualization support for Compose Key on Linux

Describe your issue

X Org on Linux has a feature called the Compose Key. It allows you to press a key followed by a sequence of other keys to Unicode Characters or other strings.
see https://man.archlinux.org/man/Compose.5
Programs such as Visual Studio Code, Discord or Firefox show a visualization of your input while Chatterino does not show anything.
Screenshots

OS and Chatterino Version

Arch Linux, Chatterino build from 5512437f1bd5b2be7997b52bf36b04930446f3f1

Does this work with any other Qt application you have?
Visual Studio Code and Discord are Electron and Firefox is something else.
From what I can gather Qt supports this compose key but I'm unsure if there is a visual cue for it.

I'm pretty sure this is a UI toolkit thing rather than application.

I couldn't think of any other Qt Application to test this

This is a thing on Arch as of 2022-08-12, I am using X11, ibus, chatterino 756bd90b (modified)
Running on Arch Linux, kernel: 5.18.7-arch1-1.


stdenv/native: provide patchelf on linux

This provides consistency with the pure stdenv, which provides
patchelf this way. Native stdenv can always just manually install
patchelf on their system, but like xz, it’s unlikely to be provided in
/usr/bin/. In addition, it’s not even in the RHEL7 repos.
Still wip, because i need a chance to test it on my setup; it's a mass rebuild :(

Looks to be merge. The PR shouldn't interfere with any existing native stdenv, since we already have patchelf built.


Fix and generalize FreeBSD build

Recent changes broke the FreeBSD build. It also hardcoded FreeBSD 10 as version. I tried to fix both issues.

Detecting the host OS version won't produce correct results for cross-compilation, but if this allows to make progress, I'm OK with it.


V2 Support

Are you still up for adding support for the V2 sock? I have a V2 and would be happy to offer any information to get it up and running.

Yep definitely, I'll send you some details later today about the info I need

@keliam if you are able to follow the steps below and upload the resulting
json file that would be great then I can work to integrate V2 socks.
I have quickly created the below script from my pyowletapi library that will authenticate against the Owlet API, get the properties JSON from the Owlet API and then save it to a file
get_owlet_properties.zip
To run extract the python file and open a command line/terminal at the same location this python file is saved (mine was just on the desktop)

Run the script using the below command:
python get_owlet_properties.py region email password
region should be replaced with either europe or world depending on where you are based
email should be replaced with the email you signed up to owlet with
password should be replaced with your owlet account email
This will do the necessary API calls and then simply say complete when done. You should find that there is now a properties.json file in the same location the python file is saved. If you could upload that file that would be great, ideally this would be done when the sock is in use but if not then that's also fine.
I'm hoping that with the V2 sock everything on the API is exactly the same except the output will be slightly different but if you do get any issues when running the script if you let me know of any errors you get then reply with them here and I can have a look.

Not sure if I did something wrong. I'm in the file location, double checked spellings/case and information.
ModuleNotFoundError: No module named 'requests'

Apologies, I thought requests was a built in module. You’ll need to install it first by running the below command in a terminal.
python -m pip install requests

Thanks - not familiar with python whatsoever.
Here is the result.
properties.json

Thanks for providing that, I will have a look at this in the next few days and try and push out an update for V2 support this week. If I need anything else I'll let you know

@keliam I've just released version 2023.11.2 which now has V2 support!
I've tested as much as I can although without an actual V2 sock I obviously can't do real world testing.
Let me know how you get on with setting the integration up. I've done my best to interpret the values from the JSON you provided but if anything doesn't look right then let me know.
Please let me know if everything is ok so I can close this issue off.

Awesome, thanks! The sensors look like they’re coming through okay so far. I’ll just need to double check once it’s in use tonight.

Everything looks good. The only issue is that the normal iOS app seems to not have any history for last night, which is the first night I had the integration pulling data. Any resolution to that?

Is the history issue still occurring, the integration shouldn't have an impact on the history. I know that the history on my app still shows ok and have been running the integration for many months now. If it's still occurring are you able to disable/delete the integration to see if it starts working again without the integration? If this is caused by the integration I'm not sure there is anything I could do to resolve this as all the integration is doing is calling the API for data.

It seems the issue may have been resolved by an action that Owlet support offered. I do think it happened when the integration was added, but I'm not sure the reason why. I added a different V2/V3 Owlet integration previously and it happened then as well. When I found your integration I was hoping the issue wouldn't be present. Luckily the solution isn't related to either integration, so I think I'll be good to go from here on out. In case anyone else has the issue, here is what Owlet suggests trying.

Create new/dummy account
Move the sock/device to the newly created account
Move device back to your primary account
Feel free to delete dummy account

Thanks for getting V2 added! I'll let you know if any issues arise.

Wow okay that's interesting. Thanks for providing the detail of the fix and confirming it's all working.


Upgrade from 5.1 to 5.2

@petericebear thanks for your hard work 5.2 and 5.3 are now available :tada:

Thank you, it would be nice to add a Credits or something.
I will look into some more tests as well for the functionality and the Laravel-api wrapper.
Maybe you can look into a good example for the CentOS based Unattended example.

@petericebear: will make a contributors credit list later today in the readme.md :smile:
Moaking SOAP for test purposes is a crazy ass nightmare but be my guest.

@petericebear: there you go :wink: https://github.com/hiddeco/transip#contributors


Model in training mode during demo.py

Model.eval() needs to be added in the demo.py for the model be in evaluation mode. Being stuck in training mode enables this line of code which uses the ground truth transformation.
# 7 Random select ground truth node correspondences during training
if self.training:
    ref_node_corr_indices, src_node_corr_indices, node_corr_scores = self.coarse_target(
        gt_node_corr_indices, gt_node_corr_overlaps
    )

Hi, I am facing the same problem.
How can I add "Model.eval()" in the demo.py??

Thanks a lot! It would have saved me a lot of time if I had seen this post earlier.


Fix compatibility with parallel stream (master)

identity value provided in reduce is reused across threads and the accumulation operation needs to work on a copy. For more memory efficient reduce operation a dedicated Collector with mutable internal accumulator can be used.
Also added tests to verify that custom user implementation is parallel stream compatible and a logger to show in practice how values change in each step.

As a second thought (also to #5), do we really want to even talk about parallel streams here?  I'm reluctant to test them here. Also the test code is much more complex then before, which makes learning curve steeper.


Rewrite of Keycloak SSO Integration

Harness Developer Pull Request
Thanks for helping us make the Developer Hub better. The PR will be looked at
by the CODEOWNERS.
What Type of PR is This?

[ ] Issue
[ ] Feature
[ x ] Maintenance/Chore

If tied to an Issue, list the Issue(s) here:

Issue(s)

House Keeping
Some items to keep track of. Screen shots of changes are optional but would help the maintainers review quicker.

[ x ] Tested Locally
[ ] Optional Screenshot.

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

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65f8b5b7ee073b27c4da6453--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65f919320344f76489db14c7--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65f919570358e56dc4588e99--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://65f91df4735a946a60a90ea5--harness-developer.netlify.app


Disabled Checkbox Label is gray.

I love your library and spent most of today implementing it :)
That being said there is one aspect I can't seem to figure out.  When disabling a checkbox I only want the checkbox, , to gray out, but not the rest of the label.
Is there a way to do this?  If not is it possible for it to simply have none of it gray out?
Update Answer
Go figure as soon as I post this I come up with the answer ;)
The following CSS removes the gray completely, however it would be nice if the checkbox portion was still grayed out.
input:disabled+label{
opacity : 1 !important;
filter  : alpha(opacity=1) !important; /* IE<9 */
}
The following CSS removes the gray from just the  tag, and keeps the rest of the label normal
input:disabled+label{
opacity : 1 !important;
filter  : alpha(opacity=1) !important; /* IE<9 */
}
input:disabled+label i{
opacity : .5 !important;
filter  : alpha(opacity=50) !important; /* IE<9 */
}

Hi @dowanx ,
Thank you so much for your feedback. :)
What you are asked, is really a very good question. I came up with  this ,
.pretty>input[type='checkbox'][disabled]{
    cursor:default;
}
.pretty>input[type='checkbox'][disabled]+label{
    cursor:default;
    opacity:1;
}
.pretty>input[type='checkbox'][disabled]+label>i{
    cursor:not-allowed;
    opacity:0.5;
}

Let me know if that  helped!
Thanks.

Hi @dowanx ,
I hope the above answer helped you. Closing now, but feel free to open again if you got any questions.
I have updated the repo to version 3.
For new version, the fix would be something like this,
.pretty input[disabled] ~ * {
    opacity: inherit;
}
.pretty input[disabled] ~ .state label:after,
.pretty input[disabled] ~ .state label:before{
    opacity:0.5
}

Thanks!


Ignore environment test contracts

truffle test still works and these files are always regenerated

This can be merged.

Any reason not to merge this @simondlr? It just gets rid of a cruft file.

Yes. Merging. The gitignore I think still refers to an old way that Truffle created build files. Not happening anymore in that directory, so it's fine. :)


Levenstrein isEqualTo causing false positive

Tracks such as "audiobook 2-10" gets matched to "audiobook 2-1",
since the criterion for isEqualTo() is met by the "2-1" already.
The isEqualTo implemented Find() does not find the best match,
but the earliest found acceptable.

This turns out to be a much trickier problem than I initially thought. These are some of the problems I've encountered:

I tried using the filenames as additional conditions, but turns out some of the filenames make much differences to the original method.: 1.mp3
I tried to revert back to exact matches only, but some audiobooks had trouble in the way they were stored.

Each chapter of an audiobook is broken into several chapters.
Chapters are separated by directories.
So there are files like audiobook/Chapter3/1.mp3 and audiobook/Chapter4/1.mp3

So I added upper directory names for files with short filename.

iTunes Location attribute stores values in URL encodings and is prefixed with https:// or file://

I also figured out the soft matching algorithm shouldn't be included in the search directly, as it will always get the "First Match".
I have to run the search once first for the "Exact Match" first, and then run a soft matching or smth for the leftover "Unmatched" tracks.


TypeError: 'PersistenceInformation' object is not iterable

How can I handle non-iterable "PersistenceInformation' in the TopologicalModel classification model?
The error comes from: pers_info = make_tensor(pers_info). I also tried torch.tensor(pers_info) and got the error that pers_info is not a sequence.
Finally, pers_info is the VR complex of weights in a torch.tensor. I am not sure if that matters.
Thank you.

Hi! Can you please add some more information? What's the context of this error? What's your input data like?

The input data is a numerical representation of text documents, so the BERT weights of a document. I followed the example of the TopologicalModel  classifier example that you have. The only thing is that instead of using data_set = SphereVsTorus(n_point_clouds=2 * batch_size), my data are weights gotten from BertTokenizer.
Let me know if you need more information, I can share my code if you want.

I think it makes sense to share the code. You could also check the shapes of the resulting tensors; is it possible that you feed in only a single data set? In that case, you might need to do torch.tensor([pers_info]).

I tried that and it didn't work. Here is a link to my code on Google colab: https://colab.research.google.com/drive/1L2oMDSmEKuQnaA9P5wLfjyaaDYWDhC2O?usp=sharing. The classifier is GeneratorClassifier.
Thank you

Honestly, that's a lot of code for me to try to understand. Please help me understand this better and try to reduce the scope of the issue. What's the shape of output here?

That is fair. I apologize for the length of the code. There was no way for me to reduce the size. So the problem is 2-fold, the make_tensor function gives an error, however, when I just use the VR complex output as input for the Linear layer, I get a non-iterable error. So the output size for the VR complex input is: torch.Size([16, 768])

No worries, just pointing out that a minimum viable example really helps in these cases...but we'll get there! So, output should be good to go for the VR complex. What you will get from this calculation is a set of persistence diagrams. I have now updated the logic for this (see referenced commits). If you update your torch-topological installation to v0.1.6, you will get these fixes.
One warning, though: you are creating a tensor with a single batch; is this what you want here? torch-topological can also handle different inputs, but I don't know your application well enough to comment on this.
I'd be interested in learning more about the intended application; if you find the package helpful, you may consider contributing a brief documentation or tutorial.
For now, I am closing this comment—please reopen if this specific issue persists!

Thank you. This might be a trivial issue but I keep getting this error: RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! (when checking argument for argument tensors in method wrapper_cat) from using the make_tensor function. The input is the VietorisRipsComplex(dim=0) output which is a list. Do you have any idea how I can rectify this issue?
Also, I honestly understand if you have no idea why this is happening and how to fix it.

I'll have to do a proper fix tomorrow for this. In the meantime: can you send the output tensor temporarily to the  GPU, for instance via pers_info.to(output.device)? Im currently travelling and don't have access to a GPU to check this. Will fix ASAP.

Thank you so much. Unfortunately pers_info.to(device) does not work because the output of VietorisRipsComplex(dim=0) is a list and all attempts to convert it to a torch.tensor() or numpy.array() gives the error not a sequence or can't convert object. I will wait for the correction. Good luck on your travels and thank you so much for your help and patience. I really appreciate it.

I meant converting or moving it after you call make_tensor. It is my impression that the error is raised after that, probably when you try to make use of the converted tensor in a downstream operation. Is this correct? (additional stack traces and a more specific description of where the code fails would be very helpful here)

Just fixed this device creation issue—please update again to v0.1.7. Sorry for the inconvenience; it's really hard tracking the various types of usage scenarios, and make_tensor is not a functionality that I have fully tested yet.

Thanks a lot and there is no need to apologize. The device error has been fixed and the function works beautifully and doesn't produce any errors. However, I have a question, I get the following error when I use the output of make_tensor as input for the Linear layer: mat1 and mat2 shapes cannot be multiplied (15x3 and 768x20). The input to VietorisRipsComplex(dim=0) is a tensor with torch.Size([16, 768]). However, the output after using make_tensor is a 15x3 tensor which is incompatible with the Linear layer. So my question is, is it possible to get a tensor with the same size or at least with 768 columns after taking the VR complex and make_tensor with size: torch.Size([16, 768])?
Thanks again. You really have made my TDA experience very nice.

So my question is, is it possible to get a tensor with the same size or at least with 768 columns after taking the VR complex and make_tensor with size: torch.Size([16, 768])?

No, I'm afraid that's technically not possible: the Vietoris--Rips complex will calculate one persistence diagram of your data (since you are not using any batches), and there's no guarantee how big the resulting tensor will be---it will contain topological features indicated by creation, destruction, and dimension, respectively. Hence, if you want to use them for downstream tasks, the easiest way is to either use one of the layers (as in the classification.py example), or run the resulting tensor through a different representation (like a fully-connected layer, a set function, etc.).
Hope that helps!

Thank you. My batch size is 16 which is why the tensor size is torch.Size([16, 768]) which is the input for VietorisRipsComplex(dim=0). Do you think I need to loop through each row of the tensor and get the VR complex? Because since the batch size is 16, the desired output should be a tensor with 16 rows.

OK, I understand. But in this case, you may be calculating something that you don't want: persistent homology treats your batch as 16 points in a 768-dimensional space, hence you only get a single persistence diagram. What's the overarching goal of the calculation?

The goal is to get the persistence diagram of each row in the tensor of torch.Size([16, 768]), so that the output will be 16 rows x N columns. Is this achievable? or should I change the batch size to 1?

No, I'm afraid that this is not possible, because persistent homology is only defined on the level of metric spaces or point clouds. A 2D tensor like in your cases will always be treated as a point cloud. What's the overall goal of your code? It seems like it's about adding some kind of topological information to NLP embeddings?

Yes, my goal is to get the topological features of numerical representations (NLP embeddings) of each article. My hypothesis is language has a shape that is unique to each author. Author A's shape is different from Author's shape, based on the average shape of each author's articles.

I think in this case, a viable way could be to try to map an article by an author into a point cloud, then get the persistence diagram as a shape descriptor. If you batch over articles or authors, you can then compare the corresponding representations. Sounds like a very exciting topic to me!

Thank you. Forgive me, this may be a basic question, but how do I map the NLP embeddings for each article into a point cloud? Is there a function that does that? I see this function SphereVsTorus(n_point_clouds=2 * batch_size) but I think it creates the point clouds.

Hmm, I don't know what they look like, but aren't those embeddings basically tensors already? If so, you can define your own data set class to iterate over them (this is something pytorch generally requires).

Actually, I misunderstood your previous comment about mapping to point clouds. But I understand now. And yes, my input is a tensor. Thank you. Let me try that now. I will let you know if it works.
Thanks again for all the help. You really have made this process practically painless.

It seems that the VietorisRipsComplex(dim=0) function can only take in a 2D tensor. And so iterating through each article, makes the input a 1D tensor. I am not sure of all the intricate details of calculating a VR complex, but does it make sense for me to pad the 1D tensor with another row of just ones with the same size? Will this affect the quality of the VR complex output?
Thank you

Wait, maybe this is documented incorrectly, but the VR complex should also be able to handle a 3D tensor, with the first dimension going over batches.

Yes,I think the problem is that the additional row does not really contribute salient information. Somewhere earlier in your pipeline, you should check the representation of your data. I believe that it should be possible to embed each document individually, getting vector for each word. If you don't aggregate over them, your can use them in this setting.

Thank you, Dr. Bastian. But the problem still remains, each article embedding is a tensor with size: torch.Size([1, 768]).  However, this function VietorisRipsComplex(dim=0) throws this error: RuntimeError: cdist only supports at least 2D tensors, X1 got: 1D because I still need at least a 2D tensor. Do you know how I can get around this since adding the tensors of ones negatively impacted the results?

I think this is a conceptual issue at this point: you should adjust your architecture such that it creates a point cloud (a 2D tensor) for each article (?) or author. Your present output is not in a form that can be used for persistent homology calculations; persistent homology works best when you can apply it to a setting where you study the evolution of one function over an object (such as a metric space or a point cloud). I'd suggest to take this discussion "offline" to e-mail because this is not an issue with the code any more. Happy to chat!

Thank you. What is your email address?

Sure thing<EMAIL_ADDRESS>

Hi Dr. Rieck, I sent you the email. Just checking that it did not go to junk.
Thanks a lot.


IPFS - add folders

See also https://github.com/blockfrost/openapi/pull/115

Seems like we don't need this right now. If anyone needs this feature please create a new issue.


The content-mathml extension doesn't handle namespace prefixes

It looks like namespace prefixes confuse the new javascript-based content-mathml extension.  For example:
<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
  <mml:list order="numeric">
    <mml:mn>0</mml:mn>
    <mml:pi definitionURL="" encoding=""/>
  </mml:list>
</mml:math>

causes the message "unknown node type: list".

It turns out that element.nodeName produces mml:math, mml:list, etc., and the logic in the extension doesn't take that into account.

The issue1238 branch of my fork of MathJax contains a fix.

=> Merged

=> in testsuite
MathMLToDisplay/Content/issue1238.html


feat: ElasticSearch IAM template

Fixes #76
I think this is what you are looking for. Doesn't make much sense (to me) to limit Resource: to a specific domain.

Oooo, thank you for contributing! This indeed is what we need to start.


test(e2e): fix retry on create konnect RG

What this PR does / why we need it:

current retry logic on creating test konnect RGs will fail when the RG is created, but the request timed out to get response. This caused e2e test cases fail when creating RGs on the situations above.
This PR checks for existence of RG with specified name before sending the creation request.
Which issue this PR fixes:

fixes #4193
Special notes for your reviewer:

PR Readiness Checklist:
Complete these before marking the PR as ready to review:

[x] the CHANGELOG.md release notes have been updated to reflect any significant (and particularly user-facing) changes introduced by this PR

@czeslavo Please look at the PR again after I resolved the conflicts to see if there are any unexpected things on the merge.

I added ci/run-e2e again to ensure it works just in case. LGTM though 👍

@czeslavo https://github.com/Kong/kubernetes-ingress-controller/actions/runs/5387501095 finished and succeeded.


Identity contract constructor takes claims, but claim signature requires address of the identity

The way I read the code:

Identity constructor takes claims
a claim contains signature
in order for claim to valid the signature in the claim needs to be produced by signing identity address
but identity address doesn't exist, it's about be created

Am I misunderstanding something?

It's possible to predict the address of a contract that hasn't been created yet... the code we use to do so is here. Also see here.
This lets us 'pre-sign' claims and add them at identity creation time with a single blockchain transaction.


Type loosening regression with union types in TS 4.2

Bug Report
🔎 Search Terms

union type

🕗 Version & Regression Information

bug exists in 4.2
works in 4.1

⏯ Playground Link
https://www.typescriptlang.org/play?target=5&jsx=0&ts=4.2.3#code/FAFwngDgpgBAogSxACygJwPIGsA8AlKAZwFcAbEAPhgF4YBvGcaALhgCI4BJAFQAk48AfQwBpNgG4YaImRCsCJcjBgBfUJFiIU6OGjQB7NDl0G0VWgyZRWHHvyEC8GPBKkzyrE4bVX4SVEYKsgA08HqG5n7amLhB5FQAPlEBXkapFMDAAMb6AHaEIDBQ-jrhaDQwONwUABTopqzcAJSeJWipVeZUNXTAAJBWNlx8AoKOzmzB-dKKckVlUypNmTn5hQBmxLlZAIwVNS3J6Di5xAC2AEbooRw7bF30-QD0TzDEhAi5AOYwqKTQ5U22xACDyMAu0gAhlhCIxUIwNDBPut0FBtlBQkgkbDkaiACYwSGwgpoT5faZQEDENC5IptVI1W5sZZqbJ5AowIFZABM+0OWgCJ3OVzQNzgdwevT6LxgeIQ0iyIFIYDcVJpZLhsH0FwAVlBFTAAO6GGEUtW0qUDDRDOyjcYuKZ9PozWRDO6OtSs1YcrkAZj5rWiQsu13Y4vuNCoUpl7w1AAMiTBvSA40aTYQzdTacVogymYTYcmWSt2RstlkACwBo7tMo4JmS56vQ2oWmx76amsdOBURPSc0I6CYtZQSEE-TrGv4UI9zGFSGkQj6NNoU3OylZum5sqM8MsmDAIA
When using union types with helper function constructing one of the type, the type is incorrectly loosened from string value type to string (func1). Directly returning the shape (func2) or using as const (func3) fixes it. Also when simplifying and removing the union (func4), it starts working.
This was not problem in 4.1, errors only in 4.2

This bug is caused by #42038 .  @ahejlsberg  may want to take a look.
EitherError<T>          =>  { type: "EITHER_ERROR"; result: T }
Either<number, "E1">    =>    { type: "EITHER_OK", result: number } | {  type: "EITHER_ERROR"; result: "E1" }

Before the PR, the  { type: "EITHER_OK", result: number } part is removed from inferencing candidates, and T is instantiated as "E1".

I would like to look into this. Is it ok ?

Of course

@Zzzen , thank you. i'll take a look

Not sure if it's the same error, but the symptoms are similar - ts playground


[WIP] Add "Get User Info" global role

There's no way to give related permissions to base-role users atm.
As a result, a project owner with custom roles is not able to add project members.

I think you can create custom global roles now, so this shouldnt be needed


mlx.core.take should have crashed, but printed the wrong array instead

Describe the bug
For my test code, when axis is set to 0 and -2, it should trigger a crash instead of getting an error output.
To Reproduce
Include code snippet
import mlx.core as mx

a_mx = mx.array([[1, 2, 3], [4, 5, 6]], dtype=mx.float32)
indices_mx = mx.array([0, 2], dtype=mx.int32)

axis = 0
taken = mx.take(a_mx, indices_mx, axis)
print(taken)

import mlx.core as mx

a_mx = mx.array([[1, 2, 3], [4, 5, 6]], dtype=mx.float32)
indices_mx = mx.array([0, 2], dtype=mx.int32)

axis = -2
taken = mx.take(a_mx, indices_mx, axis)
print(taken)

import numpy as np

a_np = np.array([[1, 2, 3], [4, 5, 6]])

axis = -2
indices_np = np.array([0, 2])
taken_np = np.take(a_np, indices_np, axis)
print(taken_np)

Desktop (please complete the following information):

OS Version: MacOS 14.2.1
Version 0.0.10

mlx.core.take_along_axis does not appear to have this issue

This one is expected and we will probably not fix it in general, though we may provide helpful options for debugging. Indexing out of bounds in MLX is different from NumPy for important reasons. You can read more about it in the docs


System.InvalidOperationException on Program.Main Method-  Release 3.0

Describe the bug
Hi,
I have updated Detection from 3.0.0 beta 1 version to 3.0 version and now I have a problem.
Main method of Program class of my webapi throw an exception while it try to execute
webHost.Run()
This is the exception
[System.InvalidOperationException
  HResult=0x80131509
  Message=Unable to resolve service for type 'Microsoft.AspNetCore.Session.ISessionStore' while attempting to activate 'Microsoft.AspNetCore.Session.SessionMiddleware'.
  Source=Microsoft.AspNetCore.Http.Abstractions
  StackTrace:
   at Microsoft.Extensions.Internal.ActivatorUtilities.ConstructorMatcher.CreateInstance(IServiceProvider provider)
   at Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass5_0.<UseMiddleware>b__0(RequestDelegate next)
   at Microsoft.AspNetCore.Builder.ApplicationBuilder.Build()
   at Microsoft.AspNetCore.Builder.UseWhenExtensions.<>c__DisplayClass0_0.<UseWhen>b__0(RequestDelegate main)
   at Microsoft.AspNetCore.Builder.ApplicationBuilder.Build()
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.<StartAsync>d__31.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>d__9.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at VM2WebAPI.Program.Main(String[] args) in C:\Progetti\VSTS\Villaggio Musicale\WebAPI\VM2WebAPI\VM2WebAPI\Program.cs:line 29

  This exception was originally thrown at this call stack:
    [External Code]
    VM2WebAPI.Program.Main(string[]) in Program.cs
](url)

Up to version 3.0.0 beta 1 all works fine.
How I can fix it?
Thanks

It now required you to configure Session to use Wangkanai:
On Startup.cs, ConfigureServices():
services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromSeconds(10);
    options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
});

On Configure():
app.UseSession();

It now required you to configure Session to use Wangkanai:
On Startup.cs, ConfigureServices():
services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromSeconds(10);
    options.Cookie.HttpOnly = true;
                options.Cookie.IsEssential = true;
});

On Configure():
app.UseSession();

Thanks Felipe

Thanks Felipe

@manduriomane Thank you for help there

@manduriomane Thank you for help there

Hi
It would be great if you can update it on the main page https://github.com/wangkanai/Detection, it took me 3 hours to understand which service started using Session after I migrated from .Net 3.1 to 5.0. It may save someone else some time
Thanks

Hi
It would be great if you can update it on the main page https://github.com/wangkanai/Detection, it took me 3 hours to understand which service started using Session after I migrated from .Net 3.1 to 5.0. It may save someone else some time
Thanks

@dnxit thank you for recommendations and @felipejunges for the update in documentation.

@dnxit thank you for recommendations and @felipejunges for the update in documentation.


Create evmap in one thread and send read handle to another...

Hi! I'm deeping into Evmap more and more and now i'm stuck at this issue here is a design.
-------------------------------------------------------------------------------
|   Arc<HashMap<String,ReaderHandler>>   |   Future Reciever Thread (FRT)   |
--------------------------------------------------------------------------------
|   Future Sender Thread (FST)    |
---------------------------------

I want to create EVmap inside FST and then transfer ReadHandle to FRT where it assigns new Reader to new HashMap record. The process fails due to readers !Sync marker and Arc<> wrapper which requires Sync. But i do not want to share Reader across threads i just want to transfer (Send) and store it in one top-level variable.
Here is the issue :)
P.S.: Will appreciate any tips...
P.P.S.: Due to my limitation a cant set EVmap statically at the top.

ReadHandle is !Sync basically so that its methods can take &self instead of &mut self. This is discussed in some more detail in
https://github.com/jonhoo/rust-evmap/blob/a1a0908f90d0daa3ab581ad930c4fe952f438c30/src/read.rs#L28-L33
That does unfortunately interact poorly with Clone as you observe above, because it is fine to call ReadHandle::clone from multiple threads at once. I'm not actually sure what the best way to handle this is... We could undo the decision to make ReadHandle take &self receivers I suppose (cc @novacrazy), and that would fix this, though it would be a backwards-incompatible change. An alternative would be to provide something like a ReadHandleFactory that is Send + Sync, but that you can only use to clone new ReadHandles, and not to actually do reads. I'm not sure which is better..

I think main goal is to give power to transfer Reader between threads for storing(cloning) purposes only.
So if i got you right second option will do the trick and we will not break down !Sync strategy and general version compatibility.

I have next idea: what if evmap::new() would return (readerFactory, writeHandler) but not (readerHandler, writeHandler) in that case we could store new evmap instance and send it through threads, even share. And if i want to use reader i just readerFactory.new_reader() and use it in-place. Looks like in this case we loose backward-compatibility. Did you mean something like this?

That would probably be less convenient for common use-cases, so I think I'd rather have something like:
impl ReadHandle {
    fn factory(&self) -> ReadHandleFactory;
}
impl ReadHandleFactory {
    fn handle(&self) -> ReadHandle;
}
impl Send + Sync for ReadHandleFactory {}

I'd be curious to hear @novacrazy's thoughts on this before we proceed though.

Perhaps I'm missing something, but this doesn't appear to be an issue with evmap.
You're correct that Arc<HashMap<String, ReadHandle>> cannot be Sync because ReadHandle is intentionally !Sync, but you also couldn't modify the hashmap anyway because of the Arc, so your design is flawed.
You probably want Arc<RwLock<HashMap<String, ReadHandle>>>, where the RwLock makes it Sync. You can write lock it to add new ReadHandles, and read lock it to get and clone a ReadHandle and use it or pass it to another thread.
Depending on how you intend to use this, that may kind of void the advantages of evmap.
Perhaps it could be possible to make evmap instances nestable, but that would require ReadHandle/WriteHandle to implement ShallowCopy and Eq, which is odd. @jonhoo ?

@novacrazy Hi, internal structure for keeping handlers surely includes RwLock, but the main problem is tranferability of ReaderHandler itself. I do not want to share whole structure between threads.

I think (and please correct me if I'm wrong here @serzhiio) that the intended use-case here is that you first create a bunch of evmaps, and then stick them all into a HashMap, which you then wrap in an Arc to share. You're not going to add more evmaps to that map, you just want a way to get handles to evmaps that already exist. You're right that the lock would be needed if you wanted to modify the map, but if you don't then evmap currently (unnecessarily) prevents this use-case.
I think what this gets at is the fact that ReadHandle is Sync as far as Clone is concerned -- you should be able to use one ReadHandle to create another from a different thread. I guess the question is how common a use-case this is..

Ah, I see, since Arc<T> is not Send unless T is Send + Sync. Hmm...

Hmm... i have Thread1(T1) which is generating some evmaps from time to time and keeping it in-place for editing purposes but right after creating i want to Send ReaderHandle to Thread2(T2) which purposes is to collect all ReaderHandlers in one HashMap that is placed in MainThread (M). Then i want to give ability for any other thread to have its own ReaderHandle. Fuf...
So... [T1 -> T2] transfer is good, but [T2 -> M] is a problem, because i cant place recieved Reader in cloned Arc from main thread!

Here is more specific design:

M thread has Arc<RwLock> where Keeper is HashMap<String, ReaderHandler>
T1 generates (reader, writer) and reader immidiately sends to T2 as it is
T2 recieves Reader and push it to cloned Arc<> from M (issue appears here)

We could add a ReaderFactory as shown below.
I've just realized that RwLock<T> also requires T to be Send + Sync in order for itself to be Send + Sync. That's what's really causing this.
Because ReadHandle maintains some internally mutable state, the epochs, it cannot safely be Sync. If it were in a RwLock, you could have multiple reads which would modify that internal state simultaneously, which would cause issues even if it is atomic. Frustrating, but logical.
In that case, I support adding a "Factory" structure.

Quick implementation of a generic ReaderFactory:
pub struct ReaderFactory<K, V, M = (), S = RandomState>(ReadHandle<K, V, M, S>)
where
    K: Hash + Eq,
    S: BuildHasher;

impl<K, V, M, S> ReaderFactory<K, V, M, S>
where
    K: Hash + Eq,
    S: BuildHasher,
    M: Clone,
{
    /// Create a new `ReaderFactory` from `ReadHandle`
    #[inline]
    pub fn from_reader(reader: ReadHandle<K, V, M, S>) -> Self {
        ReaderFactory(reader)
    }

    /// Consume the `ReaderFactory` and return the inner `ReadHandle`
    #[inline]
    pub fn into_reader(self) -> ReadHandle<K, V, M, S> {
        self.0
    }

    /// Use `ReaderFactory` as `ReadHandle`. This requires unique ownership.
    #[inline]
    pub fn as_reader(&mut self) -> &ReadHandle<K, V, M, S> {
        &self.0
    }

    /// Clone a new `ReadHandle`
    #[inline]
    pub fn reader(&self) -> ReadHandle<K, V, M, S> {
        self.0.clone()
    }
}

impl<K, V, M, S> Clone for ReaderFactory<K, V, M, S>
where
    K: Eq + Hash,
    S: BuildHasher,
    M: Clone,
{
    fn clone(&self) -> Self {
        ReaderFactory(self.0.clone())
    }
}

// Since `ReaderFactory` doesn't ever access the internal reader except to clone it
// it's safe to share it between threads. Cloned readers will have seperate epochs.
unsafe impl<K, V, M, S> Sync for ReaderFactory<K, V, M, S>
where
    K: Hash + Eq,
    S: BuildHasher,
    M: Clone,
{
}

fn main() {
    let mapmap: Arc<HashMap<String, ReaderFactory<i32, i32>>> = Arc::new(HashMap::new());

    assert_sync(mapmap);
}

fn assert_sync<T: Sync>(_: T) {}

@novacrazy I was actually thinking the ReadHandleFactory would just contain the necessary Arcs, and so it'd be Sync automatically. But then I realized that cloning a ReadHandle actually uses with_handle, which means it relies on the current read handle's epoch (specifically, it does the whole epoch increment thing). I wonder if that's actually necessary for cloning..
The alternative strategy here as I mentioned above is to change ReadHandle so that all its methods take &mut self. Then we could get rid of the Cell, which in turn should make ReadHandle both Send and Sync..

That would be a major breaking change. It should still be immutable from the user's perspective, I think.
A ReaderFactory/ReadHandleFactory that prevents those internal mutations is a safe compromise for these specific use cases.
However, the point about ReadHandle::clone using with_handle does make that above ReaderFactory unsafe...
@jonhoo If you can figure out a way to make concurrent cloning safer, a factory would still be a good solution in my opinion.

It might be that we want the factory to re-implement the logic that ReadHandle::with_inner has using a &mut self field instead. I think that should work. That would then probably mean that make_handle takes &mut self. I'll have to mull this over a bit though -- it's not a trivial change.

If the factory method to get a new read handle requires &mut self, @serzhiio may as well just use a Mutex anyway to achieve Sync, since the RwLock would always have to acquire a write lock otherwise.

Hmm, yeah, that's a good point.. I guess we'd really need to eliminate the use of with_inner to get clone with &self.

Or at least some specialized form of it that is safer when used within a factory and/or with a truly immutable copy of a ReadHandle or its state. Plain ReadHandles are still fine as they are. Perhaps even additionally state in the factory. I'm not sure, to be honest. This is more your area of expertise.

Mmm, I'll do some thinking :)

Guys, i got my temporary solution with keeping ReadHandler in Mutex, thx to @novacrazy suggestions.
But of course its kinda weird technique (cloning ReadHandler only after locking Mutex) :)

I have a similar use case, where a Sync reader factory would do the trick nicely.

For what it's worth -- if you're not requiring the cloning itself to be highly scalable, then the Mutex trick should work just fine :)

Mutex is not nice solution... i think we should have nicer one :)

I mean, are you really cloning read handles at such an absurdly high rate where a mutex would slow things down? Ideally, you'd clone a read handle only once per thread and keep re-using that handle.

Of course i dont, i use Mutex only to keep Clonable handler, but i feel my
Mutexed handler want to be free... :)
вт, 23 апр. 2019 г. в 01:18, Aaron Trent<EMAIL_ADDRESS>
I mean, are you really cloning read handles at such an absurdly high rate
where a mutex would slow things down? Ideally, you'd clone a read handle
only once per thread and keep re-using that handle.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jonhoo/rust-evmap/issues/23#issuecomment-485571826,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACPXFN3DBEHJY4MK4MUSMDDPRY2TNANCNFSM4HBO5PEQ
.

--
С Уважением,
Матыцин Сергей Леонидович
<EMAIL_ADDRESS>

Have you looked into using parking_lot for the mutex? They are incredibly lightweight, and for uncontested acquisition are basically free (a single atomic operation). It feels nice and thin; I use it on most of my own projects.

Thx for info, will have a look...
вт, 23 апр. 2019 г. в 01:33, Aaron Trent<EMAIL_ADDRESS>
Have you looked into using parking_lot
https://github.com/Amanieu/parking_lot for the mutex? They are
incredibly lightweight, and for uncontested acquisition are basically free
(a single atomic operation). It feels nice and thin; I use it on most of my
own projects.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jonhoo/rust-evmap/issues/23#issuecomment-485575283,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACPXFN4XJM2WMQYBGDSR7SLPRY4KPANCNFSM4HBO5PEQ
.

--
С Уважением,
Матыцин Сергей Леонидович
<EMAIL_ADDRESS>

Give the new ReadHandleFactory in 4.2.3 a go?

Hey! Sure, let it fly...
чт, 25 апр. 2019 г. в 20:01, Jon Gjengset<EMAIL_ADDRESS>
Give the new ReadHandleFactory in 4.2.3 a go?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jonhoo/rust-evmap/issues/23#issuecomment-486755564,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACPXFNYPOF3R4T63ZIZBDTTPSHPU7ANCNFSM4HBO5PEQ
.

--
С Уважением,
Матыцин Сергей Леонидович
<EMAIL_ADDRESS>


Upgrade Kotlin to 1.8.21 and all other Android dependencies

Depends on #24

Why do we update versions so frequently?


Fix layout bug with XS Max

Fixes #2251 #2357

Will PR IGListKit eventually but that'll require more vetting

Still can't fix the issues on Repo issues/PRs having wrong layout. It's an issue w/ Tabman. I'm going to strip that project and replace it w/ this
https://github.com/xmartlabs/XLPagerTabStrip

Nice job! Looks like a big change
Sent with GitHawk


flake: TestRealRunnerStdoutAndStderr* unit tests

I've seen a couple of these fail a few times recently on CI with this output:
=== RUN   TestRealRunnerStdoutAndStderrPaths
hello world
    runner_test.go:51: stderr: got: , wanted: hello world
--- FAIL: TestRealRunnerStdoutAndStderrPaths (0.02s)

...and...
=== RUN   TestRealRunnerStdoutAndStderrSamePath
    runner_test.go:78: got: 0, wanted: 24
--- FAIL: TestRealRunnerStdoutAndStderrSamePath (0.01s)

I have not been able to reproduce locally.
/kind flake

Seeing this as well, I think it was added recently in #4882; @bradbeck would you mind taking a look at this? It might help to use a fake clock (example in taskrun reconciler tests) as opposed to a real one

From @dibyom on #5250

TestRealRunnerStdoutAndStderrPaths is testing out the expected stdout and stderr strings are written out to files. However, the writes happen asynchronously which means that sometimes the output that we get is empty leading to the test being flaky.

One fix might be to have the test wait in a loop till the file has content before comparing (with a time limit of a few seconds say)

Took a crack at this in https://github.com/tektoncd/pipeline/pull/5261 since this blocked one of my other PRs 🙃 - would appreciate any feedback, in particular since this is going against what a comment in the original PR said not to do (but I think it's fine anyway?)


Feat/ai plugins get started

Description
Adds a getting started page for AI Gateway

@rspurgeon FYI, I had to rebase my branch to pick up a dependency update, the build was breaking without it.


Upgrade spring-appconfiguration related version after release.

As title. This PR upgrade spring-appconfiguration related version after release.

Hi, @saragluna , @mrm9084 , please help to review this PR when you have time.

API change check
API changes are not detected in this pull request.


LRU Cache Leetcode

https://leetcode.com/problems/lru-cache/
Please assign this to me in C++

@GuptaTanisha assigned in C++

can I write in java?
/assign me please

@Sakshamgupta90 Assigned in Java


Problem when deparsing a query with multiple columns in parentheses in "GroupBy Clause"

Hi, back here with another issue:
When we have a query like
SELECT id, name, count(grade) FROM student GROUP BY (id, name)

It is the same as
SELECT id, name, count(grade) FROM student GROUP BY id, name

However it is not the same as:
SELECT id, name, count(grade) FROM student GROUP BY ROW (id, name)

as the last one is not executable anymore (error: column "student.id" must appear in the GROUP BY clause or be used in an aggregate function
I am not so sure how GROUP BY ROW works, so please have a look over it :)

Fixed in 2.0!
irb(main):017:0> PgQuery.parse('SELECT id, name, count(grade) FROM student GROUP BY (id, name)').deparse
=> "SELECT id, name, count(grade) FROM student GROUP BY (id, name)"


[Snyk] Upgrade @astrojs/check from 0.3.4 to 0.4.1

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade @astrojs/check from 0.3.4 to 0.4.1.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 2 versions ahead of your current version.
The recommended version was released 22 days ago, on 2024-01-09.

Release notes

Package name: @astrojs/check

0.4.1 - 2024-01-09Patch Changes

63e2c81: Fix fallback types not being properly included in some contexts such as inside the VS Code extension
Updated dependencies [63e2c81]

<EMAIL_ADDRESS>

0.4.0 - 2024-01-08Minor Changes

a314bcc: Remove temporary workaround astro check that disabled checking JSX and TSX files

Patch Changes

Updated dependencies [a314bcc]
Updated dependencies [dab6801]

<EMAIL_ADDRESS>

0.3.4 - 2023-12-21

    from @astrojs/check GitHub release notes

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Upgraded manually to 0.5.2


New icon

New icon, based on the new Godot 3.0 icon

Sorry. The new icon is more funny in my option :)


[automatically] deploy to rubygems

we should setup a pipeline to automagickally deploy to rubygems
related: https://github.com/voxpupuli/plumbing/issues/20

should we even bother deploying to rubygems? we can probably just get away with pulling it from github

yeah, i think deploying to rubygems might be a good idea. As someone extraordinarily smart writes:

Put packages into repositories

This makes installation actually easy, and dependency management possible within the above mentioned atomic transaction.
Consider providing your repositories over IPv6…
Oh, your package repository should not be (only) github.

I want to use it in my Gemfile and think others might as well.
We'll need an account first, then I think we can grant other people with existing accounts with the ability to create new versions.

You can use it in a Gemfile from a git source. I would normally agree about shipping it to RubyGems, but I don't see much added benefit since this is really just an internal tool. But I'll defer to the majority.

Oh, but I want to use it externally! It's a pretty cool tool and could help other module authors, too.

When we have an account and so can get an API token, https://docs.travis-ci.com/user/deployment/rubygems/


[HW] Praveen Ogirala

Name: Venkata Naga Praveen Ogirala
Email<EMAIL_ADDRESS>Linkedin Profile: https://www.linkedin.com/in/praveenogirala/
Attach the homework step I screenshots below:

Attach the homework step II screenshots below:

Looks good Venkata, thank you. Here's your badge -> https://api.badgr.io/public/assertions/mcPrMn2KThWbXiK9-6JFLA?identity__email=nagapraveen.ogirala%40gmail.com


Support multiple authentications

This progresses on #648 so this solution can also be seen as a proof of concept.
We should discuss if the intermingling of new and old EB code is the way forward, or if we should bite the bullet and start pulling more of the Corto features to the Symfony namespace.
This PR consists of multiple changes.

In order to test the new feature, a Behat feature was provided which uses the Selenium2 stand-alone driver in combination with headless Chrome.
Travis can run this headless Behat feature. Support was added in commit 'Run headless Chrome Behat tests on Travis '
Finally, the main change was made in commit: ec91e45 see commit message for more info on that one!

Thanks for the review @pablothedude

I personally would prefer to use a VO as RequestId but I understand that refactoring currently won't yield enough benefits.

That crossed my mind, that crossed my mind and I think, if we go down this road, we should take the effort of making that update.

Shouldn't the maximum number of concurrent authentication procedures be limited?

This was previously not limited either, but a good question none the less. Let's discuss this later today on the phone.

Should an exception be thrown if a session with the same requestId is added to the map?

Yes, that is a good addition, although the chance of this happening is VERY small. Will fix this on this PR.

I saw that the RequestId still uses an old sha1 hash, should it be changed?

Do you mean the $prefix . sha1(uniqid(mt_rand(), true)); line in EngineBlock_Saml2_IdGenerator_Default? Other than SHA1 being unsafe for password hashing, I don't think we are at risk here using it? Don't you agree?

Regarding the generated ID I don't think that this is a direct security risk but I thought it was used to compare the ID with the InResponseTo attribute. I don't know the saml2 spec that well to conclusively conclude that this shouldn't be changed on the long run.


[Event Request] Checklist Execution / Video Played

For our app we're trying to capture how well a user is progressing through our custom checklist. As a lot of the Checklist functionality/tables are internal this proves to be a tricky area. One area especially we want to track is users watching checklist videos.
The simplest location (and least exposure as its Public already) would be the below:
Codeunit: 3710 Video, Procedure: Play()

Exposing something like "OnAfterPlay(Url)" so I could look back through my custom videos (based on the url, as I store them in a table) to find which one was played and log it. The event could either be here, or called from the VideoImpl codeunit Play().

I notice there is the below event already in this codeunit, however this is only called on the manual drilldown on the Product Videos page. If the ChecklistBanner.RunVideo() procedure was fed through to that buffer table that would be handy in tracking which video was played aswell (but that's less of an event request and more a refactor):

The harder location (most exposure) but would be nice to have would be the below:
Codeunit: 1996 "Checklist Banner", Procedure: ExecuteChecklistItem()

Exposing something like "OnAfterExecuteChecklistItem(GuidedExperienceItem)" so I could identify which item was completed and associate that back to the custom guided experience item I've inserted to log it. This would mean exposure of this codeunit/procedure and the guided experience item table so we can relate them however. Could also expose the IsChecklistItemComplete but not needed for my use case. Would be nice to have but appreciate thats a few.

The system module has been released on GitHub.  https://github.com/microsoft/BCApps
If these changes are still relevant to you, i would like to ask you to create a pull request with your suggested events.
Please add @haoranpb and me.


Syllabus Page Automatically Jump to Current Week

This commit adds a new feature that when the syllabus page is clicked. The page
will automatically jump to most current week. This feature is helpful for
student because as the course progress, students need to scroll long blobs of
text and resources. The most common destination will be the current week. Thus
this new feature.
Note that this completely depends on the highlighting feature. It that breaks,
autojump will not work. If it does not work, it won't break the website.

Simon Mo

That's awesome!


Backports 0.15 pr9

will be rebased after pr8 is merged
review https://github.com/dashpay/dash/pull/2771/commits/070b209c50b304f335d751781c2de43e5f8e6c5f and on

needs rebase

I'd suggest to first rebase https://github.com/dashpay/dash/pull/2912 so that we can merge it first, and only then rebase this PR.

rebased :+1:

build fails https://travis-ci.org/dashpay/dash/jobs/534614270#L2085

dropped 10086, fixed https://github.com/dashpay/dash/pull/2771/commits/6c3d15b459dd95dcd46c01c034c818d6287658eb and force pushed

Travis looks good :)

@codablock Please review

The following scripts are not being run:['txindex.py', 'pruning.py']
Check the test lists in test_runner.py
The command "test "$DEPENDS_TIMEOUT" != "true" && $DOCKER_RUN_IN_BUILDER ./ci/test_integrationtests.sh --jobs=3" exited with 1.

🤔

:man_shrugging:

Pls see https://github.com/UdjinM6/dash/commits/pr2771, tests should finally pass now.
Travis: https://travis-ci.org/UdjinM6/dash/builds/535314818


feat: when scatter chart is selected the line style dropdown should b…

Issue: https://github.com/awslabs/iot-app-kit/issues/2427
Verification:
disable-style.webm
Fix:
-> when scatter chart is selected the line style dropdown should be none and disabled

The testing video attached does not show the AC.. the chart type is non-scatter but the line style is disabled .... which is not what we want

Updated the video and changes.


[Backport 2.x] fix(deps): update dependency com.google.guava:guava to v33

Backports ebeb4c5d92f2c4aaec7da26b18b1dcede210c044 from #38

Please fix the conflicts.

Closing this as the changes have been made in other PRs.


feat(code-server): add code-server offline support

Add "offline" that just runs coder-server in the background, and does not do any downloading (so no extensions installation), but settings can still be applied.
If the "code-server" was not found the install proceeds as per normal.

@matifali  - this is a draft PR to add support for "offline" and maybe an option for download caching (so it only installed on first launch)

Is this ready for review or should I wait until it comes out of draft?

Is this ready for review or should I wait until it comes out of draft?

It's a draft, as I want to see if it makes sense to add an option to use cached installed too

@code-asher it's ready to look at.
I did observe a weird behavior, when running from a cached version the "code-server" is available sooner, but the window is blank intialy. Also when it is open resizing the  window does not repaint.


Implement create instance from instance template

Implement missing creating of vm instance from template
Fixes #114 🦕

Hi @Alw3ys, would you mind adding tests for this method and signing a CLA?
@stephenplusplus, would you mind taking a look at this as well? Thanks in advance!

@sofisl what is this CLA thing?

Thank you! It looks perfect to me. I just added a test, but can't push directly. Here's a diff you can apply directly:
$ curl "https://gist.githubusercontent.com/stephenplusplus/6d911fdfdadf904f329c590fc2fb2fdd/raw/8de2d6b201bed3803d21389c5a227661102f3025/compute-pr-500.diff" | git apply

Thanks again! 🥂

Released under 2.2.0 👍🏻


Create 1299-replace-elements-with-greatest-element-on-right-side.rb

File(s) Modified: 1299-replace-elements-with-greatest-element-on-right-side.rb
Language(s) Used: ruby
Submission URL: https://leetcode.com/problems/replace-elements-with-greatest-element-on-right-side/submissions/1087283767/

Important
Please make sure the file name is lowercase and a duplicate file does not already exist before merging.

@Aasif853 Thanks for your contribution 👍


fix(footer): fix typo

I have recently moved to vscode and did not realize there was no default spell check (like I had on intellij) - I have now installed Code Spell Checker plugin 😄

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


haruna: 0.7.3 -> 0.8.0

Checklist

[x] Checked the nixpkgs master branch

[x] Checked the nixpkgs pull requests

Project name
nix search name: haruna

current version: 0.7.3
desired version: 0.8.0
Notify maintainers

maintainers: @jojosch
Note for maintainers
I tried to update it myself, but when trying to open the result I get either:
fish: Job 1, '/nix/store/qjwn854dkqnbbx6pc6aw…' terminated by signal SIGSEGV (Address boundary error)

or:
unknown() : QQmlApplicationEngine failed to load component

unknown() : qrc:/qml/main.qml:78:5: SettingsEditor is not a type

Some dependencies could be moved to nativeBuildInputs, since they are build time only.
The project supports yt-dlp other than youtube-dl. Since mpv uses the former, maybe switching could be considered.
The homepage is outdated. It's now "https://invent.kde.org/multimedia/haruna".
Please tag this issue in your PR.

Can you (re)produce #170026 after this update?

This is an issue requesting an update, not a pull request (edited the title to be more clear).
Still, with the update I tried to do by myself I couldn't open Haruna in the first place.


[Error] Request initialize failed with message: this.send is not a function

Hello, I get problem with the intelephense, it's out of nowhere, I don't know why, but here's some error log that I got from the console
ERR Request initialize failed with message: this.send is not a function: Error: Request initialize failed with message: this.send is not a function 	at new ResponseError (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\messages.js:46:28) 	at handleResponse (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\main.js:430:48) 	at processMessageQueue (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\main.js:258:17) 	at Immediate.<anonymous> (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\main.js:242:13) 	at runCallback (timers.js:672:20) 	at tryOnImmediate (timers.js:645:5) 	at processImmediate [as _immediateCallback] (timers.js:617:5)
Also this
Request shutdown failed with message: this.send is not a function: Error: Request shutdown failed with message: this.send is not a function 	at new ResponseError (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\messages.js:46:28) 	at handleResponse (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\main.js:430:48) 	at processMessageQueue (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\main.js:258:17) 	at Immediate.<anonymous> (C:\Users\Ben\.vscode\extensions\bmewburn.vscode-intelephense-client-0.8.8\node_modules\vscode-jsonrpc\lib\main.js:242:13) 	at runCallback (timers.js:672:20) 	at tryOnImmediate (timers.js:645:5) 	at processImmediate [as _immediateCallback] (timers.js:617:5)
The other error that occur is
rejected promise not handled within 1 second
also this's the process
t.log @ console.ts:136 t._logExtensionHostMessage @ extensionHost.ts:393 (anonymous) @ extensionHost.ts:210 emitTwo @ events.js:106 emit @ events.js:194 process.nextTick @ internal/child_process.js:766 _combinedTickCallback @ internal/process/next_tick.js:73 _tickCallback @ internal/process/next_tick.js:104

@bmewburn any update on this?

@bmewburn seems like the problem is with the index. After rebuild index, it works again


doc: add docs for middleware and middleware re-exports

Codecov Report

Merging #49 (e56f49a) into main (36b6c1a) will decrease coverage by 0.08%.
The diff coverage is 100.00%.

:exclamation: Current head e56f49a differs from pull request most recent head 95c5631. Consider uploading reports for the commit 95c5631 to get more accurate results

@@            Coverage Diff             @@
##             main      #49      +/-   ##
==========================================
- Coverage   97.46%   97.37%   -0.09%
==========================================
  Files         181      181
  Lines        5714     5713       -1
  Branches      675      675
==========================================
- Hits         5569     5563       -6
- Misses         98      103       +5
  Partials       47       47

Impacted Files
Coverage Δ

...test_docs/tutorial/middleware/test_tutorial_001.py
100.00% <100.00%> (ø)

tests/test_docs/advanced/test_websockets.py
92.00% <0.00%> (-8.00%)
:arrow_down:

xpresso/binders/_body/extractors/discriminated.py
70.73% <0.00%> (-2.44%)
:arrow_down:

xpresso/binders/_body/extractors/file.py
96.00% <0.00%> (-2.00%)
:arrow_down:

xpresso/binders/_body/extractors/form.py
95.71% <0.00%> (-1.43%)
:arrow_down:


question about  protective scenes in training dataset.

I downloaded train dataset from huggingface fnlp. Among the samples of dataset of each character, Are "protective scene" samples included in them? How can I discriminate those samples?
I feel really impressive of your work and I'm following your process.Thanks.

Thanks for your attention.
Yeah, the "protective scenes" are included in training data, you can pick them up in the generated folder, with hallucination in the file name.


Latest version crashes Node Red

Here are the logs from when I try and start Node Red.  It crashes on startup.  I uninstalled the discord node and NR starts up normally.

Jun 22 08:45:13 elayerpi systemd[1]: nodered.service: Consumed 13.932s CPU time.
Jun 22 08:45:24 elayerpi systemd[1]: Stopped Node-RED graphical event wiring tool.
Jun 22 08:45:24 elayerpi systemd[1]: nodered.service: Consumed 13.932s CPU time.

Just some more info.  I was using a previous version with no issue but when I upgraded, NR didn't start.  I think I was running 3.4.3 or 3.4.4 before the upgrade to 3.4.5.

The solution is to let the nodered user sets the intents that wants to use for his bot in discord-token node

I enabled and looks like it installed fine with no errors.  Thanks.

https://github.com/Markoudstaal/node-red-contrib-discord-advanced/wiki#privileged-intents


genes definition could allow tupples

I was wondering if it makes sense to instead of declaring genes like [{name:"face-eyes",min:1,max:10},{name:"face-ear",min:2,max:20}] we could have something like {"name":"face",value:"{1-10},{2-20}"}.
It could facilitate the configuration of signals that have too many parameters. I have created a signal that has at least 10 different indicators and each one with its own thresholds .

I have had this same problem with a multitude of parameters. This is one of the reasons I made a UI for editing configuration here: https://optimizer.ml/Config
Maybe you can let me know how you get on with this?


Add kubeVersion to Chart.yaml to enforce minimum Kubernetes version

k8s 1.21 is the minimum required version

FYI @lhotari I noticed that the CI test Upgrade latest released version - k8s 1.27.3 - upgrade failed - is that expected?

FYI @lhotari I noticed that the CI test Upgrade latest released version - k8s 1.27.3 - upgrade failed - is that expected?

I'm re-running the failed jobs to see if it was a flakiness issue.

FYI @lhotari I noticed that the CI test Upgrade latest released version - k8s 1.27.3 - upgrade failed - is that expected?

I'm re-running the failed jobs to see if it was a flakiness issue.

Sounds good - should the repo have branch protection settings to prevent a merge?


seekable decorator

Before seekable further diffuses into the wild, I wanted to ask if it is feasible to give seekable/peekable-like tools the option to decorate generator functions?  Example:
from itertools import count

@seekable
def numbers():
    """Return an infinite iterator of numeric strings."""
    return (str(n) for n in count())

it = numbers()
next(it), next(it), next(it)
# ('0', '1', '2')

I am particularly interested in making normal generator functions "reusable" (see last Counter example in the "Generators" section).  The seekable class seems it may able to do this simply.  This is just a rough idea, so I am not partial to the example mentioned here.

Ah, this is interesting. The normal decorator pattern does work with generator functions:
Function decorator
>>> from functools import wraps
... from more_itertools import seekable
...
... def seekable_generator(f):
...     @wraps(f)
...     def wrapper(*args, **kwargs):
...         return seekable(f(*args, **kwargs))
...
...     return wrapper
...
... @seekable_generator
... def yielder(n):
...     for i in range(n):
...         yield i
...
... g = yielder(10)
... print(list(g))
... g.seek(0)
... print(list(g))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

This is really neat, but I'm not sure if that really buys much - why not just do the usual thing (wrap the return value of the generator function), as below?
Normal usage
... g = seekable(yielder(10))
... print(list(g))
... g.seek(0)
... print(list(g))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Assuming peekable() or seekable() are useful as decorators, does it make sense to make separate functions for them as decorators? That would involve making new names like seekable_generator() above.
An alternative would be to overload the functionality of seekable() to detect when it's being used as a decorator:
Class-based decorator
... class seekable(object):
...     def __init__(self, x):
...         if callable(x):
...             self._func = x
...         else:
...             self._source = iter(x)
...         self._cache = []
...         self._index = None
...
...     def __call__(self, *args, **kwargs):
...         self._source = iter(self._func(*args, **kwargs))
...         return self
...
...     # etc. etc. etc.
...
... @seekable
... def yielder(n):
...     for i in range(n):
...         yield i
...
... g = yielder(10)
... print(list(g))
... g.seek(0)
... print(list(g))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

This is sort of a hack, though, and I'm not sure if I like it.
Thoughts?

Applying the decorator pattern solves my question as a reasonable workaround.
I had in mind more of your last example, where the seekable class has the decorator option baked in, i.e. use seekable either as a decorator or a regular function wrapper.
I can't say you get much out of it other than saving some typing and possibly dryer code. For example, in refactoring code that calls the same helper generator, it seems easier to add/remove the  @seekable decorator to the base generator than to add/remove new lines for each instantiation.
g1 = seekable(yielder(9))
g2 = seekable(yielder(10))
g3 = seekable(yielder(11))
...

Compared to a decorator
@seekable
def yielder(n):
    ...

g1 = yielder(9)
g2 = yielder(10)
g3 = yielder(11)

I don't feel there is ton of momentum for making a big change to the source at the moment.   However, the idea might be worth documenting, hence the post.  I suppose for now, your first snippet of the decorator will suffice.  Many thanks.

I think I'm finished with PR #183; I'll leave it open for comment.

To push this idea to absurd limits, consider this decorator decorator factory (I ran out of variable names):
from functools import wraps

def factory(module_func, iterable_index=0):
    def meta(*module_args, **module_kwargs):
        def outer_wrapper(user_func):
            @wraps(user_func)
            def inner_wrapper(*user_args, **user_kwargs):
                user_result = user_func(*user_args, **user_kwargs)
                module_args_ = list(module_args)
                module_args_.insert(iterable_index, user_result)
                return module_func(*module_args_, **module_kwargs)
            return inner_wrapper
        return outer_wrapper
    return meta

And these decorators:
from more_itertools import chunked, grouper, windowed

chunk_maker = factory(chunked)
window_maker = factory(windowed)
grouper_maker = factory(grouper, 1)

@chunk_maker(3)
def c_yielder(n):
    return iter(range(n))

@window_maker(3, step=4)
def w_yielder(n):
    return iter(range(n))

@grouper_maker(3)
def g_yielder(n):
    return iter(range(n))

The results are as you might expect:
>>> print(list(c_yielder(10)))
... print(list(w_yielder(10)))
... print(list(g_yielder(10)))
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
[(0, 1, 2), (4, 5, 6), (8, 9, None)]
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]

The cute/terrible thing is adapting the various function signatures with the iterable_index - it lets chunked(iterable, n) and grouper(n, iterable) both work.
I think this is a bit too "yo dawg, I heard you like decorators, so I put a decorator on your decorator so you can decorate while you decorate" for comfort, but I had fun puzzling out the closure mechanics.

I'm amazed what you've been able to do and appreciate your awesome work.  Thank you.
As for the decorator factory, first impressions:

I ... kinda like it :+1:  On one hand it feels seems like an elegant abstraction for a clean way to reuse tools.  On the other hand it has a "Release the Kraken!" feel that gives me pause, as  I can't foresee the consequences, provided such an approach works on all tools.
If this was to potentially become a thing, I think I'd introduce it provisionally,  written somewhere that it's aimed for advanced intermediate users for now.   Decorators could scare new users, unaccustomed to the present instantiation/iter-like conventions.  But I think it is nice to have a new "interface" for using the tools in this library.

And now ... I'm off to try this idea out on more tools.  ))

I wrote this post on the topic, explaining the decorator factory factory.

"This starts out innocently enough." is a great hook. :-)

+1 for "double dec-er"

Along the lines of exploration, here is an abstraction that obviates the iterable_index parameter in a prior example, e.g. the user can write factory(grouper) instead of factory(grouper, 1).
Included is a sample implementation with tests.

Imports
import inspect
from typing import Iterable
from itertools import dropwhile, zip_longest
from functools import wraps, partial

import nose.tools as nt
import more_itertools as mit

Modifications
def locate_iterable(func):
    """Return the position of an iterable argument (requires Python 3.5+)"""
    sig = inspect.signature(func)
    sig_ = [param.annotation for param in sig.parameters.values()]

    pred = lambda x: x[1] == Iterable
    first_iterable = mit.first_true(enumerate(sig_), default=None, pred=pred)
    if first_iterable is None:
        raise TypeError("Factory requires an iterable or sequence.")
    return first_iterable[0]

def factory(module_func):
    def meta(*module_args, **module_kwargs):
        def outer_wrapper(user_func):
            @wraps(user_func)
            def inner_wrapper(*user_args, **user_kwargs):
                user_result = user_func(*user_args, **user_kwargs)
                module_args_ = list(module_args)
                iterable_index = locate_iterable(module_func)   # edit
                module_args_.insert(iterable_index, user_result)
                return module_func(*module_args_, **module_kwargs)
            return inner_wrapper
        return outer_wrapper
    return meta

Now the user does not have to manually specify where the iterable is located.  Rather, the location of the first iterable type in the module-level function is determined via type annotations.  This simplification should lead to more intuitive wrapping of tools:
Demo
#grouper_maker = factory(grouper, 1)                        # old
grouper_maker = factory(grouper)                           # new

@grouper_maker(3)
def g_yielder(n):
    return iter(range(n))

print(list(g_yielder(10)))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]

Using the new type annotations would of course require annotating source code, example:
# Annotated Tools
def chunked(iterable:Iterable, n:int):                     # annotations
    return iter(partial(mit.take, n, iter(iterable)), [])

def grouper(n:int, iterable:Iterable, fillvalue=None):     # annotations
    args = [iter(iterable)] * n
    return zip_longest(fillvalue=fillvalue, *args)

Tests
class TestLocateIterable:
    # Helper functions with arbitrary signatures
    def foo(a, *, b:int, **kwargs):
        pass

    def bar(a, b, iterable:Iterable, *, c:int, **kwargs):
        pass

    @nt.raises(TypeError)
    def test_error(self):
        """Verify an error is raised if no iterables parameters are found."""
        cls = TestLocateIterable
        print(locate_iterable(cls.foo))

    def test_index(self):
        """Verify the index of the first iterable parameter."""
        cls = TestLocateIterable
        nt.eq_(locate_iterable(cls.bar), 2)

test = TestLocateIterable()
test.test_error()
test.test_index()

class TestIterables:

    # Annotated functions
    chunk_maker = factory(chunked)
    grouper_maker = factory(grouper)

    @staticmethod
    @chunk_maker(3)
    def c_yielder(n):
        return iter(range(n))

    @staticmethod
    @grouper_maker(3)
    def g_yielder(n):
        return iter(range(n))

    def test_iterables(self):
        cls = TestIterables
        nt.eq_(list(cls.c_yielder(10)), [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]])

    def test_reversed_signature(self):
        cls = TestIterables
        nt.eq_(list(cls.g_yielder(10)), [(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)])

test = TestIterables()
test.test_iterables()
test.test_reversed_signature()

Caveats

The modified factory decorator assumes the first iterable in module_func is "correct", which may fail for signatures with unconventional naming.
Type hints is only compatible with Python 3.5+ and 2.7, limiting backwards compatibility
Inspecting function signatures in locate_iterable is compatible with Python 3.3+
This option raises the chore of annotating source code

Conclusion
The option for further abstracting the factory proposal is possible for later versions of Python.  Perhaps someday, this endeavor may be revisited followed by a motivation to annotate the source.

Yeah, this is a neat line of research. I fiddled with signature inspection originally, but couldn't make anything clean. I was disappointed to find out collections.abc.Iterable doesn't do what I want:

The only reliable way to determine whether an object is iterable is to call iter(obj).

If anyone reading wants to try it out, I might accept a PR that adds type checking with mypy (with the 2.7 compatible hints), though don't spend the time doing everything.


Missing license

Hi, Nice work! But I've seen that in your repo there is no license file. Can I use your solution to my projects? Under what kind of license your code is? I know it's a little bit hacky, but I really like it! There is no official solution to use OData with Functions at the moment... Thanks

Hi, Thanks. Sure, use it freely. I will update the LICENSE file to MIT. Thanks.


Sidebar menu offer

https://ui.shadcn.com/docs
It would be convenient to make the sidebar menu sticky on this page. Because when I scroll to the bottom of the page, the menu is not visible, I have to scroll again to use the menu and go back to the top.

@Rasulwebs
For me the side bar stays sticky at the top
https://github.com/shadcn-ui/ui/assets/150527559/fa06549a-bfbc-436e-9dac-c3d7d417328d

@Rasulwebs Have you tested with multiple browsers?

@Rasulwebs Have you tested with multiple browsers?

This happened in the Brave browser, I haven't tried it in another browser yet

@Rasulwebs Please try it in other browsers too so we can isolate the problem to Brave, if at all.

This issue has been automatically closed because it received no activity for a while. If you think it was closed by accident, please leave a comment. Thank you.


Minor typo

https://github.com/Plailect/Guide/wiki/Part-4-(Getting-the-OTP) has the following listed for step #29 of (sub)section I:

Reinsert your SD card into your 3DS, press Start and right at the same time to reboot, then boot your 3DS into RedNAND using any CFW (if you followed Part 3 of this guide, you can do this by launching Luma3DS from the HomeBrew Launcher)

However, if following this guide, I think the required button sequence is to hold down.

No...
Read the key combo for rebooting in OTPHelper. It requires 2 button presses since you could brick yourself by rebooting accidentally if you're in the middle of a troubleshooting step or something.

Mea culpa!  You are correct again.
As always, Plailect, you remain not only calm but also polite when responding to those who are obviously and 100% wrong (as I was here).  :)  Thank you for the civility, and excuse me while I blush...


Similar approach for mstest?

Is there a similar option available to set up mstest?
Edit: For everyone that has the same usecase, I'm currently using this: https://github.com/vrnobody/Setup-DotNetFrameworkEnv
which seems to work fine.

@MarcelJurtz we thought about leveraging this as a general 'setup-visualstudio' aspect, but for now focused on MSBuild specifically for this action.  Not ruling out we could/should do this for mstest, but for now keeping this particular repo isolated for MSBuild discovery only.

This probably also means that there's no way to get vcvarsall.bat or similar functionality, I would expect, until we have a setup-visualstudio action? I can request that this page be changed, which I think wrongly suggests that this action can be used to prepare a python dev environment.

Closing this as 'won't fix' in this action.


Reach out to potential facilitators for First Responders design sessions

Zach/Chris M - Bill Scanlon
Janel - Brent Anthony

Bill Scanlon will lead the sessions.


Create SWA + managed API from Advanced creation steps?

How can I create a SWA with managed API from the advanced creation steps? The steps don't ask me where myAPI is or if I want managed or bring my own. Talking to @craigshoemaker, this should be possible. If it isn't possible but only add managed identity afterward - is that step something that happens in VSCode via interactive steps, in portal, or only by editing the yaml action?

There is no managed API create step during app creation. If the API already exists during creation, we detect it and add the directory to your yaml file.
If you need to create one aftwards, you can click here to add a new HTTP trigger, and then commit, and push that code to your repo.

We currently don't support "Bring Your Own Function" right now. I believe that is something that can be done through the portal.
Adding managed identities is has to be done through the portal. You may have to update your azure_static_web_apps_api_token property in the yaml file, but I haven't confirmed that.

It happens right here: https://github.com/microsoft/vscode-azurestaticwebapps/blob/9784ffc9e6fc40a39eca3730b6f97c41847e4535/src/commands/createStaticWebApp/tryGetApiLocations.ts
We are looking for a host.json in the root of their project.

@nturinki @craigshoemaker
I finally have a repro that I think you might agree is a bug. The Cog Search JS sample repo has a dir structure such as:
/quickstart
/search-website-functions-v4
/search-website

The search-website-functions-v4 folder is the updated SWA + API app I'm trying to deploy. The search-website is the older version that I intend to delete once the new sample and content are published.
I fork the repo, then clone my fork and open VSCode at the base of the repo. I create a SWA app using the extension. I use the Advanced version of creation but I'm not sure that is necessary any more.

free pricing tier
build present is 'custom' so I set the client and api folders inside of search-website-functions-v4
for the location of the application (client) code I enter '/search-website-functions-v4/client'
for the location of the api (function) code I need to enter '/search-website-functions-v4/api' but the extension won't let me.  One of the preset defaults has a backward slash instead of forward 'search-website-functions-v4\api'.

BUG: The default URL has the wrong slash and won't let me enter the correct one.
CONSEQUENCE: It creates an action file with that incorrect slash and as a result doesn't find the APIs. Once I edit the action to use the forward slash, the APIs are listed in the functions for the SWA in the portal.
How do I use the extension and enter the correct subfolder but sibling to client location without having to then correction the action file?

Thanks for the very in-depth investigation, @diberry! This is very helpful and I definitely agree, is a bug. We should be using posix to make sure that the directory is always using / rather than being OS dependent.
Unfortunately, I think that the only workaround is to edit the workflow file directly.
We have logic to use the detected API folder automatically without giving the user an option to enter the value manually. The only way to input manually would be to remove the API folder from your directory which isn't ideal.