poac has been added to the Arch User Repository

I've added poac to the Arch User Repository(also called AUR). It is familiar to the users of arch linux and the derivative distros.
Would you check the package configuration, therefore? Especially i'm not so sure about the runtime dependencies and the build options. There are three versions of  the distribution.

poac sourcing from the GitHub releases
paoc-git sourcing from the master branch
poac-devel-git sourcing from the develop branch

Configurations can be checked in “View PKGBUILD” on the right side of the AUR page.
The runtime dependencies are described by the depends in PKGBUILD. The build time dependencies are described by the makedepends and the optdepends reperesents the packages that isn’t necessary but often useful.
The packages will be built, following the steps in build() in the PKGBUILD.
- note. poac depends on the openssl, but I ommited it because git or libgit2 also depends on it.
I think it will be kindful to offer the AUR packages to arch users on README.md.
Thank you.
regarding to: #78

Thank you for your awesome work!
I plan to treat other package sources as 3rd party installations outside affiliated with Poac maintainers.
Therefore, please ask me the way to build Poac through issues or discussions if you kindly want to maintain the repos even though the way is continuing to be dramatically changed :)


acs: command improvements with new defaults, scale-up, new command group names

Fix #1090, fix #1092, fix #1094

Would the acs commands not need to be moved to an azure-cli-acs command package instead of being in azure-cli-vm?

@derekbekoe, so far there is no need from command capacity's point of view, but if there are needs, we can.  I prefer to let it stay, just from code maintenance's aspect, that VM, VMSS, and ACS still share some common functionalities like SSH key-gen I am getting it work. But again let me know.

The way modules and commands a loaded right now (we can change this), when an azure-cli-acs module does exist, these acs commands in azure-cli-vm will not be loaded as the azure-cli-acs module will get loaded instead.
cc @johanste
I am OK to keep it like this for now but something will have to change in the future (possibly moving this to azure-cli-acs) otherwise the acs commands won't be loaded.

Got it. az acs dcos browse will be contributed by the other team in a brand new component azure-cli-acs they planned. I will communicate with them to see whether they can put it in our vm component, but regardless i agree we need to discuss


On-Premise Support?

It is unclear whether or not this scanner tool works for ON-premise SharePoint (ie. SharePoint 2010/2013/2016/2019)  Can you please add a note or statement in the beginning to clarify this point?
Respectfully,
Chris Conte
Senior Consultant
Microsoft Federal
<EMAIL_ADDRESS>
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0a9d928d-fab5-99af-105f-86cb0520dcfa
Version Independent ID: ded494e8-1cc3-04bb-fec9-1c44e7231d06
Content: The SharePoint modernization scanner
Content Source: docs/transform/modernize-scanner.md
Product: sharepoint
GitHub Login: @spdevdocs
Microsoft Alias: spdevdocs

Hello @contecc
The page has Note on modernization scanner support:

The SharePoint modernization scanner only is supported for running against SharePoint Online. For scanning on-premises SharePoint you can consider using the SharePoint Migration Assessment Tool (SMAT).


Profile Ontology and @Context

@fugu13
ADL is working on taking the old profiles published according to the vocab spec, and creating JSON-LD docs based on the profile spec. As part of that exercise, it would be good to have the @context JSON-LD and any ontologies that will be used. Otherwise, the profile data expressed as JSON-LD won't validate. I noticed you created a sample @context for the SCORM profile.
Can you also please publish a baseline @context doc to be used with most profiles and the new profile ontology?

Yep, context is in

Thank you! FYI:
xapi namespace should be "xapi": "https://w3id.org/xapi/ontology#",
instead of
"xapi": "http://purl.org/xapi/ontology#",

@fugu13
also can you update "profile": "http://purl.org/xapi/profile/ontology#",
to
"profile:" "https://w3id.org/xapi/profile/ontology#",
BTW, do you have a draft of the profile ontology yet?

Oh yeah, I keep pulling from old places and forgetting to update.
No profile ontology yet, but you won't see any surprises.

10-4 thanks bud! You expect to have that this week? Just trying to get an idea for planning purposes...

Also I noticed in the context that type is aliased but @id isn't


Modified the return statement for ADD call

Description
Modified the return statement for ADD call, now memories (or updates) are returned instead of {"message" : "ok"}
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] Refactor (does not change functionality, e.g. code style improvements, linting)
[ ] Documentation update

Checklist:

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

The add call now supports a different format:
{
    'results': [
               {'memory': "Friend's name is John", 'event': 'ADD'},
      ],
    'relations': [
              {'source': 'alice123', 'relationship': 'friend', 'target': 'john'}
      ]
}

The get_all and search supports the following format:
{
      'results':[
               {'memory': "Friend's name is John", 'event': 'ADD'},
               {'memory': 'John has a dog named Tommy', 'event': 'ADD'}
      ],
      'relations': [
              {'source': 'alice123', 'relationship': 'friend', 'target': 'john'},
              {'source': 'john', 'relationship': 'has_dog', 'target': 'tommy'}
      ]
}


UITest fails to launch with Xcode 15.3

Description
I have a project with Firebase 10.22.1 running on Xcode 15.2.
When updating to Xcode 15.3 I get the following error when running UITests (No issues with Unittest or running the app):
App installation failed: Unable to Install MyApp
	MyApp encountered an error (Failed to install or launch the test runner. (Underlying Error: App installation failed: Unable to Install MyApp. Please try again later. MyApp.app/Frameworks/GoogleAppMeasurement.framework is missing its bundle executable. Please check your build settings to make sure that a bundle executable is produced at the path "MyApp.app/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement". (Underlying Error: Unable to Install MyApp. Please try again later. MyApp.app/Frameworks/GoogleAppMeasurement.framework is missing its bundle executable. Please check your build settings to make sure that a bundle executable is produced at the path "MyApp.app/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement". (Underlying Error: MyApp.app/Frameworks/GoogleAppMeasurement.framework is missing its bundle executable. Please check your build settings to make sure that a bundle executable is produced at the path "MyApp.app/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement". (Underlying Error: lstat of /Users/vm1/Library/Developer/CoreSimulator/Devices/ED358040-6D56-47FC-8586-5D5F87AA56B4/data/Library/Caches/com.apple.mobile.installd.staging/temp.ni39kN/extracted/MyApp.app/Frameworks/GoogleAppMeasurement.framework/GoogleAppMeasurement failed: No such file or directory)))))

Updating to Firebase 10.23.1, clearing derived data  does not help.
Can anyone help?
Reproducing the issue
No response
Firebase SDK Version
10.22.1
Xcode Version
15.3
Installation Method
Swift Package Manager
Firebase Product(s)
Crashlytics, Analytics, Performance
Targeted Platforms
iOS
Relevant Log Output
No response
If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet

Replace this line with the contents of your Package.resolved.

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

Replace this line with the contents of your Podfile.lock!

Hi @tristangrichard, I tried to reproduce but I was able to run UITest successfully using v10.22.1 on Xcode 15.3. Could you share a sample app so I could reproduce the issue?

Hi @rizafran,
I cannot reproduce it myself by running the tests directly from Xcode. They seem to only fail when executed by our ADO pipeline.
The unit tests runs fine but ui tests fails to launch.

This error occurs when executing via the command line:
xcodebuild test -scheme DemoScheme -project DemoScheme.xcodeproj -destination "platform=iOS Simulator,name=iPhone 15"

We'll need a fully reproducible example to help.

Xcode 15.4 RC has fixed this issue.


added pypandoc-binary to pyproject.toml

Summary
Replaced pypandoc with pypandoc-binary in pyproject.toml for easier deployment
Details
Replaced pypandoc with pypandoc-binary in pyproject.toml for easier deployment
pypandoc-binary is same to the pypandoc library, but has the binary file of the pandoc
Closes issue #156
Checks

[x] In case of new feature, add short overview in docs/<corresponding file>
[x] Tested changes

@DanZ-ix Thanks for the PR.
Could you also remove pandoc from the dockerfile? If it still builds we can merge it.


[AEM 6.4.8] Cycling dependency during AEM restart

Required Information

[ ] AEM Version, including Service Packs, Cumulative Fix Packs, etc: 6.4.8
[ ] ACS AEM Commons Version: 5.0.14
[ ] Reproducible on Latest? yes

Expected Behavior
All ACS services should start and work without issues after a normal AEM restart.
Actual Behavior
During a normal AEM restart some services fail with errors. For example:
16.11.2021 12:30:24.132 *WARN* [FelixStartLevel] com.adobe.acs.acs-aem-commons-bundle bundle com.adobe.acs.acs-aem-commons-bundle:5.0.14 (556)[com.adobe.acs.commons.oak.impl.EnsureOakIndex(3322)] : Could not get service from ref [javax.management.DynamicMBean, com.adobe.acs.commons.oak.EnsureOakIndexManager]
16.11.2021 12:30:24.132 *WARN* [FelixStartLevel] com.adobe.acs.acs-aem-commons-bundle bundle com.adobe.acs.acs-aem-commons-bundle:5.0.14 (556)[com.adobe.acs.commons.oak.impl.EnsureOakIndexManagerImpl(3355)] : Could not get service from ref [com.adobe.acs.commons.oak.impl.AppliableEnsureOakIndex]
16.11.2021 12:30:24.133 *ERROR* [FelixDispatchQueue] com.adobe.acs.acs-aem-commons-bundle FrameworkEvent ERROR (org.osgi.framework.ServiceException: ServiceFactory.getService() resulted in a cycle.)
org.osgi.framework.ServiceException: ServiceFactory.getService() resulted in a cycle.

Because of this error some features (in this case EnsureOakIndexManager) are not working anymore.
Steps to Reproduce

Install AEM 6.4
Install SP8
Restart AEM
Install acs-aem-commons-content-5.0.14-min.zip
Restart AEM
Check the error.log for “Could not get service from ref” and “ServiceFactory.getService() resulted in a cycle”.

This problem is also reproducible with ACS AEM Commons Version 4.11.0
Tested with Java 1.8.0_211
Links

We fixed a similar issue in #2650. Please first update to the latest version of ACS AEM Commons and then look if you can still reproduce.

Hi, are there any information when this issue can be fixed? This bug is annoying us during every deployment.


Artifacts directory name can be too long

When I have a long test name (for [TestCase] tests with several arguments or for the tests with long namespaces) the teamcity-event-listener may produce the folder names that are too long for Windows (longer than 255 symbols). As a result, the artifacts cannot be published because the folder cannot be created

I'm going to try this fix:

Do we need a test name in the path for the TeamCity artifacts?

