Bibliography messes with authors and titles

Additionally to #482, typst also changes the capitalization of the book titles and does weird things to authors.
As German is a language with strict capitalization rules this is quite annoying, but it also happens in other languages.
apa
small (author 2023)
mixed (Author 2023)
large (Large Author 2023)
Mixed (2023)
Bibliography
Mixed author . (2023). Mixed title.
mixed Author. (2023). Mixed title.
Large Author. (2023). Large title.
small  author. (2023). Small title.

chicago-author-date
small (author 2023)
mixed (Author 2023)
large (Large Author 2023)
Mixed (2023)
Bibliography
Mixed author. 2023. Mixed Title.
Authormixed. 2023. Mixed Title.
Large Author. 2023. Large Title.
authorsmall . 2023. Small Title.

ieee
small [1]
mixed [2]
large [3]
Mixed [4]
Bibliography
[1] small author, “Small title,” 2023.
[2] mixed Author, “Mixed title,” 2023.
[3] Large Author, “Large title,” 2023.
[4] Mixed author , “Mixed title,” 2023.

mla
small (author 2023)
mixed (Author 2023)
large (Large Author 2023)
Mixed (2023)
Bibliography
Mixed author. Mixed Title. 2023.
Authormixed. Mixed Title. 2023.
Large Author. Large Title. 2023.
authorsmall . Small Title. 2023.

I tried to create a demo document which showcase all styles in comparison, but the compiler crashed whenever I added a second bibliography entry, so the demo only contains one and we need to manually change styles.

I have experienced this too. It is a bug (bugs) in hayagriva, Typst's processor for the bibliography. See a related issue here: https://github.com/typst/hayagriva/issues/39

Not sure if this is a separate issue: In some cases it's not only capitalization that is affected; some words in booktitle are also abbreviated or even omitted.

That's intentional because the IEEE citation style wants that.

The upstream bug https://github.com/typst/hayagriva/issues/39 is fixed now and hayagriva should now properly respect BibLaTeX's {} and its own verbatim: true.

Things now follow BibLaTeX's precedent and what English citation styles demand. This is of course still not ideal for other languages, but that's a separate issue. I'll leave #1709 open for now.


Add actor Id on the actor metadata records

/area runtime
Describe the feature
Currently the metadata api only retrieves type and count for actors. I propose to replace the count element with an array of actor ids

Seems like a reasonable change in my opinion. Following struct will change-
type ActiveActorsCount struct {
	Type  string `json:"type"`
	Count int    `json:"count"`
}

As far as a saw it is being used only in Metadata API.
WDYT @artursouza @berndverst @ItalyPaleAle

As a single actor host can potentially service 100k+ actor ids, this might become make calls to this API become very slow.
@francotiveron I'm interested in knowing why you'd like your app to know about an actor id that's hosted in it's Dapr sidecar? actors in Dapr are virtual which means actors get created on demand if they do not exist.

My thoughts:
Replacing count -- no. This is used in the Dashboard for example. It would also be a breaking change.
Adding Actor IDs:
I do not think this is a good idea. The API response could get huge, and this particular API is a multi-purpose API that needs to be responsive.
I too want to know what use case would be addressed by knowing the IDs of the active actors in this same pod / instance.

If this makes things easier, I don't need to know the list of all active actorids, but just check whether a given actorid is active or not, without activating it is it is not.
I am happy also if I can do that without calling the DAPR api, but just accessing the store (redis in my case) directly with StackExchange.Redis


Option to open in a new tab

Is it possible to add an option to open the PDF in a new page? Some pages don't work if you use the back button, and I have to fill the form completely again.

@dynamicbytes  @camayl  Which sites behave like this, do you have an example? Can't you just middle click the link to open it in a new tab?


[core] Improve styling solution

We should be pretty close to beta once this PR is merged.
Work In Progress

[x] Fix multiple theme handling in withStyles
[x] theme.md Show MuiThemeProvider nesting
[x] usage.md without MuiThemeProvider
[x] theme.md Show MuiThemeProvider in the introduction
[x] insertionPoint as material-ui
[x] css-in-js.md Update API
[x] css-in-js.md Show how to use JSS provider of react-jss
[x] server-side.md Update examples
[x] testing.md Update API
[x] createStyleSheet optional name
[x] write new tests

Issues
Closes #7238 as a merge issue
Closes #6106 as using a broadcast approach
Closes #6129 as supporting theme nesting
Closes #6130 as I don't think it's needed in the core, we can write HOC for that
Closes #6821 as having interoperability with react-jss and
JssProvider
Closes #7310 as making the name optional and use the displayName when the name is not provided.
Wins
Some features this upgrade is unlocking:

Better perfs
Shorter class names in production
Better readable class names in development
Optional MuiThemeProvider, hence, less onboarding friction
Simpler createStyleSheet API with an optional name
Theme nesting
Slower theme update but reliable
Interoperability with react-jss

It should be almost good. I need to write new tests and we should be able to merge it ☯ .

@kof @iamstarkov feel free to have a look at the new styling solution here. Hopefully, at some point, we will be able to rely on theming and react-jss. At least, we know have a great e2e test: the documentation of Material-UI.
@nathanmarks RIP of jss-theme-reactor.
I wouldn't have been able to finish this PR without you guys, thanks a lot for pushing css-in-jss forward!

That's a really great job @oliviertassinari , now we just have to wait for the release to enjoy it!

Will soon release it as the first beta version. Thanks. Hopefully, we won't have any issue. I believe those changes are game changer.

One problem I am looking at right now with the latest mui is that now we can't have different Jss instances used for mui and for react-jss. The reason one may need them is plugins setup which might be different for mui than for the user code.

@kof We can always implement our own JssProvider to allow such pattern, I'm not sure we should allow it, why not just asking for a minimum set of plugin than material-ui relies on?

My use case is to have a plugin which is applied to my user code but NOT to mui code, because mui will break in this case.

It is safer in general for mui to use an own jss instance I think.

because mui will break in this case.

We could do the comparaison with Babel, I have never seen a babel plugin breaking existing code, as far as I know. Maybe that's where the issue is?

It is safer in general for mui to use an own jss instance I think.

That's opening the door for inconsistency issues, can we still share the same sheetRegistry for SSR?
We can go into that direction too.

That's opening the door for inconsistency issues,

you are right, if our road is towards using react-jss originally from both of them it would be expected   both of them behave the same.
I am thinking right now  that we should be able to disable/enable specific plugins where needed on specific sheets.
So for e.g. if I don't want mui to use jss-isolate plugin, I pass option createStyleSheet(styles, {isolate: false}) just for mui sheets. That option is already supported btw.

@kof Yes, we can add this extra isolate: false change, that should be a one line change fix :).

Its just about passing any options user defines down to the style sheet I think.


Contact

Hello,
Is there any method that i can contact you?
Thanks

I have a ready-made solution, write to telegram @peppa100


Refactor Additional User Info on Client

Change Description
Brief (a few bullet points describing your changes, use full sentences and try to link lines in the code whenever needed)
Similar points as described on Server
Details (add details if your pull request is more complicated and harder to understand from the code alone)
API hit prevented.
Standard Qs (leave questions that do not apply blank)
If you broke behavior: Please describe what behavior you broke and how you inform people to not get stuck trying to use the old behavior.
If you used new dependencies: Did you add them to requirements.txt?
na
Who did you ping on Mattermost to review your PR? Please ping that person again whenever you are ready for another review.
@SamuelGabriel

Please do not mark comments/conversations as resolved unless you are the assigned reviewer. This helps maintain clarity during the review process.

Ready for merge


fix(content-block-simple): update footer spacing

Related Ticket(s)
https://jsw.ibm.com/browse/ADCMS-6496
Description
Adds margin-block-start to the footer wrapper in the content-block-simple element.
Changelog
Changed

fix content-block-simple spacing

@andy-blum I can't seem to approve Percy. I see the "Approve build" button, but its disabled 😕 . Can you?


Re-create bin directory for omero wrapper

As a result of https://github.com/ome/openmicroscopy/pull/6200,
the bin directory is no longer being created leading to a build
failure in https://github.com/ome/omero-server-docker/pull/41

Tests with rc1 passed and the temporary commit https://github.com/ome/omero-server-docker/pull/41/commits/480ffcb57053cf954eba1289b6635a3d8446669f is also green. Merging and bumping the sha1 in the requirements.yml of omero-server-docker.


Re-enable cross-build transform cache

Re-introduces some of the changes of #15643.
We only should keep the artifact transform caches in-memory between builds for transforms with outputs within Gradle's immutable caches. Artifacts outside of the immutable caches are not guaranteed to be there on the next build, so we can't keep those in the cross-build cache.

cc: @gradle/execution

Independent of this issue, we should move workspace of transforms of file dependencies to the project directory, see https://github.com/gradle/gradle/issues/15737. Then they will never in the cross-build cache.

Independent of this issue, we should move workspace of transforms of file dependencies to the project directory, see https://github.com/gradle/gradle/issues/15737. Then they will never in the cross-build cache.


dpkg import source plugin

See original issue on GitLab
In GitLab by [Gitlab user @knownexus] on Feb 8, 2018, 17:19
A source plugin for importing externally built dpkg content.
Allowing the use of pre-built packages in place of having BuildStream re-build them

In GitLab by [Gitlab user @sstriker] on Feb 8, 2018, 20:58
changed the description

In GitLab by [Gitlab user @knownexus] on Feb 15, 2018, 16:21
So it looks to me like this is going to be a source that treats .debs as though they were any other source

In GitLab by [Gitlab user @tristanvb] on Feb 15, 2018, 17:06
I think this is a duplicate of #10

In GitLab by [Gitlab user @knownexus] on Feb 15, 2018, 17:09
Ah yes, i thought there wasnt one,
will close this issue

In GitLab by [Gitlab user @knownexus] on Feb 15, 2018, 17:09
closed


Camera Resolution - Picture feels compress not getting width access

I set the resolution and viewing it in tablet horizontally, my image feels compressed, I used other resolution too nothing worked so far, can you suggest what can I do quickly to resolve this. Can I somehow tweak with height and width ?

