Incorrect propagated type hint in strong mode for Future.then (Future<Future>)

The code below produces this hint:
hint] A value of type 'Future<String>' cannot be assigned to a variable of type 'Future<Future<String>>' (/Users/leafp/tmp/scratch.dart, line 5, col 11)

This is broadly connected to https://github.com/dart-lang/dev_compiler/issues/228 , but I think this specific issue looks like we're just missing some code with propagated types when instantiating generic methods, since it is only a hint that is emitted (and hence it seems that that the main static type code is doing the right thing).
import 'dart:async';

void main() {
  Future<String> p;
  var m = p.then((r) => new Future<String>.value(3));
}

cc @alan-knight

but I think this specific issue looks like we're just missing some code with propagated types when instantiating generic methods

That's fixed now, see #25340 :)
Just a guess. StaticTypeAnalyzer.visitMethodInvocation has a very suspicious if (methodName == "then") {  :)
I bet you can reproduce other oddities with these method names (if you put them in the right type):

then
$dom_createEvent
query
$dom_createElement
JS
getContext

In other words, it's happens because the generic "Future.then" (enabled by turning on generic method comments) collides with the hard coded pseudo-generic path.

Oh, wow. Crazy interaction of things going on here.

Given Future<T>.then<S>(S onValue(T t), ...), strong mode correctly infers S as Future<String>
Instantiating the return type Future<S> yields Future<Future<String>>
the staticType of m is inferred to be Future<Future<String>>
the propagatedType is inferred using psuedo-generic logic, correctly flattens to Future<String>
it unconditionally records propagatedType (it does't use the "if better" logic) leading to a staticType and propagatedType
when checking the assignment, it uses bestType which uses propagatedType, and sees that Future<String> cannot be assigned to Future<Future<String>> from step 3.

Several bugs here:

we should've flattened the Future in Step 2.
we shouldn't go down the psuedo-generic "then" code path in strong mode in Step 4
we shouldn't record propagatedType if it is not better in Step 5

https://codereview.chromium.org/1609093003/

The generification Future<T>.then<S>(S onValue(T t), ...) isn't correct - the correct return type of onValue is the union type S|Future<S>. I don't think we can represent that yet. That might also be part of the problematic inference - if the actual onValue function does return Future<Something> then inferring that S must be Future<S> seems a direct conclusion .

Yeah, for this example a union type would work.
There are other cases where I think you may need flatten(T) to be part of the type system. Here's an example adapted from https://github.com/dart-lang/dev_compiler/issues/228. This blows up inside dart:async in Dart VM checked mode:
$ cat ~/scratch/test.dart
import 'dart:async';
main() {
  Future<int> f = new Future<int>.value(42);
  Completer<Future<int>> c = new Completer<Future<int>>();
  Future<Future<int>> f2 = c.future;
  c.complete(f);
  f2.then((Future<int> x) {
    print(x);
  });
}

$ dart -c ~/scratch/test.dart
Unhandled exception:
type '_Future<int>' is not a subtype of type 'Future<Future<int>>' of 'typedFuture'.
#0      _Future._asyncComplete (dart:async/future_impl.dart:452)
#1      _AsyncCompleter.complete (dart:async/future_impl.dart:41)
#2      main (file:///Users/jmesserly/scratch/test.dart:6:5)
#3      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261)
#4      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

For strong mode, we were thinking that treating Future<T> more like a type operator, equivalent to Future< flatten(T) >. That approach is used in the spec to help async/await typing. In the above example c.future would be typed Future<int>. It has the benefit of fixing Future<Future> consistently & matches the always-flatten behavior of futures. But definitely, we're open to other ideas here.

Maybe another way to say this ... if we could type T | Future<T> everything that might end up in a Future (via some code path) then union types will work. In general it seems hard to ensure that, e.g.:
abstract class Stream<T> {
  Future<T> get first;
  // ...
}
main() {
  Stream<Future<int>> s;
  Future<int> f = s.first;
}

Without it, it seems like anywhere Future< T > occurs it's potentially problematic. We could rewrite above as T | Future<T> get first; which solves the typing problem, but now I can't rely on getting a Future out.
We could add a generic constraint on T, e.g. class Stream<T !extends Future> ... that constraint sort-of exists already in checked mode (depending on whether you use ".first")
I guess the benefit of the Future< flatten(T) > interpretation is that all of the problematic cases just work.

here's a complete example for the Stream issue:
import 'dart:async';
main() {
  StreamController<Future<int>> sc = new StreamController<Future<int>>();
  Stream<Future<int>> s = sc.stream;
  Future<Future<int>> f = s.first;
  sc.add(new Future<int>.value(42));

  // works in production & checked mode, prints 42.
  //f.then((x) { print(x); });

  // works in production, fails in checked mode:
  //
  // Unhandled exception:
  // type 'int' is not a subtype of type 'Future<int>' of 'x'.
  //f.then((Future<int> x) { print(x); });

  // works in production, fails in checked mode:
  // Unhandled exception:
  // type '(int) => dynamic' is not a subtype of type '(Future<int>) => dynamic' of 'f'.
  f.then((int x) { print(x); });
}

The static type is Future< int > but the runtime value is always going to be the flattened int.

@jmesserly's Stream example is great.  There is no way to type-annotate the parameter (other than dynamic or Object) for the closure passed to then and have it pass checked mode.  It'll either fail when then is invoked or when the actual closure is invoked.
That's unfortunate as the parameter is always an int at runtime.
Ignoring generic methods for the moment, I think we would need something like flatten from the spec to actually type this:
class Future<T> {
  then(dynamic onValue(FLATTEN(T) value), {Function onError});
}

Of course, we could type onValue as Function (or value as dynamic), but we lose static checking.

For strong mode, we were thinking that treating Future<T> more like a type operator, equivalent to Future< flatten(T) >.

I think that's probably a good idea. Futures are special and ubiquitous, so preventing the user from ever writing Future<Future<T>> is a good goal. It won't help the parameter to Future.then - that's still a union type. Anything typed as either T -> S or T -> Future<S> must be accepted. I guess the constraint is that T->X is accepted if FLATTEN(X) is S.
I would also like to prevent Stream<Future<T>> and Future<Stream<T>>, but those are harder because they actually occur in the intermediate steps used to implement the features that makes those types unnecessary. It's still bad style.


Removing placeholder content

Since the site is now live (yay!), we should consider removing the placeholder content or disabling their profiles/pages. The goal is to highlight one contributor at a time, so having existing placeholders may confuse that slightly.
I have removed the placeholder pages & image used, recognizing that the avatars were updated to be other butler images.
If there Is there any disagreement with this or any reason to keep the placeholders, it should be discussed here. Otherwise, if there is no opposition, we should go forward with removal.

closes https://github.com/jenkins-infra/contributor-spotlight/issues/21 as the placeholder content would be removed


[BUG] lineSpacing option set to decimal triggers repair alert

Thank you for reporting an issue, suggesting an enhancement, or asking a question.
We appreciate your feedback - to help the team understand your needs please complete the below template to ensure we have the details to help. Thanks!
Please check out the Docs to see if your question is already addressed there. This will help us ensure our documentation covers the most frequent questions.
Category

[ ] Enhancement
[X ] Bug
[ ] Question
[ ] Documentation gap/issue

Version
Please specify what version of the library you are using: [ 3.3.0  ]
Please specify what version(s) of PowerPoint you are targeting: [ N/A ]
If you are not using the latest release, please update and see if the issue is resolved before submitting an issue.
Expected / Desired Behavior / Question
Should be able to enter a decimal for lineSpacing, not just an integer.
If using fontSize 12 and you want 1.15 line spacing you need linespacing set to 13.8
Observed Behavior
Entering decimal for the lineSpacing option triggers a repair warning. An integer works fine
Steps to Reproduce
enter lineSpacing: 13.8 as an option
Fix
Update
strXmlLnSpc = "<a:lnSpc><a:spcPts val=\"" + textObj.options.lineSpacing + "00\"/></a:lnSpc>";
to
strXmlLnSpc = "<a:lnSpc><a:spcPts val=\"" + (textObj.options.lineSpacing * 100) + "\"/></a:lnSpc>";

Thanks @ReimaFrgos !


Avatar for users

Profile picture or avatar for user.
Image on tasks rather than name, with name label when you hover over the image.

There is also the potential for this to create a more compact design, by replacing the full-length name labels in the board view by icons that contain either the (gr)avatar or, if no image is available, the first letter of the firstname with a unique color, like Google Documents does:

This would make it future-proof for a case where a task can have multiple people assigned/co-assigned to it, as per issue #85. Of course, the image above is just an example of the "fake avatars with letters" concept, the layout of them is intended to be much more compact (in a line) on the board view, like Trello does:

I hope this will come true :+1:

I'd also love this feature :-)

:thumbsup:

Gravatar also provides Identicons like this:

This would be really easy to implement and this way, each user would have a unique avatar when gravatar integration is active. We could then integrate more avatars. @fguillot  what do you think?

@mcorteel well, in terms of informativeness those gravatar identicons are useless compared to the letter-based ones; and, on a sidenote, I really cannot expect my users to ever bother setting up a gravatar account (vs me uploading a profile picture for them in the kanboard admin interface), they have zero interest in technology.
That said, "gravatar for real avatars + fallback to letter-based identicons à la Google" would be a reasonable compromise.

All right, I think it's time to have avatars in Kanboard.
For a first iteration, having the possibility to upload an image and fallback to a letter-based identicon would be a good start. Letter-based avatars are the default on Google and Apple products and I assume they are better UX designer than me :)
Now the big question is where to place the avatar on the card? the bottom left seems to be the more appropriate.

Something like that?

:+1:
What would be the rules to identify which avatars to display ?
Based on the assignee ?
Based on the users who have commented the task ?
I like the idea of letter-based avatars, some of my users don't want a picture profile and it could be a good option in that case.

What about using Laravolt's package?
https://github.com/laravolt/avatar
"Display unique avatar for any user based on their name. Can be used as default avatar when user has not uploaded the avatar image itself."

I don't think this requires an external library. I implemented my mockup this morning using this idea from stackoverflow. It just requires a small change in the function that displays the avatar.

I guess the rules could be as follows:

Gravatar enabled:

User has an email address and a registered gravatar => show gravatar
User doesn't have an email address or no registered gravatar => show identicon

Gravatar disabled:

Show the user's initial on a colored background