hi @NikolayPianikov may I ask when will we have the new release for this?
As I see here
https://www.nuget.org/packages/NUnit.Extension.TeamCityEventListener
The latest version is 1.0.7 from 2019
Will this be included in the newer version of Nunit (which version)
or we have to install it separately?

1.0.9 was published

Thank you, when will you add this to the release page?
https://github.com/nunit/teamcity-event-listener/releases


Attempt at simpler interface  for novice embeded developers

When playing around with the adc temp sensor i ran into a hang because i hadn't configured the adc clock.
This is an attempt at a simplified interface to the rp2040 that still allows all the usages of the usual way to write embedded rust.
Do you think this is a good idea? Do you want me to develop this further? Any ideas suggestions of how to make it better?
Blinky before:
#![no_std]
#![no_main]

use cortex_m_rt::entry;
use embedded_hal::digital::v2::OutputPin;
use hal::pac;
use hal::sio::Sio;
use panic_halt as _;
use rp2040_hal as hal;

#[link_section = ".boot2"]
#[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER;

#[entry]
fn main() -> ! {
    let mut pac = pac::Peripherals::take().unwrap();

    let sio = Sio::new(pac.SIO);
    let pins = hal::gpio::Pins::new(
        pac.IO_BANK0,
        pac.PADS_BANK0,
        sio.gpio_bank0,
        &mut pac.RESETS,
    );
    let mut led_pin = pins.gpio25.into_push_pull_output();

    loop {
        led_pin.set_high().unwrap();
        cortex_m::asm::delay(500_000);
        led_pin.set_low().unwrap();
        cortex_m::asm::delay(500_000);
    }
}

Blinky after:
#![no_std]
#![no_main]

use cortex_m_rt::entry;
use embedded_hal::digital::v2::OutputPin;
use hal::Rp2040;
use panic_halt as _;
use rp2040_hal as hal;

#[link_section = ".boot2"]
#[used]
pub static BOOT2: [u8; 256] = rp2040_boot2::BOOT_LOADER;

#[entry]
fn main() -> ! {
    let mut rp = Rp2040::take().unwrap();

    let mut led_pin = rp.pins.gpio25.into_push_pull_output();

    loop {
        led_pin.set_high().unwrap();
        cortex_m::asm::delay(500_000);
        led_pin.set_low().unwrap();
        cortex_m::asm::delay(500_000);
    }
}

Here is an example that uses Adc, I2c and Gpio: https://github.com/JoNil/pico_plant/blob/ffe3e6bb8bf07b79a038e826bb354577af9c4df1/src/main.rs
Since this is a prototype i have not documented it so it only builds with the deny warnings removed.

This is a nice idea, but it really belongs in a BSP (board support package) since things like external high speed oscillator may be different or missing between boards.
A BSP will also have nice names for pins, so for example you can refer to gpio25 as led.
We already have a minimal BSP for the Pico in this repo:
https://github.com/rp-rs/rp-hal/blob/main/boards/pico
Here's what a blinky example looks like targeting the BSP on the micro:bit
https://github.com/nrf-rs/microbit/blob/main/examples/gpio-hal-blinky/src/main.rs
Here's the high-level factory they're calling to configure the HAL
https://github.com/nrf-rs/microbit/blob/458d70584f3b46e075b4dfc21377a98cb65795da/microbit-common/src/v2/board.rs#L131

Nice i'll look more into the bsp, code :)


tests: Add assertion for database queries count.

This PR extends the test for the /api/v1/register endpoint for spectators by adding an assertion to check the number of database queries.
Fixes: #32409

Screenshots and screen captures:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Great, merged, thanks @reharsh!


Wiki has been wrong for 4.0 on installation for forge

//NOTE THIS IS FOR FORGE!
//Install at the repo / dependencies at the bottom of your build.gradel like so and check for the latest update as it isn't stated in the //wiki.

//Under ModItems.register(modEventBus);
+GeckoLib.initialize();

That isn't needed anymore.


Main g

Description

Closes #ISSUE_NUMBER
Checklist

[ ] :eyes: I have self-reviewed my PR, leaving comments on any changes which may trigger a discussion
[ ] :hammer: I have tested my changes
[ ] :pencil2: I have updated any relevant documentation

@coderabbitai review


write method return void

hello, the code is:
public void write(String path, Object replacement) {
    readAndReplace(path, replacement);
}

but on readme, it show:
String newYamlContent = YamlPath.from(file)
        .write("metadata.name", "another-name!")
        .dumpAsString();
// Output of newYamlContent is:
//        ---
//        apiVersion: apps/v1
//        kind: Deployment
//        metadata:
//          name: another-name!

I think the update of the api may cause the write pipeline in the example to fail to run. Do we need to update the way to use write or update the api? thank you.

Thanks for reporting!
The initial intention was to return the parser, so users can perform multiple write in the same line.
Update of the API in: https://github.com/yaml-path/YamlPath/pull/83


[🐛 Bug]: Importing Playwright inside Cypress utils

🔎 Have you searched existing issues to avoid duplicates?

[X] I have made sure that my issue is not a duplicate.

🧪 Have you tested your code using latest version of Synpress?

[X] I have made sure that my issue still exists on latest version of Synpress.

💡 Are you able to provide enough information to be able to reproduce your issue locally?

[X] I can provide enough details to reproduce my issue on local environment.

Synpress version
4.0.x
Node.js version
21
Operating system
macOS 15.0.1
Run mode
Cypress + Synpress (as plugin)
CI platform (if applicable)
No response
Are you running your tests inside docker? (if applicable)

[ ] This issue could be related to docker.

What happened?

Not have dependency on Playwright when I'm using Cypress
How to reproduce the bug.
Try using the plugin with cypress
Relevant log output
No response

@re2005 It's not a mistake. We want to import Playwright feature to be able to connect to a running browser. Also I can see both dependencies are properly listed in the package.json:
https://github.com/Synthetixio/synpress/blob/dev/wallets/ethereum-wallet-mock/package.json


[Safari on iOS] Download fails if popups are disabled