When using normal camera package it covers width and height in a well


added toNow filter

@ronky thanks for the PR!
Can you please also add the relevant unit-tests?
See the Contributing Guide for more information
Thanks!

Closing due to inactivity (no tests in original PR)


Feat/mesh 3.3.0 (MSDK-657, MSDK-664, MSDK-669, MSDK-670)

:tada: This PR is included in version 10.0.0-alpha.1 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 10.0.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Added minesweeper (cryptojacking detecter)

Added minesweeper to the powerful plugins list. This plugin quickly detects instances of cryptojacking being included in pages on a target's website allowing pentesters to more rapidly let clients know so they can start an incident response.

Thank-you! Appreciate the quick addition!


Vulnerabilities

I am using cpanel to host my bot, while installing (npm install) the bot-cmd I got 80 Vulnerabilities and I manage to fix 78 of them with npm audit fix, but those 2 remain. Are they crucial? How should I deal with them?

It looks like this will hopefully be fixed in express-hbs soon:
https://github.com/barc/express-hbs/pull/165
You can't remove this library, as it is the templating system.


I am running ROS2 Humble on Ubuntu 22.04. The controller I got with the standard turtlebot 4 is not switching on even after keeping it on charge for 2 hours

Please provide the following information:

OS: (e.g. Ubuntu 20.04)
ROS Distro: (e.g. Galactic)
Built from source or installed:
Package version: (if from repository, give version from sudo dpkg -s ros-$ROS_VERSION-turtlebot4-PACKAGE_WITH_ISSUE, if from source, give commit hash)

Expected behaviour
A clear and concise description of what you expected to happen.
Actual behaviour
A clear and concise description of what you encountered.
To Reproduce
Provide the steps to reproduce:

run something
launch something else
see the error

Other notes
Add anything else you thing is important.

Hello, when charging the controller, are you using an AC outlet or connecting it to the USB port of a computer? Does the light on the top of the controller come on and turn yellow?

This issue is being closed due to inactivity. If you are still experiencing the issue, feel free to reopen this ticket when you are ready to continue the troubleshooting process.


Expected Behavior
After going through the site setup steps, I run npm run dev, then go to the local host site generated in the output, I should see the example site.
Steps to Reproduce

Run command npm run dev
Go to //localhost:1313/ in a web browser

Code Reproduction URL
no current repo
Additional Information
I get "Your file couldn't be accessed" instead of the example site.

 Thank you. Glad it was so simple lol


Meteor urigo:angular-utils-pagination pagination not displayed

Hello,
I have been following the angular-meteor basic tutorial and I cannot get the pagination using this module to be displayed.

I've installed and added angular.module('socially',['angular-meteor', 'ui.router', 'angularUtils.directives.dirPagination']); on the app.js

I'm using the pagination directive  on the proper view: client/parties/views/parties-list.ng.html

And added the controls at the end of the

The list of items gets displayed without problems, I see that if I add more items the list displays the items as it should so that makes me believe that the subscription parameters and the suscription itself its ok.
$meteor.subscribe('parties', {
limit: parseInt($scope.perPage),
skip: parseInt(($scope.page - 1) * $scope.perPage),
sort: $scope.sort
});
If I change the items per page the list gets updated properly however, for some reason the items are not displayed at all.
Thanks in advance for shedding some light on my path.

The tutorial was missing to include the count variable, therefore the pagination is not displayed. I didn't noticed until I more further on the steps.


Add GitHub Issue Template for docs issues