This could all be overruled if we included a profile picture setting in Kanboard. But the advantage of the aforementioned solution is that it doesn't require important code changes (well I already have a branch that does this and I can submit a PR).

Glad this will happen. I like the @mcorteel's idea with the cards.
Just a little side note. I know Gravatar is quite popular in the private sector, but a lot of companies don't allow Employees to register there company email address at external web services. So I think a mechanic to upload images would be greatly appreciated by many (me included).

@mcorteel I still think the following hybrid approach would make more sense, if you folks don't want to implement a standalone "upload an avatar" local system:

Gravatar enabled and user has an email address and a registered gravatar => show gravatar
Gravatar disabled OR user doesn't have a gravatar associated with the email address => Show the user's initial on a colored background

In other words: no identicon, those are useless (they were meant as decorations for blog commenting systems where the username is shown alongside the icon; they are not replacements for the username).

Avatars are now available in 1.0.27, you have the choice between:

Letter based avatars (default)
Gravatar
Upload an image
Google avatar if you have the plugin GoogleAuth

Hi @fguillot, finally got around to testing out 1.0.27 today, and it's very cool! However, there is a small bug: "letter-based" avatars are only displayed where there is no email address associated with the user account at all; in the case where the account has an email address set in it but does not use gravatar, the gravatar logo/default-image gets displayed instead of the letter-based one. It would be best if we could detect that there is no "real" gravatar for a given email address and fallback to letter-based depictions in that case. Should I open a new issue for this...?

Alright, there are now issues #2185, #2184, #2183 and #2172 about the remaining bugs I could find.


No obvious way to use nullary predicates in constraints

Describe the bug
The documentation states that "Under the hood dry-types uses dry-logic and all of its predicates are supported." However, there is no obvious way to use nullary predicates (predicates that don't take an argument--that is, arity = 0), like odd?.
I previously raised this issue with the community.
To Reproduce
odd = Types::Integer.constrained(:odd)

NoMethodError: undefined method 'map' for :odd:Symbol
from /home/damian/.gem/ruby/3.2.2/gems/dry-types-1.7.2/lib/dry/types/contraints.rb:15:in 'Rule'

Expected behavior
There should be a conventional way to pass nullary predicates.
Workarounds
After reviewing the Rule class method in /lib/dry/types/constraints.rb, I see that it expects to receive only keyword arguments that it can treat as a Hash and map over. This implied a workaround for using nullary predicates by including a dummy value.
odd = Types::Integer.constrained(odd: nil)
=> #<Dry::Types[Constrained<Nominal<Integer> rule=[type?(Integer) AND odd?]>]>

@flash-gordon pointed out that you can achieve the same workaround by passing an array of one or more nullary predicates.
odd = Types::Integer.constrained([:odd])
=> #<Dry::Types[Constrained<Nominal<Integer> rule=[type?(Integer) AND odd?]>]>

However, this workaround does not allow users to combine nullary predicates with unary predicates (that take one argument), as can be done by explicitly passing dummy values.
positively_odd = Types::Integer.constrained(odd: nil, gt: 0)
=> #<Dry::Types[Constrained<Nominal<Integer> rule=[type?(Integer) AND odd? AND gt?(0)]>]>

Offer
I am willing to submit a pull request to correct this issue, but I don't want to do so without a conversation on implementation.
It seems to me that one way to handle this is to require nullary predicates to be grouped first, before the unary predicates that are passed as keyword arguments. This would allow us to glom the nullary predicates into an array of positional arguments, map this to a Hash with nil dummy values, and merge with the keyword argument Hash before processing as currently implemented.
If that sounds good, I'm happy to code it up. In addition, I'm willing to update the docsite with more discussion and examples of using dry-logic predicates as constraints in dry-types. (Partially addressing #390)
Thank You
Thank you!

@flash-gordon, I have implemented the strategy that I described above. It works, but it breaks some specs for PredicateInferrer.
I can see from the PredicateInferrer specs that your established method for calling nullary predicates is to wrap them in an array, and that you combine them with unary predicates by chaining another constrained method. These specs could be changed to use the proposed method signature instead of an array, but the existence of these specs implies that the proposed solution is a breaking change (even if the broken behavior is undocumented outside of the specs).
The proposed solution also breaks the spec for constraints defined on optional types (constrained_spec.rb:226). I didn't dig any further, but this is probably easily fixable.
I don't want to go any further unless I know this is a desired path. I think the proposed solution is more intuitive than using an array and multiple .constrained methods (or passing dummy arguments), but if it breaks existing code then it would have to be introduced appropriately.

You can see the proposed change with tests here.
I just noticed that Builder also implements a constrained method. I presume this would have to be changed in the same way for consistency.

Before moving further I'd like to describe the assumed changes in the API.
In the new version, all these will be acceptable:
type.constrained(:odd) # new variant
type.constrained(:odd, :even) # new variant
type.constrained(:odd, gt: 200, lt: 300) # new variant
type.constrained([:odd, :even]) # worked before, continue to support
type.constrained([:odd, :even], gt: 200, lt: 300) # new variant, supported as a side-effect
type.constrained # error, as before
type.constrained([]) # worked before, continue to support
type.constrained({}) # worked before, continue to support

It's a minor issue but the new API will allocate slightly more objects because of * and **.
@solnic any arguments against this change? It's backwards-compatible it seems

Yes this is a good addition. Types should be memoized anyway (in typical scenarios at least) so I wouldn't worry about increased object allocs.

@flash-gordon Thank you for providing a formal specification.
These work with the current proposed implementation:
type.constrained(:odd) # new variant
type.constrained(:odd, :even) # new variant
type.constrained(:odd, gt: 200, lt: 300) # new variant

type.constrained # error, as before

These do not  work with the currently proposed change, but could be implemented by adding .flatten to the processing of the positional arguments.
type.constrained([:odd, :even]) # worked before, continue to support
type.constrained([:odd, :even], gt: 200, lt: 300) # new variant, supported as a side-effect

These would now be glommed into the positional arguments array, but they should also work as specified if we add .flatten.
type.constrained([]) # worked before, continue to support
type.constrained({}) # worked before, continue to support

Shall I implement .flatten and add new tests for the various use cases?
Do you want the tests to remain in predicate_inferrer_spec?
Do you want to implement the same change to Builder#constrained?

Thank you!

I have submitted a PR (#474) to resolve this. Includes tests and yardocs. Some issues remain. See the PR for details.

@dcr8898 yeah, thanks, I'll take a look soon

That's cool. Take your time. I just thought it would be easier for you to look at code instead of dealing with my questions. 😁


Add a LongInt map variant

This changeset adds a map with long values as keys and int values as values in all variants.

superseded by this PR

superseded by https://github.com/trivago/fastutil-concurrent-wrapper/pull/14 PR


xds_end2end_test: Move fault injection tests into their own file

The XdsFaultInjectionMaxFault test seems to be failing consistently in this PR.  I don't know what's changed; the test code is exactly the same as it was in the other file.  Can you please take a look and see why this PR is tickling it?

Okay, I will take a look later.

I can reproduce this problem locally. I observed that if I ran the entire fault injection test suite, all 4 MaxFault tests will fail. If I only ran the MaxFault tests, the first one will pass, other ones will fail.
After checking the global value of the global atomic g_active_faults, I found that the decrement logic were left out in the promise conversion. Specifically, the following method didn't get translated to the promise version (and two call sites) (https://github.com/grpc/grpc/pull/29288):
  void FaultInjectionFinished() {
    g_active_faults.fetch_sub(1, std::memory_order_relaxed);
  }

I missed this in my review. Do you or Craig have cycles to fix this? If not, I can attempt to fix it later this week (I don't really know how the new promise mechanism work, I can try to play with it).

Then, why this didn't break master? My theory is that if we configure shard_count=50 to the xds e2e test, the MaxFault test cases were separated into multiple "shard"s. Each shard owns a state of gRPC library, so the global variable g_active_faults isn't shared between them. And unfortunately, the test case I wrote originally only validated the incremental behavior of the MaxFault counter.
I will enhance the test case to cover the decremental behavior of the MaxFault counter (after this PR is merged, or feel free to just do it).

I don't have cycles to work on this right now.  If @ctiller can fix this when he gets back from vacation, that's fine.  Otherwise, I'd appreciate it if you could take a look.
Thanks!

@ctiller We reverted #29288, because we realized that this would actually cause a bug in the behavior, and we needed to quickly back-port a fix to the 1.46 branch.  Hopefully it won't be too hard to roll forward once you get back.
@lidizheng Please work with Craig to fix the tests to cover this bug.
I'll merge this PR once the tests are green.

I can update the MaxFault test case after this PR is merged.


validating and coercing comma separated values

What version of Ajv you are you using?
8.12.0
What problem do you want to solve?
Elegant validation and coercion of query parameters with comma separated values or other serialization rules.
Ok, I realize that this is probably a long shot and maybe not in the scope of ajv, but I still think the use-case is interesting and maybe somebody has something useful to reply.
I use query parameters serialized using open-api rules (https://swagger.io/docs/specification/serialization/), then in an express server I use ajv to validate the query parameters and coerce them. To do this I create a schema to match req.query that also serves as a type guard for a matching typescript Type. This way I get validation, coercion and type guarding in a single step in ajv based on the initial query-string parsing performed by express. This works great for simple types, but for arrays in non-exploded format (?param=val1,val2) not so much.
What do you think is the correct solution to problem?
I see a few options:

Outside of ajv scope, use a parameterized query parser that interprets open api parameter definitions and fills req.query accordingly. This seems like a pretty natural thing to do but I haven't found the right module for it yet and there would be a lot of overlap with what ajv does pretty well already.
Add a custom keyword (maybe stringCoercion) to JSON schema (probably an object whose content would closely match open api vocabulary: form, explode, spaceDelimited, etc) and use these rules in ajv to perform advanced coercion from string to array.
same as the previous one but done in a plugin

Will you be able to implement it?
I might be able to implement a plugin, but I don't know if ajv is extensible enough to do it properly. Can a user-defined keyword be used to extend type coercion ?
Also I might implement it as a separate tool complementary with ajv instead of a plugin, but I wanted to try and get some feedback here first.

I just found this module open-api-coercer that has some overlap with ajv but is still probably the best option available.

I keep the conversation going with myself :)
I just saw this code in ajv-keywords that shows that it should indeed be possible to perform some transformation based on a keyword. Can this transformation change the type to an array or an object and still let ajv validate this array/object afterward without breaking everything, I don't know yet.
I also saw that what I was trying to achieve with a close integration of ajv in express routing is extremely similar to what fastify promotes. I am convinced that a keyword that would perform some advanced coercion/parsing compatible with various strategies of query string serialization could bring some value. For openapi users a small tool converting openapi parameter definitions to and from json schemas with this keyword would close the loop.

Yeah, same here also,
when use coerTypes: 'array' this will convert to array base on first param.
for example http://localhost:3000/search?item=1,2,3,4,5 wiil transform item query string to item: [1,2,3,4,5]
but skipped the validation like maxItems and uniqueItems property doens't apply properly.

I agree a custom keyword or external lib is the way to go, definitely not something we'll add to ajv core.


topological sort failed with message: Non-existent input ^ConstantFoldingCtrl/ppo/cond/add/Switch_0 for node ConstantFolding/ppo/cond/strided_slice_1/stack_const_axis

Appears to be TF 1.8 related, same error encountered in #423. That was closed as a dupe to follow #415, which was closed by some Summarizer fixes. I'm not using summarizer code, still experiencing the issue (after pull from master). I'll try downgrading from TF 1.8 to 1.7 per the updated comment https://github.com/reinforceio/tensorforce/issues/423#issue-325986010 & report back.
2018-07-30 16:07:38.417235: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0
2018-07-30 16:07:38.580025: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-07-30 16:07:38.580049: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929]      0
2018-07-30 16:07:38.580061: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0:   N
2018-07-30 16:07:38.580190: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 5026 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1)
2018-07-30 16:07:39.570663: W tensorflow/core/grappler/optimizers/arithmetic_optimizer.cc:1441] Failed to build SimpleGraphView.
2018-07-30 16:07:39.571597: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:586] Iteration = 0, topological sort failed with message: Non-existent input ^ConstantFoldingCtrl/ppo/cond/add/Switch_0 for node ConstantFolding/ppo/cond/strided_slice_1/stack_const_axis
2018-07-30 16:07:39.572017: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:586] Iteration = 1, topological sort failed with message: Non-existent input ^ConstantFoldingCtrl/ppo/cond/add/Switch_0 for node ConstantFolding/ppo/cond/strided_slice_1/stack_const_axis