If I disable popups in Safari on iOS (tested on both iOS 7 and 9), file downloads fails on my site. If I enable popups, a dialog appears asking me if I want to open the popup or not.
With popups disabled, the following appears in the console:
TypeError: undefined is not an object (evaluating 'downloadWindow.document’)

Which referrers to line 263 in jquery.fileDownload.js. Below are the relevant lines (line 263 is the line in the middle):
if (isIos || isAndroid) {

                    downloadWindow = window.open(fileUrl);
                    downloadWindow.document.title = settings.popupWindowTitle;
                    window.focus();

                }

The demo pages works just fine, even with popups disabled, so I am not sure what I have done wrong. This also only happens on iOS.
Any suggestions?

This issue happens to me .It really blocks user to download pdf if user doesn't enable allow popup blocker

Same problem showing up for me now. Did you guys happen to find a workaround.

popup blocker isn't enabled by default so its probably not a big deal.... i dont think safari is honoring JS spec here by blocking that since its based on user interaction...

I figured out my issue... Might be the same for others. I was triggering the download from a "" changing to and '' and adding 'href="javascript:void(0)"' allowed it to work.

Yeah it must be in the same stack as a javascript click event not an implicit eval or setTimeout etc. Thats when popupblockers come in. I'm gonna close for now since this is a bug w/ the browser and not the plugin if it is doing otherwise since this is standard behavior


no module named tridet

I am getting this error when I validate my installation. There is no module called tridet in pip. google search gives no such module name.
I installed trident but I am still getting that error.
do you have requirements file with version numbers of the libraries for conda?

you can use pycharm open this project

I have opened the project with pycharm. My error is not about IDE

you can use follow code in train.py
import sys
sys.append("path/to/dd3d/")


consistent lon/lat

catch it before it hits the database to save a world of pain

Fixed in ad67e76


Strip redacted ACKs from merge commits?

In https://github.com/bitcoin/bitcoin/pull/17074
ACKs for top commit:
  laanwj:
    ~~ACK dd85166~~

Should we include these, strip them out? Maybe it doesn't matter etc.

I don't think it's wrong to include disagreement.
Though in this particular case I redacted that ACK wrongly. I thought I saw a problem but it turned out to be perfectly ok.


Subtitle and subtitle buttons are not display

Hello
I am implementing react-native-video in my tvOS app and need to display subtitle.
but even after set text tracks it does not display subtitles and a subtitle buttons.
here is my code for video player

 <Video
        ref={setPlayer}
        subtitle={true}
        source={{
          uri: configuration.url,
        }}
        style={[styles.playerLoaded]}
        controls={true}
        paused={pausedRef.current}
        onLoad={handleLoad}
        resizeMode={'contain'}
        rate={playerRate}
        onProgress={handleProgress}
        onError={onError}
        onLoadStart={onLoadStart}
        onSeek={handleSeek}
        onReadyForDisplay={onReadyForDisplay}
        onEnd={onEndVideo}
        playInBackground={false}
        playWhenInactive={false}
        selectedTextTrack={{
          type: 'language',
          value: 'en',
        }}
        textTracks={[
          {
            title: 'English CC',
            language: 'en',
            type: TextTrackType.VTT, // "text/vtt"
            uri: 'https://captions.cloud.vimeo.com/captions/13026836.vtt?expires=1676898663&sig=429c369ce4b16ca4786bc94a6a893eb245363ebd',
          },
          {
            title: 'Spanish Subtitles',
            language: 'es',
            type: TextTrackType.SRT, // "application/x-subrip"

            uri: 'https://captions.cloud.vimeo.com/captions/13026836.vtt?expires=1676898663&sig=429c369ce4b16ca4786bc94a6a893eb245363ebd',
          },
        ]}
      />

here is my URI for subtitle files:
"https://captions.cloud.vimeo.com/captions/13026836.vtt?expires=1676898663&sig=429c369ce4b16ca4
786bc94a6a893eb245363ebd"
you can see button is not showing in my video players:

I am using react-native-video version 5.2.1
Please help me to figure it out.
Thanks in advance.

Have you figured out how to implement subs with the default player ?


New trunk angle implementation

[imported from https://bbpgitlab.epfl.ch/neuromath/neurots/-/merge_requests/5]
This PR implements a refinement of trunk angle generation. It is able to detect and reproduce constraints between trunk directions from different neurite_types. For example, basal should not be 'too close' to apical, etc...
It can be used with synthesis-workflow!9 to produce validation plots.

@lidakanari @adrien-berchet @eleftherioszisis , if you are happy with this implementation, which is not used by default, I'll add tests to get to better coverage. The plan would be to try to use that more in our next runs of synthesis before making it default here, so we keep the paper version until this new one is stable.

@adrien-berchet , your commitlint thing is a pain, it checks all previous commits in the PR.... I squashed everything haha

@adrien-berchet , it seems codecov needs to up updated, do you know how to do that?

@adrien-berchet , it seems codecov needs to up updated, do you know how to do that?

For an unknown reason the upload of the coverage report failed in the last job. I re-triggered the job and the upload succeeded this time.

@adrien-berchet , this is you PR, so I can approve :P @lidakanari , let me know if/when you're happy with merging this! This new feature is off by default, so the behavior of the code will remain the same, unless specific options are used.

@adrien-berchet , this is you PR, so I can approve :P

:smile:

Hello, shall we merge that? it's a bit of a pain to work on PR rebased on top of this one, it pollutes the diff quite a bit, and is prone to making mistakes. Thank you!

A few minor comments but it looks good to me.

thanks @adrien-berchet !

Here are some general comments. I propose to split into 3 PR:

trivial changes
related to input extraction
algorithms to grow the trunks accordingly

Also, it would be helpful to minimize the arbitrary fits etc as much as possible. If we can have a simple method to do the same process it will be easier to read and better to generate more accurate results.

ok, I'm good to remove small changed, but 2 and 3 should go together IMO. I cannot test if my input makes sense if I cannot run the algo, no? Also changes are in different files, so it's same as 2 PR, no? Things are not on top of each others.

Also, it would be helpful to minimize the arbitrary fits etc as much as possible. If we can have a simple method to do the same process it will be easier to read and better to generate more accurate results.

I'm not sure I see how to d that. Fits are not arbitrary, they define the model and get rid of the noise/undersampling from the data. For having more accurate results, we need to see, depending on how we implement it.

@adrien-berchet @eleftherioszisis , lint breaks in places not related to this PR, could one of you fix it in another one? thank you!


Add finance manager

https://firefly-iii.org/
need connections to Plaid and Flinks

https://www.canada.ca/en/financial-consumer-agency/services/banking/open-banking.html

Use https://github.com/dvankley/firefly-plaid-connector-2

Bonus https://github.com/adyanth/splitwise-firefly-sync

See if you can integrate with Flinks

https://neontra.com/ provides a far more superior product compared to what's available with the open source ecosystem.


test: use spawn instead of fork to maybe not deadlock when running tests

Closes (maybe) #18
Summary of Changes

use spawn instead of fork to not deadlock when running tests

The process seems to get stuck inside wait_for_messages when running the test

That's true, but this does not seem to be the (main) problem. The main process gets stuck there because it doesn't receive any messages from the pipeline process.
This seems to be related to a race condition when initializing the message queue.
The problem occurred because the fields were changed to cached properties. (https://docs.python.org/3.12/library/functools.html#functools.cached_property)
While cached properties were locked in Python 3.11 to ensure they only get assigned once, they are no longer in Python 3.12.
Note:

Changed in version 3.12: Prior to Python 3.12, cached_property included an undocumented lock to ensure that in multi-threaded usage the getter function was guaranteed to run only once per instance. However, the lock was per-property, not per-instance, which could result in unacceptably high lock contention. In Python 3.12+ this locking is removed.

This caused the multiprocessing manager to sometimes be initialized twice (instead of only once), and the main process would get a different queue than the pipeline process.
Because no messages were sent to the correct queue, the main process waited indefinitely for results.
I confirmed this working under WSL2 with Python 3.12 (or I was incredibly lucky, and no problem has happened since I made the change).
So in the end, there was no deadlock (according to this debugging results), and the fork deprecation message turned out to be a red herring. Although, forking in a threaded program is still bad practice and should be avoided (and is also removed in this PR).

@SmiteDeluxe This should also fix the issue, that the extension sometimes isn't notified of the current pipeline execution progress

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

v0.4.0
GitHub release

Your semantic-release bot :package::rocket:


Error building; mismatched types

When trying to build a project generated by this template for a ESP-32-C3-DevKitC-02, running the current latest nightly, I get the following errors.
I'm guessing the problem is it's somehow targeting x86_64-unknown-linux.
$ cargo generate --vcs none --git https://github.com/esp-rs/esp-idf-template cargo
⚠   Unable to load config file: /home/username/.cargo/cargo-generate.toml
🤷   Project Name : esp32-test
🔧   Generating template ...
? 🤷   ESP-IDF native build version (v4.3.2 = previous stable, v4.4 = stable, v5✔ 🤷   ESP-IDF native build version (v4.3.2 = previous stable, v4.4 = stable, v5.0 = development; NOTE: applicable only with `cargo build --features native`) · v4.4
✔ 🤷   STD support · true
✔ 🤷   MCU · esp32c3
✔ 🤷   Rust toolchain (beware: nightly works only for esp32c3!) · nightly
[1/9]   Done: .cargo/config.toml
[2/9]   Done: .cargo
[3/9]   Done: .gitignore
[4/9]   Done: Cargo.toml
[5/9]   Done: build.rs
[6/9]   Done: rust-toolchain.toml
[7/9]   Done: sdkconfig.defaults
[8/9]   Done: src/main.rs
[9/9]   Done: src
🔧   Moving generated files into: `/tmp/esp-test`...
💡   Initializing a fresh Git repository
✨   Done! New project created /tmp/esp-test

$ cd esp32-test
$ cargo build
...
error[E0308]: mismatched types
   --> /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/unix/process.rs:166:33
    |
166 |         self.as_inner_mut().uid(id);
    |                                 ^^ expected `u16`, found `u32`
    |
help: you can convert a `u32` to a `u16` and panic if the converted value doesn't fit
    |
166 |         self.as_inner_mut().uid(id.try_into().unwrap());
    |                                   ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/unix/process.rs:175:33
    |
175 |         self.as_inner_mut().gid(id);
    |                                 ^^ expected `u16`, found `u32`
    |
help: you can convert a `u32` to a `u16` and panic if the converted value doesn't fit
    |
175 |         self.as_inner_mut().gid(id.try_into().unwrap());
    |                                   ++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/os/unix/process.rs:184:36
    |
184 |         self.as_inner_mut().groups(groups);
    |                                    ^^^^^^ expected `u16`, found `u32`
    |
    = note: expected reference `&[u16]`
               found reference `&[u32]`

error[E0308]: mismatched types
   --> /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/fd.rs:112:17
    |
112 |                 offset as i64,
    |                 ^^^^^^^^^^^^^ expected `i32`, found `i64`
    |
help: you can convert an `i64` to an `i32` and panic if the converted value doesn't fit
    |
112 |                 (offset as i64).try_into().unwrap(),
    |                 +             +++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/fd.rs:179:17
    |
179 |                 offset as i64,
    |                 ^^^^^^^^^^^^^ expected `i32`, found `i64`
    |
help: you can convert an `i64` to an `i32` and panic if the converted value doesn't fit
    |
179 |                 (offset as i64).try_into().unwrap(),
    |                 +             +++++++++++++++++++++

error[E0308]: mismatched types
   --> /home/username/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/fs.rs:969:56
    |
969 |         let n = cvt(unsafe { lseek64(self.as_raw_fd(), pos, whence) })?;
    |                                                        ^^^ expected `i32`, found `i64`
    |
help: you can convert an `i64` to an `i32` and panic if the converted value doesn't fit
    |
969 |         let n = cvt(unsafe { lseek64(self.as_raw_fd(), pos.try_into().unwrap(), whence) })?;
    |                                                           ++++++++++++++++++++

For more information about this error, try `rustc --explain E0308`.
error: could not compile `std` due to 6 previous errors
warning: build failed, waiting for other jobs to finish...

Duplicate of https://github.com/rust-lang/rust/issues/95924


Write to data file on the fly?

The way I understand it, Instamancer first runs an entire scrape (and downloads media as it goes, depending on settings). But it is only when the full scrape is done that it writes to json, csv or similar.
So, if running a scrape to get unlimited posts for a hashtag, when will the data file be written? And where does the json/csv data go if the job breaks? Is it only stored in RAM until the end of the run?

By default the data is stored in memory until the scraping is complete; if the job breaks, then it won't be written.
To avoid this, you can stream the data to stdout as it's downloaded by setting the output file to - (eg. -o -)
And you can pipe stdout to a file with >:
instamancer hashtag puppies -c10 -o - > puppies.json

Thanks. Lovely!


Feature/liken

Styling is not perfect yet, and we have to discuss the megalike button.

I checked all the reviews, I think i it okay to merge now :)


Feedback on numerical conversion

Type of changes

[ ] 🐛 Bug fix
[ ] 🎁 New feature
[ ] 📄 Documentation / docstrings
[ ] 🧪 Tests
[ ] Other

Checklist

[ ] 💻 I've run the latest black with default args on new code.
[ ] 🧪 I've added tests for new code.
[ ] ✔ I ran pytest with the --codeblocks flag to ensure that my changes are compatible with the codeblocks
found in the documentation.
[ ] 🕵 I accept that @avi-perl may be pedantic (just a little) in the code review.

Description
Please describe your changes here. If this fixes a bug, please link to the issue, if possible.

Codecov Report
Attention: 3 lines in your changes are missing coverage. Please review.

Comparison is base (0a7e31b) 100.00% compared to head (7b86160) 99.63%.

Files
Patch %
Lines

hebrew/numerical_conversion/substitute.py
92.59%
2 Missing :warning:

hebrew/numerical_conversion/convert.py
97.82%
1 Missing :warning:

Additional details and impacted files
@@             Coverage Diff             @@
##            master      #16      +/-   ##
===========================================
- Coverage   100.00%   99.63%   -0.37%
===========================================
  Files           10       14       +4
  Lines          709      819     +110
===========================================
+ Hits           709      816     +107
- Misses           0        3       +3

Flag
Coverage Δ

unittests
99.63% <97.29%> (-0.37%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Security headers: Simplify setting of headers, possibly via plugin

While working on an application, I left one of my not favourite todo's unchecked: Taking care of setting secure headers.
There is a OWASP Secure Headers Project that defines a couple of headers that should be set. I remember a common implementation used to be helmet (express based, so a bit outdated), that set a couple of these headers properly.
Would it make sense to have a plugin similar to the CorsPlugin, that allows to set those headers via a builder or do you think everything should be done manually anyway?
Happy to get any opinions and also to collect a list of headers/values if it makes sense to you...

I have created a sample plugin at https://github.com/spinscale/javalin-secure-headers
The basic idea is to have a builder for the plugin to create the proper headers (as typesafe as possible):
final SecureHeadersPlugin plugin = SecureHeadersPlugin.builder()
        .xContentTypeOptionsNoSniff();
        .strictTransportSecurity(Duration.ofSeconds(10), true)
        .xFrameOptions("deny")
        .xPermittedCrossDomainPolicies(CrossDomainPolicy.NONE)
        .referrerPolicy(ReferrerPolicy.STRICT_ORIGIN)
        .clearSiteData(ClearSiteData.COOKIES, ClearSiteData.EXECUTION_CONTEXTS, ClearSiteData.STORAGE)
        .crossOriginEmbedderPolicy(CrossOriginEmbedderPolicy.UNSAFE_NONE)
        .crossOriginOpenerPolicy(CrossOriginOpenerPolicy.SAME_ORIGIN_ALLOW_POPUPS)
        .crossOriginResourcePolicy(CrossOriginResourcePolicy.SAME_SITE)
        .build();

final Javalin javalin = Javalin.create(config -> config.registerPlugin(plugin));

I think this is the right approach. One thing you could do to make it more consistent with the other APIs in Javalin is to use a consumer instead of a builder:
SecureHeadersPlugin(headers -> {
        headers.xContentTypeOptionsNoSniff();
        headers.strictTransportSecurity(Duration.ofSeconds(10), true)
        headers.xFrameOptions("deny")
        headers.xPermittedCrossDomainPolicies(CrossDomainPolicy.NONE)
        headers.referrerPolicy(ReferrerPolicy.STRICT_ORIGIN)
        headers.clearSiteData(ClearSiteData.COOKIES, ClearSiteData.EXECUTION_CONTEXTS, ClearSiteData.STORAGE)
        headers.crossOriginEmbedderPolicy(CrossOriginEmbedderPolicy.UNSAFE_NONE)
        headers.crossOriginOpenerPolicy(CrossOriginOpenerPolicy.SAME_ORIGIN_ALLOW_POPUPS)
        headers.crossOriginResourcePolicy(CrossOriginResourcePolicy.SAME_SITE)
});

Good one. Changed.
Also changed the xFrameOptions to either take a enum or have a domain, so we don't need to throw an excpetion for an invalid argument.

@tipsy  Do we want this in the io.javalin.github group? I can help @spinscale polish it up and prepare it for maven central if you wanna publish it

@TareqK I think this should be a part of the main module, it's something that (should) concern everyone using Javalin.

if this sounds good I'll try to create a PR against javalin and make the code a bit more kotliny... next two weeks will be rather busy though on my side.

Sounds good @spinscale. Will you look into Cache and CSP too?

CSP is already covered, taking a string as an argument. If we want to support caching headers as well, we probably should rename from secure headers to a more generic concept of pre-configurable headers?


Fix two-fer exercise commentary

I realized that the two-fer.el were using the same code template as hello-world.el. I updated it.

Thanks @bcfurtado


iobroker-javascript.connect not found

Describe the bug
After first in stall in VSCode on Windows (and also on a ssh remote linux host) I can't start the connection to the iobroker host
To Reproduce
Steps to reproduce the behavior:

CTRL-Shift-P
iobroker:Connect to iobroker
See error

Expected behavior
I expected to go through the config wizard to configure the settings. In my case the config file did not exist yet. The add-on should handle that case. At least the "initial setup" should be described more clearly in README. The current error message is missleading.
Screenshots

Version information (please complete the following information):

Extension version: 1.1.4
VS Code version: 1.72.2
ioBroker admin version: don't even get there
ioBroker nodejs version: don't even get there
ioBroker javascript adapter version: don't even get there

Same error on MacOS.

Danke fürs melden des Problems. In der Version 1.1.5 ist das Problem behoben.


[BUG] - Hero unable to select content in editor + memory leak

When you open control in the sidebar you can select anything in the editor until you close it and if you open 2 + controls at the same time you get a major memory leek
https://github.com/user-attachments/assets/2e7551a9-7a9d-42df-a796-46d744539074

any component that has multiple controls in the sidebar has the same memory issue


[BUG] TaskQueueZkImpl.poll() throw NullPointerException

*For better global communication, please give priority to using English description, thx! *
Describe the bug
TaskQueueZkImpl.poll()
task queue poll error, task detail :2_1_2_1_-1 , please check!
add task to tasks queue exception
java.lang.NullPointerException: null.
To Reproduce
Steps to reproduce the behavior, for example:

部署易调度1.0.5版本
创建任务
查看worker日志
TaskQueueZkImpl的poll方法报空指针异常

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

日志

代码

Which version of Easy Scheduler:
-[1.0.5]
Additional context
Add any other context about the problem here.
**Requirement or improvement

Please describe about your requirements or improvement suggestions.

version 1.0.5
from the exception log，I see the source code

in version 1.0.5 ，
There should be no -1 after task detail:2_1_2_1 ，with -1 should be version 1.1.0 for now!
when split by ‘_’ , then the last one is the machine groups corresponding to the task.

在1.0.5版本中，task detail：2_1_2_1 后面不会带-1, 1.1.0才有机器分组的功能，最后一位是任务对应的 机器分组


Set id container

I try to set a id on container select2, I'm see on 4889 line the function Select2.prototype._generateId but don't set id on container select2.
It's that correct?

Closed from comment in https://github.com/select2/select2/pull/3386#issuecomment-104961422.


Problem with elementId

Hi,
I'm build next query:
var statement = Cypher.match(screen)
                                  .where(Functions.elementId(screen).eq(Cypher.literalOf("4:d32903f5-48ef-40fb-9ce5-9a3039852c46:2")))
                                  .returning(Functions.elementId(screen))
                                  .build();

Result:
MATCH (screen:`ScreenStateNode`) WHERE toString(id(screen)) = '4:d32903f5-48ef-40fb-9ce5-9a3039852c46:2' RETURN toString(id(screen))

But I expect next query:
MATCH (screen:`ScreenStateNode`) WHERE elementId(screen) = '4:d32903f5-48ef-40fb-9ce5-9a3039852c46:2' RETURN elementId(screen)

With de function call to elementId(xxx) not toString(id(xxx)) which results are diferent:
elementId(screen)
--
1 | "4:d32903f5-48ef-40fb-9ce5-9a3039852c46:2"

versus
toString(id(screen))
--
1 | "2"

Hi @Xus-13 thanks for using Cypher-DSL and reporting your problem.
So, Cypher-DSL supports dialects (two at the moment, Neo4j 4 and 5). elementId is a method that has been introduced in Neo4j 5 and cannot work on Neo4j 4. We are using the translation that you seeing in Spring Data Neo4j to emulate an internal id function that returns a string value (which is what element id does). So we are able to build queries with elementId everywhere and render differently on different Neo4j versions.
The solution to your problem is:
import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;
import org.neo4j.cypherdsl.core.renderer.Configuration;
import org.neo4j.cypherdsl.core.renderer.Dialect;
import org.neo4j.cypherdsl.core.renderer.Renderer;

class GH539Test {

	@Test
	void shouldRenderElementId() {
		var screen = Cypher.node("ScreenStateNode").named("screen");
		var statement = Cypher.match(screen)
			.where(Functions.elementId(screen).eq(Cypher.literalOf("4:d32903f5-48ef-40fb-9ce5-9a3039852c46:2")))
			.returning(Functions.elementId(screen))
			.build();
		// Renderer is thread safe, you can store it somewhere global
		var renderer = Renderer.getRenderer(Configuration.newConfig().withDialect(Dialect.NEO4J_5).build());
		var cypher = renderer.render(statement);
		assertThat(cypher)
			.isEqualTo("MATCH (screen:`ScreenStateNode`) WHERE elementId(screen) = '4:d32903f5-48ef-40fb-9ce5-9a3039852c46:2' RETURN elementId(screen)");
		;
	}
}

Does this help?

Yes, is perfect for me use case. Thank you very much, and thank you for your great work on this project.

Awesome, I appreciate your feedback a lot! Thank you.


rivalcfg 3.0.0

I am currently working on rivalcfg 3.0.0. This version was previously developed on the road-to-3-0-0-hidapi branch but it is now mered on master. This version is not yet ready but putting it on master will make it easier for contributer to work on and for everyone to test it :).
In addition to internal architecture change, rivalcfg is now relying on the hidapi third party library instead of pyudev (packagers will have to update their package).
If you have any question about this version, feel free to ask it here or to open an issue ;)

Please update the documentation (Readme.md) to reflect Heroes of the Storm addition too.

@frags51 It is already in my TODO list, I will do it this evening :D

Arch maintainer here, it should work on Arch now with the new dependencies. I'd appreciate someone confirming if it works on their machine though, thanks.

@yorickr Hello, I installed an Archlinux VM and installed the package: It works! Thank you! :)

What can I do to help add the Fallout4 rival300 to this utility?

@sungod23 This mouse probably use the same instruction set that the regular Rival 300. To be able to support it, I will first need some informations about the mouse:

Is it this one? → https://www.amazon.com/dp/B01ENQWDAG/

I will need the product ID of the mouse. On linux you can get it with the following command:
lsusb | grep 1038

:)