Current Behavior
There is no template for documentation issues - https://github.com/layer5io/meshery/tree/master/.github/ISSUE_TEMPLATE
Desired Behavior
A docs template should exist, be assigned the docs label and have these resources listed:
---
**Contributor Resources**
- [Meshery documentation site](https://meshery.layer5.io/docs/)
- [Meshery documentation source](https://github.com/layer5io/meshery/tree/master/docs)
- [Instructions for contributing to documentation](https://github.com/layer5io/meshery/blob/master/CONTRIBUTING.md#documentation-contribution-flow)

I tried to attack this one in PR #420

So very much appreciated, @welenofsky. Quality work. 👍


[prosiebensat1] Add support for playlists

on "the-voice-of-germany.de", a site of prosiebensat1 group..
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['-v', 'http://www.the-voice-of-germany.de/playlists/staffel-4/folge-2-blind-audition-ii']
[debug] Encodings: locale ISO-8859-1, fs ISO-8859-1, out ISO-8859-1, pref ISO-8859-1
[debug] youtube-dl version 2014.10.15
[debug] Python version 2.7.3 - Linux-3.10.36-armv6l-with-debian-7.5
[debug] Proxy map: {}
[prosiebensat1] playlists/staffel-4/folge-2-blind-audition-ii: Downloading webpage
ERROR: Unable to extract clip id; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type  youtube-dl -U  to update.
Traceback (most recent call last):
File "/usr/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 524, in extract_info
ie_result = ie.extract(url)
File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 193, in extract
return self._real_extract(url)
File "/usr/bin/youtube-dl/youtube_dl/extractor/prosiebensat1.py", line 186, in _real_extract
clip_id = self._html_search_regex(self._CLIPID_REGEXES, webpage, 'clip id')
File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 434, in _html_search_regex
res = self._search_regex(pattern, string, name, default, fatal, flags)
File "/usr/bin/youtube-dl/youtube_dl/extractor/common.py", line 424, in _search_regex
raise RegexNotFoundError('Unable to extract %s' % _name)
RegexNotFoundError: Unable to extract clip id; please report this issue on https://yt-dl.org/bug . Be sure to call youtube-dl with the --verbose flag and include its complete output. Make sure you are using the latest version; type  youtube-dl -U  to update.

Playlists are now supported.


Contextual Command Bar

Platforms Impacted

[x] iOS
[ ] macOS

Description of changes
Implement Contextual Command Bar
Verification

Pull request checklist
This PR has considered:

[x] Light and Dark appearances
[x] VoiceOver and Keyboard Accessibility
[x] Internationalization and Right to Left layouts
[x] Different resolutions (1x, 2x, 3x)
[x] Size classes and window sizes (iPhone vs iPad, notched devices, multitasking, different window sizes, etc)

Microsoft Reviewers: Open in CodeFlow

It would aldo be great to add a screenshot/gif/video of the intended control to the PR, so we have a visual :)

The voice over accessibility doesn't honor left to right order. for the scroll view. A person using accessibility tools won't be able to discover that tools scroll horizontally or discover additional items.
Expected behavior:
Voice over control should scroll to include all items or assert that there are additional items not visible on the screen.
https://user-images.githubusercontent.com/63682282/103813844-94728300-5015-11eb-9448-9f6187313144.mov

The voice over accessibility doesn't honor left to right order. for the scroll view. A person using accessibility tools won't be able to discover that tools scroll horizontally or discover additional items.
Expected behavior:
Voice over control should scroll to include all items or assert that there are additional items not visible on the screen.
https://user-images.githubusercontent.com/63682282/103813844-94728300-5015-11eb-9448-9f6187313144.mov

The voice over accessibility doesn't honor left to right order. for the scroll view. A person using accessibility tools won't be able to discover that tools scroll horizontally or discover additional items.
Expected behavior:
Voice over control should scroll to include all items or assert that there are additional items not visible on the screen.
Screen.Recording.2021-01-06.at.11.48.26.AM.mov

I think you chose the wrong target in accessibility inspector. It should be the simulator rather than your Mac. The accessibility support of scroll view is provided by iOS itself and doesn't require additional code from developers.

The voice over accessibility doesn't honor left to right order. for the scroll view. A person using accessibility tools won't be able to discover that tools scroll horizontally or discover additional items.
Expected behavior:
Voice over control should scroll to include all items or assert that there are additional items not visible on the screen.
Screen.Recording.2021-01-06.at.11.48.26.AM.mov

I think you chose the wrong target in accessibility inspector. It should be the simulator rather than your Mac. The accessibility support of scroll view is provided by iOS itself and doesn't require additional code from developers.

The voice over accessibility doesn't honor left to right order. for the scroll view. A person using accessibility tools won't be able to discover that tools scroll horizontally or discover additional items.
Expected behavior:
Voice over control should scroll to include all items or assert that there are additional items not visible on the screen.
Screen.Recording.2021-01-06.at.11.48.26.AM.mov

I think you chose the wrong target in accessibility inspector. It should be the simulator rather than your Mac. The accessibility support of scroll view is provided by iOS itself and doesn't require additional code from developers.

Thanks for addressing these comments, I verified the accessibility voice over pass in device and it works as expected !!

The voice over accessibility doesn't honor left to right order. for the scroll view. A person using accessibility tools won't be able to discover that tools scroll horizontally or discover additional items.
Expected behavior:
Voice over control should scroll to include all items or assert that there are additional items not visible on the screen.
Screen.Recording.2021-01-06.at.11.48.26.AM.mov

I think you chose the wrong target in accessibility inspector. It should be the simulator rather than your Mac. The accessibility support of scroll view is provided by iOS itself and doesn't require additional code from developers.

Thanks for addressing these comments, I verified the accessibility voice over pass in device and it works as expected !!


Update source product_name according to UX.

according to UX: https://docs.google.com/document/d/1cE_sG6IdBW-cHCODjplbWzDldHDhsbW6Xyn--XQqNxQ/edit?ts=5cc0b425#heading=h.wqa0bh1el605

This will need a migration, right?

@carbonin we re-seed on deployment so this should be sufficient

Ah, okay. Great!


Fix event_id_counter

This PR fixes the issue #19

You still need to fix the formatting.

You still need to fix the formatting.

Which formatting? You mean the version? If yes, I've tried but I don't know how it works.

You still need to fix the formatting.

Which formatting? You mean the version? If yes, I've tried but I don't know how it works.

I mean the formatting of the code (see failing check).

You still need to fix the formatting.

Which formatting? You mean the version? If yes, I've tried but I don't know how it works.

I mean the formatting of the code (see failing check).

I don't see the formatting problem, sorry. Can you show me or fix it? Please


php dic not work

i installed this plugin,  add dict path, but when i write sample php code, the dict seems not work, here are the steps:

the dict was copyed from auto-complete, is where something wrong with me?

it seems var company-dict-dir not correct, let me check it


3D Convolution

Any plans on supporting 3D Convolutions ? They are extremely important in the medical imaging community.

Yep! 2D convs are already in there so doing 3D should be straightforward

As of PR #53 Conv3D is merged! Thanks @NewBornRustacean !


Pad2Observable

@alexandru  Please by no means merge this PR, as test still fails from time to time. The other thing I kind of dislike is the boxing and unboxing of items emitted by child observables using Coeval in the implementation. Should we do something about it ?

@leakyabstraction what's the status on PadObservable? Does it work, does it need anything else?

@leakyabstraction closing this for now, as I'm cleaning up the issue tracker. If you want to keep working on this, then you can re-open another PR.


eslint: Update to 4.x

This is the latest stable version of eslint, as per https://david-dm.org/zarel/Pokemon-Showdown?type=dev

I'm dumb; there is a lot more to this :|

Is this something that's actually wanted, though?

We'd need to piecewise decide what to do about each error.

Every other one I agree with eslint on.

Overall, I think no-useless-escape is probably good, especially since it standardizes code.

So yes, feel free to fix every one of these errors.

/home/travis/build/Zarel/Pokemon-Showdown/chat-plugins/datasearch.js
...
  1372:41  error  Unnecessary escape character: \-  no-useless-escape

descWords = descWords.replace(/super[\-\s]effective/g, 'supereffective');

I mean, yes, it's unnecessary here, but I feel like ESLint makes a mistake complaining about it, as whether - needs to be escaped in character groups is pretty context sensitive. I sorta would prefer code to show it didn't want to use a range (is there a lint in ESLint for extremely weird ranges?).
That said, because the lint sounds useful, and I don't think code with \- in groups will be changed often, I think it's fine to "fix" those instances.

Personally, I think unnecessary escapes aid readability in regexes... Overall, I think no-useless-escape is probably good, especially since it standardizes code.

So, should I make an exception for regexes?

No, I think regexes are good. I personally put - at the end of a [...] block and don't escape it. We may just standardize on that.

Like, did you miss my comment where I said "Overall, I think no-useless-escape is probably good, especially since it standardizes code" and "So yes, feel free to fix every one of these errors"?
And xfix's comment where he said "That said, because the lint sounds useful, and I don't think code with \- in groups will be changed often, I think it's fine to 'fix' those instances"?

No, I just misinterpreted it, sorry.
I'll work on this as soon as I have time.

This has been superseded by https://github.com/Zarel/Pokemon-Showdown/pull/3657


Store configuration as text file in .config

Is your feature request related to a problem? Please describe.
I'd like to sync my config using Git or a dotfile manager or similar
Describe the solution you'd like
The config should be stored in .config and be suitable for dotfiles tools (not binary)
Describe alternatives you've considered
None
Additional context
None

You can export your config from Configuration > General > Export.
Same with theme in Theming > General  > Export

I know that, but this is an extra step :(

Maybe I can allow users to define a path to where the config is saved. By default it's in cache but maybe you want to store it in ~/.config/hyprpanel/options.json. Would that suffice? That way you can simply sync you hyprpanel directory.

That would be fantastic! :)

Yesss, loking forwards to see that!

Just crossed my mind, it would be awesome if this had dynamic application on save, like hyprland.conf does. Waybar you have to manually kill it and restart it every time you edit the file to see the change, if it's possible that would be super nice here too.

Looking forward to this.


UI code is big, separate ? componentize?

Idea

DirectEdit related code as action-direct-edit.coffee
ExcludeFile related code as action-exclude-file.coffee
When related action was invoked, auto-require and fire action.

So it can be generalized, abstracted as UI-action class?

decided to postpone after some experiment.
Still early to introduce this big change.
Before this, I want to experiment

header as block decoration( revival )
use gutter for line, column header

After these experiment go well, UI code should be get shorter, so separation might not be necessary.


Update mailmap

This change is

Merging this even if the Travis build is still pending as AppVeyor succeeded and this chnage is not supposed to affect the build in any way.


Decorators are not covered when replacing decorated definitions

Problem
Replace() action depends on the positions that are present in the original AST node. But for definitions like FunctionDef (and all other decorated ones), the lineno points to the introducer keyword (like def in FunctionDef) instead of the first decorator. So when we are replacing the whole function, we leave decorators behind which causes a lot of problems. We should account for this in Replace (and others where we care about the position).
Example Source Code
import ast
from refactor import Rule, Replace, run, common

class MakeFunctionsAsync(Rule):
    def match(self, node: ast.AST) -> Replace:
        assert isinstance(node, ast.FunctionDef)

        new_node = common.clone(node)
        new_node.__class__ = ast.AsyncFunctionDef
        return Replace(node, new_node)

if __name__ == "__main__":
    run([MakeFunctionsAsync])

def foo():
    pass

@deco
def bar():
    pass

We need this feature as well, given we have some manual while loop based retry code can be converted to a retry decorator

Adding some observation (bear in mind I may not fully understand the issue). When comparing the original FunctionDef to the updated AsyncFunctionDef they seem to have the same decorator_list:
FunctionDef(
    name='test_xxx',
    args=arguments(
        posonlyargs=[],
        args=[
            arg(arg='self'),
            arg(arg='mocked_api')],
        kwonlyargs=[],
        kw_defaults=[],
        defaults=[]),
    body=[
    ...
    decorator_list=[
        Call(
            func=Name(id='aioresponses', ctx=Load()),
            args=[],
            keywords=[])])

and
AsyncFunctionDef(
    name='test_xxx',
    args=arguments(
        posonlyargs=[],
        args=[
            arg(arg='self'),
            arg(arg='mocked_api')],
        kwonlyargs=[],
        kw_defaults=[],
        defaults=[]),
    body=[
    ...
    decorator_list=[
        Call(
            func=Name(id='aioresponses', ctx=Load()),
            args=[],
            keywords=[])])

But
@@ -181,72 +180,61 @@
         return data

     @aioresponses()
-    def test_xxx(self, mocked_api):
+    @aioresponses()
+    async def test_xxx(self, mocked_api):


The card is displayed in yellow for transaction that already withdraw

Pre-condition:
The user is logged in
Steps:

Open the homepage https://ewallet.gooddollar.org/AppNavigation/Dashboard/Home
Tap the "Send" button
Enter the recipient name and tap the "Next" button
Enter the amount and tap the "Next" button
Enter the cause and tap the confirm sending link
Open a payment link from another user
Pay attention to the screen

Reproduced on:

Dev environment
eWallet environment

Attachment:
https://www.screencast.com/t/uGaLqF8Khm
Samsung Galaxy S8+ // Android 7.0
iPhone 6S // iOS 12.4.1
Desktop: Google Chrome

Not reproduced after #1034 fix.


Add taxonomy_base='null' option to support using the full taxonomy repo contents

Add a new null symbolic value taxonomy_base, to allow users to request using the entire taxonomy contents as input to the data generation pipeline.
The reason for this change is the to enable an end to end flow from generate -> train -> evaluate with a complete taxonomy repo.  With the rest of the pipeline as written, using the full taxonomy repo is how a user would start with a base model and be able to add a full taxonomy on top.  You can also think about this in terms of maturity along a git pipeline.  A full pipeline run you would expect to be run further down an integration chain where the taxonomy had already been committed, pushed, and reviewed.
Note: If we do later want to enable a taxonomy diff scenario for the full pipeline, we would need to handle the data mixing from previous layers of the taxonomy as part of the pipeline.
We expect users will use this option in conjunction with the full pipeline. For the simple pipeline, the use case is more about making quick changes to the taxonomy and getting a relatively quick turnaround on understanding if the change made a difference.  Which is why the diff approach makes sense there.
A full user flow might something look like:

Make change to the taxonomy on local hardware
ilab taxonomy diff
ilab data generate --pipeline simple
ilab model train
ilab model chat # to check out the results
commit taxonomy changes and push
pull taxonomy onto heavier duty hardware
ilab data generate --pipeline full --taxonomy-base null
ilab model train
ilab model evaluate

@danmcp If you want CI to also test the full pipeline, you'll need to manually trigger the job at https://github.com/instructlab/sdg/actions/workflows/e2e-nvidia-a10g-x4.yml for this PR.
With that said, I just completed two runs of the full pipeline locally with your change using a skeleton sdg taxonomy that just contains two skills and a single knowledge leaf node. It generated data for all 3 leaf nodes on the first run, as expected. On the second run, it loaded all data from checkpoints and didn't regenerate. So, at least from that basic check, it appears this is working as intended on the full pipeline.

It looks like that full E2E test I referenced no longer starts successfully - not sure what happened there, but it's unrelated to this change.

I'd love a bit more explanation in the PR description and/or commit message

Done!

I don't love overloading the simple pipeline here to swap between diff and full behavior. Ideally that parameter would only control the pipeline itself - specifically the pipeline config or alias referenced. I understand it's a compromise for the sake of time, so not holding up approval for that but do think we should consider revisiting this in the future

Agree, but I'm a bit more reluctant to defer resolving this to the future - I'm more worried about introducing some really weird semantics that we'll have to retain compatibility for
The API is:
def generate_data(
    ...,
    taxonomy: Optional[str] = None,
    taxonomy_base: Optional[str] = None,
    ...,
    pipeline: Optional[str] = "simple",
):

The taxonomy and taxonomy_base parameters control what taxonomy "leaf nodes" are used as input, and pipeline controls what data generation steps to perform on that input - we really should maintain that separation
And then on the UX side in instructlab/instructlab, consider side-effects like if you're running data generate --pipeline!=simple means that taxonomy_base is ignored? It's all very messy and difficult to explain to users.
On the other hand, taxonomy_base is the already a valid way of controlling "just my taxonomy contributions" vs "everything in the taxonomy tree"
And if e.g. users of the full pipeline should use the entire taxonomy tree, then I'd prefer to document how to use taxonomy_base for that for now, and perhaps improve that UX in future. Also, if downstream distributions want to default to full and "entire taxonomy tree", they can do so in their default configs with taxonomy_base.
The main downside is the fragility of using a commit SHA1 ID in docs or default configs - there's all sorts of scenarios where that SHA1 ID might change, e.g. if the user rebases the taxonomy tree or uses the weird ilab config init --min-taxonomy option
So IMO we can add a simply symbolic value for taxonomy_base to represent "empty taxonomy" - going to do some more digging before recommending something specific because this is not straightforward in git:

We could have an empty commit published, e.g. origin/empty and use that ... I suspect we'd actually need to rebase onto it to ensure it gets cloned though, and it's probably not much less fragile
4b825dc642cb6eb9a060e54bf8d69288fbee4904 is "well-known" as a SHA1 ID for an empty tree, which is the result of with git hash-object -t tree /dev/null - so you can do a git diff against that.  I don't see a way of using git diff-tree to get a diff that includes the contents of the initial commit
I'm going back looking at adding support for taxonomy_base=4b825dc642cb6eb9a060e54bf8d69288fbee4904

@markmc If we have a special symbolic value for taxonomy_base to signify no base (ie use the entire taxonomy), then it would be pretty straightforward to check for that value and divert to the new  _get_taxonomy added in this PR as opposed to doing the diff at all when that special value is used. Still going down the diff route and finding a special sha may be more confusing to users than documenting that a value of none, empty, empty_tree, or something along those lines triggers the full taxonomy tree to run.

I'm going back looking at adding support for taxonomy_base=4b825dc642cb6eb9a060e54bf8d69288fbee4904

See #244

@markmc If we have a special symbolic value for taxonomy_base to signify no base (ie use the entire taxonomy), then it would be pretty straightforward to check for that value and divert to the new  _get_taxonomy added in this PR as opposed to doing the diff at all when that special value is used. Still going down the diff route and finding a special sha may be more confusing to users than documenting that a value of none, empty, empty_tree, or something along those lines triggers the full taxonomy tree to run.

Yep, that's a really great point, Ben
And the code already has a case where it's getting a list of files without diff - untracked files (it took me a while to spot this, honestly!)
So, yes - I'll update Dan's patch to support taxonomy_base=null
I'm suggesting null because "the NULL tree" is at least mentioned as a concept in git diff-tree

Just pushed an untested commit with that change in approach - looking at adding a unit test now, but maybe you could give it a while Ben?

Just pushed an untested commit with that change in approach - looking at adding a unit test now, but maybe you could give it a while Ben?

I tested your initial change (before the more recent commits to add a test and other cleanup) and the logic is working well for me locally - --taxonomy-base null used my entire taxonomy tree as expected, and other values used the git diff as expected.

Thanks Ben. I've also updated the PR title and description to reflect this approach.
Will wait for @danmcp and @n1hility before merging

The only part I am a bit concerned about is when coming from instructlab config
taxonomy_base: 'null'

will work and
taxonomy_base: null

will not. null ends of getting the default of origin/main. The logic is still sound, but might be confusing.

Yeah, that's super confusing. Good catch. Will we go for empty instead?

Ahh yes that's a really good catch that null has a special meaning in YAML and won't just automatically become a string with value null without quotes.

Ok, updated to use taxonomy_base=empty :+1:

e2e passed before, confident latest changes are safe


alignment_procedure crashes when both eyes are in the same position

When looking at a face from the side, the landmark detector may give the same position for both eyes.
In that case, retinaface.commons.postprocess.alignment_procedure crashes with UnboundLocalError: cannot access local variable 'angle' where it is not associated with a value.
Some IDEs also highlight this problem:

Here is a minimal example to reproduce the problem:
import numpy as np
from retinaface.commons import postprocess

postprocess.alignment_procedure(np.zeros([123, 123, 3], dtype=np.uint8), (10, 10), (10, 10), (33, 33))

Of course, it would be nice if pylint would catch such problems already in the CI.
I've opened a StackOverflow question asking if enabling such a check is possible.

Good spot! Do you mind to share your input image? Would be easier to fix if i can reproduce.

It happened while processing a video stream. I no longer have the problematic frame, but I'll try to reproduce one by moving in front of my webcam. :man_dancing:

I've tried, but so far failed to align my head in a pose to fulfill the required condition.
Hope you can maybe fix it even without such an example image.

No problem, we can still fix it.

@Dobiasd if we set an initial 0 value to angle in alignment produce function, then this will be sorted.
Do you mind to create a PR for this? I would like to see your name as a contributor because you found this issue.
https://github.com/serengil/retinaface/blob/master/retinaface/commons/postprocess.py#L33

FYI:
While pylint is not able to catch such bugs in the linter step, mypy (with --enable-error-code possibly-undefined) is. :tada:
So in case you're interested in preventing such issues automatically in the future, using mypy could be an option. :slightly_smiling_face:

Oh no, very satisfied with pylint, do not want to switch anything else :)

Ah, no, I did not mean to replace pylint with mypy, but adding mypy to the CI. mypy is a type checker and solves different problems than pylint (a linter) does. Not only our team at work, but also me in my private projects (example) use both in conjunction, and I like this combination a lot. :slightly_smiling_face:


Fix typo

Thanks, I fixed the typo by hand since your pull request was merging into master (it should have been merging into the develop branch).

Oh, sorry, but good that it's fixed now! :)


Update toolkit-provider.doc.stories.mdx

Made some edits to the content.

What about ‘…if you use nested instances of ToolkitProvider…’?
From: Josh Wooding<EMAIL_ADDRESS>Date: Wednesday, 16 Nov 2022, 5:04 pm
To: jpmorganchase/uitk<EMAIL_ADDRESS>Cc: Lane, Sion (CIB, GBR<EMAIL_ADDRESS>Comment<EMAIL_ADDRESS>Subject: [EXTERNAL]Re: [jpmorganchase/uitk] Update toolkit-provider.doc.stories.mdx (PR #658)
@joshwooding commented on this pull request.

In packages/core/stories/toolkit-provider.doc.stories.mdxhttps://secureweb.jpmchase.net/readonly/https://github.com/jpmorganchase/uitk/pull/658#discussion_r1024274651:

-Note: Portal is not yet ready for release, the notes below are placeholder only. Need something to position the portal example
+AriaAnnouncer will be injected automatically inside the root element when ToolkitProvider is wrapping the app. If you use
+nested ToolkitProviders, these will not inject further instances of AriaAnnouncer.
⬇ Suggested change
-nested ToolkitProviders, these will not inject further instances of AriaAnnouncer.
+nested ToolkitProviders, these will not inject further instances of AriaAnnouncer.
Have to figure out what we do with ToolkitProviders here does it get back ticks or is the s excluded.
—
Reply to this email directly, view it on GitHubhttps://secureweb.jpmchase.net/readonly/https://github.com/jpmorganchase/uitk/pull/658#pullrequestreview-1182987991, or unsubscribehttps://secureweb.jpmchase.net/readonly/https://github.com/notifications/unsubscribe-auth/AY6I7NJXJLLZKIJ5XXZJLGTWIUHYTANCNFSM6AAAAAASAYVQGA.
You are receiving this because you commented.Message ID<EMAIL_ADDRESS>This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, malicious content and monitoring of electronic messages. If you are not the intended recipient, please delete this message and notify the sender immediately. Any unauthorized use is strictly prohibited.


Implement std::fmt::Debug for ImageData

Stumbled over this today, bit annoying to not have it.
Not 100 percent sure about the format.
I chose default struct formatting for convenience, which might be a tiny bit misleading because the fields are private and I used more descriptive names.

Deriving would include the binary data, which would render stdout pretty much unusable.

right, makes sense. :)


Building error when kernel filename containing special characters

Hi all,
A building error occurs when renaming the kernel binary and building
cp example-kernel/target/x86_64-example-kernel/debug/example-kernel example-kernel/target/x86_64-example-kernel/debug/example-kernel.elf

KERNEL=example-kernel/target/x86_64-example-kernel/debug/example-kernel.elf KERNEL_MANIFEST=example-kernel/Cargo.toml cargo xbuild --release --features binary

Error: rust-lld: error: undefined symbol: _kernel_start_addr.
It seems that build.rs does not redefine the symbols correctly, i.e., _binary_objfile_* set by objcopy, when objfile name contains the special character ..

Thanks for reporting this!
I created a fix in #94. Could you verify if it works for you?

Hi @phil-opp,
Great! It works for me now.

Thanks for verifying!


multilockscreen: 1.1.0 -> 1.2.0

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 127715 at 78a43484 run on aarch64-linux 1

1 package built successfully:

multilockscreen

1 suggestion:

warning: missing-phase-hooks
installPhase should probably contain runHook preInstall and runHook postInstall.
Near pkgs/misc/screensavers/multilockscreen/default.nix:30:3:
   |
30 |   installPhase = ''
   |   ^


frontsite: book details

When displaying a book, the user should be able to see:

book metadata
how many copies available
how many loans
how many reservations
the next possible date he can loan the book

the statistics above available in the document.circulation
Tasks:

[ ] identify required fields of metadata in the UI
[ ] implement the book details page

NOTE: it would be nice if we have a cover fetch


Training Code Release

Thank you for your amazing work!
May I ask when the training code will be released?

Thank you for your amazing work! May I ask when the training code will be released?

Really sorry for the delay before! I planned to release it months ago, but it was always trapped by my new paper submission and graduation here. Luckily the good news is that it will be definitely released after ICLR submission (end of this month)! Hope you can understand. Thank you for your patience and being looking forward to it! :)

Thank you for your amazing work! May I ask when the training code will be released?

Really sorry for the delay before! I planned to release it months ago, but it was always trapped by my new paper submission and graduation here. Luckily the good news is that it will be definitely released after ICLR submission (end of this month)! Hope you can understand. Thank you for your patience and being looking forward to it! :)

Sorry to bother you, but I'd like to ask when the training code will be released


Generic PresetWidget

Similar to #123 but to generate QComboBox for micro-manager groups and presets.

@tlambert03 I think you can have a look...

@tlambert03 I have also added this _highlight_if_prop_changed method. I think it can be a starting idea but I wanted to know what you think.
It is linked to the PropertyChanged signal and it highlights the combobox text in magenta if a property contained in the currently selected preset is changed (similar to micromanager when the combobox becomes empty)...
https://user-images.githubusercontent.com/70725613/156903048-db01086e-d40c-4e72-bdc0-a1b0ae06bf96.mov

It is linked to the PropertyChanged signal and it highlights the combobox text in magenta if a property contained in the currently selected preset is changed (similar to micromanager when the combobox becomes empty)...

amazing - I like it a lot more than it going blank. Could also consider adding  we also add a tooltip explaining whats happening  so people won't be confused

@tlambert03 I have also added this _highlight_if_prop_changed method. I think it can be a starting idea but I wanted to know what you think.

I do like it!  but since it's not specific to a preset widget, it's a bit of PR feature-creep and I think it should go in another PR.  I can imagine us wanting to re-use this pattern elsewhere (show that an error has occurred), so i don't think it should be a method on this specific widget.  Let's address in another PR

I do like it! but since it's not specific to a preset widget, it's a bit of PR feature-creep and I think it should go in another PR. I can imagine us wanting to re-use this pattern elsewhere (show that an error has occurred), so i don't think it should be a method on this specific widget. Let's address in another PR

I moved the _set_wdg_color method in _util.py. It can be used with any QWidget and it changes the color.

I do like it! but since it's not specific to a preset widget, it's a bit of PR feature-creep and I think it should go in another PR. I can imagine us wanting to re-use this pattern elsewhere (show that an error has occurred), so i don't think it should be a method on this specific widget. Let's address in another PR

:+1: this would fit really naturally into #144. Otherwise @fdrgsp is this ready for a full review?

Yes you can have a look!👍🏻

Instead you can just use the configGroupChanged signal.

When I started making this PR I tried to use the configGroupChanged signal but it did not work well...probably I did something wrong...

configGroupChanged signal but it did not work well.

do you remember the issue? I think that a combination of that wiht the setSignal could be good

do you remember the issue? I think that a combination of that wiht the setSignal could be good

I remember that it was not changing/sending the signal for all the presets...but I need to work on it again to remember.
So you are suggesting to only use the configGroupChanged and the configChanged signals instead of the configSet and propertyChanged signals, correct?

@ianhi I tried to do the following and it might be good if you repeat this as well. I'm not sure if I'm doing something wrong but as I mentioned above I don't get any configGroupChanged when I change properties...
Add this in the init
@self._mmc.events.configGroupChanged.connect
 def _test(group: str, preset: str):
     print('group:', group, "preset:", preset)

and then in ipython (or where you normally do that):
from micromanager_gui._core import get_core_singleton
from micromanager_gui._core_widgets._presets_widget import PresetsWidget
from pathlib import Path

mmc = get_core_singleton()
mmc.loadSystemConfiguration()

p = PresetsWidget("Channel")
p.show()

mmc.setConfig("Channel", "DAPI")

the Channel preset DAPI has 'Dichroic', 'Label', '400DCLP'
if you change this property:
mmc.setProperty('Dichroic', 'Label', 'Q585LP')
there is no configGroupChanged signal emitted (DAPI in the combobox turns magenta because of _highlight_if_prop_changed method).

ahhhh @fdrgsp  you're totally right - my bad!
The behavior of that signal is much more complicated than I remembered. There's some decently long discussion of this over here: https://github.com/micro-manager/mmCoreAndDevices/issues/25 Re-reading that and looking at the implementation I still think that there needs to be a new signal added in the C++. It seems that the device adapters are responsible for calling the function that triggers this signal and they don't do that consistently. e.g. as you noticed with the demo camera it only seems to trigger for 3 of it's properties. This could be a nice opportunity to prototype a signal in pymmc+ and eventually upstream it to core.
Having gone down that rabbit I agree that your approach of checking the properties is the best way to detect a preset change. There's maybe a little bit of question as to where it should live (maybe on core?) but for this PR at least I think it's fine to have each preset widget listen.
Though I do think that your loop needs two things still:

Check all presets for the list of devices
When the property changes we should not always color the text. Sometimes a property change will swap us to a valid config group. In that case we should change the displayed version to reflect that.

For the logic of 2 it may be helpful to look at the mmcore implementation
You can capture this behavior in a test (with changing the comments to appropriate asserts) by building on your existing test for that group:
core.setConfig("Camera", "HighRes") # we match HighRes preset
# text: HighRes
# color: black
core.setProperty("Camera", "Binning", "2 # now we don't match any preset
# text: HighRes
# color: magenta
core.setProperty("Camera", "BinDepth", "10") # now we will fully match the MedRes preset
# text: MedRes
# color: black

Though I do think that your loop needs two things still:

Check all presets for the list of devices
When the property changes we should not always color the text. Sometimes a property change will swap us to a valid config group. In that case we should change the displayed version to reflect that.

core.setConfig("Camera", "HighRes") # we match HighRes preset
# text: HighRes
# color: black
core.setProperty("Camera", "Binning", "2 # now we don't match any preset
# text: HighRes
# color: magenta
core.setProperty("Camera", "BinDepth", "10") # now we will fully match the MedRes preset
# text: MedRes
# color: black

@ianhi  I think I managed to get this nice behavior! Not sure if it is the best way to achieve that though!

@fdrgsp  if you merge or rebase on main then the windows tests should start passing

Light bump here

@tlambert03 I removed set_wdg_color and text_color and modify the code a little...
we are still setting the _combo text color to magenta if the preset is not "set", however the _combo text color is restore to default without using any text_color variable in the __init__ by simply using setStyleSheet("") (e.g. in napari will be white when in dark mode and black when in light mode. I tested it and it works).
Do you think that's ok?

@ianhi I've added your suggestion on get_dev_prop but I renamed this method as get_group_dev_prop.
I've also added a different method called get_preset_dev_prop that I have used to in _check_if_presets_have_same_props because I think it is important for a user to know if the presets do not have the same properties. However, instead of an error, I used a warning.


will not open keeps closing right away

It's command line application, you need to provide arguments. Or use PineFlash if you want to flash your Pinecil V2.

Ah ok thank you i appreciate it
On Thu, Apr 11, 2024, 6:18 AM Marek Kraus @.***> wrote:

It's command line application, you need to provide arguments. Or use
PineFlash if you want to flash your Pinecil V2.
—
Reply to this email directly, view it on GitHub
https://github.com/pine64/blisp/issues/66#issuecomment-2049461177, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AHX6HAD2JW54MQZ3RVVFPLLY4ZWP7AVCNFSM6AAAAABGBF4K3CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANBZGQ3DCMJXG4
.
You are receiving this because you authored the thread.Message ID:
@.***>


chore: redesign profile ui

This PR resolves CX-2805
Description
Redesign Profile UI

After
Before

PR Checklist

[x] I tested my changes on iOS / Android.
[x] I added screenshots or videos to illustrate my changes.
[ ] I added Tests and Stories for my changes.
[ ] I added an app state migration.
[ ] I hid my changes behind a feature flag.
[ ] I have prefixed changes that need to be tested during a release QA with [NEEDS EXTERNAL QA] on the changelog.

To the reviewers 👀

[ ] I would like at least one of the reviewers to run this PR on the simulator or device.

Changelog updates
Changelog updates

Cross-platform user-facing changes

Update profile UI - mounir

iOS user-facing changes

Android user-facing changes

Dev changes

Need help with something? Have a look at our docs, or get in touch with us.

working on fixing tests now 🔧🔧🔧


[FRONTEND][TENSORFLOW] Enable strided_slice with fix.

Thanks for contributing to TVM!   Please refer to guideline https://docs.tvm.ai/contribute/ for useful information and tips. After the pull request is submitted, please request code reviews from Reviewers.

cc @nishi-t @siju-samuel @yzhliu welcome to review.

cc @joyalbin

@nishi-t  & @yzhliu Can you take look at this PR.
This was a fix for a long time back disabled strided_slice.

Thanks @srkreddy1238 this is merged


error being thrown for get_temp_indices in demag_gui.py

This error was thrown when switching between coordinate systems and is being thrown in other use cases as well.
Traceback (most recent call last):
  File "/Users/Laurentia/PmagPy/demag_gui.py", line 1548, in onSelect_coordinates
    fit.put(specimen,self.COORDINATE_SYSTEM,self.get_PCA_parameters(specimen,fit.tmin,fit.tmax,self.COORDINATE_SYSTEM,fit.PCA_type))
  File "/Users/Laurentia/PmagPy/demag_gui.py", line 1942, in get_PCA_parameters
    beg_pca,end_pca = self.get_temp_indices(None, tmin, tmax, specimen)
  File "/Users/Laurentia/PmagPy/demag_gui.py", line 4730, in get_temp_indices
    if tmin in self.Data[specimen]['zijdblock_steps']:
KeyError: 'PI47-3'

Put in error messages for this occurrence and generally bolstered the ability of the function that figures out the index of measurement steps so that it can handle what were illegal inputs without completely crashing.


diesel_async  does not support sql_query (async)

Hello,
I would like to know if you plan to add the possibility of using sql_query in async?
Thank you in advance for your reply.
Versions

Rust: 1.77.2
Diesel: 2.1.6
Diesel_async: 0.4.1
Database: Postgres
Operating System: Linux

I use sql_query in a project and it works (with diesel_async 0.3)
I think you need to provide more details about how you use sql_query

Our tests use sql_query internally so it is supported (and that support is tested):
https://github.com/weiznich/diesel_async/blob/2a026c0c586117e5612bf6d80908051762c2991d/tests/lib.rs#L128
Closed as cannot reproduce. Feel free to provide a minimal reproducible example to get further support.

thank you very much, it was just a dependency problem  :+1:


MSID: 89100 Version: 2 DOI: 10.1101/2<IP_ADDRESS>6955

MSID: 89100
Version: 2
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>6955
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=89100
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>6955

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/89100v2
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>6955
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/89100/v2/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

Oops page in preview.
Cause is presumably due to no MECA package for version 2 (which the reviews are posted to). I see the authors recently posted a v3 with the comments:

Some minor figure labelling changes and altered discussion section following revision at eLife

@acollings, WDYT should we be using the v2 (in which case I'll reach out to bioRxiv), or the v3 (in which case I will wait until they hopefully provide us with the package)?

Thanks @fred-atherden using V2 of the preprint would be best in this case: cheers!

OK thanks!

MECA package now available. Need to wait for datahub to find it


Add params and rng argument to all FuncEnv member functions

Description
Fixes https://github.com/Farama-Foundation/Gymnasium/issues/851, https://github.com/Farama-Foundation/Gymnasium/issues/861

Type of change

[ ] Documentation only change (no code changed)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[X] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[X] This change requires a documentation update

Checklist:

[x] I have run the pre-commit checks with pre-commit run --all-files (see CONTRIBUTING.md instructions to set it up)
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

@RedTachyon check the abobe comment Thanks

@RedTachyon

Sorry about the delay. I was a bit concerned about potential performance implications of this, since jax jit can be a bit moody sometimes with its optimizations, but from a quick test it seems to not cause any issues. We might still have to revisit performance when it comes up, but it's not a priority at the moment, and we'll see how big of a deal it is in "real" environments
So, uh, LGTM


[Request for External] page 15000012 "Payment Order - Settl. Status" - SetPaymOrder

Can you remove [Scope('OnPrem')] from procedure SetPaymOrder in page 15000012 "Payment Order - Settl. Status" - SetPaymOrder?

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


API: /api/users/by_email returns 404 error for email addresses with dots before the @

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to<EMAIL_ADDRESS>
Expected behaviour
Assuming the user exists, the information about the user should be returned.
Screenshots
Instead the page 404s.

Environment
State which device, operating system, browser and browser version you are using.
MacOS 14.2.1 (23C71), Version 17.2.1 (196<IP_ADDRESS>.12)
Additional context

The problem does not appear for the test emails usaaa@localhost/, admin@localhost/ or<EMAIL_ADDRESS>

Thanks @felixrindt!


No issue but no other way to get in touch with you.

Hey just wanted to let you know that I love this library.  I use it in almost every project.

Thank you! <3


Changes to PR wait time and approval checks

If https://github.com/nodejs/node/pull/33879 lands the checks should be changed to:

Require only one approval by default

Recommend (without blocking) to wait for a second approval

Drop wait times as requirements (we can still add a suggestion to wait if the PR lands before 48h, but it should return success code and shouldn't block --yes)
Check if 48h passed since the wait-for-feedback label was added

As a workaround for now, we can add a .ncurc file to nodejs/node, which will remove the wait time requirements, but handling the more fine grained cases suggested above probably makes more sense.

https://github.com/nodejs/node/pull/33879 never landed, we can probably close this.


I have some suggestions

Recently, I try to found a logging library written in Swift.
Such as  XCGLogger, SwiftyBeaver can`t satisfy me.
Talk about Willow, I must say, your shoe is very good , so your code must be good.
First Willow dont have a way to log to file.
Second, I think func info(message: () -> String) is not very good, I suggest this:
func lInfo(items: Any..., separator: String = " ") {
    let str = items.reduce("") { return $0 + "\($1)" + separator }
    info (str)
}

So it will use like print(1, 2, "21", [1, 2, 3])

Hi @harryzjm,
Thank you for the suggestions, please keep them coming!
To your first point about logging to a file, we've considered this multiple times. The only reason we haven't actually written a FileWriter yet is that we have a few too many ideas on how exactly that could work. We would want to keep it simple as a general solution, yet even that has been tricky to land on. If you could open up a new issue with your specific request and some of the things you'd like to see it be able to do, that would be a great starting point for others to also provide feedback. We'll then let people +1 ideas until we gain a consensus.
As for your second suggestion, I don't feel like this type of functionality belongs in Willow itself. However, one awesome part of Swift is that you can easily extend the Logger to do exactly what it is you're trying to do. Check out the Custom Log Levels section in the README for more details.
Cheers. 🍻

Maybe you should add @autoclosure, so it will not cache object, just like this:
func info(@autoclosure message: () -> String)

Are you thinking of @noescape instead of @autoclosure? @noescape does what you suggest, but cannot be used in this case because the logger might be running in asynchronous mode, which does make a copy of the closure to be executed later.

So I had someone reach out to me on Twitter and point out that there's a magical way to customize autoclosures to not noescape by default! When I worked through all the porting in the Swift 1.2 betas, the docs didn't exist yet. I never realized this was possible. I already have a branch that adds the following:
public func debug(message: Void -> String) {
    logMessage(message, withLogLevel: .Debug)
}

public func debug(@autoclosure(escaping) message: Void -> String) {
    logMessage(message, withLogLevel: .Debug)
}

The compiler is happy with both options. This then lets you do either of the following:
log.debug("My new fancy inline message")

log.debug {
    let foo = "bar"
    return "Some much more complicated message: \(foo)"
}

This is what I always wanted to be able to do in Willow, but I didn't realize the escaping functionality was something Apple added. #mindblown
My plan right now is to get this pushed up once I'm back from PTO. But if someone else wants to roll with this and get the changes made and update the docs, then by all means...

Right. So no avoiding the closure copy, but some additional syntax flexibility at the call-site. Getting back to parens for simple string logging will be a nice change. Probably looks more familiar to most people.
I'll look at getting a PR in tomorrow.
Thanks @harryzjm for the suggestion!

Awesome...thanks @AtomicCat! 🍻

merged into master


Correct currying for Kleisli and ZipWith. This is more important for baresult than it is for result.

Right now, both functions take multiple arguments. So they are not fully curried.

For ZipWith this turns out to be straightforward. But there's a specific reason that makes it straightforward and that makes fully currying Kleisli (in a nice way) impossible...
An anonymous function can't be generic. E.g.
func MakeGen() func[T any](t T) T {
    return func[T any](t T) T {
        return t
    }
}

yields an error: function type must have no type parameters. It is possible to write Kleisli composition like this
func Kleisli_[A any, B any, C any](f func(A) R[B]) func(func(B) R[C]) func(A) R[C] {
	return func(g func(B) R[C]) func(A) R[C] {
		return func(a A) R[C] {
			return Bind(g)(f(a))
		}
	}
}

But calling code would have to specify at least one type parameter explicitly (error: cannot infer C) and the whole thing would become very clumsy... As in you could have
partial := Kleisli_[Foo, Bar, Baz](SomeFunc)
...
// much later
...
complete := partial(SomeOtherFunc)  // Here we can only pass functions from Bar to Baz but we might have long forgotten about that...

The reason this doesn't come up with ZipWith is that f already constrains all type parameters.
I would argue that a binary Kleisli composition isn't too bad. After all the real reason we want currying so badly is because it allows us to pass the results of functions that return (T, error) around which is only possible if those two are the only arguments. The two arguments to the Kleisli composition are functions which should probably both be known at time of composition so there's probably not much use in partial composition, anyway.


improvement: use mongo driver instead of mongo binary

Motivation

Mongo is replaced by mongosh (since v5.0.0) so the code is not valid anymore. References

Downloading mongo client is cumbersome, and it's not included in the taz file containing mongod, stop annoying manual works to download mongo and install in correct folder

Changes

Replace calling rs.initiate() using mongo by golang mongo driver

Thank you very much for your contribution, may I ask you if you are willing to help in the client download part? we can open a separate issue for that @vinhphuctadang

I am going to manually merge this as the tests are broken for mongo > v5 (as per your references and not infected by your commit) good job

Thank you very much for your contribution, may I ask you if you are willing to help in the client download part? we can open a separate issue for that @vinhphuctadang

You're welcome. And yes, please open the issue, I can help

#23 here you go

Thanks, btw do you have discord id? Let's connect there for real-time discussion, wdyt?

You can join our discord at https://try.cc/discord

sorry wrong link, here you go
https://tryv.cc/discord


Make Parser.parseToMap() to return a mutable Map

I encountered this error somewhere inside Druid/Spark/Kryo/Jackson interop:
java.lang.UnsupportedOperationException
	at io.druid.java.util.common.parsers.ObjectFlatteners$1$1.put(ObjectFlatteners.java:121) ~[java-util-0.12.1-rc3-SNAPSHOT.jar:0.12.1-rc3-SNAPSHOT]
	at io.druid.java.util.common.parsers.ObjectFlatteners$1$1.put(ObjectFlatteners.java:77) ~[java-util-0.12.1-rc3-SNAPSHOT.jar:0.12.1-rc3-SNAPSHOT]
	at com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:162) ~[kryo-shaded-3.0.3.jar:?]
	at com.esotericsoftware.kryo.serializers.MapSerializer.read(MapSerializer.java:39) ~[kryo-shaded-3.0.3.jar:?]
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:793) ~[kryo-shaded-3.0.3.jar:?]
	at com.twitter.chill.Tuple2Serializer.read(TupleSerializers.scala:42) ~[chill_2.10-0.8.0.jar:0.8.0]
	at com.twitter.chill.Tuple2Serializer.read(TupleSerializers.scala:33) ~[chill_2.10-0.8.0.jar:0.8.0]
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:793) ~[kryo-shaded-3.0.3.jar:?]
	at org.apache.spark.serializer.KryoDeserializationStream.readObject(KryoSerializer.scala:244) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.serializer.DeserializationStream.readKey(Serializer.scala:157) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.serializer.DeserializationStream$$anon$2.getNext(Serializer.scala:189) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.serializer.DeserializationStream$$anon$2.getNext(Serializer.scala:186) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:73) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371) ~[scala-library-2.10.6.jar:?]
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) ~[scala-library-2.10.6.jar:?]
	at org.apache.spark.util.CompletionIterator.hasNext(CompletionIterator.scala:32) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:39) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at scala.collection.Iterator$GroupedIterator.fill(Iterator.scala:966) ~[scala-library-2.10.6.jar:?]
	at scala.collection.Iterator$GroupedIterator.hasNext(Iterator.scala:972) ~[scala-library-2.10.6.jar:?]
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) ~[scala-library-2.10.6.jar:?]
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327) ~[scala-library-2.10.6.jar:?]
	at scala.collection.Iterator$class.foreach(Iterator.scala:727) ~[scala-library-2.10.6.jar:?]
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) ~[scala-library-2.10.6.jar:?]
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) ~[scala-library-2.10.6.jar:?]
	at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:176) ~[scala-library-2.10.6.jar:?]
	at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:45) ~[scala-library-2.10.6.jar:?]
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273) ~[scala-library-2.10.6.jar:?]
	at scala.collection.AbstractIterator.to(Iterator.scala:1157) ~[scala-library-2.10.6.jar:?]
	at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:257) ~[scala-library-2.10.6.jar:?]
	at scala.collection.AbstractIterator.toList(Iterator.scala:1157) ~[scala-library-2.10.6.jar:?]
	at io.druid.indexer.spark.SparkDruidIndexer$$anonfun$14.apply(SparkDruidIndexer.scala:341) ~[classes/:?]
	at io.druid.indexer.spark.SparkDruidIndexer$$anonfun$14.apply(SparkDruidIndexer.scala:239) ~[classes/:?]
	at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsWithIndex$1$$anonfun$apply$26.apply(RDD.scala:843) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.rdd.RDD$$anonfun$mapPartitionsWithIndex$1$$anonfun$apply$26.apply(RDD.scala:843) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:287) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.scheduler.Task.run(Task.scala:99) ~[spark-core_2.10-2.1.0.jar:2.1.0]
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282) [spark-core_2.10-2.1.0.jar:2.1.0]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_162]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_162]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162]

The relevant kryo source is here, if anybody is interested.
This PR fixes this error by making Parsers to return mutable maps.

It looks like a bug in Kryo. At least in newer Kryo versions, the code of MapSerializer is completely different from what I referenced to and it would not lead to this error.

Does it mean that this error won't happen if spark updates its kryo version? And do we need this PR even in that case?

If Spark updates Kryo (BTW I cannot even find on what version it depends), and Spark cluster users update Spark, this change is not needed. But this is not a practical path IMO.

I don't think this needs to block 0.12.2. It is not fixing a bug in Druid, but is making a modification to Druid to make it easier to integrate with Spark.

@leventov I've checked the recent Kryo code, but it shows the similar pattern like below.
	public T read (Kryo kryo, Input input, Class<? extends T> type) {
...
		T map = create(kryo, input, type, length);
...
		for (int i = 0; i < length; i++) {
...			map.put(key, value);
		}
...
		return map;

I guess this is the part modifying the Map returned from ObjectFlatteners. If this is correct, they should have the same issue.
What's making me confused is why the Kryo is using the map returned from ObjectFlatteners. map is created by calling create() method which is defined as below:
	protected Map create (Kryo kryo, Input input, Class<Map> type) {
		return kryo.newInstance(type);
	}

Do you have any idea about this?
If you think this is the bug of Kryo, have you reported this issue to the Kryo community? Can you add a link to here?

What's making me confused is why the Kryo is using the map returned from ObjectFlatteners. map is created by calling create() method which is defined as below:

I think what Kryo is doing is trying to deserialize a MapBasedInputRow that includes a map returned by ObjectFlatteners. I guess what it does on the serializer end is write the class name of the map it's serializing, and then on the deserializer end it instantiates it with its default constructor and tries to put the records back in. This part fails because the map returned by ObjectFlatteners is an unmodifiable view.
IMO, the best way to fix this is to make a copy of the InputRow before giving it to Kryo to serialize. This is happening in non-Druid code so I think it's best to make the change there.

I agree with @gianm. This problem should be fixed outside of Druid if possible. And, I don't think this is a blocker for 0.12.2. I'm removing the tag shortly.
@leventov if you think this should be fixed in Druid, please let us know the reason.

@leventov can you please close this? Seems like it is not a bug


[ISSUE #5588]Support Broker Preferred Master

Make sure set the target branch to develop
What is the purpose of the change
close #5588
Brief changelog

Support Broker Preferred Master

Verifying this change
XXXX
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Codecov Report

Merging #5694 (32a8588) into develop (c4e581c) will decrease coverage by 0.04%.
The diff coverage is 38.04%.

@@              Coverage Diff              @@
##             develop    #5694      +/-   ##
=============================================
- Coverage      42.35%   42.30%   -0.05%
+ Complexity      8193     8180      -13
=============================================
  Files           1060     1060
  Lines          73099    73154      +55
  Branches        9586     9594       +8
=============================================
- Hits           30959    30946      -13
- Misses         38237    38290      +53
- Partials        3903     3918      +15

Impacted Files
Coverage Δ

...he/rocketmq/broker/controller/ReplicasManager.java
42.91% <0.00%> (-0.18%)
:arrow_down:

...org/apache/rocketmq/broker/out/BrokerOuterAPI.java
17.42% <0.00%> (ø)

.../java/org/apache/rocketmq/common/BrokerConfig.java
27.96% <ø> (ø)

...a/org/apache/rocketmq/common/ControllerConfig.java
0.00% <0.00%> (ø)

...c/main/java/org/apache/rocketmq/common/MixAll.java
41.44% <ø> (ø)

...der/controller/AlterSyncStateSetRequestHeader.java
0.00% <0.00%> (ø)

...er/controller/AlterSyncStateSetResponseHeader.java
0.00% <0.00%> (ø)

...ntroller/processor/ControllerRequestProcessor.java
19.64% <17.24%> (-5.10%)
:arrow_down:

...he/rocketmq/controller/impl/DLedgerController.java
65.80% <60.00%> (-0.69%)
:arrow_down:

...q/controller/impl/manager/ReplicasInfoManager.java
62.11% <75.00%> (+0.88%)
:arrow_up:

... and 23 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


JaCoCo execution data don't match since 6.5

I'm the author of https://github.com/koral--/jacoco-gradle-testkit-plugin and I've recently received a bug report: https://github.com/koral--/jacoco-gradle-testkit-plugin/issues/17
However, I haven't found anything about breaking changes in 6.5 release notes https://docs.gradle.org/6.5/release-notes.html so I'm trying to report issue here as a regression.
Expected Behavior
Coverage execution data should match.
Current Behavior
Coverage execution data don't match.
Context
Which version did this stop working with? - 6.5
Which version do you know it works? 6.4.1
Steps to Reproduce

Clone this project: https://github.com/jGleitz/broken-testkit-coverage
Run ./gradlew test jacocoTestReport
Observe eg. Execution data for class de/joshuagleitze/gradle/CoverageTestPlugin$apply$1 does not match.
Change Gradle to 6.4.1
Repeat step 2.
Execution data mismatch has gone.

Your Environment
Build scan URL:
With Gradle 6.5: https://scans.gradle.com/s/3ttg627m7xz36
With Gradle 6.4.1: https://scans.gradle.com/s/y6uqlwxwvtvem

Can confirm this. Something was broken in Gradle 6.2 (or even before, not sure) that caused my Coveralls to report less coverage. Whatever it was, got fixed in Gradle 6.3 through 6.4.1 and now it's broken again in 6.5.

To make it even funnier, I have 2 plugins with the same basic setup, both using kotlin-dsl and this plugin, one of them works perfectly, the other suffers of this issue.

On 6.5 I did a contribution that could be near to this issue, I did add @Generated to all the generated files in kotlin-dsl (mostly accessors), so JaCoCo doesn't report coverage for those files anymore.
I don't imagine how that could be the issue, but, I had to mention it.

This problem is happening because Gradle now applies some instrumentation to plugin classes, to help implement configuration caching, and this means the Jacoco agent will instrument the bytecode that has been modified by Gradle and this does not match the bytecode that the Jacoco report uses.
For 6.6-RC1, we've just added a work around, where we disable the instrumentation when a Java agent is applied to a TestKit build, but we will need to fix this properly at some point.
From our side, perhaps the most reliable fix would for the 'jacoco-gradle-testkit' plugin to use the Jacoco offline instrumentation to instrument the classes under test prior to injecting them into the TestKit build. For example, the plugin might add a task that takes the test classes and instruments them, and then wire these in to the test source set so that they are used by the test task. Is this a possibility? If not, we can consider the options we have for fixing this in some way on the TestKit side.

@adammurdoch could you elaborate on

use the Jacoco offline instrumentation to instrument the classes under test prior to injecting them into the TestKit build. For example, the plugin might add a task that takes the test classes and instruments them, and then wire these in to the test source set so that they are used by the test task.

or post a link to some documentation?

This bug does not happen with Gradle 6.6 RC 4 anymore (verified with https://github.com/jGleitz/broken-testkit-coverage).
Thanks to @mateuszkwiecinski  for pointing that out with her/his commit messages.

@adammurdoch: could Gradle implement offline instrumentation in the Jacoco plugin (https://github.com/gradle/gradle/issues/2429) before removing the workaround that is present in version 6.6?
This way, users that need it could easily adapt to the changes by Gradle. jacoco-gradle-testkit-plugin  could enable offline instrumentation without also having to maintain the code that enables offline instrumentation (via Ant or the like).

Closing as the issue has been fixed for 6.6 and potential follow up work is captured in #2429.


Crash with new recorder UI on 3+ monitor setup.

ScreenToGif is crashing on my computer if I try to use the new recorder UI with at least 3 monitors enabled in control panel. (By "crash" I mean that after clicking "Recorder", the startup window disappears, it thinks for a second while my mouse cursor moves very slowly, and then it silently exits without any error message.) If I disable any combination of monitors such that I have at most only 2 active, then it works fine. FWIW each of my monitors has a different DPI scaling setting, but I tried setting them all to 100% with no luck.
I also tried building from source and running with the Visual Studio debugger attached, but the same thing happens: the process simply exits without any obvious error or exception thrown. I tried manually stepping through with the OpenRecorder command in ApplicationViewModel.cs, but stepped through it fine; it quits someplace later that I wasn't able to determine.
I'm a programmer myself and know C# very well (though I have little experience with XAML), so I'm happy to help try to debug this, I just need a tip on where in the code I should try looking for an issue.
OS: Windows 10 x64 10.0.18362

Hi, you can try running and crashing again, open the Event Viewer (Windows X > Event Viewer) and check for any errors on the Windows Logs > Application section.
Uncaught errors should appear in there in two items on the list.
Also, it's possible that the app created some logs in the same folder as the main executable, (actually, in a folder called ScreenToGif/Logs inside the same folder of the executable).

Nothing in ScreenToGif/Logs, but I do have a couple errors in the Windows event viewer:
Application: ScreenToGif.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: exception code c0000005, exception address 00007FF84D3A2E14

Faulting application name: ScreenToGif.exe, version: <IP_ADDRESS>, time stamp: 0x5e8cf186
Faulting module name: wpfgfx_v0400.dll, version: 4.8.4121.0, time stamp: 0x5deb3768
Exception code: 0xc0000005
Fault offset: 0x00000000000e2e14
Faulting process id: 0x9eb8
Faulting application start time: 0x01d60e7a9650a57a
Faulting application path: C:\Program Files (x86)\ScreenToGif\ScreenToGif.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WPF\wpfgfx_v0400.dll
Report Id: 60ea23e1-87a5-41df-86eb-95cc91356782
Faulting package full name:
Faulting package-relative application ID:

Have you found anything else? Usually it's two entries.
Anyway, so far I found that a similar crash had a missing DLL. It could be the same case as yours:
D3DCompiler_47.dll should be in %windir%\system32
But, of course, it could be something else.

Those are the two entries. (Added a line to separate them.)
I do have D3DCompiler_47.dll in my System32 directory. I also just tried copying it into the ScreenToGif folder alongside the exe, which didn't help.
FWIW, the same problem occurs regardless of whether I have it set to DirectX or BitBlt mode. (And works fine with the old recorder UI even in DirectX mode.)
Regardless, it seems pretty strange to me that a missing DLL would only be a problem with 3+ monitors... but I suppose you never know!

Those are the two entries. (Added a line to separate them.)

Ah, thought it was a single one.

FWIW, the same problem occurs regardless of whether I have it set to DirectX or BitBlt mode. (And works fine with the old recorder UI even in DirectX mode.)

I believe it's related to how the new UI operates. It works as a single, full-size transparent window that fills up the entire set of screens.
I don't have three monitors so I could test (I only have two). Anyway, it's that's the case, I'm already working on a new solution that does not involve creating a massive fullsize transparent window, but I'm facing some issues working with multiple DPI right now.

Regardless, it seems pretty strange to me that a missing DLL would only be a problem with 3+ monitors... but I suppose you never know!

It was the only crash related to wpfgfx_v0400.dl that I could find with a proper solution. It could be something different.

Anyway, if is that the case, I'm already working on a new solution that does not involve creating a massive fullsize transparent window, but I'm facing some issues working with multiple DPI right now.

Ah, very cool! Feel free to ping me if you want me to test on my setup.

Ah, very cool! Feel free to ping me if you want me to test on my setup.

If you have the source there with you, you could replace the line 77 with line 78 to try opening the new version of the recorder.
https://github.com/NickeManarin/ScreenToGif/blob/master/ScreenToGif/Model/ApplicationViewModel.cs#L77
It should open normally and you should be able to select your recording region, but you won' be able to record anything, because it's not yet finished.

It works! It opens fine, and I can select a region, though the framerate while doing so is very low (but still usable). It does not seem to remember the region I previously selected when opening it again. (Guessing that's not implemented yet either.)

It works! It opens fine, and I can select a region,

Nice!

though the framerate while doing so is very low (but still usable).

Is it the same slowness on all monitors? I noticed that the current version gets slow while having more than one monitor, but I could not improve much the performance.

It does not seem to remember the region I previously selected when opening it again. (Guessing that's not implemented yet either.)

Yeah, only the basic stuff was ported to this new version. I was working recently on the window selection when I hit a bump trying to solve the problem with multi DPI screens.

Is it the same slowness on all monitors? I noticed that the current version gets slow while having more than one monitor, but I could not improve much the performance.

Yes, it's slow on all monitors.

I just want to add that I had this same issue with 3 monitors.  Soon as I disconnected one, I was able to launch the app and switch back to the classic recording UI and then reconnect the monitor and the application works as expected.

The recorder was fully reworked.
I also disabled by default the marching-ants animation that could cause slowdowns during the selection mode (but it can be turned back in).


MPChecker cross-match

It would be great to add to the viewer a cross-match with minor planets and other Solar System stuff.

We need a Python prototype code for this.

We also can use astcheck. However astorb.dat should not used for data for older than 50 days

Could be relevant:
https://b612foundation.org/press-release-asteroid-institute-unveils-rapid-online-precovery-tool-for-searching-multiple-astronomical-datasets-in-minutes/

See implementation here:
https://github.com/snad-space/MPChecker


ERROR: Impossible to load track

tu = TrackIO()
track: Track = tu.load_track("reinvent_base")
track.road_poly

leads to
ValueError: Input must be >= 1-d.

This is due to shapely now 'by default' is installed as version 2.0. Dependency to be updated to demand <2.0.


Adding EasyNode to the projects list

Adding EasyNode to the projects list
And keep the original order of the Node providers list.
None is more legitimate than the other so the initial order should not be altered here.

@maximegris could you please merge main and then address any conflicts? We restructured the docs recently, so the paths may be different. Thanks!

Sure, thank you @jlwllmr

Indeed the path has changed.
The PR is now up-to-date with the main branch. @jlwllmr

@maximegris thanks for adjusting! seeing as EasyNode is already in the list on main, and this PR intends to revert to an initial ordering, I've pushed a commit that just sets the list in alphabetical order to preclude any bias. I'll merge — thanks for your help with this.


[fix][broker] TokenAuthenticationState: authenticate token only once

PIP: #12105
Builds on #19282 and similar to https://github.com/apache/pulsar/pull/19295.
Motivation
Pulsar always calls the AuthenticationState#authenticate method to authenticate authData. We can remove an unnecessary call to authenticate, which saves some resources.
Modifications

Remove the logic to authenticate authData in the TokenAuthenticationState constructor.
Update the AuthenticationProviderList#newAuthState implementation so that it authenticates AuthData that is passed to it. Given the testing, this design might have been the original one. It's also possible that the original creators meant to put all states into the list of potential auth states.
Replace testNewHttpAuthState with testAuthenticateHttpRequest. This change is an extension of #19197 where we deprecated newHttpAuthState in favor of authenticateHttpRequest.
Update AuthenticationProviderList#newAuthState and AuthenticationProviderList#newHttpAuthState to add all providers that do not throw an exception on the respective newAuthState and newHttpAuthState method calls. This logic started to fail after I updated TokenAuthenticationState#newAuthState to not authenticate the token because the list logic considered the first one to not fail on initialization to be the one to put in the list. As such, the list never had more than one state. Given the logic in the AuthenticationListState class, this seems like an unintentional design. The side effect of this change is that authentication will be slightly more expensive because the list provider will use the "good" and the "bad" token provider in the auth state.
Update AuthenticationService to only wrap AuthenticationProvider with AuthenticationProviderList when there are multiple authentication providers. This change could be controversial because I ran into an issue where ProxySaslAuthenticationTest failed because of a change I made in the AuthenticationProviderList logic, and that test failure improved this PR. However, it seems completely unnecessary to wrap all AuthenticationProviders with the AuthenticationProviderList when it is rarely necessary.

Verifying this change
New tests are added and old tests also verify correctness.
Does this pull request potentially affect one of the following parts:
In a sense, this breaks an implicit contract that the class had. However, because the getAuthRole() method will throw an exception if called incorrectly, it is likely that misuse of this class will result in a fail fast behavior.
Documentation

[x] doc-not-needed

This change affects third party broker plugins. We do not document these features yet, so the best we can do is add a comment in the release notes.
Matching PR in forked repository
PR in forked repository: https://github.com/michaeljmarshall/pulsar/pull/19

Tests failures are legitimate. I'll look into those later tonight or tomorrow morning.

I expect the tests to pass now.

/pulsarbot rerun-failure-checks

There are some tests failures, for example https://github.com/apache/pulsar/actions/runs/4055811136/jobs/6979681080#step:11:943
Error:  Tests run: 6, Failures: 1, Errors: 0, Skipped: 3, Time elapsed: 0.615 s <<< FAILURE! - in org.apache.pulsar.broker.auth.AuthenticationServiceTest
  Error:  testAuthenticationHttpRequestResponseWithAnonymousRole(org.apache.pulsar.broker.auth.AuthenticationServiceTest)  Time elapsed: 0.039 s  <<< FAILURE!
  java.util.concurrent.ExecutionException: javax.naming.AuthenticationException: I failed
  	at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
  	at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
  	at org.apache.pulsar.broker.authentication.AuthenticationProvider.authenticateHttpRequest(AuthenticationProvider.java:159)
  	at org.apache.pulsar.broker.authentication.AuthenticationService.authenticateHttpRequest(AuthenticationService.java:133)
  	at org.apache.pulsar.broker.auth.AuthenticationServiceTest.testAuthenticationHttpRequestResponseWithAnonymousRole(AuthenticationServiceTest.java:162)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
  	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
  	at org.testng.internal.invokers.InvokeMethodRunnable.runOne(InvokeMethodRunnable.java:47)
  	at org.testng.internal.invokers.InvokeMethodRunnable.call(InvokeMethodRunnable.java:76)
  	at org.testng.internal.invokers.InvokeMethodRunnable.call(InvokeMethodRunnable.java:11)
  	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
  	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
  	at java.base/java.lang.Thread.run(Thread.java:833)
  Caused by: javax.naming.AuthenticationException: I failed
  	at org.apache.pulsar.broker.auth.AuthenticationServiceTest$MockAuthenticationProviderAlwaysFail.authenticate(AuthenticationServiceTest.java:228)
  	at org.apache.pulsar.broker.authentication.AuthenticationProvider.authenticateAsync(AuthenticationProvider.java:72)
  	... 15 more