What happens if you upgrade to TF 1.9? It sounds like a rather annoying TF error, with little indication of what might cause the problem... :-/  But if (hopefully) 1.7/1.9 solve the problem, I guess we could just 'ignore' it...

Totally agree with your logic, didn't realize we were at 1.9! Fixed on upgrade

Hehe, yes, TensorFlow was moving fast recently...


[v9] Implement #10483 - add cache clear timestamp

This pull requests implements the feature suggested in #10483 which adds a concrete.cache.last_cleared timestamp to the ccm_nocache hash.
This should help in cases where developers edit things like block overrides css etc and clear cache but the css is still cached on users browsers due to the ccm_nocache value not changing

Yeah, I can't think of any downsides to this and it seems long overdue.


client: implemented messaging signing.

added support for the main RPC implementation of message signing.

I believe you need to update permissions.json to make the test pass. Other than that LGTM 🎉

Not entirely sure what update is needed to permissions.json. Something like:
"/lnrpc.Lightning/Signmessage": {
            "permissions": [
                {
                    "entity": "onchain",
                    "action": "read"
                }
            ]
        },

?

Yes, that should be enough.

Actually, on further inspection, a similar block is already present in permissions.json.
"/lnrpc.Lightning/SignMessage": {
            "permissions": [
                {
                    "entity": "message",
                    "action": "write"
                }
            ]
        },

on line 563

Ah, I think you need to bump Line 15 in https://github.com/lightninglabs/lndclient/blob/2005b0d5f6a33397a7679bb722ed096c77fe55c2/macaroon_recipes_test.go#L15.
Since a new permission is now being used by the lndclient.


doc: fix genrest turbo mode output error

PR #19493 cleaned up the turbo-mode process for doc generation but
introduced an error in the generated index.rst that causes use of the
"make htmldocs-fast" (so-called turbo mode) to fail with an error -
the generated list-table directive has no content (other than
the header row).  This PR adds one dummy row.
Signed-off-by: David B. Kinder<EMAIL_ADDRESS>

Will go back to a dummy page for the symbols in https://github.com/zephyrproject-rtos/zephyr/pull/19519 by the way. I'll make sure to test it better for that one.


Build for all platforms

Changes

:gift: Build images for all the platforms ko supports. This matches what we already do in serving and net-contour as of https://github.com/knative-sandbox/net-contour/pull/285. Of course, users will still need an appropriate version of istio itself for each platform, but this makes sure knative can be deployed once those exist for a platform.

/kind enhancement

Release Note

Images are now multi-platform and support architectures such as `arm64`.

Docs

/lgtm
/cc @ZhiminXiang @JRBANCEL @arturenault

architectures such as arm64

Planning to get a Macbook with a M1 SOC 😄 ?
/lgtm

Planning to get a Macbook with a M1 SOC 😄 ?

How else will we be able to test things like this? Clear business expense..
The things I do for open source........ ;)

/lgtm

/lgtm
next stop: quantum


Fix buffer orphaning on desktop

Vertex / Index Buffer orphaning was previously turned off on desktop, which was causing performance problems on some platforms, especially Mac.
Review
I've now reviewed other code that uses glSubBufferData outside of the 2d and 3d canvas. There are a few places where orphaning could possibly be beneficial, but others where I'm not absolutely sure:

3d Immediate geometry
mesh_surface_update_region - though this may not update the entire buffer, so may not be a candidate
canvas_light_occluder_set_polylines - I'm not sure on the usage characteristics of this i.e. is it one-off or dynamic
gles3 particles - although these appear to use round robin so may not need orphaning
gles3 uniform buffers

Overall though unless @clayjohn has a preference I'm inclined to leave these to another PR.
Edit: Actually on further investigation the 3d software skinning does use mesh_surface_update_region for updates as well as soft bodies, so it may be worth trying to orphan these to prevent a stall, but I'm happy to do as separate PR.
Notes

An alternative could be to limit this to Mac only, however, I currently believe this is the correct solution on all platforms. The fact it works on most desktops already may only be because the drivers recognise our incorrect usage and work around it, or because of extra work they are doing to cope with our usage - it does not imply that our current usage is correct.
Although orphaning on desktop wasn't rolled out initially when the problem was discovered (#34088 etc), it has in fact been tested to a large extent, because we've been using it in batching since 3.2.2 :grin: .
I noticed at the time that wrapping the orphaning with GLES_OVER_GL was questionable, and didn't use it for for batching. I should have really brought this up more as a possible problem in the existing code, but instead filed it in my mind fortress.
I'll need to do a little rebasing of either this or the unified batching depending on which gets merged first. Should not be a problem.

(this is presuming all these issues are due to same bug, they haven't all been tested yet)
Fixes #39758
Fixes #17584
Fixes #42357
Fixes #42555

Thanks!


EACCES: permission denied, open 'mb.pid' with version 2.8.1

Expected behaviour
Using Mountebank via Docker Compose should start the container as before.
Actual behaviour
warn: [mb:2525] Running with --allowInjection set. See http://localhost:2525/docs/security for security info
info: [mb:2525] mountebank v2.8.1 now taking orders - point your browser to http://localhost:2525/ for help
debug: [mb:2525] config: {"options":{"allow-injection":true,"allowInjection":true,"configfile":"/app/config/imposters.ejs","port":2525,"noParse":false,"no-parse":false,"formatter":"mountebank-formatters","pidfile":"mb.pid","localOnly":false,"local-only":false,"ipWhitelist":["*"],"ip-whitelist":"*","mock":false,"debug":false,"protofile":"protocols.json","origin":false,"apikey":null,"log":{"level":"debug","transports":{"console":{"colorize":true,"format":"%level: %message"},"file":{"path":"mb.log","format":"json"}}}},"process":{"nodeVersion":"v18.11.0","architecture":"x64","platform":"linux"}}
...
info: [http:8081 characters-api.imposter] Open for business...
node:fs:600
  handleErrorFromBinding(ctx);
  ^

Error: EACCES: permission denied, open 'mb.pid'
    at Object.openSync (node:fs:600:3)
    at Object.writeFileSync (node:fs:2221:35)
    at Object.start (/usr/local/lib/node_modules/mountebank/bin/mb:53:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  errno: -13,
  syscall: 'open',
  code: 'EACCES',
  path: 'mb.pid'
}

Steps to reproduce
Start Mountebank via Docker Compose using version 2.8.1.
Software versions used
OS         : Arch Linux
mountebank : 2.8.1

This is the Docker Componse configuration file I'm using:
version: "3.8"

networks:
  global-network:
    driver: bridge
    external: false
    name: mountebank-network

services:
  mountebank:
    command: ["start", "--allow-injection", "--configfile", "/app/config/imposters.ejs", "--loglevel", "debug"]
    container_name: mountebank
    image: docker.io/bbyars/mountebank:2.8.1 # https://hub.docker.com/r/bbyars/mountebank/
    networks:
      - global-network
    ports:
      - "8081:8081"
      - "2525:2525"
    user: $USER_ID:$GROUP_ID
    volumes:
      - ./config/:/app/config/

# /app/config/imposters.ejs
{
  "imposters": [
    <%- include("path/to/your/imposter-configuration.json") -%>
  ]
}

Removing the user key in the Docker Compose configuration solves the problem, but it creates another one because the mounted volume now changes the ownership of the file(s) in the host :grimacing:


Use logger framework

Currently there are many stack prints and such.
A logger framework should be used to allow easy filtering and so on.

Some messages are incorrectly logged as error instead of debug / info.
For example:
https://github.com/O2MC/dimml-mobile-sdk/blob/6ba153eb64d9a8bfadbdb2eed25a9c571630cc0f/android/sdk/src/main/java/io/o2mc/sdk/Tracker.java#L47
https://github.com/O2MC/dimml-mobile-sdk/blob/6ba153eb64d9a8bfadbdb2eed25a9c571630cc0f/android/sdk/src/main/java/io/o2mc/sdk/Tracker.java#L52


Not working on Oculus Quest (2)

I do not get it working on Oculus Quest 2 (Android).
I don't see any errors in logcat, but it does not work at all. It does on Windows.
Using Unity 2020.3LTS

Hi @smitdylan2001 can you give more information?
When you say it does not work at all, do you mean the data doesn't save and you always get back default values?
Unfortunately I don't have an Oculus Quest to test on 🤷

I looked online, and it might be due to JSONUtility not working on Android if IL2CPP is enabled. IL2CPP is crucial for my project, so I have not tested without it yet.
https://stackoverflow.com/questions/65440665/cannot-serialize-and-deserialize-json-in-unity
https://forum.unity.com/threads/resolved-il2cpp-error-when-use-simplejson-in-unity-5-1.332578/
https://stackoverflow.com/questions/59194154/newtonsoft-json-works-in-unity-editor-but-not-on-mobile-devices
Heard that this does work, testing it now:
https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347

I just released V2 of the plugin.
JSONUtility works for me on IL2CPP android builds, i use it in all my apps.


benchmark for jodd json done by library jsoniter

I have read an article about a new json parser -> http://jsoniter.com/
The interesting part of this new library is the available benchmark - jodd json has been benchmarked by jsoniter.
see https://github.com/json-iterator/java-json-benchmark
maybe this benchmark can be used for optimizing jodd json - if needed and wanted ;-)
issue is only for information :-)