I think so, it appears to be. I got mine from betshot:
https://store.bethsoft.com/accessories/gaming-accessories/vault-111-steelseries-rival-mouse
I tried adding it into the version of the repo under rivacfg/mice, copied the plain rival300 .py and edited, then added it to init.py but there are obviously some other places it wants to be. Product ID is 1712, so just off the base rival. Usb device output below. I actually have the pip version installed.
Thanks so much!
sudo usb-devices | grep 1038 -B2 -C7
T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1038 ProdID=1712 Rev=00.25
S:  Manufacturer=SteelSeries
S:  Product=SteelSeries Rival 300 Fallout 4 Gaming Mouse
C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=200mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
I:  If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
I:  If#= 2 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#= 3 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

Can you try (with the latest revision on master) the following command:
RIVALCFG_PROFILE=1038:1710 RIVALCFG_DEVICE=1038:1712  rivalcfg -c red

Maybe open a new issue for this next time @sungod23 ?

@yorickr you are right, I opened a new issue → #44
@sungod23 please answer in the issue #44  :)

As this version take time to be released, I released a beta version: v3.0.0-beta1 that can be installed from PYPI :)

I close this issue as rivalcfg 3.0.0 is released. It can now be installed with the following command as root:
pip install rivalcfg


⚠ ClamAV has degraded performance

In d5d1d11, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 66 ms

Resolved: ClamAV performance has improved in cfbd908 after 16 minutes.


org settings: De-duplicate template content for checkboxes.

There is no UI change.
Not all labels are moved to JS code for translation, only those whose templates are deduplicated are moved in admin.js
Some checkboxes can fit in the settings_checkbox.handlebars by using end_content but because of translation strings like title makes it difficult to do so, e.g. id_realm_allow_message_deleting.

Looks great, merged, thanks @shubhamdhama!
I think we probably will want to do a further refactor to get rid of the id_ prefix for these, but I think it was the right call to first do the direct translation.

I can include this as a followup.

Yeah, I think it's a good idea.


Fix unit test execution under VS 2015

Use FSharp.Core from NuGet package
Add binding redirects for VS assemblies

The tests are loaded into NUnit.exe and passed. Wow! :)


Navigation bar with back and menu button

Hello ,
SlideMenu 3.zip
as shown in the project attached i want to move from home to second and third view controller
the problem is i try to navigate to them by push and i only get back button without menu button and i try to navigate to it using present and sideMenuController?.embedCenterController() but i only get the menu button
How can i get them both ?
Regards

You need to add both manually. Have a look here: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationItem_Class/index.html#//apple_ref/occ/instp/UINavigationItem/leftBarButtonItems

Is any more specificity available? How and where should one go about adding them both back in? I would like the back button in its normal location with the menu button immediately to the right.


[MM-EE]: Fix indentation for nodeSelector, affinity and tolerations

Summary
Fix #212 for MM-EE
values.yaml (relevant part)
  # mattermostApp Node selector
  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  nodeSelector:
    selectorA: test
    selectorB: test

  # mattermostApp Affinity
  # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/e2e-az-name
            operator: In
            values:
            - e2e-az1
            - e2e-az2
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: another-node-label-key
            operator: In
            values:
            - another-node-label-value

  # mattermostApp Tolerations for pod assignment
  # Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoSchedule"
  - key: "key1"
    operator: "Exists"
    effect: "NoSchedule"

output (relevant part)
    spec:
      nodeSelector:
        selectorA: test
        selectorB: test
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - preference:
              matchExpressions:
              - key: another-node-label-key
                operator: In
                values:
                - another-node-label-value
            weight: 1
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/e2e-az-name
                operator: In
                values:
                - e2e-az1
                - e2e-az2
      tolerations:
      - effect: NoSchedule
        key: key1
        operator: Equal
        value: value1
      - effect: NoSchedule
        key: key1
        operator: Exists

Ticket Link

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!
/cc @jasonblais @jfrerich @emilyacook


Properly slugify the alias on Project Relationships.

This includes a migration that will break some URL's.
In the past we haven't slugified aliases,
so this will break URL's for projects in that state.
This shows effected projects:
(<ProjectRelationship: tests-docs -> tests-docs-spanish>, u'/es/latest/', u'eslatest')
(<ProjectRelationship: test_bcn_cn -> test_bcn_cn>, u'/cn', u'cn')
(<ProjectRelationship: recharge_api_calls -> recharge_api_calls>, u'/recharge', u'recharge')

Pared down the initial migration to not change capitalization, and it looks like it does what I want. People will break their own URL's going forward if they try and change their alias.

It runs automatically in Django. Django's allow's _, which is fine for this use case.


Buffer.from('...','hex') does not work

When running the Buffer.from static method in node js on a public key I get different console.log when running it from the browser (in an angular project). It seems that in browser I'm getting decimal instead of 'hex'.
nodejs
const pubKey='30819F300D06092A864886F70D010101050003818D0030818902818100B2E9AFAFEED76A5C31D069F84328D785DFE6C40A69F51B29C7D7C91EF171A5EF6AD9FC30AF31F4B59C0FE317E47B5DBAA04E3753AC7F8B0E54D8EB4372894900DE247FD11B8C2208FE1C837ADEC409B0F2EE89A5C54B8AB80D5934FC65100406077D129DC5EB961E883B937C4251FDA4BD77224D1CDEF09151894F902758AA3B0203010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';

const buff = Buffer.from(pubKey, 'hex');

console.log(buff)
<Buffer 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 b2 e9 af af ee d7 6a 5c 31 d0 69 f8 43 28 d7 85 df e6 c4 0a 69 ... 244 more bytes>

In angular I have installed npm i buffer and provided it in the pollyfills.ts like this
(window as any).global = window;
(window as any).global.Buffer = require('buffer').Buffer;
(window as any).process = {};

Running the same code on the browser Stackblitz yields

So my questions is
Why does the Buffer in the browser return something different? [0] = 48 vs [0]= 30
In the Stackblitz example you can see that I'm using the buffer with node-rsa for encyrption. The encrypted value from the nodesjs script works while the one from the browser doesnt.
Post on Stackoverflow
https://stackoverflow.com/questions/64871119/buffer-library-in-browser-does-not-return-the-same-value-as-in-nodejs?noredirect=1#comment114692330_64871119

I just tested and both this library (latest version) and Node.js (12 LTS) return the same Buffer object, with 30 as the first byte. I think you're somehow including an older version of buffer. This is not a bug in buffer.
const assert = require('assert')
const B = require('buffer/').Buffer
const pubKey='30819F300D06092A864886F70D010101050003818D0030818902818100B2E9AFAFEED76A5C31D069F84328D785DFE6C40A69F51B29C7D7C91EF171A5EF6AD9FC30AF31F4B59C0FE317E47B5DBAA04E3753AC7F8B0E54D8EB4372894900DE247FD11B8C2208FE1C837ADEC409B0F2EE89A5C54B8AB80D5934FC65100406077D129DC5EB961E883B937C4251FDA4BD77224D1CDEF09151894F902758AA3B0203010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
assert.deepEqual(Buffer.from(pubKey, 'hex'), B.from(pubKey, 'hex'))

Hi I could verify your result when running both in nodejs. But I'm getting a different result when running buffer in the browser.

@aavelyn Please ensure that you're using the latest version of buffer in your browser. If your bundler is including buffer automatically it may not be using the latest version.

I found the reason. It is because the browser logs the values in int while nodejs logs it in hex....
Thanks for the support!


Don't attempt to push changes from Test-Custom-Project workflow

Diffblue Cover

Run: Test: Custom Project / Test  (windows-latest)
Commit: 44fd023b80bf4bd7c40d4f3706fc3b66c3d92f3f

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Maven Project / Test  (macos-latest)
Commit: 44fd023b80bf4bd7c40d4f3706fc3b66c3d92f3f

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Gradle Project / Test  (ubuntu-latest)
Commit: 44fd023b80bf4bd7c40d4f3706fc3b66c3d92f3f

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Custom Project / Test  (windows-latest)
Commit: a37769e89cf7fa4320730df08c138bbdfc427bad

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Gradle Project / Test  (ubuntu-latest)
Commit: a37769e89cf7fa4320730df08c138bbdfc427bad

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Custom Project / Test  (windows-latest)
Commit: 306ca3365b31bb63a9a11bc8b06f14f9dd14e9ab

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Maven Project / Test  (macos-latest)
Commit: 306ca3365b31bb63a9a11bc8b06f14f9dd14e9ab

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Gradle Project / Test  (ubuntu-latest)
Commit: 306ca3365b31bb63a9a11bc8b06f14f9dd14e9ab

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Custom Project / Test  (windows-latest)
Commit: 1b9e1885bd9d5a0873ce570dfb7c41bb62d17fba

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Maven Project / Test  (macos-latest)
Commit: 1b9e1885bd9d5a0873ce570dfb7c41bb62d17fba

:construction: This comment is under construction and will be updated on completion. :construction:

Diffblue Cover

Run: Test: Gradle Project / Test  (ubuntu-latest)
Commit: 1b9e1885bd9d5a0873ce570dfb7c41bb62d17fba

:construction: This comment is under construction and will be updated on completion. :construction:


Unknown transform: ResponseHeaderRemove

// appsettings.json

"ReverseProxy": {
  "Routes": {
    "TodoApp": {
      "ClusterId": "TodoApp",
      "Match": {
        "Path": "{**catch-all}",
        "Methods": [
          "GET",
          "POST",
          "PUT",
          "DELETE"
        ]
      },
      "Transforms": [
        {
          "ResponseHeaderRemove": "Server",
          "When": "Always"
        }
      ]
    },

The above configuration gives the following exception (Unknown transform: ResponseHeaderRemove):
System.InvalidOperationException: Unable to load or apply the proxy configuration.\n ---> System.ArgumentException: Unknown transform: ResponseHeaderRemove;When\n   at Yarp.ReverseProxy.Transforms.Builder.TransformBuilder.BuildInternal(RouteConfig route, ClusterConfig cluster)\n   at Yarp.ReverseProxy.Transforms.Builder.TransformBuilder.Build(RouteConfig route, ClusterConfig cluster)\n   at Yarp.ReverseProxy.Management.ProxyConfigManager.BuildRouteModel(RouteConfig source, ClusterState cluster)\n   at Yarp.ReverseProxy.Management.ProxyConfigManager.UpdateRuntimeRoutes(IList1 incomingRoutes)\n   at Yarp.ReverseProxy.Management.ProxyConfigManager.ApplyConfigAsync(IProxyConfig config)\n   at Yarp.ReverseProxy.Management.ProxyConfigManager.InitialLoadAsync()\n   --- End of inner exception stack trace ---\n   at Yarp.ReverseProxy.Management.ProxyConfigManager.InitialLoadAsync()\n   at Microsoft.AspNetCore.Builder.ReverseProxyIEndpointRouteBuilderExtensions.GetOrCreateDataSource(IEndpointRouteBuilder endpoints)\n   at Microsoft.AspNetCore.Builder.ReverseProxyIEndpointRouteBuilderExtensions.MapReverseProxy(IEndpointRouteBuilder endpoints, Action1 configureApp)\n   at Microsoft.AspNetCore.Builder.ReverseProxyIEndpointRouteBuilderExtensions.MapReverseProxy(IEndpointRouteBuilder endpoints)\n   at ApiGateway.Startup.<>c.<Configure>b__5_0(IEndpointRouteBuilder endpoints) in /src/ApiGateway/Startup.cs:line 68\n   at Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions.UseEndpoints(IApplicationBuilder builder, Action1 configure)\n   at ApiGateway.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in /src/ApiGateway/Startup.cs:line 68\n   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)\n   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)\n   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)\n   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)\n   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass15_0.<UseStartup>b__1(IApplicationBuilder app)\n   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)\n   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)\n   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)\n   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)\n   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)\n   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)\n   at ApiGateway.Program.Main(String[] args) in /src/ApiGateway/Program.cs:line 24
Version:
<PackageReference Include="Yarp.ReverseProxy" Version="1.0.0-preview.12.21328.2" />

The problem is line 184 in this file:
https://github.com/microsoft/reverse-proxy/blob/release/1.0.0-preview12/src/ReverseProxy/Transforms/ResponseTransformFactory.cs
The if check should be on "ResponseHeaderRemoveKey" instead of "ResponseHeaderKey" (which is in the if statement on line 132).
Workaround:  Use the old configuration format of setting the response header to empty string.