Nice!!! I already found this one, but kind of forgot it:))
We might check what they did and to see if we can make it even faster!

@igorspasic The first/main difference with those new parsers comes from binding, as they do code generation for the binders, a la protobuf, instead of Java reflection. I'd be curious to see how it compares when binding to a Java AST (non POJOs, but Lists and Maps).
Then, I'd be also curious to see how it fares wrt correctness, see http://seriot.ch/parsing_json.php.
From what I saw with Boon, performance started to deteriorate as the library was fixing more corner cases.

Yes @slandelle , I had something like code generation in mind for some point: actually it would be JSON structure definition in java, e.g. so we basically skip the parsing as we just consume the json right away. However, not soon :)
You are right about the corner cases, I wonder how many JSON libraries do convert to BigInteger or BigDecimal when number gets huge ;))
So in short, we will not do anything crazy, but just to check if maybe we can improve something. Plus we gonna ask jsoniter to also make a validator for json parsers, too. Yay!

Looking forward to it :)


[Core] add perf tests

related to: #1432
fixed: #33997
fixed: #33999
TODO:

[x] GET binary data (streaming)
[x] PUT binary data (streaming)
[x]  GET JSON data
[x] PUT JSON data
[x] GET pageable JSON data
[x] Add transport options:

[x] AsyncioRequestsTransport
[x] AioHttpTransport
[x] RequestsTransport
~[ ] HttpXTransport (for corehttp)~ separate pr

[x] AAD auth
[x] Test pipeline with default policies, no (non-Auth) policies, and custom list of policies

[ ] run both with and without the default pipeline just to see how much baggage it adds (perf run here: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=3464085&view=results)