Thanks, this is being fixed by https://github.com/microsoft/reverse-proxy/pull/1137/files#diff-15d50e771fee2b0178b4042b91f5415cb90f6c40f4b0a0161f258c8b36dfe86dR194.

I'm getting the same error. Hope this can be released soon.

The fix has been merged and should be available from our rolling builds:
https://github.com/microsoft/reverse-proxy/blob/main/docs/DailyBuilds.md


ARROW-100: [C++] Computing RowBatch size

Implement RowBatchWriter::DataHeaderSize and arrow::ipc::GetRowBatchSize. To achieve this, the Flatbuffer metadata is written to a temporary buffer and its size is determined. This commit also adds MockMemorySource, a new MemorySource that tracks the amount of memory written.
Author: Philipp Moritz<EMAIL_ADDRESS>

I'm sorry, it looks like my change did have some conflicts with yours (and it got merged first).  Do you mind rebasing?

Sorry about that. I'll review/merge once this is rebased.

Thanks, please hold off a little longer on that, I'd like to properly test it with all the other new IPC code that was added. I expect to finish this tonight.

The PR should be ready now!

+1, thank you

@pcmoritz I've made you a Contributor on JIRA so you'll be able to assign yourself JIRAs going forward


Code cleanup

Hey all,
First, I want to say thanks for the great query builder that Pixie is. I've been using it for a while now, and it has been very useful.
To make it even better, I've had some ideas about stuff that could be done in this library to make it even better. Before I start in on actually implementing any of these, however, I thought it would be a good idea to put them here and see what the general response is on them.

[ ] .editorconfig file

EditorConfig is a great tool for standardizing file spacing, tabs, etc. While it doesn't do anything functionality-wise, it would help to make the code more readable.

[ ] PHP CodeSniffer

Along with the .editorconfig file, PHP Code Sniffer will also help to beautify the code/make it more readable. This one might take some discussion, as people use different styles of coding. The one I would personally recommend is PSR-2 as the current codebase seems to follow it for the most part, and it's the one recommended by the php-fig.

[ ] Better Testing
[ ] Code Coverage

This would probably take a decent amount of work (to which I'm willing to contribute), and isn't super necessary, but it would be nice to have testing using a stubbed database (see here for details) to further test the correct implementation/idiosyncrasies of database interaction. Also, it would be nice to use something like php code coverage to generate unit testing coverage reports).
These are just a couple of ideas that I had, so let me know what you think!
/cc @usmanhalalit @neoascetic

Thanks @acburdine for all your contribution.
I agree with the PSR-2 thing, though mostly we are there. PHP Code Sniffer can help. If we follow this then EditorConfig seems unnecessary to me.
Agree with the testing point, but yes it's a whole lot of work and at this moment it is not super important. Currently I am looking forward to releasing 1.1 version. For this I need to get familiar with all the PRs and clean up all the things.

@usmanhalalit I'll get to work implementing php code sniffer but I still think editorconfig would be nice -> mainly because having something there that forces you to use the right settings with spaces/tabs can be helpful when actually doing the code. Php code sniffer will flag tab/space inconsistency in the Travis suite, but in my opinion it would be nice to catch it before that. And it's just one file :)

Okay, we can go with editorconfig.

Cool. If there's anything more to be done before releasing a 1.1 version, let me know :smile:


fix prettier/prettier: Delete ? error

fix prettier/prettier: Delete ? error
I want to merge this change because...

Screenshots

Pull Request Checklist

[ ] All visible strings are translated with proper context.
[ ] All data-formatting is locale-aware (dates, numbers, and so on).
[x] The changes are tested.
[ ] The code is documented (docstrings, project documentation).
[ ] Changes are mentioned in the changelog.

Test Environment Config

API_URI=https://master.staging.saleor.rocks/graphql/

I guess you modified this file and your editor used \r\n symbol to end the lines, which prettier sees as an error since our software is set to use \n symbol as a new line symbol.

add to [.prettierrc] file the following :
'prettier/prettier': [
'error',
{
'endOfLine': 'auto',
}
]


Add schema for a "stuck in loop" event

Suggestions for a better name are welcome...
This is the event that the ES sink would send when it has made several failed attempts to connect to the ES cluster.
Possible fields:

What is failing (e.g. "elasticsearch_connection" or "s3_connection")
Number of failed connection attempts so far
Time of first failure
Exception message

This sounds good! I like the possible fields. Possible name: elasticsearch_write_failed

Another field could be last_retry_period

last_retry_period sounds good. How about calling the schema "connection_failing"? Then it isn't specific to any particular endpoint.

I like the idea of making it not sink specific! But think connection may be too specific in a different way. What about "sink_write_failed"?

Another question: are we going to keep trying to send to the sink after we have sent the monitoring event?
If we are then there should probably be some sort of sink_write_succeeded event, similar to how monitor-kinesis can cancel pager duty alerts.

We decided to send a sink_write_failed event on every failure and take the absence of sink_write_failed events to mean that the sink is available again.


IDVA6-1554 add function to track matomo goals

Link to Jira
https://companieshouse.atlassian.net/browse/IDVA6-1554
This PR add back the tracking of two goals for the following journeys:

Add a company
Add an authorised user

CI: Security warnings found!

CI: Security warnings found!


Refactor device events detection

Another attempt at solving duplicate notifications #14

Rules now pass DEVIFY_TYPE DEVIFY_DESC environment variables in addition to all the event properties to the script, which allows:

Building the device name with all the data available
Handle all the logic and other environment variables in the script with more flexibility

Keep track of all connected devices in a file /var/run/devify_connected_devices

When a new event is intercepted add the identifying bits to the file (NAME,ID_MODEL,ID_MODEL_FROM_DATABASE)
When a add event is intercepted check if the device is in the list, if it isn't, add it and show a notification
When a remove event is intercepted show the notification and remove the matching device from the list

Keep a log of handled and ignored udev events /tmp/devify-event.log

If merged I would recommend releasing next version as a major version as the new names logic may break existing devices under input_devices prefix and some other things, but is also in a better state now for getting better bug reports


[Vmware/NGC] create host failed as hostName conatins underscore

Is this a BUG REPORT or FEATURE REQUEST?:
kind bug
What happened:
What you expected to happen:
Due to new hostname validation in hotpot NGC host creation API call is failing as NGC have "_" in name
POST /v1beta/94b280022d0c4401bcf3b0ea85870519/host/hosts^[[0m
E1212 17:47:55.582241   54791 validation.go:64] invalid request: Request body has an error: doesn't match the schema: Error at "/hostName":JSON string doesn't match the regular expression '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$'
E1212 17:47:55.582285   54791 context.go:155] code: 400, reason: Request body has an error: doesn't match the schema: Error at "/hostName":JSON string doesn't match the regular expression '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$'

Fix delivered #315


fix incorrect __richcmp__ for eq_int only simple enums

This fixes a regression that I accidentally introduced in #4210.  @Zyell noticed it in https://github.com/PyO3/pyo3/pull/4202#issuecomment-2142991466 🙏
The match arms for the eq_int comparison would not be generated as intended if eq was not also specified. This should now generate the correct arms.

Hmm interesting case. I sort of wonder if we don't need this and it's ok if adding eq_int will disable the automated value equality?
Justification: users who've added eq_int are already customising the equality of their enum beyone the 0.21 behaviour and while it seems unlikely that users would intentionally want eq_int without eq, if we merge this patch then they might accidentally have implicit eq which goes away in the future when we remove the deprecated behaviour?

@davidhewitt currently adding eq_int causes invalid equality checks and it deviates from the prior behavoir.  Isn't eq_int supposed to maintain the current equality behavior?  I am somewhat confused about the use cases.  I had thought it was like the following:

eq only - provides the new equality check behavior (requires PartialEq implementation)
eq' and eq_int` - provides the new equality check with fallback to the older integer comparison that was default provided by default on simple enums
eq_int  only- provides only the original integer comparison behavior
no equality parameter - maintains old behavior with deprecation warning. (this also currently gives incorrect comparisons)

Please correct me if I mistook the structure.

I'll recheck (and I might be remembering wrong) - I thought the 0.21 behaviour matches (functionally, but not in implementation) what we now call #[pyclass(eq, eq_int)]... 🤔

Nice list, this is essentially what I tried to build 😅 . No equality is equivalent to eq_int only, so they are both currently broken. I think the question is if we want Enum.VariantA == Enum.VariantA to work even if only eq_int (and not eq) is provided.
I think we probably also don't want to emit a deprecation warning if eq_int is missing, but eq was added. I think I will add that fix here as well.

@davidhewitt If you check this test from the 0.21 release, it will not work under the same conditions on main.
@Icxolu I agree with the deprecation warning.  Are you also thinking eq_int would require eq to also be passed then?

I was thinking to only emit the deprecation warning if neither eq nor eq_int is present. If one or both of them were added, the user made a choice, which behavior is desired, so there is no need for the warning anymore. We could require eq for eq_int, but it's not technically necessary.

@davidhewitt If you check this test from the 0.21 release, it will not work under the same conditions on main.

Right I see, so we already broke it. Can we perhaps add that test of the 0.21 behaviour back under an #[allow(deprecated)] guard? That would help me be sure that this patch is doing what we want.

I was thinking to only emit the deprecation warning if neither eq nor eq_int is present. If one or both of them were added, the user made a choice, which behavior is desired, so there is no need for the warning anymore. We could require eq for eq_int, but it's not technically necessary.

Fully agree with this 👍

Can we perhaps add that test of the 0.21 behaviour back under an #[allow(deprecated)] guard?

That's a good idea. I added a deprecated module with the relevant tests.


wrap setValue from useStorage hook in useCallback to persist reference

Wrap setValue from useStorage hook in useCallback to persist reference
Description

This allows setValue to be added to a dependency array
Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):

@antonioru what do you think of adding the eslint-plugin-react-hooks plugin? I'd be happy to put up a pr.

@antonioru what do you think of adding the eslint-plugin-react-hooks plugin? I'd be happy to put up a pr.

hi @ElanMedoff thanks for the fix!
About eslint-plugin-react-hooks yes that would actually be a good improvement, it is in fact in my todo list :)
Feel free to open a PR


apis not reasonable

I am writing this issue to prevent confusion to new readers.
With the change of the ap function, 'pretty' is favored over readability.
definition of map:
A linear transformation; i.e. a -> fn(a)
definition of chain:
A derive of a composition, i.e. g(fn(a)) -> g(a).f(a)
definition of apply:
Isomorphism of a left-associative function, i.e. fn(x*y) -> fn(x,y)
The ap definition as of right now suggests right-associative, giving the reverse of what an apply does.
We may enjoy having consistent definitions, but please do not spread false definitions.

I am appending to my last comment of false definitions:
In functional programming, functions take in values; values do not take in functions.

I'm pretty confused by much of what you wrote, @oopdafp. Sorry!

With the change of the ap function, 'pretty' is favored over readability.

Could you provide some examples which show how the ap change harms readability?

Please reason about your new definition of apply in comparison to prove how it is more reasonable to apply a function to a value than applying a value to a function.

What is f(x)? The application of f to x, no? Perhaps I'm missing the point, though. Are you referring to function application or the use of the fantasy-land/ap method?

I also didn't understand most of it to be honest.

In functional programming, functions take in values; values do not take in functions.

I think I've understood this argument and will try to answer. As I understand it, the problem is that of(x).ap(f) reads as x apply f which sounds wrong, as if we are applying x to f. Yet I wouldn't worry to much about how things sound in this particular case. It's like when we do (+ 1 2) in LISP. This doesn't really matter IMO.
We have the same problem with map, BTW. In of(x).map(f) would be better if f went first somehow and we could say "map f over of(x)".

Sorry! I will try again -

Could you provide some examples which show how the ap change harms readability?

We read left to right
[operation] [arguments] [return]
While map gives a return value, apply does not necessarily correspond 1:1 with map.

What is f(x)? The application of f to x, no? Perhaps I'm missing the point, though. Are you referring to function application or the use of the fantasy-land/ap method?

Actually, f(x) == y.  f(x) has no value, unless you mean fn(x) then again it is a shorthand for function(x).  I am not sure if pseudocode semantics is a ground for reasoning.

I also didn't understand most of it to be honest.

I tried to show the difference between map and apply, and how order matters for apply.

Yet I wouldn't worry too much about how things sound in this particular case. It's like when we do (+ 1 2) in LISP. This doesn't really matter IMO.

We write code for humans, not for machines.  Lisp is a scripting language, has broken semvar countless times.  I will come back to this.

We have the same problem with map

I tried to portray how map is different from apply, and how apply order does matter.
Map, in linguist:
"Value mapped over by fn"
Apply in linguist:
"Value applied to fn"
As the argument above, functions take values, values do not take functions.  With the argument (+ 1 2) in LISP, you are referring to a prefixed operation,  Relative to the applicative a.ap(fn) as fn(a).

Here are fundamentals on
map
and
apply

@davidchambers

Could you provide some examples which show how the  ap  change harms readability?

Have a look at the example here.
@oopdafp

Apply in linguist:
"Value applied to fn"

Yeah, that sounds weird. It should be "fn applied to value" or "apply fn to value".

@bergus
@rpominov is correct, the way something sounds is not a valid premise.
I only argue that it is an invalid take on apply because of the basis: Specs for JavaScript algebra structures.
Mozilla has been doing some great documentations on the language.  Haskell is not JavaScript (looking at the reason why it was swapped in the first place seems to point towards mirroring Haskell, which if you've written in Haskell might know that apply is hardly used because functions can't have types).
@davidchambers  Can you show where apply is reasonable in the context of value.ap(fn), maybe that will clear up confusion

Just want to clarify that Fantasy Land doesn't take inspiration in any JavaScript specifications. The purpose of this spec is rather to specify how to apply research done in languages like Haskell to JavaScript. So the ap method has nothing to do really with Function.prototype.apply.

@rpominov
Fair enough, thanks!

On second thought, that is not exactly the point of this issue - merely a point of reference from academia

I do agree with you, about it looking horrible with the new spec.
In the old spec my liftA3 function looks like:
function liftA3(fn, m1, m2, m3) {
  return m1
    .map(fn) // Lift and apply that function
    .ap(m2)  // Apply dat second feller
    .ap(m3)  // Why not one more and then it is all lifted.
}

now with the new bits my liftA3 would be:
function liftA3(fn, m1, m2, m3) {
  return m3.ap(m2.ap(m1.map(fn)))
}

Other than looking ugly as sin (and I may be missing something here, I am a total newb after all) it is not so bad for helper functions like this. As most users will use the helper functions then composing their own ap flows.
The main concern I ran into is with the statement given a.ap(b): "if b does not wrap a function, then the behavior is unspecified". Why I see that a concern is that because I was satisfying that in requirement in a before, I did not need to extract from the foreign container inside of a. I could check what the "home" container was wrapping. For my Either it looks like this with the old spec:
  function ap(m) {
    if(!either(constant(true), isFunction)) {
      throw new TypeError('Either.ap: Wrapped value must be a function')
    }
    else if(!either(constant(true), constant(isType(type(), m)))) {
      throw new TypeError('Either.ap: Either required')
    }

    return chain(fn => m.map(fn))
  }

Every check stays inside of the "home" container, can even use m.map to never have to extract the "foreign" container.
Now to do those checks I need to extract the value from the foreign container also if I used the derived functionality like I am doing here in the new spec, which is:
return m.chain(f => this.map(f))

In order to report the error in ap and not chain I would need to replace the above if to reference m.either and swap the checks around, which again is not too ugly, BUT I find it gross to report errors about the "foreign" container other than type mismatches. To provide errors in the "home" container about a value in a "foreign" container seems like living in a Police State.
But these things are just my issues with it and I am probably doing something wrong 😸
I was planning on adding an apValue to my containers to use it all pretty like with out silly extraction. But once I got through my Either, I was like...I am staying at 0.x. and just going to add bits like bimap and traverse (and keeping sequence), but implement all other bits in the 0.x spec.
The real bummer with me staying a 0.x, is that soon I will lose compatibility with Ramda, and I so wanted that, but oh well dems the breaks.  If more of them go that route, I will have no choice. Ramda was the first. but I think I can live without interop with Ramda. If two more critical libs decide to go that way I'll have no choice.
Just my 2 cents on the matter. And TBH deep down I do like the :corn:sistency. I just hate the having to extract bits.

@evilsoft that is much more of what I was looking for;  not a semantic discussion but actual reasoning.
@rpominov do you have a rebuttal?

Well I am coming from the point of view as a person implementing this spec.
There are some very, very good reasons for those laws. This spec is not what is the best way to implement in JS. The new spec is what it should be if you look over Control.Applicative in haskell. <*> to be precise.
Even though it inconveniences me.
I have been the only one I have seen in the community that has been taken aback from this change. So logic dictates I am the one with the problem 😸

I just saw this issue as an opportunity to get my 2 cents in! 🍔

Even though Data.Task is an invalid implementation of ap I will be gosh darned if I do not love the fact that I can get Promise.all functionality by doing a traversal of Task on a List of string paths. And they all run Async!!
But even-though that is AWESOME, it still violates the law

@evilsoft, if you're interested in run-time type checking have a look at sanctuary-js/sanctuary#216. Here are some S.ap usage examples:
S.ap([S.toUpper, S.toLower], ['Foo', 'Bar']);
// => ['FOO', 'BAR', 'foo', 'bar']

S.ap(S.Just(Math.sqrt), S.Just(9));
// => Just(3)

S.ap(S.Just('XXX'), S.Just(9));
// ! TypeError: Invalid value
//
//   ap :: Apply f => f (a -> b) -> f a -> f b
//                      ^^^^^^^^
//                         1
//
//   1)  "XXX" :: String
//
//   The value at position 1 is not a member of ‘a -> b’.

Let me color the discussion a bit more.
@oopdafp as you point out with #50, previously, you couldn't type ap in flow or TypeScript. Their type systems aren't powerful enough to deal with it. Part of the reason we moved to this current way was because it was impossible for some js devs to use ap with the state of the art in js.
We weren't intending to alienate people. We were intending to include more people.

So @joneshf part of this change was to accommodate some libs that may or may not be around?
I was hoping that FL would be around longer then the like of Typescript or Flow.
Don't get me wrong, I love me some types, but the "modern" JS libs are totally not the right was to go for types in JS.(IMO) I totally see another CoffeeScript situation, when a much better solution hit JS.

@davidchambers Oh yeah I totes ❤  Sanctuary....Recommend to to people all the time.
But I was implementing for my own lib I am making.

Even though Data.Task is an invalid implementation of ap I will be gosh darned if I do not love the fact that I can get Promise.all functionality by doing a traversal of Task on a List of string paths. And they all run Async!!

This seems like a separate issue, take a look at #179

@rpominov Awesome. SO much good information there.

if, somehow the code reachs a point where the value (function) of something like Maybe.Nothing (which has no value) should be applied to the value of another structure, the code breaks because, well there is no function to be applied

Argument order is actually irrelevant:
> Just (* 2) <*> Just 21
Just 42
> Just (* 2) <*> Nothing
Nothing
> Nothing <*> Just 21
Nothing
> Nothing <*> Nothing
Nothing

If the value of type Maybe (a -> b) is Nothing there is—as you rightly stated—no function to apply, so the result is Nothing. This should not result in an exception. Perhaps you're using a data type with the new ap in conjunction with Ramda, which is not yet compatible with<EMAIL_ADDRESS>

I will look in more depth at this, but what I was trying to say was something like:
For example, ramda-fantasy implements the Maybe monad like this
...
Just.prototype.map = function(f) {
  return this.of(f(this.value));
};

Nothing.prototype.map = util.returnThis;

Just.prototype.ap = function(m) {
  return m.map(this.value);
};

Nothing.prototype.ap = util.returnThis;
...

In order to conform to the new spec the apshould be changed to
...
Just.prototype.ap = function(m) {
  return this.map(m.value);
};

Nothing.prototype.ap = util.returnThis;
...

right?
The issue I ran into was that inside the "traverse machinery" (edited to apply the Applies in the right order), if the m passed to an Just instance's .ap happens to be a Nothing, the .map call on that instance (also called by the traverse internals) would call
...
  undefined(this.value)
...

Well, chances are I missed something as I converted the old code to be compatible with the new spec, I looking into it. The old spec had no such problem.

Setting aside the specifics of ramda-fantasy, the change should be straightforward.
Before:
//  Maybe#ap :: Maybe (a -> b) ~> Maybe a -> Maybe b
Maybe.prototype.ap = function(other) {
  return this.isJust && other.isJust ? Just(this.value(other.value)) : Nothing;
};

After:
//  Maybe#fantasy-land/ap :: Maybe a ~> Maybe (a -> b) -> Maybe b
Maybe.prototype['fantasy-land/ap'] = function(other) {
  return this.isJust && other.isJust ? Just(other.value(this.value)) : Nothing;
};

In order to conform to the new spec the ap should be changed to […] right?

That's right. Also, the method name needs to be prefixed. Perhaps you'd like to open a ramda-fantasy issue for the Fantasy Land upgrade.