[x] Onboard to perf automation (https://dev.azure.com/azure-sdk/internal/_build?definitionId=6679&_a=summary)

[ ] after merging PR, set perf branch to main
[ ] add perf results here: (https://dev.azure.com/azure-sdk/internal/_build/results?buildId=3464085&view=results)

~[ ] Copy over perf tests to corehttp~ separate PR

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

/check-enforcer override


Latest 1.7.10 crash with Pixelmon

http://pastebin.com/w13D2y9k

@prodkid can you reproduse this whiout kcauldron ?

it occurs in singleplayer as well.

You've got loads of mods installed, why would you report this to forge, cause it's clearly one of the mods that is broken, I'm guessing Pixlemon, report it to them.

@Termin8or not our end, was working fine before

@prodkid
I argee with @Termin8or here. Try to reproduse this whit only chickebbones mods and Pixelmon. If same crash happen. It's most likly on he's end, if not it's one of the other mods.
Reason why i asked about kcauldron is i know that kcauldron many times make bad crashes. Ther are modders out ther that dosent take bug report / crases if they have only tested it on kcauldron. They normal respose is that test with pure forge server then if same crash happen ther, then come back. But i it only happens with kcauldron. Go to them for support.


Failed to deploy models on RHEL 8.x

Describe the bug

Steps to reproduce

Run GPUStack on RHEL 8.5
Deploy a model

Result

Expected behavior

Environment

GPUStack version: v0.2.1
OS: RHEL 8.5

Additional context
Add any other context about the problem here.

can you retry with llama-box v0.0.55? choice the rockylinux or centos distro release artifact according to your backend.

Environment:

GPUStack version: main 74d5e7c

OS: Red Hat Enterprise Linux release 8.10 (Ootpa)

GPU: NVIDIA T4

llama-box version

(base) [root@ip-10-0-1-135 ~]# /root/.local/share/pipx/venvs/gpustack/lib/python3.12/site-packages/gpustack/third_party/bin/llama-box/llama-box-linux-amd64-cuda-12.4 --version
version: 7 (Core) (5f77b6c)
llama.cpp version: 1 (1b2f992)
built with cc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2) for x86_64-redhat-linux

Test Result: pass


Icons for EditTexts in DetailsDialog have wrong color in dark mode

This applies to light mode as well.


fix(card): update card styles to match design specs

Related Ticket(s)
Fixes: #6229 #6255
Description

Updates styles of card component to match specs
Modernizes spacing techniques of card copy wrapper
Reduces width of CTA link host element to prevent focus-on-adjacent-click

Changelog
Changed

Updated card styles
Updated tag-group styles
Fixed bug where clicking next to a card link

@oliviaflory The side effects percy found should be addressed now.


Running the CQL Evaluator on Android

I tried to have a read through of the pom.xml file and it seems that there are some server-side dependencies that would make this not run on Android. Would it be possible to get a version of this lib running on Android?
https://github.com/DBCG/cql-evaluator/blob/master/pom.xml
This will be highly appreciated
Thanks

@f-odhiambo can you please add an error log or call out the specific libraries in the pom that may be causing problems?

Some dependancies

org.springframework
spring-context
${spring.version}

javax
javaee-api
8.0.1

Error log  - adding implementation group: 'javax', name: 'javaee-api', version: '8.0' to the build.gradle for example - implementation group: 'javax', name: 'javaee-api', version: '8.0'
Please remove usages of jcenter() Maven repository from your build scripts and migrate your build to other Maven repositories.
This repository is deprecated and it will be shut down in the future.
See http://developer.android.com/r/tools/jcenter-end-of-service for more information.
Currently detected usages in: root project 'android-fhir', project ':core', project ':datacapture', ...
Affected Modules: core

The  evaluator.spring module is optional and should not be used on Android. There's an equivalent evaluator.dagger module for cases such as Android where Dagger would be the preferred DI framework.
The jcenter warning is likely coming from some other component. The cql-evaluator itself does not use jcenter.
The javaee-api module is used for the @Inject and @Named annotations which are standard DI annotations used by Dagger, Spring, and other DI frameworks. There may be a different dependency required by Android for those same annotations. I'll take a look at that.

I implemented a proof of concept Android app here:
https://github.com/DBCG/CqlEvaluatorSampleApp
Quite a few gotchas, but it runs. I'll look at enhancements to make this easier to use for Android going forward.


Settings > Library: "Mark new duplicate chapter as read" enabled by default

Describe your suggested feature
It can be irksome to manually delete duplicated old chapters. It would be advantageous for new users to have this option toggled by default, as it would prevent false updates of "new chapters."
When the user gets notified about new chapters, they want the newest ones from the manga, not old ones from scans groups or official releases that usually take longer to come out.
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.16.5.
[X] I will fill out all of the requested information in this form.

No


Migrate transformers tool to mltb2

see https://github.com/telekom/transformer-tools/blob/main/transformer_tools/transformers.py
after that archive https://github.com/telekom/transformer-tools/

done


Cross Partition Query. Null Reference Exception

Hi!
Doesn't work for query:
SELECT TOP 20 * FROM c
WHERE  c.Key = 'audit_log_2017_d8eeaa90-0348-4a7d-bf9e-3ecb32172640' OR  c.Key = 'audit_log_2018_d8eeaa90-0348-4a7d-bf9e-3ecb32172640'
But it works for:
SELECT TOP 20 * FROM c
WHERE  c.Key = 'audit_log_2017_d8eeaa90-0348-4a7d-bf9e-3ecb32172640'

Sorry, I cannot reproduce this issue on my side. Can you provide a an access to a test db where your encounter this issue?

I think it might be because of TOP keyword. For example in my local db.
Without TOP 3

With TOP 3

Raw Data
[
{
"id": "1",
"Key": 2019,
"Name": "Vasya"
},
{
"id": "2",
"Key": 2020,
"Name": "Maria"
},
{
"id": "3",
"Key": 2021,
"Name": "Hillary"
}
]


OSD-8688 Add cluster-operator-status script

Refs: OSD-8688
This PR adds a cluster-operator-status managed script script to gather data on degraded or unavailable cluster operators.
It can optionally target a specific cluster operator via the CLUSTER_OPERATOR parameter.
Successfully tested via ocm backplane testjob create. (An easy scenario to test against that quickly simulates cluster operator failures is to cordon and drain a master node.)

/assign @feichashao

I was looking at the PR but it seems there are build issues..
Ping me when your build is passing

@georgettica after much wrangling with false positives from the old ShellCheck (that don't fire in 0.7.3) I've gotten the build to work. Thanks for your time in having a look.
@feichashao as the creator of the original ticket if you could also see if it aligns with what you were hoping to see that would be much appreciated, thank you. I elected to go with 'last 15 lines' of logs rather than 'last 5 minutes' as for some operators I found that 'last 5 minutes' can be a LOT of data.

@mrbarge @feichashao we might want to upgrade shellcheck if this is the case
I will TAL

/lgtm
/approve
/hold
As the original ticket creator needs to approve the oc logs

Good job regardless 🤯🌟✨💫😽🎉😻

/lgtm

/lgtm

I elected to go with 'last 15 lines' of logs rather than 'last 5 minutes' as for some operators I found that 'last 5 minutes' can be a LOT of data.

The 'last 5 minutes' is just an example. Printing the last 15 lines is more desirable as it avoids flooding the output. Thank you for also providing grep & since options!

/unhold


Extend the experimental comparison between the parallelization strategies for AND, XOR and OR queries to assess performance

We recently adopted parallelized functions for the aggregations of bitmaps, e.g.,  ParallelAggregation.or. See https://github.com/RoaringBitmap/RoaringBitmap/pull/211
Optimization in such cases is a multidimensional problem, but at least for buffer bitmaps, it seems that there might be room for better or different trade-offs. However, we lack hard data at the moment.
What complicates matter is that different people might have different test cases. To keep things sane, we have an "official" set of real datasets: census-income, census1881, dimension_008,...
So it seems that we should benchmark the current parallelized implementations (e.g., ParallelAggregation.or) against alternatives on our "standard" datasets to help gain more insights.
Further documentation:
User @ppiotrow writes:

I've compared Maciej's and this implementation in our production application for two very heavy queries. This is only about buffered bitmaps.

Maciej’s (parr.OR + parr.AND)
[info] Benchmark                                Mode  Cnt     Score     Error  Units
[info] ProdApp.benchA                   	avgt   20  2873.975 ± 574.882  ms/op
[info] ProdApp.benchB                    	avgt   20   728.568 ±  70.563  ms/op

Maciej's (parr.OR)
[info] Benchmark                                Mode  Cnt     Score     Error  Units
[info] ProdApp.benchA                   	avgt   20  5652.284 ± 765.898  ms/op
[info] ProdApp.benchB                    	avgt   20  1550.732 ± 654.949  ms/op

Official
[info] Benchmark                                Mode  Cnt     Score     Error  Units
[info] ProdApp.benchA                   	avgt   20  6351.598 ± 508.392  ms/op
[info] ProdApp.benchB                    	avgt   20  2915.789 ± 571.573  ms/op

Two conclusions, the parallel AND makes difference and in general @maciej approach was faster even with only OR enabled. Sorry, but I cannot provide benchmark data or queries to you, but those are in general alternatives and conjunctions of about 3-100 bitmaps which has values around from 0 to 500 000 000.

User @richardstartin wrote:

As has been alluded to throughout this PR, there are a few dimensions to this problem (number of bitmaps, size of bitmaps, overlap of keys). An alternative implementation was previously welcomed to be benchmarked against this implementation, on the real datasets, and that offer is obviously still open.

Some big improvements weren't ported over to the buffer package before merge, which especially apply to skewed aggregations. This is a case of copy and paste, which I will issue another PR for, not for it necessarily to be merged, but for @ppiotrow to run his private benchmark against.
I'd also caution aiming for one "best" implementation.

I'd also caution aiming for one "best" implementation.

Right. But sometimes, when we understand better the trade-offs, we can offer different strategies. It is possible to offer more than just one function for each task.

I agree.
Here are the key overlaps for the data sets used for benchmarking currently. Each number is how many bitmaps in the aggregation have a container at a given key.
census-income: [196, 196, 195, 181]
census1881: [23, 27, 23, 28, 20, 23, 20, 20, 19, 26, 26, 23, 21, 21, 14, 17, 20, 20, 19, 21, 21, 18, 23, 24, 18, 24, 19, 20, 17, 23, 26, 27, 19, 24, 25, 22, 22, 23, 24, 19, 21, 19, 21, 19, 26, 24, 22, 20, 17, 20, 29, 22, 26, 24, 23, 24, 22, 29, 23, 23, 22, 25, 24, 23, 25, 22]
dimension_008: [4444, 799, 995, 15, 100, 69, 18, 58, 197, 199, 4, 17, 58, 66, 4, 7, 7, 11, 53, 23, 42, 38, 45, 106, 24, 88, 88, 3, 2, 3, 1, 5, 5, 6, 5, 11, 58, 55, 46, 54, 648, 316, 17, 10, 6, 5, 1, 3, 8, 12, 19, 8, 1, 95, 111, 5]
dimension_003: [1996, 1560, 1928, 128, 138, 322, 160, 206, 515, 525, 121, 89, 190, 253, 92, 117, 117, 150, 159, 97, 110, 76, 77, 152, 54, 242, 276, 3, 14, 4, 81, 76, 39, 10, 32, 10, 23, 15, 20, 29, 392, 893, 298, 313, 1721, 838, 669, 91, 35, 60, 9, 28, 30, 62, 64, 71, 3, 664, 249, 9]
dimension_033: [62, 42, 64, 43, 28, 52, 31, 30, 46, 65, 42, 24, 38, 57, 44, 41, 45, 47, 32, 29, 31, 22, 19, 33, 23, 61, 66, 3, 5, 3, 28, 31, 24, 8, 12, 8, 14, 8, 13, 15, 45, 30, 23, 18, 29, 43, 59, 26, 11, 21, 4, 12, 12, 18, 14, 17, 3, 55, 32, 7]
uscensus2000: [6, 6, 6, 6, 4, 10, 13, 10, 2, 3, 5, 4, 3, 9, 10, 5, 4, 3, 5, 5, 5, 9, 5, 1, 1, 4, 4, 4, 6, 3, 5, 2, 4, 5, 3, 9, 5, 7, 1, 2, 4, 5, 6, 7, 14, 17, 11, 11, 14, 10, 20, 25, 2, 3, 2, 5, 2, 5, 6, 6, 4, 3, 4, 4, 2, 7, 8, 1, 1, 1, 3, 3, 2, 3, 4, 4, 4, 4, 3, 4, 7, 6, 1, 1, 1, 3, 1, 3, 4, 3, 3, 7, 6, 4, 8, 11, 4, 1, 1, 3, 1, 2, 3, 5, 1, 3, 3, 2, 7, 8, 4, 1, 2, 2, 1, 3, 3, 1, 1, 1, 4, 1, 3, 4, 3, 1, 2, 2, 1, 5, 4, 2, 6, 2, 7, 3, 4, 9, 5, 5, 4, 5, 3, 5, 7, 6, 1, 4, 3, 5, 3, 4, 6, 3, 2, 2, 3, 2, 6, 1, 1, 1, 3, 4, 2, 4, 6, 3, 2, 2, 5, 2, 4, 6, 4, 3, 2, 3, 4, 3, 7, 6, 1, 2, 2, 4, 4, 3, 6, 5, 1, 3, 3, 4, 4, 8, 6, 2, 2, 3, 5, 3, 5, 7, 3, 1, 3, 4, 3, 5, 8, 8, 3, 3, 5, 6, 4, 6, 5, 2, 4, 3, 4, 3, 4, 5, 3, 1, 3, 4, 3, 1, 6, 5, 5, 3, 5, 8, 3, 9, 5, 6, 2, 5, 3, 2, 4, 4, 3, 2, 5, 6, 4, 4, 10, 5, 1, 3, 2, 2, 5, 2, 1, 1, 1, 3, 1, 4, 2, 2, 1, 1, 2, 2, 4, 4, 2, 2, 3, 3, 3, 3, 6, 5, 3, 2, 3, 5, 3, 4, 6, 5, 2, 4, 6, 4, 3, 6, 7, 1, 1, 3, 2, 3, 3, 3, 1, 4, 3, 3, 6, 3, 1, 1, 3, 1, 2, 3, 1, 2, 2, 1, 3, 3, 2, 1, 2, 2, 1, 3, 2, 2, 2, 2, 5, 1, 4, 5, 2, 1, 2, 3, 3, 2, 4, 3, 1, 1, 2, 3, 1, 3, 4, 1, 1, 2, 3, 2, 5, 2, 2, 2, 5, 2, 3, 5, 5, 5, 6, 11, 10, 13, 9, 8, 2, 2, 3, 1, 4, 3, 1, 1, 1, 4, 1, 3, 4, 2, 1, 2, 2, 1, 4, 5, 6, 3, 4, 8, 6, 7, 9, 9, 4, 4, 6, 6, 9, 11, 9, 3, 3, 5, 9, 6, 11, 10, 4, 2, 3, 3, 4, 5, 5, 4, 1, 3, 1, 3, 2, 6, 3, 1, 1, 1, 3, 1, 2, 3, 7, 4, 4, 7, 7, 6, 20, 12, 3, 5, 3, 7, 6, 9, 8, 5, 2, 2, 3, 5, 4, 7, 6, 2, 2, 2, 5, 3, 4, 5, 3, 2, 2, 4, 3, 5, 5, 4, 2, 3, 2, 6, 3, 6, 6, 13, 11, 14, 15, 11, 21, 16, 15, 1, 3, 3, 2, 7, 2, 3, 2, 2, 6, 3, 4, 5, 4, 1, 1, 4, 2, 2, 6, 2, 1, 1, 3, 1, 2, 3, 2, 1, 3, 3, 3, 3, 4, 5, 1, 4, 3, 4, 3, 5, 4, 3, 1, 1, 2, 1, 3, 4, 2, 1, 1, 2, 2, 1, 5, 2]
weather_sept_85: [187, 182, 177, 176, 177, 175, 177, 174, 175, 176, 176, 176, 178, 184, 183, 183]
wikileaks-noquotes: [94, 98, 95, 97, 96, 95, 92, 94, 91, 95, 91, 90, 90, 85, 88, 91, 84, 79, 81, 73, 93]
census-income_srt: [193, 194, 188, 116]
census1881_srt: [36, 33, 33, 32, 33, 33, 39, 30, 40, 37, 31, 39, 31, 35, 35, 33, 37, 34, 36, 31, 28, 29, 34, 34, 37, 42, 30, 40, 44, 52, 47, 44, 30, 35, 41, 46, 40, 51, 45, 50, 44, 46, 29, 46, 46, 40, 44, 41, 45, 28, 39, 45, 47, 43, 42, 32, 46, 43, 42, 31, 46, 49, 34, 48, 29, 26]
weather_sept_85_srt: [54, 133, 164, 149, 108, 90, 131, 141, 151, 166, 161, 159, 138, 161, 139, 123]
wikileaks-noquotes_srt: [81, 93, 67, 76, 67, 70, 72, 68, 89, 65, 72, 76, 76, 80, 71, 85, 73, 73, 76, 84, 61]

This can be calculated with the following Java:
int[] overlaps = ParallelAggregation.groupByKey(bitmaps).values().mapToInt(List::size).toArray();

For the sake of my curiosity, I would be fascinated to know these statistics from the aforementioned benchmark. Knowing this, and also the ratio of RunContainer, BitmapContainer and ArrayContainers would allow for a simulation using the RandomisedTestData class.

The statistics for both benchmarks' or queries.
https://gist.github.com/ppiotrow/b5597ec98e1b87964389e2c102bff442
How would you like me to print container types statistics?

Interesting, the aggregation is extremely sparse and narrow.
WRT container types, I don’t think it matters how it’s printed. Percentage per input bitmap? The point is, you can simulate your workload like this in about 20 mins without releasing data.

Am I right in thinking that a lot of the time you aren’t really aggregating containers, you’re really just appending them to an output? Some of those arrays are virtually all 1s with a handful of 2s and 3s. I think you could do this quickly on a single thread.

Statistics of containers types per each OR operation
https://gist.github.com/ppiotrow/0cae260c61a49eba42df7a81cad2a9b4
Regarding 1s I think you're right. It would be faster to aggregate in the single thread. However as a simple RB user I don't have knowledge when to use parallel and when single threaded.

@ppiotrow Frankly, I think you're presenting a degenerate case. Nevertheless, it exists. Perhaps someone should think of a way to handle it. Please benchmark your implementation on data sets where there is a significant level of overlap and therefore parallelisble work.

@ppiotrow @maciej
Let me know if the code at this branch is the code you're benchmarking. If it is, have you tested that it produces the same output as BufferFastAggregation for a range of bitmaps? I just tried (renaming the class to avoid name clashes) and I don't think the code produces correct output: see this test. I'm tracking that branch now, so if there are any fixes to commit I can pick them up and benchmark them independently.

Morning @richardstartin , it's clear that benchmark A is what we don't want to parallelise but would be great to detect it during calculations. Benchmark B however looks like the perfect scenario but it was slower than Maciej's (parr.OR) implementation.
Today I'll build the new improved code for buffered bitmaps and rerun the benchmarks and verify the cardinality for both approaches.

I fixed an unsigned error in the code on the branch and benchmarked against the "official" implementation on a 4 core/8 hyperthread machine. It's consistently a lot worse.

Benchmark
(dataset)
Mode
Cnt
Score
Error
Units
Ratio

ParallelAggregatorBenchmark.bufferParallelOr
census-income
avgt
5
340.713
232.272
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
census1881
avgt
5
496.425
3.137
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
dimension_008
avgt
5
773.783
21.557
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
dimension_003
avgt
5
1807.886
204.504
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
dimension_033
avgt
5
544.155
9.191
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
uscensus2000
avgt
5
179.714
3.062
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
weather_sept_85
avgt
5
1000.305
63.065
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
wikileaks-noquotes
avgt
5
187.54
3.523
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
census-income_srt
avgt
5
317.208
51.005
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
census1881_srt
avgt
5
321.851
7.544
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
weather_sept_85_srt
avgt
5
540.538
43.141
us/op
1

ParallelAggregatorBenchmark.bufferParallelOr
wikileaks-noquotes_srt
avgt
5
125.579
1.398
us/op
1

ParallelAggregatorBenchmark.bufferParallelOrMaciej
census-income
avgt
5
953.023
80.233
us/op
2.797143

ParallelAggregatorBenchmark.bufferParallelOrMaciej
census1881
avgt
5
695.58
11.032
us/op
1.401178

ParallelAggregatorBenchmark.bufferParallelOrMaciej
dimension_008
avgt
5
3491.582
556.825
us/op
4.512353

ParallelAggregatorBenchmark.bufferParallelOrMaciej
dimension_003
avgt
5
7541.867
1710.984
us/op
4.17165

ParallelAggregatorBenchmark.bufferParallelOrMaciej
dimension_033
avgt
5
753.382
133.811
us/op
1.384499

ParallelAggregatorBenchmark.bufferParallelOrMaciej
uscensus2000
avgt
5
832.236
7.676
us/op
4.630891

ParallelAggregatorBenchmark.bufferParallelOrMaciej
weather_sept_85
avgt
5
2352.466
131.861
us/op
2.351749

ParallelAggregatorBenchmark.bufferParallelOrMaciej
wikileaks-noquotes
avgt
5
568.942
4.669
us/op
3.03371

ParallelAggregatorBenchmark.bufferParallelOrMaciej
census-income_srt
avgt
5
948.632
85.78
us/op
2.990568

ParallelAggregatorBenchmark.bufferParallelOrMaciej
census1881_srt
avgt
5
561.282
7.92
us/op
1.743919

ParallelAggregatorBenchmark.bufferParallelOrMaciej
weather_sept_85_srt
avgt
5
1474.426
30.659
us/op
2.727701

ParallelAggregatorBenchmark.bufferParallelOrMaciej
wikileaks-noquotes_srt
avgt
5
305.352
5.621
us/op
2.431553

This isn't discounting your reported results, but it would be great to know what your actual benchmark is, and how many threads you're running. I would be interested to see your results of my benchmark on your benchmark machine. This is also to illustrate that this is a multifaceted issue.
Again, the branch is here.

Looks great, I really hope that your implementation rules. I'll have time for that in few hour from now.

Sorry but I think you are personalising this issue. This isn’t about “my” code versus “maciej’s code“ - this is about the fastest implementation across a range of reproducible benchmark scenarios. You have reported an unverifiable result with a workload you can’t share or describe. If you could provide a public benchmark which reproduces the reported behaviour without revealing trade secrets, that would be a great contribution to the stability of the library.

I didn't plan to make it personal, just a naming shortcut. I agree we are looking for the fastest solution. I'll benchmark it again on my machine soon. Regarding sharing the bitmaps I don't think it is possible.

I don't think it's a question of sharing the bitmaps, it's a question of writing the simplest benchmark scenario that can reproduce the issue, and sharing it for the sake of better benchmarking.

After using the code from the results improved twice for benchmark B and both are at the same level as the compared implementation. For me it is green light to switch. We also have the same results in cardinality.
Benchmark                                Mode  Cnt     Score     Error  Units
[info] ProdApp.benchA                   avgt   20  5905.950 ± 652.147  ms/op
[info] ProdApp.benchB                   avgt   20  1653.192 ± 562.620  ms/op

What about parallel And? I think you mentioned that there is no performance gain in parallel approach.

The "container-parallel" code on that branch is level with master, it is forked from the "bitmap-parallel" branch with a couple of bug fixes in the bitmap parallel implementation.
Here are some benchmark results of the bitmap-parallel implementation. They are available to you to run. If you have some decent hardware, it would be interesting to see your results and compare. But on my machine, the parallel implementation is almost at parity with a single threaded implementation once but is up to 122x worse.

Benchmark
(dataset)
Mode
Cnt
Score
Error
Units
Ratio

ParallelAggregatorBenchmark.bufferFastAnd
census-income
avgt
5
8.306
1.108
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
census1881
avgt
5
3.389
0.213
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
dimension_008
avgt
5
121.291
18.533
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
dimension_003
avgt
5
431.684
248.316
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
dimension_033
avgt
5
153.695
110.294
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
uscensus2000
avgt
5
3.421
0.261
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
weather_sept_85
avgt
5
43.707
1.558
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
wikileaks-noquotes
avgt
5
5.344
0.359
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
census-income_srt
avgt
5
6.269
0.325
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
census1881_srt
avgt
5
3.208
0.215
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
weather_sept_85_srt
avgt
5
17.446
0.367
us/op
1

ParallelAggregatorBenchmark.bufferFastAnd
wikileaks-noquotes_srt
avgt
5
6.856
7.674
us/op
1

ParallelAggregatorBenchmark.bufferParallelAndMaciej
census-income
avgt
5
74.861
11.573
us/op
9.012882

ParallelAggregatorBenchmark.bufferParallelAndMaciej
census1881
avgt
5
172.373
2.966
us/op
50.8625

ParallelAggregatorBenchmark.bufferParallelAndMaciej
dimension_008
avgt
5
2280.536
204.925
us/op
18.80219

ParallelAggregatorBenchmark.bufferParallelAndMaciej
dimension_003
avgt
5
5894.186
385.855
us/op
13.65394

ParallelAggregatorBenchmark.bufferParallelAndMaciej
dimension_033
avgt
5
229.064
25.649
us/op
1.49038

ParallelAggregatorBenchmark.bufferParallelAndMaciej
uscensus2000
avgt
5
419.701
0.979
us/op
122.6837

ParallelAggregatorBenchmark.bufferParallelAndMaciej
weather_sept_85
avgt
5
301.501
49.629
us/op
6.898231

ParallelAggregatorBenchmark.bufferParallelAndMaciej
wikileaks-noquotes
avgt
5
228.222
6.211
us/op
42.70621

ParallelAggregatorBenchmark.bufferParallelAndMaciej
census-income_srt
avgt
5
75.157
21.106
us/op
11.98867

ParallelAggregatorBenchmark.bufferParallelAndMaciej
census1881_srt
avgt
5
327.273
4.352
us/op
102.0178

ParallelAggregatorBenchmark.bufferParallelAndMaciej
weather_sept_85_srt
avgt
5
253.25
2.872
us/op
14.51622

ParallelAggregatorBenchmark.bufferParallelAndMaciej
wikileaks-noquotes_srt
avgt
5
207.206
1.343
us/op
30.22258

I think any of the following might add context to the discussion:

a description of a use case
a runnable benchmark
-prof perfasm, -prof gc, something

I am stepping aside for now as I have nothing sensible to contribute.

I confirm that the AND is indeed faster with single threaded benchmarks. I've run them on the benchmark machine from @lemire .

The canary release of app with v. 0.7.8 shows very similar performance results as ones with comparable implementation. IMHO the issue #223 is resolved.

@ppiotrow that’s great news. Still, this has been at the back of my mind. If you have short fat aggregations (keys overlap, few keys per bitmap, lots of bitmaps) a bitmap-parallel implementation should be profitable for both AND and OR. If you have many overlapping keys, it’s terrible.  The client application would be the right place to store statistics about which parallel implementation to use, because detecting it here has a large cost.

Following @ppiotrow's comment, I am closing this issue.


Error uploading Filesystem image (IDFGH-8864)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
Hi,
ENVIRONMENT:
<EMAIL_ADDRESS>-> framework-espidf @ 3.40300.0 (4.3.0)
<EMAIL_ADDRESS>->framework-espidf @ 3.40402.0 (4.4.2) (also tried with this and same result)
ESPTOOL               -> tool-esptoolpy @ 1.40201.0 (4.2.1)
DESCRIPTION:
I am trying to setup a file into a SPIFFS partition in my ESP32-4MB, but I am finding some inconsistency.
After uploading the image file spiffs.bin with file included  the file is not there when botting the EPS32.
I have noticed the address for SPIFFS partition is not the same as the addres provided at runtime.
Partitions.csv :
# Name,   Type, SubType, Offset,  Size, Flags
# Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap
reserved, data, 0xfe,     0x9000,   16k
otadata,  data, ota,      0xd000,   8k
phy_init, data, phy,      0xf000,   4k
ota_0,    app,  ota_0,    0x10000,  1780k
ota_1,    app,  ota_1,    ,         1780k
coredump, data, coredump, ,         64K
nvs,      data, nvs,      ,         128K
storage,  data, spiffs,   ,         256K

Flashing spiffs.bin ...
Building SPIFFS image from 'data' directory to .pio\build\esp32dev\spiffs.bin
/config.txt
Looking for upload port...
Auto-detected: COM8
Uploading .pio\build\esp32dev\spiffs.bin
esptool.py v3.1
Serial port COM8
Connecting........_
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 98:f4:ab:89:6a:a0
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x003ba000 to 0x003f9fff...
Compressed 262144 bytes to 948...
Writing at 0x003ba000... (100 %)
Wrote 262144 bytes (948 compressed) at 0x003ba000 in 1.4 seconds (effective 1543.7 kbit/s)...
Hash of data verified.

ADDRESS for flashing tool -> 0x003ba000
Booting....
-DEBUG-: [Thu Jan  1 00:00:02 1970] Partition size: total: 233681, used: 0
-DEBUG-: [Thu Jan  1 00:00:02 1970] Failed to open cfg file
-DEBUG-: [Thu Jan  1 00:00:02 1970] WR new file
-DEBUG-: [Thu Jan  1 00:00:02 1970] Failed to open cfg file
-DEBUG-: [Thu Jan  1 00:00:02 1970] FILE (/spiffs/config.json) : Total (bytes): 0
....
repartition > Boot partition  -> partition label: ota_0 type: 0 subtype: 16     address:      10000     size:    1822720
repartition > OTA 0           -> partition label: ota_0 type: 0 subtype: 16     address:      10000     size:    1822720
repartition > OTA 1           -> partition label: ota_1 type: 0 subtype: 17     address:     1D0000     size:    1822720
repartition > NVS             -> partition label: nvs   type: 1 subtype: 2      address:     39D000     size:     131072
repartition > SPIFFS  -> partition label: storage       type: 1 subtype: 130    address:     3BD000     size:     262144

ADDRESS for ESP32 -> 0x3BD000
After booting SPIFFS Partition is empty -> (Partition size: total: 233681, used: 0)
If I force the address to be 0x3BD000 in the partitions.csv everything works ok.
storage,  data, spiffs,   0x3BD000, 256K

Am I missing anything here?
I did this in the past with a 16MB device and worked ok.
Any clue, suggestion?
Regards, Ramon.

This looks very similar to https://github.com/platformio/platform-espressif32/issues/627:
If we simply add all the partition sizes to 0x10000 to calculate the offset of storage partition, then we get:
0x10000 + (1780+1780+64+128)*1024 = 0x003ba000
which is exactly what the upload tool is printing. But it is incorrect, because app partition sizes need to be aligned to 16kB (on the ESP32, at least). Which as exactly the problem reported in that issue.
I'm not sure why you are getting this issue in Platformio 5.2.0, which seems to be the latest version and should have a fix for this issue. You can try adding some debugging logs to this code in platformio, i guess it is responsible for calculating the partition offsets. If you don't find the cause, I recommend opening a new issue at https://github.com/platformio/platform-espressif32/issues, attaching a simplified version of your project which can reproduce the issue.
(I'm closing the issue here since it doesn't seem to be related to ESP-IDF itself.)


Added Issue templates

Resolves issue #138
Added file for:

Bug Report
Feature Request
Documentation issue

Thank you for giving me this opportunity @Pranjal360Agarwal

Hello @Pranjal360Agarwal, please assign me the appropriate labels.


Allow handling the response when the file is not found

Currently if the file is not found the middleware will call next anyway. It might be desirable to short circuit at this point and just return a 404.
Now, this can be done by using an "app" middleware right after using the StaticFiles one, but it will need to try and match the RequestPath against what the StaticFiles middleware is configured to handle. This doesn't look cool at all.
Suggestion:
Add:
public Func<StaticFileNotFoundContext, bool> OnFileNotFound { get; set; }

to StaticFileOptions. The return value of invoking OnFileNotFound might be used to tell StaticFiles that the request has been handled and thus shouldn't call next.
If this sounds good, I'd be happy to make a PR.

I don't recommend doing this, it would provide the same functionality as having your own middleware next in the pipeline. Note the event would fire for every MVC page / API, you'd have lots of noise.

Ok, here's the issue. I'm using angular, and because of that I have to do a "catch all" route in mvc so that angular can handle 404s on the client. The problem isn't with angular, if you're using any spa framework that has its own routing system you're forced to do that. The result? If I request a static file the response will be an html webpage.
Also, the event won't fire for every route because of fileContext.ValidatePath here. This method already checks for a match (if the url starts with the expected segment) before looking up whether the file exists or not. And as such, OnFileNotFound would only be called here.

A different approach I've seen for angular is to use UrlRewrite: https://github.com/aspnet/BasicMiddleware/issues/43
Note that fileContext.ValidatePath is empty most of the time, static files are served from the root url.

Ah, missed that StaticFiles would handle things in the root in a default setup. I'll check that approach. Thanks!


Add noise cancelling

Hey @robotaref, I have been experimenting using Picovoice's Koala Noise suppression, and tried your model but doesn't seem to work well with twilio and the telephony server, as the audio output becomes messed up, and deepgram can't transcribe the audio. Koala has a limitation of using PCM 16-bit audio and 16k sampling rate to use their process function, so I have reconfigured the code to resample the audio data and unpack it, and note their delay samples as well. However, it still doesn't seem to output the audio correctly. Would be great if we can collaborate on this.
Here's the code
from vocode.streaming.utils import convert_linear_audio, AudioEncoding

def __init__(self, noise_canceling_config: PicoVoiceNoiceCancellingConfig, logger: Optional[logging.Logger] = None):
        super().__init__(noise_canceling_config, logger)
        self.access_key = noise_canceling_config.access_key
        self.koala = pvkoala.create(access_key=self.access_key)
        self.is_first = True
        self.processed_audio_buffer = b'' # output queue to account for delay sample

    def cancel_noise(self, audio: bytes) -> bytes:
        self.pre_buffer += audio
        if self.is_first:
            self.is_first = False
            return audio[:160] # ignore first chunk of silence bytes
        lin_audio = audioop.ulaw2lin(audio, 2) # convert to 16-bit pcm
        upsampled_audio, _ = audioop.ratecv(lin_audio, 2, 1, 8000, 16000, None) # upsample to 16k

        processed_audio = b''
        for i in range(0, len(upsampled_audio), 512): # since koala takes in 256 samples at a time of 16-bit pcm audio, so 512 bytes
            audio_chunk = upsampled_audio[i:i+512]
            audio_chunk += b'\x00' * (512 - len(audio_chunk))
            input_frame = struct.unpack("256h", audio_chunk) # convert to sequence[int16]
            processed = self.koala.process(input_frame)
            output_frame = struct.pack('256h', *processed)
            processed_audio += output_frame

        self.processed_audio_buffer += processed_audio # add to output queue
        if len(self.processed_audio_buffer) >= self.koala.delay_sample:
            processed_audio = self.processed_audio_buffer[:self.koala.delay_sample] # use the first 160 bytes and remove it from the queue
            self.processed_audio_buffer = self.processed_audio_buffer[self.koala.delay_sample:]
        else:
            processed_audio = audio[:160]
        audio = convert_linear_audio(processed_audio, input_sample_rate=16000, output_sample_rate=8000, output_encoding=AudioEncoding.MULAW)
        self.post_buffer += audio
        return audio[:160]

Hey @anunayajoshi,
Got your message. will respond as soon as possible.

Hey @robotaref , would love to discuss this further.


How to create modules so that it is reflected in AdminLTE frontend

Hello,
I've added models from my table. The models are added successfully in the backend i.e. 'sports.js, sports.json' but they are not reflected in the admin LTE. Also how to create modules in the client->app->modules section
for example mine is sports
so that after adding client->app->js->app.js it will reflect in the admin UI.
Any help is appreciated.
Thanks,

@aniruddhasm did you manage to find a way to generate the module?

@aniruddhasm  You have to create the frontend files and place them in /client/app/modules/ i.e

config/yourmodule.config.js
config/yourmodule.routes.js
services/yourmodules.service.js
views/form.html
views/list.html
views/main.html
-app.yourmodules.js

Then add the location of your js files in index.html and remember to declare your module in js/app.js

There is currently not an easier way of doing this than what @denzelwamburu suggests.
In the future there might be a generator for this, possibly based on this project: https://github.com/johannesjo/generator-angular-auto-admin-loopback
Also see https://github.com/beeman/loopback-angular-admin/issues/139 and https://github.com/beeman/loopback-angular-admin/issues/171 .


WIP Longest common path

@malandrew Take this, it is dangerous to implement Meta::thriftIDL alone.

Replacing with #95


Replace git whatchanged with git log --raw

Hi.
I replaces git "whatchanged" command  with "git --raw" to persist same output. The reason is "whatchanged" command is deprecated and hides merge commits from logs.
Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. This is simply a reminder of what we are going to look for before merging your code.

[x] I have read the CONTRIBUTING doc
[ ] I have referenced the Jira issue related to my changes in one or more commit messages
[ ] I have added tests that verify my changes
[x] Unit tests pass locally with my changes
[ ] I have added documentation as necessary
[x] No Javadoc warnings were introduced with my changes
[x] No spotbugs warnings were introduced with my changes
[ ] I have interactively tested my changes
[x] Any dependent changes have been merged and published in upstream modules (like git-client-plugin)

Types of changes

[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Thanks for the pull request.  I have several concerns with it.

This is a breaking change.  I generally don't accept breaking changes without a way to preserve behavior for existing users.  With over 250 000 installations of the plugin in the world, I am confident that there are users in the world who depend on the merge commits not being included in the output.  Adding merge commits to the output needs to be controlled by a flag, at least as a global configuration setting which can be used to retain existing behavior
Tests need to be written which show the "before" and "after" case.  A change without tests indicates that none of the existing tests were checking for that behavior and no test will prevent someone from reverting the change or harming it in some way
Based on discussions in https://github.com/jenkinsci/git-client-plugin/pull/237, it seems there are formatting differences between git whatchanged and git log which your pull request does not address.  Please include tests to confirm that formatting remains consistent

Hi Mark. Thank you for your comments.
You are absolutely right. I though of putting a flag ( like checkbox, etc.. ) into the Git Tool Definition or Jenkins Management page. Just was not sure how this get along with your plugin goals. If you approve putting this kind of flag is appropriate and making optional using git log command, I can start working the on this including your concerns.
Regards.

@aytuncbeken I needed to rename the development branch from stable-2.8 to stable-2.x.  That caused this pull request to be closed.  Could you reopen the pull request, targeting the stable-2.x branch?


Red Heart Emoji greys out

Issue Type: Bug
Just type a red heart on a html document using the windows emoji panel in vscode and it greys out! Same happens if you copy it on vscode. :(
VS Code version: Code 1.39.1 (88f15d17dca836346e787762685a40bb5cce75a8, 2019-10-10T23:31:28.683Z)
OS version: Windows_NT x64 10.0.18932
Extensions (10)

Extension
Author (truncated)
Version

vscode-css-formatter
aes
1.0.1

npm-intellisense
chr
1.3.0

bracket-pair-colorizer-2
Coe
0.0.28

vscode-babel-coloring
dza
0.0.4

python
ms-
2019.10.41019

cpptools
ms-
0.25.1

material-icon-theme
PKi
3.9.1

platformio-ide
pla
1.9.0

live-sass
rit
3.0.0

LiveServer
rit
5.6.1

(1 theme extensions excluded)

Actually it also blacks out in the browser.

/needsMoreInfo
Please update this issue after reading https://github.com/Microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions#writing-good-bug-reports-and-feature-requests. Thanks.


include is deprecated

As of Ansible 2.4 (or earlier?), it is stated that usage of "- include:" such as in the role first_steps is deprecated and should be replaced with "-include_tasks:" (which was made available starting in in 2.4).
Since the collection framework requires at least version Ansible 2.9 to work, I am assuming it is safe to update code to use include_tasks in the collection framework implementation of the first_steps role.
Will see to push a patch soon.

This has been resolved.


Featured items lang

From Natalia (30/07):

-On the English version of the homepage, it is fine.
-On both the French and Spanish versions of the homepage, the item shows up in both English and the translated language. Is there a way that only the translated piece (not English) shows up on the Spanish and French versions of the site?

Check the view selector to include lang (and/or exclude EN)?
bug to explore

should be fixed, need to rewrite the view in code + commit


Why can't I use the inspector after installing the vite-plugin-html

description
First, I create a project with vite, then i install vite-plugin-html, I can't visit http://localhost:5173/__unocss in my Vite dev server normally.
minimal reproduction
https://github.com/maddenBoy/unocss-nowork-inspector/tree/main/unocss-nowork-inspector
step
pnpm install
pnpm run serve

这个问题也遇到了。


Add make_agg_trans

Current dependencies on/for this PR:

main

PR #763

PR #765

PR #767

PR #769

PR #771

PR #795

PR #819

PR #829

PR #797

PR #824

Change in direction: while this will be useful, the implementation will be significantly different.


Feature request: Messages.removeMessage

A remove message function would be a great addition. I'd like an official way to add a message immediately on send and remove it should the server return an error.

+1

Ok, will add it


loader: do not prepend cwd to path as it is a security issue

Python does have cwd on sys.path by default:
>>> import sys; sys.path[0]
''

However, having cwd on sys.path is potentially a security issue (see safepath) and the custom loader should absolutely not add it itself since this circumvents PYTHONSAFEPATH=1, -P and other knobs that Python provides to fixes the default-unsafe behavior.
Before this commit, any application using wasmtime.loader can be subverted if it is ran in a cwd controlled by an attacker so that it runs a completely different Wasm module. Since WASI is enabled by default this means arbitrary code execution, even with PYTHONSAFEPATH set.

Thanks!


Can't find dials on other images

Hi, first thanks for your awesome code.
I can successfully run your code against your sample image provided. If I understood correctly, by checking your image with an image editor, I can see:

Each dial radius is approx 65 pixels
distance between dial centers approx 130 pixels
Which falls in the minDist, minRadius, and maxRadius of your code and it works.
But when I use my own image, which has:
each dial radius approx 55 pixels
distance is approx 106 pixels
And then I get None at cv2.HoughCircles

I am playing with those params, I set minRadius to 45 and yet I can't get a result.
Could you please advise on how to play with the parameters?

I'd like to invite you to see my repository which I give you credit for your work. It is still unreleased and very alpha stage. Let me know your thoughts.


ShortTermFeatures.feature_extraction returns 68 features not 34

According to the wiki https://github.com/tyiannak/pyAudioAnalysis/wiki/3.-Feature-Extraction, "eature_extraction() returns a numpy matrix of 34 rows and N columns, where N is the number of short-term frames that fit into the input audio recording."
However, I am getting 68 features, even tho my audio is mono:
from pyAudioAnalysis import audioBasicIO
from pyAudioAnalysis import ShortTermFeatures

def pAA(filename):
    [Fs, x] = audioBasicIO.read_audio_file(filename)
    x = audioBasicIO.stereo_to_mono(x)
    # The following code uses feature_extraction() of the ShortTermFeatures.py file to extract the short term
    # feature sequences for an audio signal, using a frame size of 50 msecs and a frame step of 25 msecs
    # (50% overlap).
    F, f_names = ShortTermFeatures.feature_extraction(x, Fs, 0.050*Fs, 0.025*Fs)
    return F

pAA("VARIATION-004-024.mp3").shape

(68, 99)
Why? The last 34 features are delta features, perhaps these should be documented?
When would you need them?

All of these
++++++++++++++++++++++++++++++++++++++++++++
zcr
energy
energy_entropy
spectral_centroid
spectral_spread
spectral_entropy
spectral_flux
spectral_rolloff
mfcc_1
mfcc_2
mfcc_3
mfcc_4
mfcc_5
mfcc_6
mfcc_7
mfcc_8
mfcc_9
mfcc_10
mfcc_11
mfcc_12
mfcc_13
chroma_1
chroma_2
chroma_3
chroma_4
chroma_5
chroma_6
chroma_7
chroma_8
chroma_9
chroma_10
chroma_11
chroma_12
chroma_std
delta zcr
delta energy
delta energy_entropy
delta spectral_centroid
delta spectral_spread
delta spectral_entropy
delta spectral_flux
delta spectral_rolloff
delta mfcc_1
delta mfcc_2
delta mfcc_3
delta mfcc_4
delta mfcc_5
delta mfcc_6
delta mfcc_7
delta mfcc_8
delta mfcc_9
delta mfcc_10
delta mfcc_11
delta mfcc_12
delta mfcc_13
delta chroma_1
delta chroma_2
delta chroma_3
delta chroma_4
delta chroma_5
delta chroma_6
delta chroma_7
delta chroma_8
delta chroma_9
delta chroma_10
delta chroma_11
delta chroma_12
delta chroma_std
++++++++++++++++++++++++++++++++++++++++++++
so I think maybe the author add 34 delta_* in the last.

Thanx for the comment, i've updated the wiki
"The total number of short-term features implemented in pyAudioAnalysis is 34. In addition, the delta features are optionally computed (they are by default enabled, but can be disabled by setting the deltas argument in feature_extraction() to false). So, the total number of short-term features, including the deltas is 64."


Property border_radius Is Affecting Clipping Behaviour

Duplicate Check

[X] I have searched the opened issues and there are no duplicates

Describe the bug
Setting border_radius property for a Container clips offsprings that extend out of the Container.
Code sample
Code
def main(page: ft.Page):
    def container(with_radius: bool) -> ft.Container:
        c = ft.Container(
            width=200,
            height=200,
            bgcolor="#FFFFFF",
            alignment=ft.Alignment(1.3, 0),
            content=ft.Container(
                width=100,
                height=100,
                bgcolor="#FF0000",
            ),
        )
        if with_radius:
            c.border_radius = 0  # Basically any value
        return c

    page.add(
        container(False),
        container(True),
    )
    page.update()

ft.app(target=main)

To reproduce

Just run the code and you'll see the difference.

Expected behavior
Both red children containers should be able to appear outside its parent.
Screenshots / Videos

Captures

Operating System
macOS
Operating system details
Sonoma 14.6.1
Flet version
0.22.1
Regression
No, it isn't
Suggestions
No response
Logs
Logs
python -m path.to.file

Additional details
No response

BTW, flet>=0.23.0 cannot run properly on my mac with python==3.10.11 somehow, so I cannot check if the issue is fixed in the latest version of flet.

It happens because, when you set the border_radius (any value other than the default None), the clip behavior of the container is internally changed to ANTI_ALIAS.
To achieve the expected result, you need to (force) set the clip_behavior to NONE: clip_behavior=ft.ClipBehavior.NONE,

BTW, flet>=0.23.0 cannot run properly on my mac with python==3.10.11 somehow, so I cannot check if the issue is fixed in the latest version of flet.

Try the latest pre-release: pip install flet -U --pre

Thanks, I should have saw that in the doc.

BTW, flet>=0.23.0 cannot run properly on my mac with python==3.10.11 somehow, so I cannot check if the issue is fixed in the latest version of flet.

Try the latest pre-release: pip install flet -U --pre

Hi, yes the pre-release version works on my Mac.

Yh, the issue was fixed: https://github.com/flet-dev/flet/issues/3557


use std::deque instead of DynArray(on going)

So this PR is a part of DynArray refactoring(https://github.com/shogun-toolbox/shogun/pull/3824), the reason why we don't use std::vector here is because [1] and [2].
[1] https://stackoverflow.com/a/17794965
[2] https://stackoverflow.com/a/8399470

@lisitsyn could you give me some feedback for this pr? why so many error comes out but not directly relate to DynArray?

https://github.com/shogun-toolbox/shogun/pull/3833

sorry @vigsterkr , I failed to solve the error in SplittingStrategy.standard test. I had update the pr and wise you could give me some guide on that issue and pr itself. Maybe it's just a little error and i somehow miss it. But I'm too tired to move on today. I will keep working on it until it's done. :)
BTW, learn a lot of things from this pr and I wise I could use them in the std::vector refactoring. Sorry, I went into an wrong direction and waste a bunch of time. And, I waste a lot of time in building and rebuilding :(

or of course there's an option to actually not return the array itself but only an iterator... and refactor some parts of shogun to use iterator to copy CDynamicArray... this of course still does not solve our issue with serialization.

based on gdb of GaussianProcessClassification.apply_preprocessor_and_binary the problem is of course is in shogun::CDynamicArray<bool>::set_element; it seems it goes into an infinite recursive callstack as there are more than 20000+ set_element calls on the stack.... please try to copy-paste code without ERRORS

@MikeLing one more thing. please dont even push any commits until you dont have ctest running successfully locally...

@MikeLing would be great to add unit-tests in the other PR to cover these errors, so that next time if there's a refactor the problem is easily caught

done