I was trying to make thing kind of type agnostic. I guess I was just being silly then. I'll test some more things and, perharps, isue a PR or something. Well, I came here to give my 2 cents to the discussion, now I think I losing the focus of the issue.. I just wanna say I agree that, even maybe less semantic, the older version of .ap was easier to digest.

I was trying to make thing kind of type agnostic.

The implementation of fantasy-land/ap will be specific to the data type, but users of the data type are able to program to a principled interface. FL ultimately exists for the benefit of users rather than authors of ADT libraries. ;)

@davidchambers IMO, that implementation that you provided for Maybe.prototype.ap seems a little odd. I typically do mine more like this:
const K = x => _ => x
const isNothing = x => x === undefined || x === null

function Maybe(x) {
  const either = (f, g) => isNothing(x) ? f() : g(x)
  const option = n => either(K(n), K(x))
  const map = fn => Maybe(either(K(null), fn)
  const ap = m => m.map(option(K(null))
  ...
  return { either, option, map, ap }
}

Trying to avoid doing checking and what have you on the foreign types and just letting the algebras take care of it for me. Notice not ONCE do I extract or otherwise do anything with the foreign Apply, I just map it and let map take care of it.
And I am curious about what you mean by the users of FL. I thought the you needed ADT lib authors to implement against the spec in order to get users to even be aware of FL? Who are the users that FL is targeting then? How would someone not using some ADT lib use FL?
I know I would not want users of my libs losing the ability to do something like (totally contrived, but I hope it makes sense. There are like 100 different, better ways to do this, just using a simple example):
const add = curry(
  (x, y) => x + y
)

// safeAdd3 : Number -> Number
const safeAdd3 = compose(
  option(0),
  ap(Maybe(3)),
  map(add),
  Maybe
)

With the new bit, end users are forced into a more point-wise flow:
function safeAdd3 (num) {
  return Maybe(3)
    .ap(Maybe(num).ap(Maybe(add)))
    .option(0)
}

(again i KNOW it would be better to just do x => Maybe(add(3)).ap(Maybe(x)) just trying to keep it easy to follow.)
I mean I am just a noob at this stuff, but I think a point-free composition is a little easier to follow from an end-user, non-ADT lib developing developer perspective. So it seems to be a PITA from either user.
And granted, a majority of the time, my users will be using my liftAN functions that will hide the nasty and allow them to still be point-free. But, it is just terrible if they decide that they need to ap bits themselves.
From an ADT lib dev perspective, I am forced to extract and do operations on a foreign Apply
From an end-user perspective, I loose the ability to choose between point-wise or point-free implementation and am forced into a point-wise interface.
I know you guys will not change it, because you have some good reasons not to. Please do not take this as a foolish attempt at rabble rousing. I am just voicing my pain points as I try to navigate through this change. It is too bad I do not use T$, that way I could get some benefit from all of this. ;)
I feel sorry mostly for those end users who are going to go through the 9 planes of heck as interop between the current libs is going to be super chaotic while people make the transition. Some will be 0.x and others will not for extended periods of time, if people even decide to transition. So for a while we will lose all kinds of interop and could not safely upgrade until ALL FL deps in a project are upgraded. And even then all ap code will have to be seriously reworked from the end user perspective. Going to be a bumpy transition indeed.
Specs are hard 😸

As an aside, your data type you posted up there is not a Functor: https://github.com/fantasyland/fantasy-land/issues/85#issuecomment-73419882

So @joneshf part of this change was to accommodate some libs that may or may not be around?
I was hoping that FL would be around longer then the like of Typescript or Flow.
Don't get me wrong, I love me some types, but the "modern" JS libs are totally not the right way to go for types in JS (IMO). I totally see another CoffeeScript situation, when a much better solution hits JS.
EDIT: I mean, just the fact that it cannot accommodate this simple valid JS use case easily, should point to the assumption that TS and Flow are NOT the long term solutions.

That's totally fair!
Also, I don't want to give the impression that this change was totally to help TS/flow here. It was just another compelling case for the change. Hopefully, TS and flow get more powerful, so we don't need to bend to their will.
Or, like you said, hopefully something better comes along that doesn't have these problems.

As an aside, your data type you posted up there is not a Functor: #85 (comment)

@joneshf Good call! You are 100% about that I removed a bunch of stuff there to keep it light and tidy. I use the ADT factory function approach, so you HAVE to use one of my extraction functions to get at your value. Here is what the code looks like in full:
https://github.com/evilsoft/crocks/blob/master/crocks/Maybe.js
Do you still see any composition or identity issues in context?

Your Maybe type is invalid, @evilsoft. It doesn't permit Just(null) and Just(undefined).

I am curious about what you mean by the users of FL.

The pay-off is getting to write parametrically polymorphic functions such as this:
//    sum :: Foldable f => f Number -> Number
const sum = foldable => foldable['fantasy-land/reduce']((a, b) => a + b, 0);

Users of FL-compatible data types benefit from programming against a standard, principled interface.

With the new bit, end users are forced into a more point-wise flow:
function safeAdd3 (num) {
  return Maybe(3)
    .ap(Maybe(num).ap(Maybe(add)))
    .option(0)
}

Why use ap rather than map? This could simply be map(add(3)), I believe. I may not be the best person to comment on this, though, as I like to use R/S/Z functions rather than invoke Fantasy Land methods directly.

@davidchambers:

Your Maybe type is invalid, @evilsoft. It doesn't permit Just(null) and Just(undefined).

You just blew my mind! both you and @joneshf are totally correct! Wish I made a fool of myself a couple months ago...

Why use ap rather than map? This could simply be map(add(3)), I believe. I may not be the best person to comment on this, though, as I like to use R/S/Z functions rather than invoke Fantasy Land methods directly.

💯 on that. It is a total strawman, but just wanted to provide an example, I think I commented on the, .map(add(3))

@davidchambers and @joneshf: well thinking on the feedback you two have given me, it seems like it all goes back to what my dear, sainted grandaddy Hicks used to say: "Ian, always remember, Union Types make everything better"

Yep. I see now. That whole Maybe type is bogus...all over the place.
But TIL what the phrase

no part of b should be checked

means and how important that is!
(Still prefer the old style of .ap even though my example was 💩, 😜)

Still prefer the old style of .ap

Just a thought, @evilsoft: you're free to define ap any way you please now that we have prefixed names. If you intend users of your ADT to use the object-oriented interface directly you could provide an ap method which works as you prefer (in addition to providing a compliant fantasy-land/ap method).

I think we should close this, although this is a good discussion, it's not going anywhere... If anyone disagrees just reopen...

Sorry to reopen, I've been away for a minute - such a discussion!

//  Maybe#ap :: Maybe (a -> b) ~> Maybe a -> Maybe b
Maybe.prototype.ap = function(other) {
  return this.isJust && other.isJust ? Just(this.value(other.value)) : Nothing;
};

After:

//  Maybe#fantasy-land/ap :: Maybe a ~> Maybe (a -> b) -> Maybe b
Maybe.prototype['fantasy-land/ap'] = function(other) {
  return this.isJust && other.isJust ? Just(other.value(this.value)) : Nothing;
};

Could you provide reference to the 2nd definition here?  I'm suctioned to say that this follows no definition of Maybe, and the first is correct :: (a -> b) -> a -> b
Applying maybe instances:
Maybe (a->b) -> Maybe a -> Maybe b
Maybe a -> Maybe b -> Maybe b
Maybe a -> Maybe b -> Maybe a
Maybe [heh] i'm reading something wrong?

Could you provide reference to the 2nd definition here? I'm suctioned to say that this follows no definition of Maybe, and the first is correct :: (a -> b) -> a -> b

I'm not sure what you're asking, @oopdafp. Are you asking how I arrived at the type signature of Maybe#fantasy-land/ap? If so, I can answer your question.


Make istio ServiceEntries available in the Rancher UI

What kind of request is this (question/bug/enhancement/feature request):
feature request
Steps to reproduce (least amount of steps as possible):
Istio ServiceEntries are not available in the Rancher UI.
Would be nice to have them available like Gateways/DestinationRules/VirtualServices
Result:
n/a
Other details that may be helpful:
n/a
Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): 2.3.5
Installation option (single install/HA):
HA

This feature is very useful and hope to see it ASAP

Thanks, is there a way to perform the config on https://istio.io/docs/tasks/traffic-management/egress/http-proxy/ on the current UI / import?

As of 2.5.x, any k8s CRD is available in the Custer Explorer UI, so this should be available in the UI to be able to edit the yaml and make changes, but I'll transfer this to our new UI repo as a request to add in an easy form for this specific CRD for Istio.

As of 2.5.x, any k8s CRD is available in the Custer Explorer UI, so this should be available in the UI to be able to edit the yaml and make changes, but I'll transfer this to our new UI repo as a request to add in an easy form for this specific CRD for Istio.


Vet clinic database: create animals table

Description
This pull request includes the initial setup of the Vet Clinic project. The following tasks have been completed:

Created the schema.sql file to define the database structure.
Added SQL code to create the animals table with the specified columns.
Populated the data.sql file with sample data for the animals table.
Implemented SQL queries in the queries.sql file to retrieve specific information from the database.

Changes Made

Created schema.sql to define the database structure.
Added SQL code to schema.sql for creating the animals table.
Created data.sql to insert sample data into the animals table.
Implemented SQL queries for various criteria in queries.sql.

Screenshots

Checklist

[x] Created schema.sql.
[x] Added SQL code to create the animals table.
[x] Created data.sql and inserted sample data.
[x] Implemented SQL queries for specific criteria.
[x] Verified query results.
[x] Added query result screenshots.

Hi @Qoosim
I very much appreciate the time to look through my work.


Remove old workflow in website

@Spica-Vir, I hope you are well. I removed the old workflow, could you please check the website is still working properly before merging?
Thanks,
Bruno

@bcamino  Hi Bruno, sorry that I forgot it - many thanks for reminding me. I'll remove the corresponding sections in rst files and rebuild the html to keep the built object consistent with the source. I'll open a new PR later today


Let us pass flags when the window is created

This is the only way I found to make sure that everything is working properly, otherwise the window will not work properly if you try to add another flag (e.g. Qt.WindowStaysOnTopHint) from your window.
Code which isn't working:
class MyWindow(FramelessMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)

Now:
class MyWindow(FramelessMainWindow):
    def __init__(self):
        super().__init__(flags = [Qt.WindowStaysOnTopHint])

Note: I only tested FramelessMainWindow
Hope everything is fine for you :D

Thanks a lot! I have to check this before i merge this. It will take a while since i'm working right now. 😅

No problem, I'll wait! 😄

Great!!