Kotlin style receiver Function literals with receiver

The request is to add Kotlin style receiver function literals and receiver function types language features to Dart. This will enable among other things writing Kotlin style DSLs for Flutter UI, configuration, etc.
Receivers are anonymous (not necessarily) methods that enables the access on visible methods and properties of a receiver of a lambda in its body without any additional qualifiers.
class Html {
    Body body;

    Body body(void Body.receiver()) {
        var body = Body();  // create the receiver object
        body::receiver();        // Invoke receiver with receiver object
        this.body = body;
        return body;
    }
}

class Body {
    List<Children> children;

    Div div(void Div.receiver()) { ... }
    P p(void P.receiver()) { ... }
}

Html html(void HTML.receiver()) {
    var html = Html();  // create the receiver object
    html::receiver();        // Invoke receiver with receiver object
    return html;
}

html(() {       // Anonymous function with receiver begins here
    body(() {
        div(() {
             // TODO
        });
    });   // calling a method on the receiver object without additional qualifier
});

We could go a bit further and make empty () optional in the context of an argument.
With higher order function syntax, this would look like this:
html {       // Anonymous function with receiver begins here
    body {
        div {
             // TODO
        };
    };   // calling a method on the receiver object without additional qualifier
};

It allows other cool things like let, apply, with, etc from Kotlin. It looks prettier and clearer than yaml and toml for configurations.

So void Body.receiver() is the function type (or method type?) of a function taking no arguments, returning void and needing to be run with a Body instance as its this binding.
That would be a new kind of function type, but not particularly special type-wise. It could be considered equivalent to a function with an extra required (non-nullable?) "named" parameter named this with type Body. All type checking should otherwise work normally for that.
The invocation then passes the this argument along with any other arguments, and invocation proceeds normally, just with this bound to the special extra argument value.
So, from an object model or type system perspective, this is hardly a controversial feature.
So, it's most likely possible, the question is whether it's desirable for Dart as a language.
It's not great for readability that you cannot infer what this points to from the surrounding text. If you are of the "Explicit is better than implicit" school, then this is not an advantage. If you like writing DSLs (the epitome of implicitness), then it's likely a great feature.

So void Body.receiver() is the function type (or method type?) of a function taking no arguments, returning void and needing to be run with a Body instance as its this binding.

Yes, You are right. It is a function "receiver" type (or anonymous method type?).

That would be a new kind of function type, but not particularly special type-wise. It could be considered equivalent to a function with an extra required (non-nullable?) "named" parameter named this with type Body. All type checking should otherwise work normally for that.
The invocation then passes the this argument along with any other arguments, and invocation proceeds normally, just with this bound to the special extra argument value.
So, from an object model or type system perspective, this is hardly a controversial feature.

Yes! Just, would like to add that the this parameter is not exposed to the end user. It is implicit and hidden.

It's not great for readability that you cannot infer what this points to from the surrounding text. If you are of the "Explicit is better than implicit" school, then this is not an advantage. If you like writing DSLs (the epitome of implicitness), then it's likely a great feature.

You have listed some good concerns here. I like explicit programming (One of the reasons why I love Dart). But function receiver types and anonymous methods are completely explicit from context.
Function f = {
    body { ... }
};

It has to be either defined at a place where an anonymous method is expected or defined explicitly. Examples:
Example with explicit definition:
// Warning: Imaginary syntax
void Html.receiver() = {
    // It is very clear that this is anonymous method on `Html`
    body { ... }; // This is analyzable, easy to understand and totally explicit (As explicit as vanilla method)
};

Example with context:
// It is explicitly clear from `html` function's syntax that it is an anonymous method on `Html`.
// Also IntelliJ like parameter hint for implicit `this` parameter might be helpful.
html {
    body { ... }
};

Adding an example for Kotlin's let, apply, with, etc.
Standard library or support library level with:
Future<void> with<T>(T value, void T.receiver()) async {
    await value?::receiver();
}

Usage of with:
class Something {
  void something() { ... }
  void somethingElse() { ... }
  void newThing() { ... }
}

main() {
  ...
  with(Somethng()) {
    something();
    ...
    somethingElse();
    ...
    newThing();
    ...
  };
  ...
}

Declaring a method on Html, like:
void Html.myHtmlBuilder() {
    // It is very clear that this is a method on `Html`
    body { ... }; // This is analyzable, easy to understand and totally explicit (As explicit as vanilla method)
}

sounds remarkably like extension methods. The thing being asked for here is effectively to make function expressions that acts like extension methods, and which can be passed around like first-class objects before being bound to their receiver. That's more complicated than just scoped extension methods, because they bind the receiver late.
It's an interesting notion (I just read up on Kotlin's run/let/with/apply/also for a different reason). The underlying functionality would have something in common with extension methods, interface default methods and mixins - in all cases, a method is applied to another receiver than the one it was written for (if any). The one concept we do not have is a free first-class unbound method. That's a larger change to the function type system, but probably not a complex one.
If we want to add functions like the Kotlin apply or also, then we probably need self-types to express them. Perhaps through generic extension methods where the receiver is a type parameter.
The Dart versions of the Kotlin methods could be something like:
R T::let<T, R>(R Function (T) action) => action(this);  // Extension method on T, `this` has type T.
R T::run<T, R>(R Function (T) action) => this::action();
T T::apply<T, R>(R Function (T) action) { action(this); return this; }
T T::also<T, R>(R Function (T) action) { this::action(); return this; }
R with<T, R>(T object, R T::Function() action) => object::action();

(Except Dart wouldn't have apply and also, we'd just use cascades instead).
All in all, I like the idea. Not sure if we can make it a priority, though.
@munificent (in case this might be useful for constructing UI).

sounds remarkably like extension methods

Yes. That is how Koltin implements it that way. But the proposal was to implement it as an anonymous function with a hidden implicit required parameter called this of receiver type. So there wont be any necessity to add extension methods or changing Dart's type system. This should work with existing type system.
For example:
This
// Warning: Imaginary syntax. Declaring anonymous method named `myHtmlBuilder` on `Html`.
void Html.myHtmlBuilder() = {
    // It is very clear that this is anonymous method on `Html`
    body { ... }; // This is analyzable, easy to understand and totally explicit (As explicit as vanilla method)
};

would translate into:
typedef Function = void HtmlBuilder(Html html);
HtmlBuilder myhtmlBuilder = (/* implicit */ Html html) {
    // It is very clear that this is anonymous method on `Html`
    /*implicit<EMAIL_ADDRESS>{ ... }; // This is analyzable, easy to understand and totally explicit (As explicit as vanilla method)
};

Instead of introducing a whole new kind of function parameter, and answering the tricky questions around those (like, is a static function, which cannot have any uses of this, usable as a receiver-function for any receiver?), we could just allow functions to declare any normal parameter as a this parameter.
Then you can write (Html this) { somethingOnHtml(); } and the name will be looked up in the parameter this. If we combine this with something like #16900, then you can bind an object as a receiver as o -> (this) { .... use methods on this ... }.
(We still have to handle some edge cases with that approach, like cases where an instance method in the lexical scope is not on this).
That approach would not give as nice a syntax because you have to introduce a parameter and write this, not just write the Type:: in front, but instead it allows you to infer the parameter type in the normal way.

I like your proposal. It does not introduce syntactic sugar and new syntax. Ofcourse one has to write (Html this) { ... }, but it looks more straight forward and intuitive.
class Html {
    Body body;

    Body body(void receiver(Body body)) {
        var body = Body();  // create the receiver object
        receiver(body);        // Invoke receiver with receiver object
        this.body = body;
        return body;
    }
}

class Body {
    List<Children> children;

    Div div(void receiver(Div div)) { ... }
    P p(void receiver(P p)) { ... }
}

DSL would look something like this:
html((this) {       // Anonymous function with receiver begins here
    body((this) {
        div((this) {
             // TODO
        });
    });   // calling a method on the receiver object without additional qualifier
});

With higher order functions and optional semicolons:
html (this) {       // Anonymous function with receiver begins here
    body (this) {
        div (this) {
             // TODO
        }
    }   // calling a method on the receiver object without additional qualifier
}

Stumbled upon this thread by accident, was captivated by the discussion, now feel the urge to join in - sorry :)
How about 2-step solution?
Step 1: allow every function/method/operator/constructor in dart to have a magic argument of type InvocationContext. If a function declares this argument, compiler passes it automatically.
Actually,it's a paremetrized type InvocationContext<T>. What  T is for, and how it helps in the issue at hand - we will see shortly
Step 2. Extend the syntax of cascade to allow cascading blocks, like foo..{ code...}
"Code" is whatever we can currently write inside a block or function body - it can be anything,
But: whenever there's a function call inside this block, then - if said function  has an InvocationContext argument -  compiler passes the context that contains the reference to "foo"
in context.parent
Example:
Html..{
   +Body..(
      +Div..{
         // content
       };
      +Div(parameters)..{
         // content
       }
       for (int i=0; i<10; i++) {
          +Div(parameters);
       }
   )
}

Operator unary + can be defined in Div class with parameter {InvocationContext<HTMLElement> context}
and implemented as just
context.parent.addChild(this);
(Note that we don't add any anonymous methods to receiver here)
I think extension methods can be expressed in a similar manner, not sure, It's just a raw idea at this point. (BTW, we discussed InvocationContext earlier, in connection with logging, but it never got much traction then, though I think it's a powerful concept).

Step 2. Extend the syntax of cascade to allow cascading blocks, like foo..{ code...}

"Cascading blocks" with implicit this context is a brilliant idea. With that we wouldn't need neither InvocationContext (which feels very odd to me) nor receiver methods.
Example:
This is basically with pattern baked into the language.
Html().{
  // Here "this" is "Html" instance on which cascading block was invoked.
  /* implicit this. */body(width: "100%").{ ... } // body is just a method on Html
}

Full example:
class Html {
    Body body;
    Body body({String width}) => this.body = Body()..width = width;
}

class Body {
    List<Children> children;
    Div div(/*{... params ...} */) { ... }
    P p(/*{... params ...} */) { ... }
}

Usage in DSL with optional semicolons:
Html().{
    body().{
        div(class: "a-box").{
             // TODO
        }
    }
}

We briefly touched upon cascading blocks in this thread https://groups.google.com/a/dartlang.org/forum/#!topic/misc/NDrzmF6UGjQ
It seems Lasse didn't like it. Or maybe I failed to explain what I meant. I also remember that "with" was frowned upon, in every language it showed up I don't remember the specific reasons, but if there are any, then same objections must apply to Kotlin's contraption. One criticism that can be made about it is: the body can see too much inside the object, which is aggravated by the fact that object's properties eclipse the names from the lexical scope, It's easy to inadvertently hit object's method instead of local one. Every change in the class (e.g. addition a new method) has the potential to conflict with some of the anonymous blocks already written by someone. If this is a real concern, then InvocationContext solves the problem.
In fact, InvocationContext has more uses, unrelated to the issue under discussion.

And then, there's a number of purely practical considerations. In your design, you have to define lots of auxiliary functions: e.g. "Body" has to define a function to insert "div", to insert "p", and every other type of element, True, these functions can be inherited from common base class, but the common base class cannot know anything about custom components. In flutter, custom components can nest, there can be Foo with Bar as a child, but Foo doesn't know anything about Bar, so it cannot contain "bar" method.
With InvocationContext, the problem simply doesn't exist, you don't have to write a single line of code to support Bar inside Foo, because InvocationContext parameter gets inherited by Bar constructor from the constructor of HTMLElement, and the rest is automatic.
Another point: consider this
Html().{
    body().{
        for (int i=0; i<10; i++)
            div().{
                 // TODO
            }
    }
}

In this program, it's not quite clear that div gets attached to its parent (body) as a child b/c it looks like a function call rather than "add child" instruction. WIth unary plus, the logic is more explicit.
Html().{
    +Body().{
        for (int i=0; i<10; i++)
            +Div().{
                 // TODO
            }
    }
}

the body can see too much inside the object

Only what is public.

Every change in the class (e.g. addition a new method) has the potential to conflict with some of the anonymous blocks already written by someone.

This problem is present inside a method already. Adding new methods will eclipse the methods from global scope. This does not prevent people from adding methods though.
void hello() => print("hello");
class User {
  User() => hello();
  void hello() => "Hello from user"; // <= Newly added!
}

Kotlin receiver methods and extension methods. Have to say, this had never been a problem.

which is aggravated by the fact that object's properties eclipse the names from the lexical scope, It's easy to inadvertently hit object's method instead of local one

Very careless programming. Never a real problem. This is already the case inside usual methods as mentioned above.

And then, there's a number of purely practical considerations. In your design, you have to define lots of auxiliary functions: e.g. "Body" has to define a function to insert "div", to insert "p", and every other type of element, True, these functions can be inherited from common base class, but the common base class cannot know anything about custom components. In flutter, custom components can nest, there can be Foo with Bar as a child, but Foo doesn't know anything about Bar, so it cannot contain "bar" method.

With InvocationContext, you have to implement multiple overloaded methods with different parent types. Dart doesnt support methods overloading yet. Besides, it is hard to know what a child can be added. It is easier to know what will be added into something. Kinda like add should be in List, not String, int and every other class.

but the common base class cannot know anything about custom components

There should be a Widget base class for widgets and generic addWidget receiver method in Body for custom widgets.

Question 1: What gets passed as InvocationContext?
class Body {
  void operator+(InvocationContext<HtmlWidget> ic) { ... }
}

Html().{
    +Body().{ // <= What do you pass here?
      // ...
    }
}

If I understand right, this gets passed as invocation context? That is pretty cool! So when there is a no this (outside method or in cascade blocks), a method/operator with InvocationContext is disallowed.
Question 2: Abusing unary operators
Abusing unary operators for this is not a good idea. But it does result in a clean syntax.
Question 3:
It is an intrusive and inconsistent change because of the statement below:

allow every function/method/operator/constructor in dart to have a magic argument of type InvocationContext.

Having a method like this:
void something(InvocationContext<Html> ic, var1, var2) { ... }

and calling it like this:
something(var1, var2);

is not consistent.

If we get just the "cascaded blocks", without any of receiver functions, InvocationContext or higher order functions, we can achieve the DSL like shown below:
class Html {
    Body body;
    Body body({String width}) => this.body = Body()..width = width;
}

class Body {
    List<Children> children;
    Div div(/*{... params ...} */) { ... }
    P p(/*{... params ...} */) { ... }
}

Html().{
    body().{
        div(class: "a-box").{
             // TODO
        }
    }
}

InvocationContext is a named parameter (not a positional one), so it's neither intrusive nor inconsistent.
void operator+({InvocationContext<HtmlWidget> ic}) {
    ic.parent.addChild(this); // that's all
}

The only thing we have to know about InvocationContext for this feature to work is that it contains reference to "parent", and this parent has type HtmlWidget. In your example, reference to Html object will be passed as "parent" to "+Body" operator.
Abusing operators is nothing new. E.g. In C++, you have <<. Just a matter of convenience. In natural language, we have lots of overloaded words too.
To clarify, I'm not identifying myself with either of these propositions, be it "with" or "InvocationContext or anything else - just trying to formulate pro/con arguments for them.
The question is whether the feature is aligned with dart's plans for its future evolution. If so, it makes sense to discuss details (e.g. take some example from flutter and encode it in one way and then in another way). Otherwise, such discussion would be premature :)

flutter example:
BEFORE:
new Card(
  color: Colors.white,
  child: new Center(
    child: new Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.center,
      children: <Widget>[
        new Icon(choice.icon, size: 128.0, color: textStyle.color),
        new Text(choice.title, style: textStyle),
      ],
    ),
  ),
);

AFTER:
Card(
    color: Colors.white).{
    +Center().{
        +Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.center).{
            +Icon(choice.icon, size: 128.0, color: textStyle.color),
            +Text(choice.title, style: textStyle),
        }
    }
}

The only change required in the widget library code to support this syntax is: add operator+ in Widget base class. Whether the improvement is sufficient to justify the whole feature - I don't know, but maybe it is. Some feedback from flutter practitioners would help :)

(Nitpick: There is no prefix + operator in Dart. The only overridable prefix operators are ~ and -).

This is not a serious obstacle. It's never late to add a good operator :)
And here we have a good example of use case to justify it.
(But maybe minus is OK, too? Not sure).
Seriously, I find it easier to write and read in this syntax (maybe just me?). And we can use any code inside the block - the problem that templating syntax in angular and elsewhere was trying to solve, with embarrassing results.

I like this, and I think if done right it can solve this case:
List.map((x) => x.foo);

It could also make for nicer tablification:
List.tableify((TableData td) => use(td.isEven, td.isOdd, td.isFirst, td.isLast, td.item, td.rowNumber));

assuming strawman syntax .{}/.=>, those examples become:
List.map(.=> foo);
List.tableify(.=> use(isEven, isOdd, isFirst, isLast, item, rowNumber));

After more thinking, it probably makes sense to separate the "syntax idea" from "implementation idea". There's more than one way to implement it, InvocationContext is just an example, and probably not the simplest example. E.g., if the only use case we have is "adding a child to parent" (or more generally, adding en element to container), then the implementation can be more straightforward: if a class Foo says it implements, say, Container, then we can write
Foo().{
   +Bar();  // unary plus as synonym to parent.addChild(Bar())
   +Bar();
}

The notation can target just a single use case, but if this use case is all we have then there's no point to generalize it.
It very well might be that child-parent (or element-container) relationship is so fundamental to programming that it warrants a special syntax?

After playing with different variants proposed above ad nauseum, came to hate all of them. Too much punctuation, all these baroque (){},;., my head started spinning from these architectural excesses.
Here's a new, radically improved, version, which I love with every fiber of my being (so far):
Card{
    .color= Colors.white;
    +Center{
        +Column{
            .mainAxisSize = MainAxisSize.min;
            .crossAxisAlignment = CrossAxisAlignment.center;
            +Icon(choice.icon, size: 128.0, color: textStyle.color);
            +Text(choice.title, style: textStyle);
        }
    }
}

No "this" inside the block - instead, there's just dot.
This can be interpreted as an invocation of constructor with relaxed syntax (you can write any code in the block, but have to initialize everything required by class definition).

Another example:
BEFORE:
return new Container(
  width: _kDotSpacing,
  child: new Center(
    child: new Material(
      color: color,
      type: MaterialType.circle,
      child: new Container(
        width: _kDotSize * zoom,
        height: _kDotSize * zoom,
        child: new InkWell(
          onTap: () => onPageSelected(index),
        ),
      ),
    ),
  ),
);

AFTER:
return Container{
    .width = _kDotSpacing;
    +Center{
        +Material{
            .color = color;
            .type = MaterialType.circle;
            +Container{
                .width = _kDotSize * zoom;
                .height = _kDotSize * zoom;
                +InkWell(
                    onTap: () => onPageSelected(index)
                )
            }
        }
    }
};

If dart ever comes up with an idea of how to make semicolons optional, this will remove all the remaining noise.
(With the old format, optional semicolons won't help at all b/c commas)

Another example:
BEFORE:
return new Container(
  width: _kDotSpacing,
  child: new Center(
    child: new Material(
      color: color,
      type: MaterialType.circle,
      child: new Container(
        width: _kDotSize * zoom,
        height: _kDotSize * zoom,
        child: new InkWell(
          onTap: () => onPageSelected(index),
        ),
      ),
    ),
  ),
);

AFTER:
return Container{
    .width = _kDotSpacing;
    +Center{
        +Material{
            .color = color;
            .type = MaterialType.circle;
            +Container{
                .width = _kDotSize * zoom;
                .height = _kDotSize * zoom;
                +InkWell(
                    onTap: () => onPageSelected(index)
                )
            }
        }
    }
};

If dart ever comes up with an idea of how to make semicolons optional, this will remove all the remaining noise.
(With the old format, optional semicolons won't help at all b/c commas)

Excellent kotlin like example!
I also prefer swift to implememt this feature (with receiver) too, haha.
But dart extension most like swift extension that without where limit than kotlin at 2020-05-08.
Could add this feature (where limit) to dart make it more powerful?
The bbelow swift extension example that reimplement the QuickCheck library in haskell to show where limit :
public struct Array<Element> {
}

// like extension name in dart
public protocol Arbitrary {
    static func arbitrary() -> Self
}

// like extension name in dart
public protocol Smaller {
    func smaller() -> Self?
}

extension Array: Arbitrary where Element: Arbitrary {
    public static func arbitrary() -> [Element] {
        let randomLength = Int.random(in: 0...50)
        return tabulate(times: randomLength) { _ in
            return Element.arbitrary()
        }
    }
}

extension Array: Smaller where Element: Arbitrary {
    public func smaller() -> [Element]? {
        if !self.isEmpty {
            return Array(self.dropFirst())
        }
        return nil
    }
}

public func check<A: Arbitrary & Smaller>(message: String, size: Int = 100, prop: (A) -> Bool) -> () {
    for _ in 0..<size {
        let value = A.arbitrary()
        if !prop(value) {
            let smallerValue = iterateWhile(condition: { !prop($0) }, initialValue: value) {
                $0.smaller()
            }
            print("\"\(message)\" doesn't hold: \(smallerValue)")
            return
        }
    }
    print("\"\(message)\" passed \(size) tests.")
}

Now use below code example to quicktest your qsort (QuickSort) function :
import Swift_QuickCheck

public func qsort(_ array: [Int]) -> [Int] {
    if array.isEmpty {
        return []
    }
    var arr = array
    let pivot = arr.removeFirst()
    let lesser = arr.filter {
        $0 < pivot
    }
    let greater = arr.filter {
        $0 >= pivot
    }
    return qsort(lesser) + [pivot] + qsort(greater)
}

check(message: "qsort should behave like sort") { (x: Array<Int>) in
      return qsort(x) == x.sorted(by: <)
}

Output:
"qsort should behave like sort" passed 100 tests.


Feat:  Add patterns for matching URLs and URL components

This PR is much larger than I anticipated.  Beside the addition of the URL patterns, I made the following changes:

added atoms.ts for basic building blocks.  Changed the hex-color pattern to use the atoms.

changed toMatchString in test-utils to address issue #81 .  toMatchString now support 3 use cases:

match the exact string passed in
match any substring of the string passed in
match an exact substring of the string passed in

updated all the test cases to use the proposed change to the toMatchString API.

Please reach out to me if you have any questions.
Summary
This PR adds a URL matcher to the pattern library.  The URL pattern can be used to match arbitrarily complex Web URLs as defined in this wikipedia article:  based on the #RFC 1738 standard (https://datatracker.ietf.org/doc/html/rfc1738).
Besides the primary pattern url, this pattern also publishes regular expressions for the following URL subcomponents (see above article):

urlScheme
urlAuthority
urlPath
urlQuery
urlFragment

as well as validation and finder helpers.
As well as the URL pattern, this PR adds a building blocks library called atoms (e.g. uppercase, lowercase, alphabetical, hexDigit).  The hex-color pattern has been updated to use the atoms pattern library.
Test plan
There is a test suite for each URL subcomponent (scheme, authority, path, query, fragment) as well as the primary pattern: url.
As well, a test suite to test the patterns in the atoms collections.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (65022ee) to head (b60eca6).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #79   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           16        19    +3
  Lines          183       255   +72
  Branches        41        41
=========================================
+ Hits           183       255   +72

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

@PaulJPhilp thank you for submitting this 👍 Head up that might not be able to review it promptly due to other obligations. I plan to review it during next two weeks.

Closed the pull request to separate out the proposed changes to to-match-string.ts.  Ill break this into two PRs.


fix: use cli ui to show command error and help.

The command UI can be specialized which does not work well to display general errors and show help.
Returns the responsiblity of the command UI to display execution information.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fix #18206 - [Feature] Enable indicators Radar charts to invert their axis

Brief Information
This pull request is in the type of:

[ ] bug fixing
[x] new feature
[ ] others

What does this PR do?
This PR adds the ability to 'inverse' any of the axis on a radar chart
Fixed issues
https://github.com/apache/echarts/issues/18206
Details
Before: What was the problem?
Previously a radar chart could look like so:

However, you may which the cost to actually reflect negatively, the more expensive it is.
After: How does it behave after the fixing?

Now this single axis is inverted, where the cheaper the cost, the better it appears on the radar chart.
Document Info
One of the following should be checked.

[ ] This PR doesn't relate to document changes
[x] The document should be updated later
[ ] The document changes have been made in apache/echarts-doc#xxx

Misc
Related test cases or examples to use the new APIs
A test case has been added here: test/radar-inverse.html
The API to inverse an indicator axis works by simply adding inverse: true like this:
...
indicator: [
    { name: 'Speed'},
    { name: 'Reaction'},
    { name: 'Power'},
    { name: 'Cost £m', inverse: true, min: 4, max: 0},
    { name: 'Stamina'},
],
...

Andy progress on this?

Also happen to have a need for this currently, looks like the CI logs are not available anymore though.


This method should not be called on the main thread as it may lead to UI unresponsiveness

Environment

Technology
Version

Flutter version
3.10.2

Plugin version
5.7.2+3

iOS version
16.5

macOS version
13.4

Xcode version
14.3

Device information: iPhone 11
Description
Error in the iOS platform when the device opens a web view "This method should not be called on the main thread as it may lead to UI unresponsiveness."
Code
InAppWebView(
   initialUrlRequest: URLRequest(url: _webViewUri),
   initialOptions: InAppWebViewGroupOptions(
   crossPlatform: InAppWebViewOptions(
   transparentBackground: true,
   ),
   ios: IOSInAppWebViewOptions(
   allowsBackForwardNavigationGestures: false,
   ),
  ),
)

simply add above code in body of Scaffold.
Images

Stacktrace
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
2023-05-31 16:42:14.217971+0530 Runner[13155:1108980] [Security] delegate_identifier:Performance Diagnostics__:::__message:This method should not be called on the main thread as it may lead to UI unresponsiveness.

I got  so many warning message in Xcode when using InAppWebView:
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.
This method should not be called on the main thread as it may lead to UI unresponsiveness.

Why are there non comments on this bug yet?

Anyone has any solution to this yet ?


FSPathMakeRef(/Applications/Atom.app) failed with error -43.

I suddenly started getting this error -- after using atom without issue for over a year.
I just completely uninstalled and reinstalled atom following these steps
Delete the app from the Applications folder
rm -rf ~/.atom
rm /usr/local/bin/atom
rm /usr/local/bin/apm
rm ~/Library/Preferences/com.github.atom.plist
rm ~/Library/Application Support/com.github.atom.ShipIt
rm -rf ~/Library/Application Support/Atom/
Then I got the installer from atom.io, copied in into my Applications directory,  reinstalled the shell commands, and still got the follow error when running "atom" in the terminal.
I finally solved this issue by moving the Atom program from my
~/Users/calekennedy/Applications
to
~/Applications
I wanted to add this issue in case someone else encounters it in the future.

same here. giving up with homebrew cask installation, eg: /usr/local/bin/atom -> /opt/homebrew-cask/Caskroom/atom/latest/Atom.app/Contents/Resources/app/atom.sh)

Could you please see if following some of the instructions in #5222 or #5380 help?

This problem occurred when migrating from Mavericks to Yosemite.
I had to completely uninstall everything related to atom, delete all of the files and folders, and then reinstall.
I found a guide online at the time, but I cannot recall where it was.

Closing this since we haven't seen any other reports recently. One of the two reports here is a problem that's covered by other issues (seems like a problem with homebrew cask installation) and the original report is no longer a problem so not something we can debug now.
If this happens again -- would be great if things are left as they are so that we can debug. Or at least provide more information, such as what was discussed in https://github.com/atom/atom/issues/5380#issuecomment-72731099.

guokedeMacBook-Air:~ guoke$ subl
FSPathMakeRef(/Applications/Sublime Text 2.app) failed with error -43.
guokedeMacBook-Air:~ guoke$ which subl
guokedeMacBook-Air:~ guoke$ open /Applications/Sublime\ Text.app/Contents/
Info.plist      Resources/      _CodeSignature/
MacOS/          SharedSupport/
guokedeMacBook-Air:~ guoke$ open /Applications/Sublime\ Text.app/Contents/
Info.plist      Resources/      _CodeSignature/
MacOS/          SharedSupport/
guokedeMacBook-Air:~ guoke$ open /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl
guokedeMacBook-Air:~ guoke$
I have this trouble, too. Before,  I have install subl 2, and recently, I replace it with the version 3. I make the soft links again, but the trouble comes and then I remove the soft links, and type which subl , really I deleted it. But when type subl , the FSPathMakeRef(/Applications/Sublime Text 2.app) failed with error -43 came again, I do not know if this is a bug of the file system of mac. My os is 10.11.5 (15F34)

I think I partially fix it. For that the soft link such as subl is no longer can be used. I turn to another name such as sublime, and it works well


Update Gradle version

Could not build project due to old gradle version of this package. Please update the gradle version to latest.
Thanks

Done. :heavy_check_mark:
https://github.com/leesnhyun/flashy_tab_bar/pull/1
Thank you for your interesting :)

A problem occurred evaluating root project 'flashy_tab_bar'.

Failed to apply plugin [id 'com.android.library']
Minimum supported Gradle version is 5.4.1. Current version is 4.10.2. If using the gradle wrapper, try editing the distributionUrl in /Users/baoxiehao/.pub-cache/hosted/pub.flutter-io.cn/flashy_tab_bar-0.0.3/android/gradle/wrapper/gradle-wrapper.properties to gradle-5.4.1-all.zip

Same problem


fix: pass arguments to opengb in docker correctly

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#309  👈
#308
#307
#306
#305
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @AngelOnFira and the rest of your teammates on  Graphite


Any changes to transit Gateway fail at bootstrap step

Describe the bug
I had been using landing accelerator and deployed a few VPCs/subnets/Routes and a transit gateway.
Lately (Starting Sept 23) any change to a transit gateway attachment causes the build to fail at the bootstrap step with "error:  undefined". This problem coincided with v1.2.1
To Reproduce
Deploy a network with Transit Gateway and attachment on v1.2.0,  make any to change to transit gateway attachment and deploy on v1.2.1
Expected behavior
boot strap would either emit an error from the build, or continue with CDK Synth
Please complete the following information about the solution:

[ ] Version: [e.g. v1.1.0]
v1.2.1

Mappings:
  SourceCode:
    General:
      S3Bucket: "solutions"
      KeyPrefix: "video-on-demand-on-aws/v5.0.0"

[ ] Region: [e.g. us-east-1]:
us-east-1
[ ] Was the solution modified from the version published on this repository?
no
[ ] If the answer to the previous question was yes, are the changes available on GitHub?
[ ] Have you checked your service quotas for the services this solution uses?
[ ] Were there any errors in the CloudWatch Logs?

[2022-10-31 20:00:20] - info:       [network-vpc-stack] Adding Transit Gateway Attachment for Network-Main.TG
288 | [2022-10-31 20:00:20] - error:  undefined
289 | Subprocess exited with error 1
290 | error Command failed with exit code 1.
291 | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
292 |
293 | [Container] 2022/10/31 20:00:20 Command did not exit successfully if [ -z "${ACCELERATOR_STAGE}" ]; then yarn run ts-node --transpile-only cdk.ts synth --require-approval never --config-dir $CODEBUILD_SRC_DIR_Config --partition aws; fi exit status 1
294 | [Container] 2022/10/31 20:00:20 Phase complete: BUILD State: FAILED
295 | [Container] 2022/10/31 20:00:20 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: if [ -z "${ACCELERATOR_STAGE}" ]; then yarn run ts-node --transpile-only cdk.ts synth --require-approval never --config-dir $CODEBUILD_SRC_DIR_Config --partition aws; fi. Reason: exit status 1
296 | [Container] 2022/10/31 20:00:20 Entering phase POST_BUILD
297 | [Container] 2022/10/31 20:00:20 Phase complete: POST_BUILD State: SUCCEEDED
298 | [Container] 2022/10/31 20:00:20 Phase context status code:  Message:
299

Screenshots
If applicable, add screenshots to help explain your problem (please DO NOT include sensitive information).
Additional context
Add any other context about the problem here.

To expand on this some, I  have found that other additions also cause the same error. For example I attempted to added a network firewall and experienced the same behavior. I have tried increasing the compute resources and memory in the CodeDeploy pipeline but there was no change.

Hello @joshbfei, we are working to improve the error: undefined issue in our next release. This typically is due to a typographical error in the configuration file. If possible, can you provide your network-config.yaml file both before and after the change so we may validate the syntax? Please omit any personal details in the file if applicable. Thanks!

@awsclemj, thank you for the response, I had walked away from this effort for a while and am just now looking again. In reviewing the changes between the successful and failing configuration I am 99% sure it is due to the "account"  option on the transit gateway attachment. I had referenced the account that owns the VPC the attachment will attach TO instead of the owning account of the transit gateway. Reviewing the example configuration I now see that the account on a transit gateway attachment should always reference the owner of the TG.
 transitGatewayAttachments:
   - name: Spoke01-TGA
     transitGateway:
       name: Network-Main.TG
       account: Network-Main   ##<-- This account should always be the TG owner, not the attached VPC account owner
     routeTableAssociations:
       - Network-Main-Spoke.RT
     routeTablePropagations:
       - Network-Main-Spoke.RT
       - Network-Main.RT
     subnets:
       - Spoke01TransitGatewayAttach-A.SN
       - Spoke01TransitGatewayAttach-B.SN

@joshbfei After correcting the account on the transit gateway attachment, were you able to move forward successfully?

We are currently working on improving our config validation for the network configuration and will include a check to ensure the TGW attachment config checks for the referenced TGW in the specified account. These updates will make it into our next minor release.
I will go ahead and close this issue. Thank you for the feedback!

@erwaxler , Yes I was able to move forward (at least past the TGW error).  Thank you for your help.
@awsclemj , Very glad to hear about the validation check. Looking forward to it.


Keptn upgrade command: improve help messages

When executing keptn upgrade the message is not 100% correct.
$ keptn upgrade -h
The Keptn CLI allows upgrading Keptn on any Kubernetes derivate to which your kube config is pointing to, and on OpenShift.

The CLI also to upgrade a project, and not only the Keptn installation on a Kubernetes cluster.
Same goes for this output:
$ keptn -h
...
  update       Updates an existing Keptn project
  upgrade      Upgrades Keptn on a Kubernetes cluster
...

Again, the upgrade command also to also upgrade a project as described here https://keptn.sh/docs/0.8.x/operate/upgrade/#step-2-upgrade-shipyard-of-your-projects

@jetzlstorfer Sir Is it possible for beginner to start with this issue?

@johannes-b : I want to work on this issue if nobody is working on this.

@adigeak great! 👍
I assigned it to you.


When I start the script I get this traceback

Im running macOS 10.13.4 (17E202) and using Tor <IP_ADDRESS>
User-MacBook-Pro:vanguards-master UserUser$ ./src/vanguards.py
NOTICE[Fri May 25 16:19:22 2018]: Creating new vanguard state file at: vanguards.state
NOTICE[Fri May 25 16:19:22 2018]: Connected to Tor version <IP_ADDRESS> (git-7dd0813e783ae16e)
Traceback (most recent call last):
  File "./src/vanguards.py", line 8, in <module>
    vanguards.main.main()
  File "/Users/UserUser/Desktop/vanguards-master/src/vanguards/main.py", line 57, in main
    state.new_consensus_event(controller, None)
  File "/Users/UserUser/Desktop/vanguards-master/src/vanguards/vanguards.py", line 86, in new_consensus_event
    "cached-microdesc-consensus")
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 70, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'NoneType' object has no attribute 'endswith'

It looks like if DataDirectory is not set in your torrc, Tor will not report the directory it chose to the control port.
The best I can do is emit an error message that makes it clear that you must set DataDirectory in the torrc. Does commit ac1a2c5183cbe02216d38eb47a0a66f710fe33de do this for you?


Always try to call the most-derived ObjC protocol method

Currently, when the Clang importer sees that an imported ObjC class conforms to an ObjC protocol, it creates concrete methods on the class for every method in the protocol hierarchy.  These are called "mirror imports".  It's a hack that we want to eliminate long-term, but in 4.0, at least, we have to live with it.
Now, a method can be declared multiple times in an ObjC protocol hierarchy, and the signatures don't actually have to line up.  ObjC has complex but ultimately somewhat arbitrary rules for picking which method to use for type-checking a message send.  Swift, apparently, picks the first one it sees, according to some unspecified walk of the protocol hierarchy, which is even more arbitrary than ObjC.  That walk appears to correctly prioritize more-derived methods when the protocol hierarchy is a tree, and probably when the more-derived method dominates the less-derived one, but when there are multiple paths to a protocol it doesn't seem to always honor overriders.  Worse, the walk order appears to have changed over time; we have a test case which fails in master but succeeds in previous releases because it now finds the less-derived protocol method instead of the more-derived one.
This patch implements more-principled behavior: it drops methods from the candidate set if they are overridden by another method in the set, then picks the first method remaining.
This is the swift-4.0-branch version of #9681.
This patch can change what method we use to type-check ObjC method calls when the method is not redeclared on the class, which is quite common.  Using a different method can have a drastic impact on the type-checking of that call.  However, it only actually matters if there are multiple declarations of the method in the protocol hierarchy, and those declarations have different signatures, and we were previously using a less-derived one (which should only arise in complex protocol hierarchies).
This patch fixes rdar://31471034.
The risk of this change is moderate: it affects what types are used in type-checking, and it's certainly possible that there is longstanding code which is somehow relying on our previous behavior.  However, this should be largely mitigated by the considerations above.  Furthermore, overrides are usually type-theoretically sound, so using a more-derived method instead of a less-derived method should always be more permissive about arguments and more informative about results.  Moreover, we know that there are projects which are relying on the previous behavior of the compiler, which at least in some cases used the more-derived method; those projects will see not taking this patch as a source-compatibility regression.  But I can't pretend that there's no risk from the patch working as intended.
This has been tested with ordinary regression tests and by verifying that it fixes a source-compatibility regression with a particular project.

@swift-ci Please test.


Fixing Student Report bugs

Looks like my manual jsx transformation reverted the renaming of sped_report to student_report. Quick fix.
Looking into adding an integration test for the student_report and running into some roadblocks. Will ping @alexsoble and @kevinrobinson.
I also noticed that the graphs were again only showing up in the debug version, not the pdf version. There is some strange funkiness with the wicked_pdf_javascript_include_tag. Including application.js brings in all the external stuff but doesn't seem to bring in our files. Each local js file needs to be included separately. So I added the helpers/graph_helpers which has the common graphing code.

@jhilde 👍 on the renaming, 🚢 ing this now.  Seems like there's something deeper with the PDF problem, added https://github.com/studentinsights/studentinsights/pull/891 to see if that will help.

Also, for the integration test you can just restart the Travis build if it seems like it timed out or something like that, that's what I did here.  That shouldn't ever happen, and if the tests are flaky more often than not we should try to fix that, but sometimes computers act computery :)


Make tznft work

It may be a temporary change but that what makes it work correctly with the new setup of 3 packages. It does not have to be merged.

These changes were incorporated into nft-20 branch


Progress percentages should be more readable

I understand it's fun to use lots of precision, but in reality just one number after the decimal is enough (and more readable).

My issue with using single precision is the fact that the game's libraries are absolutely massive. Having more decimal points is beneficial because of this reason. I can shorten the decimal places a few, but to single precision would be too much.

I now understand that you want others to see your exact progress, as in, even if you accomplish something, you don't want the percentage to remain at the same number. Me personally, people aren't watching the percentage every day, so it's not like they need to know that you made 0.005% progress on something, plus if they're really dedicated they can see your commits instead. However if you want to show your exact progress while also making it readable, you could show the fraction itself, which would update exactly with your progress, then a rounded percentage next to it for readability.

Library
Progress

Animation
4.5%<PHONE_NUMBER>491/43750000000000)

Or you could just use 2 or 3 decimal places, as that seems to be enough even for the libraries with the smallest progress so far. Or you could just not change it as it's pretty insignificant anyways.

Lol I just clicked on Animations and saw that you do indeed show the fraction, so the very long percentages seem quite redundant

I wonder how is that important. Like, just don't look at the others numbers if they sound useless to you? There is no point in changing such a thing really...

I wonder how is that important. Like, just don't look at the others numbers if they sound useless to you? There is no point in changing such a thing really...

Not to sound rude, but ignoring what has been already said is not polite. It has been explicitly stated that this is not important, so do not come and falsely accuse someone else of claiming it is important.
On to your point, readability is a funny thing, and turns out having very long text makes it harder for the eye to parse the information. That's why websites don't use the full width of your browser to display articles, for instance.

I don't want this to really escalate further, but the %s on the progress pages are going to stay but the %s on the labels have been reduced to remove clutter. Closing.


exchange-core source code

I have imported source code into eclipse but it showing error at code level like " The method builder() is undefined for the type ApiPlaceOrder","The constructor StateHashReportResult(new TreeMap<>()) is undefined". So how do compile and rune the code.
Thanks

Hi
Most probably you need to install lombok plugin and enable annotations processong during the compile time.

Thanks. I already did this. Initially I could not understand it.


--limit appears to invert the order of items returned

When I set a limit on a rack files object list --limit 1 I'm getting back the last item in the set, not the first.

Fixed here: https://github.com/jrperritt/rack/commit/cb75b5453284a7f36b60cb4fd3260872d3297ba2


Allow current layer to be de-selected

Current, once you pick a layer in the button UI, you can't go back to having no layer selected, preventing you from selecting many features in different layers at the same time.

This is a roundabout way of using 3DuF. If users would like to select something in a particular layer, they can. For multilayer components we need to change the way we are storing features in the in data model to enable single click selection.


[Bug]: 'AgentChatResponse' object has no attribute 'print_response_stream'

Bug Description
I'm running docs/examples/customization/streaming/chat_engine_condense_question_stream_response.ipynb but response_stream.print_response_stream() get the error:
`---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[9], line 1
----> 1 response_stream.print_response_stream()
AttributeError: 'AgentChatResponse' object has no attribute 'print_response_stream'`
Version
0.10.7
Steps to Reproduce
run docs/examples/customization/streaming/chat_engine_condense_question_stream_response.ipynb
Relevant Logs/Tracbacks
No response

Thanks @pcisterna for raising. Should be a quick fix. We should be using chat_engine.stream_chat() throughout the nb rather than just chat_engine.chat(). I've submitted the PR.

thank you!


Clean up some error messages

Mark filename flag required for redskyctl generate trial
Return an error message when supplied value is out of bounds for the experiment

forks are no bueno


While creating dynatrace custom anomaly getting error “message”: “The metric dimension is of the wrong filter type.

Error is as below
 Error: {
│   "code": 400,
│   "message": "Constraints violated.",
│   "constraintViolations": [
│     {
│       "parameterLocation": "PAYLOAD_BODY",
│       "location": "",
│       "message": "The metric dimension is of the wrong filter type.",
│       "path": "metricDimensions[0].filterType"
│     }
│   ]
│ }

main.tf
locals {

  oft_cfc_k8s_alerts_tmp = concat(
    var.oft_cfc_k8s_hosts_alerts)

}

// flatten the combined vars to create new var of all alerts
// with key as mgmt zone id to loop over
locals {
  oft_cfc_k8s_alerts = flatten([
    for alert_key, value in local.oft_cfc_k8s_alerts_tmp : [
      for mgmt_zone_key in value.mgmt_zone_id : {
        key_id = alert_key
        alert_name  = value.alert_name
        alert_description = value.alert_description
        alert_condition = value.alert_condition
        alerting_on_missing_data = value.alerting_on_missing_data
        aggregation_type = value.aggregation_type
        dealerting_samples = value.dealerting_samples
        description_severity = value.description_severity
        enabled = value.enabled
        metric_id = value.metric_id
        mgmt_zone_id = mgmt_zone_key
        primary_dimension_key = value.primary_dimension_key
        prefix = value.prefix
        severity = value.severity
        samples = value.samples
        threshold = value.threshold
        unit = value.unit
        violating_samples = value.violating_samples
        dimensions = value.dimensions == null ? {} : value.dimensions
      }
    ]
  ])
}

resource "dynatrace_custom_anomalies" "oft_cfc_k8s_alerts" {
  for_each = {
      for value in local.oft_cfc_k8s_alerts : "${value.key_id}.${value.mgmt_zone_id  }" => value
  }
  name = format("%s-%s-%s-%s", each.value.alert_name, each.value.mgmt_zone_id == "-abcd" ? "npn" : "prod" , each.value.description_severity, each.value.prefix)
  description = format("[%s] %s", each.value.description_severity, each.value.alert_description)
  primary_dimension_key = each.value.primary_dimension_key
  enabled = each.value.enabled
  aggregation_type = each.value.aggregation_type
  metric_id = each.value.metric_id
  severity = each.value.severity
  scopes {
    management_zone {
      id = each.value.mgmt_zone_id
    }
  }

  strategy {
    static {
      alert_condition = each.value.alert_condition
      alerting_on_missing_data = each.value.alerting_on_missing_data
      dealerting_samples = each.value.dealerting_samples
      samples = each.value.samples
      threshold = each.value.threshold
      unit = each.value.unit
      violating_samples = each.value.violating_samples
    }
  }
  // nested loop for dynamic resources
  dynamic "dimensions" {
    for_each = each.value.dimensions
    content {
      string {
        key = each.value.dimensions.key
        filter {
          operator = "EQUALS"
          value = each.value.dimensions.value
        }
      }
    }
  }
}

variable.tfvars
oft_cfc_k8s_hosts_alerts = [
  {
    alert_name               = "oft-cfc-k8s-infra-system-hosts-disk-docker-used-alert"
    alert_description        = "SYSTEM_HOSTS_ALERT \n Node name: {entityname} \n Metric name: {metricname} \n Current value is {severity} which is {alert_condition} than threshold vaule of {threshold}. \n\n {dims}"
    alert_condition          = "ABOVE"
    alerting_on_missing_data = false
    aggregation_type         = "AVG"
    dealerting_samples       = "3"
    description_severity     = "CRITICAL"
    enabled                  = true
    mgmt_zone_id             = ["-abcd", "-xyz"]
    metric_id                = "builtin:host.disk.usedPct"
    primary_dimension_key    = "dt.entity.host"
    prefix                   = "13350|12284"
    env                      = "npn"
    severity                 = "CUSTOM_ALERT"
    samples           = "5"
    threshold         = "75"
    unit              = "PERCENT"
    violating_samples = 3
    dimensions = {
      key   = "dt.entity.disk"
      value = "/var/lib/docker"
    }
  },
]`

Hello @shnigam2,
The dimension filter shouldn't be string but entity.
In other words, the section
dynamic "dimensions" {
    for_each = each.value.dimensions
    content {
      string {
        key = each.value.dimensions.key
        filter {
          operator = "EQUALS"
          value = each.value.dimensions.value
        }
      }
    }
  }

needs to get changed to
dynamic "dimensions" {
    for_each = each.value.dimensions
    content {
      entity {
        key = each.value.dimensions.key
        filter {
          operator = "EQUALS"
          value = each.value.dimensions.value
        }
      }
    }
  }

It's admittedly anything else than easy to spot. Neither the documentation of the REST API nor the JSON Models documentation are clear about what kind of filter needs to get applied for which metric.
The REST API for Custom Anomalies we're using has recently gotten deprecated - superseded by a Settings 2.0 Schema. The descriptions of Settings 2.0 Schemata are based on experience a bit more intuitive than the Config REST API. We're therefore hoping that the resource dynatrace_custom_anomaly_v2 based on that schema is easier to configure.
Just drop us a message, in case that hint didn't help, and I'll re-open the ticket.


Screen reader is only announcing as Asterisk for "Total number of hours to be billed" field instead of required.

Is it an issue related to Adaptive Cards?
No.
What is the PWD impact?
Screen reader users will not get to know about the required fields.
What browsers and screen readers do this issue affect?
Windows: Edge with Windows Narrator
Are there any code-based customization done to Web Chat?
No, I am using Web Chat without any customizations except "styleOptions".
What version of Web Chat are you using?
Latest production
Which area does this issue affect?
Others or unrelated
What is the public URL for the website?
No response
How to reproduce the issue?

Hit the URL https://servicesuat.microsoft.com/#/opdashboard/
Tab till iris bot icon in the header section and press enter.
Iris bit welcome screen will be displayed.
Tab till type your message textbox and type create invoice.
Select the display order number.
Form details for creating invoice will be displayed.
Verify whether the screen reader is only announcing as Asterisk for "Total number of hours to be billed" field instead of required or not.

What do you expect?
Screen reader should announce the required instead of asterisk for "Total number of hours to be billed" field.
What actually happened?
Screen reader is only announcing as Asterisk for "Total number of hours to be billed" field instead of required.
Do you have any screenshots or recordings to repro the issue?
https://github.com/microsoft/BotFramework-WebChat/assets/117266902/0c249c28-0c7a-45f0-a69a-0ea8b55ad715
https://github.com/microsoft/BotFramework-WebChat/assets/117266902/3a813a94-f987-49f7-a01f-3352df98093f
Did you find any DOM elements that might have caused the issue?
No response
MAS reference
MAS 1.3.1 – Info and Relationships
WCAG reference
No response
WAI-ARIA reference
No response
Adaptive Card JSON
No response
Additional context
No response

#A11yMAS;#A11ySev2;#MAS1.3.1;#HCL;#Accessibility;#FeatureBotframeworkwebchat-Apr23;

This issue is reported in both web and desktop app and copied from TCS team: Bug 11092653, Bug 11092659

I cannot access the Adaptive Cards.
But looking at the card, I think it's an issue on customer side. This is because the asterisk is black, not red in color.
If the asterisk is red in color, it's added by Adaptive Cards and AC added aria-hidden so the screen reader will not narrate "asterisk".
However, in this card, the asterisk appears to be black. That means, the asterisk is added by the customer manually.

Closed as customer error.


Environment variable BASE_URL has no effect

Environment
Self-Hosted (Docker)
System
Ubuntu: 22.04 Docker: 24.0.7 Docker Compose: 1.29.2
Version
2.1.1
Describe the problem
The BASE_URL environment variable has no effect. I'm attempting to run Dashy at: http://localhost:4000/dashy but while the initial page starts loading it is unable to retrieve resources because the URLs used for CSS and scripts do not contain the sub-directory.
My stripped down Docker compose file is as follows:
---
version: '3.8'

services:
  app:
    image: lissy93/dashy
    ports:
      - 4000:80
    environment:
      - BASE_URL=/dashy

When access via: http://localhost:4000/ everything works as expected. But If accessed via http://localhost:4000/dashy I get a 404. If I add labels to use Traefik as a reverse proxy I can then reach the page but the page can not load CSS etc.
Apologies If I've missed something obvious. I've read through a good amount of the documentation and read a few bug reports of people trying to do something similar but I've been unable to solve this issue.
Additional info
No response
Please tick the boxes

[X] You have explained the issue clearly, and included all relevant info
[X] You are using a supported version of Dashy
[X] You've checked that this issue hasn't already been raised
[X] You've checked the docs and troubleshooting guide
[X] You agree to the code of conduct

Already know, Please look through the issues and knows problems before submitting a issue.
Duplicate of #1036 Please close this.


Scheduled Report Error: An unexpected occurred while executing the report (still)

Bug description
My celery worker is throwing the following error for scheduled reports
There are similar reports
https://github.com/apache/superset/issues/13698
https://github.com/apache/superset/issues/26335
However I haven't seen this resolved as such and as this is a default install I believe it to be a valid bug.
Exception log
sqlalchemy.exc.StatementError: (builtins.TypeError) SQLite DateTime type only accepts Python datetime and date objects as input.
[SQL: INSERT INTO report_execution_log (uuid, scheduled_dttm, start_dttm, end_dttm, value, value_row_json, state, error_message, report_schedule_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)]
[parameters: [{'scheduled_dttm': '2024-12-26T16:24:00', 'state': <ReportState.WORKING: 'Working'>, 'report_schedule_id': 1, 'end_dttm': datetime.datetime(2024, 12, ... (57 characters truncated) ... -bfb1-6927ea86f73e'), 'start_dttm': datetime.datetime(2024, 12, 26, 16, 24, 0, 110666), 'value_row_json': None, 'error_message': None, 'value': None}]]
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/commands/report/execute.py", line 799, in run
).run()
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/utils/decorators.py", line 266, in wrapped
return on_error(ex)
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/utils/decorators.py", line 234, in on_error
raise reraise() from ex
sqlalchemy.exc.SQLAlchemyError: ()
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/tasks/scheduler.py", line 95, in execute
).run()
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/utils/decorators.py", line 266, in wrapped
return on_error(ex)
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/utils/decorators.py", line 236, in on_error
raise ex
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/utils/decorators.py", line 259, in wrapped
result = func(*args, **kwargs)
File "/opt/superset/venv.superset/lib/python3.10/site-packages/superset/commands/report/execute.py", line 803, in run
raise ReportScheduleUnexpectedError(str(ex)) from ex
superset.commands.report.exceptions.ReportScheduleUnexpectedError: ()
Screenshots/recordings
No response
Superset version
4.1.1
Python version
3.10
Node version
I don't know
Browser
Chrome
Additional context
No response
Checklist

[X] I have searched Superset docs and Slack and didn't find a solution to my problem.
[X] I have searched the GitHub issue tracker and didn't find a similar bug report.
[X] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

Dosubot is sort of right. Moving to PostgresSQL does appear to be a prerequisite but is only mentioned in Docker section of https://superset.apache.org/docs/configuration/alerts-reports and not in the . IMO this is a bug as the default superset supports email reports and default database is SQLite. It should work out of the box.


Fixed incorrect error returned from fetchPublicKey()

The fetchPublicKey() function is currently returning an error although everything is working correctly. This will show up in the logs although the error itself is <nil>. This PR fixes the issue by having the function return <nil> instead of an error message.

I tested this and don't see the error message in the BSS logs when it can connect to OPAAL and do see it when it cannot.


Add dubbo-monitor-logstash

I'm not sure if this feature can goes to the core dubbo framework.
But we can still use this PR for code review and discussion.
What is the purpose of the change
Add dubbo monitor extension for logstash.
Brief changelog
Add a new module called dubbo-monitor-logstash
core feature:

act as a client for logstash-tcp-input
jsonline format or URL-like palintext format
one-way or two-way SSL authentication
auto re-connect

Verifying this change
Please run unit test from local.
You can start with a demo here
https://github.com/biyuhao/dubbo-samples-monitor-logstash
Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Make sure there is a GITHUB_issue field 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 [Dubbo-XXX] Fix UnknownException when host config not exist #XXX. 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 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 clean install -DskipTests=false & mvn clean test-compile failsafe:integration-test to make sure unit-test and integration-test pass.
[x] If this contribution is large, please follow the Software Donation Guide.

I want to add dubbo metrics feature and use it to implement dubbo monitor, maybe we can have some discussion?

Of course! I'm pleased to participate, let's do it.


Use vcpkg for some dependencies

curl
libuv
openssl
zlib

Signed-off-by: Gordon Smith<EMAIL_ADDRESS>

Greetings @GordonSmith and thanks for the contribution! Apologies for taking so long to get back to you.
Have you signed the Contributor License Agreement for contributions to DataStax open source projects? If not you can find it at https://cla.datastax.com/. Thanks!

@absurdfarce signed...


Subtest descriptions

Currently, I record rdfs:comments for most steps that are taken in the HTTP tests. This is mainly to make it easier for a test writer to understand what the test does, not so much for someone running the test to understand a test failure (for example).
However, the steps translate to a number of subtests, and so, it is probably useful for someone running a test to see that comment, or possibly some other comment in the test report.
We should discuss whether we should have that kind of documentation for all subtests, and if so, if we use those comments, or if we should have another predicate for the purpose.
This is related to #86 .

This is a pretty big feature, since it has impact on both the framework and the test scripts.


AttributeError: 'DataParallel' object has no attribute 'detect_objects'

Thank you for your SSD , And when I try to run detect.py ,I got a error:
AttributeError: 'DataParallel' object has no attribute 'detect_objects'
Can you tell me how to solve it?

I have the same problem, did you solve it? @ma3252788


How to select and move files?

Hi, I'm new to neovim. In the readme about moving files, it says:
Move multi-selected files to path (file_browser) or selected directory (folder_browser)

How do I actually (multi) select files?
What are the key bindings for selecting files/directories?

You can multi-select with <Tab> & <S-Tab> (Shift+Tab) and then navigate to where you want to move them to, then press <A-m> (Alt + m) in insert mode or just m in normal mode.
You can use telescope's builtin which_key (insert mode: <C-/>, normal mode: ?) to see keymaps for any give telescope picker.

Thanks @jamestrew - I think this is sufficiently answered. For a visual reference as to what was described, please refer to the media issue.

It would be very helpful if multi-selection using  or  is explicitly mentioned in the README of this repo. It is only when I searched manually through the closed issues that I discovered this page and learned how to multi select and move. Just a suggestion for new future users of this plugin (which I have chosen to replace NERDTree of many years of use).

Yeah I agree. I can cook something up tomorrow (~12 hrs) if nobody gets to it by then.


selecteable label effect

Could you add an effect that make label control can be selected and then copy, paste options appear.
thanks very much.😁

@632575987
Thank you for your request.
I will consider it.😄


About CAM loss

Dear sir,
I am a little confused with 2 CAM loss functions (5) and (6) in your paper. I don't know why one function uses BCE for generator, one uses MSE for discriminator? Can someone explain it? Many thanks.

same here.


feat(header): add setting menu button with update option

Header settings menu button
:hammer_and_wrench: Type Of Change

[ ] Fix
[X] Feature
[ ] Refactoring
[ ] Documentation

:book: Description
Adds the header settings menu button with a variation if there is an app update available.
:bulb: Context
This button is being added to Dialtone so it can be re-used in the new app.
:pencil: Checklist

[X] I have reviewed my changes
[ ] I have added tests
[X] I have added all relevant documentation
[ ] I have validated components with a screen reader
[X] I have validated components keyboard navigation
[X] I am exporting any new components or constants in the index.js in the component directory
[X] I am exporting any new components or constants in the index.js in the root

:camera: Screenshots / GIFs

To replace

:link: Sources
https://dialpad.atlassian.net/browse/DP-61587

@braddialpad I got the components showing up but the click event is not working 🤔

Thanks for your help with this @braddialpad!


Kotlin 1.6 upgrade

Probably want to prepare this on a branch and wait until Compose for 1.6 lands so we don't block ourselves.

https://github.com/cashapp/zipline/pull/396


DBZ-6421 Support MongoDB Connector with external cloud databases

Test are runnable against external databases
Tests are runnable against DocumentDB specifically

In terms of DocumentDB compatibility

Unsupported $addField operator in change stream pipeline was replaced with $replaceRoot
Connector now properly handles change stream cursors which are not returning a resume token when iterating over empty change stream. In such cases streaming is started from operation time. Without this change the connector was losing changes between snapshot end and streaming start and potentially even some changes during snapshot runtime (e.g. changes to already snapshotted documents).
To clean few things up we are now setting timestamp for offsets only when resume token is not available.

There are still several tests failing for DocumentDB due to

different description of changed nested fields / arrays compared to MongoDB
inability to set transaction document lock timeout

See https://issues.redhat.com/browse/DBZ-6419 for detail

@jpechane should we port these to 2.2? I don't think there is anything backwards incompatible

@jcechace No, backporting is unnecessary

@jcechace Applied, thanks

@jcechace No, backporting is unnecessary

I think this would help solve the issue we are seeing in 2.2.1 on startup where we cannot initialize the streaming change source because the resumeToken is missing.


Why isn't the repo renamed to evilginx3?

 If you need a service and you cant pay for it you beg for it all this blackmail wont help you.

**Hi 👽 ! If you are interested in ⚙Advanced Phishing⚙ and the ✨Evilginx3✨ tool then I offer you Google Gmail and Custom Phishlets with a ✅Free Tutorial✅ which arrives if the 📈Telegram reaches 50 Subscribers📈
⏳ GOOGLE GMAIL PHISHLET 2024 WITH PROOF ⏳
->
⛔https://www.youtube.com/watch?v=nA47UknIE6A⛔
🔓 Ask your questions and a free tutorial from 50 subs on telegram !!!
->
📩https://t.me/Noremorse1011📩**


Slack vs Facebook response time

Hello folks,
I implemented a bot interfaced with facebook messenger and Slack.
I noticed some difference between the time needed to get the response from the bot on slack and from the bot on messenger.
The app is hosted on heroku.
Rasa Core version:
0.11.12
Python version:
3.6.6
Operating system (windows, osx, ...):
Heroku dyno
Issue:
As I can see in the heroku logs the time needed until seeing the output in the chat is really different.
With a simple text response => Facebook takes almost ~2 or 3sec
=> Slack ~less than 1sec
Protocol used:
HTTPS (for both)
command used  through Procfile:
python -m rasa_core.run -d models/dialogue -u models/nlu --port $PORT --credentials credentials.yml
I tried to only serve facebook channel using the -c flag but the response time doesn't change.
I also tried scaling my dynos, but doesn't change anything.
So I wanted to know if it comes from the implementation or something else.
Please enlighten me
Why is there such a difference between them ?
LOGS
facebook
`2018-10-12T14:12:42.445862+00:00 app[web.1]: 2018-10-12 14:12:42 INFO     rasa_core.channels.facebook  - Sending message: Que la force soit avec toi, qu'elle te permette de trouver la bonne rÃ©ponse.
2018-10-12T14:12:43.384780+00:00 app[web.1]: <IP_ADDRESS> - - [2018-10-12 14:12:43] "POST /webhooks/facebook/webhook HTTP/1.1" 200 122 0.945207
2018-10-12T14:12:43.385277+00:00 heroku[router]: at=info method=POST path="/webhooks/facebook/webhook" host=X.herokuapp.com request_id=x fwd="x.x.x.12" dyno=web.1 connect=0ms service=946ms status=200 bytes=122 protocol=https
2018-10-12T14:12:43.833526+00:00 heroku[router]: at=info method=POST path="/webhooks/facebook/webhook" host=X.herokuapp.com request_id=131ac865-6936-4cfd-be43-c77b0d94d8e6 fwd="x.x.x.2" dyno=web.2 connect=0ms service=3ms status=200 bytes=122 protocol=https
2018-10-12T14:12:43.834472+00:00 app[web.2]: <IP_ADDRESS> - - [2018-10-12 14:12:43] "POST /webhooks/facebook/webhook HTTP/1.1" 200 122 0.001772`
slack
`2018-10-12T14:14:19.263540+00:00 heroku[router]: at=info method=POST path="/webhooks/slack/webhook" host=X.herokuapp.com request_id=6f3f7a54-a8fd-422a-8a7e-4c0f35f8ebf5 fwd="x.x.x.255" dyno=web.2 connect=4ms service=177ms status=200 bytes=115 protocol=https
2018-10-12T14:14:19.263060+00:00 app[web.1]: <IP_ADDRESS> - - [2018-10-12 14:14:19] "POST /webhooks/slack/webhook HTTP/1.1" 200 115 0.175297
2018-10-12T14:14:19.572039+00:00 heroku[router]: at=info method=POST path="/webhooks/slack/webhook" host=1  request_id=915af4ca-d25d-480e-b089-f152d9627b3a fwd="x.x.x.29" dyno=web.1 connect=0ms service=2ms status=200 bytes=115 protocol=https
2018-10-12T14:14:19.571942+00:00 app[web.1]: <IP_ADDRESS> - - [2018-10-12 14:14:19] "POST /webhooks/slack/webhook HTTP/1.1" 200 115 0.000896`
Thank you

Same issue here, referenced it on Stackoverflow

Thanks for raising this issue, @ricwo  will get back to you about it soon.

@FellowNico @bbreton3 both the Slack and Facebook channels call the relevant APIs with a simple requests.post(), so I don't think the difference in response time is related to Rasa Core. Have you raised this issue on the Facebook developer page?
In the meantime can you replace the send() function in facebook.py (link) with the following code and post the command line output? That way we can have a look at how long the actual facebook API call takes, as opposed to Rasa Core.
    def send(self, recipient_id, element):
        import time
        start = time.clock()
        self.messenger_client.send(element.to_dict(),
                                   {"sender": {"id": recipient_id}},
                                   'RESPONSE')
        print("POST /me/messages response time {:.4g} s".format(time.clock() - start))

@ricwo @FellowNico The response time from Facebook seems to be quick, here is what I have:

POST /me/messages response time 0.02074 s

The bottleneck here seems to be the first POST request to Facebook from rasa_core:

[2018-10-16 15:59:12] "POST /webhooks/facebook/webhook HTTP/1.1" 200 122 0.966870

I am investigating to see why, If you guys have any idea what in rasa_core could take so much time in the facebook channel pipeline.

@bbreton3 Okay, would you mimd also timing the def webhook() method in facebook.py? e.g. replace it with
@fb_webhook.route("/webhook", methods=['POST'])
        def webhook():
            import time
            signature = request.headers.get("X-Hub-Signature") or ''

            start_sig = time.clock()
            valid_sig = self.validate_hub_signature(self.fb_secret,
                                                    request.data,
                                                    signature)
            print("Hub signature validation took {:.4g} s".format(time.clock()
                                                                  - start_sig))
            if not valid_sig:
                logger.warning("Wrong fb secret! Make sure this matches the "
                               "secret in your facebook app settings")
                return "not validated"

            start_messenger_init = time.clock()
            messenger = Messenger(self.fb_access_token, on_new_message)
            print("Messenger initialisation took {:.4g} s".format(
                    time.clock() - start_messenger_init))

            start_message_handling = time.clock()
            messenger.handle(request.get_json(force=True))
            print("Message handling took {:.4g} s".format(
                    time.clock() - start_messenger_init))

            return "success"

I already did, I timed the 4 steps of the webhook, and it seems fast enougs:

2018-10-17T16:19:17.479353+00:00 app[web.1]: Webhook:
2018-10-17T16:19:17.479356+00:00 app[web.1]: signature 4.7e-05 s
2018-10-17T16:19:17.479358+00:00 app[web.1]: validate 0.000479 s
2018-10-17T16:19:17.479359+00:00 app[web.1]: create_messenger 0.000471 s
2018-10-17T16:19:17.479361+00:00 app[web.1]: handle_messenger 0.04649

As for the webhook, it is called twice for every message, I am not sure why.
I also deployed a similar bot on another platform (dialogflow), an I don't have the response time issue on messenger, so I am sure it doesn't come from Facebook

@bbreton3 do you know what the overall response time was for the timings you just posted? Because I'm not sure which other process could lead to a response time of 2-3 seconds that you reported initially.

The complete log from heroku is the following:

2018-10-17T16:17:31.039814+00:00 app[web.1]: <IP_ADDRESS> - - [2018-10-17 16:17:31] "POST /webhooks/facebook/webhook HTTP/1.1" 200 122 2.163950
2018-10-17T16:19:15.443430+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - FacebookInputwebhook
2018-10-17T16:19:15.443845+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - FacebookInputvalidate_hub_signature
2018-10-17T16:19:15.444163+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - Messenger__init__
2018-10-17T16:19:15.444925+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - Messengermessage
2018-10-17T16:19:15.445134+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - Messenger_handle_user_message
2018-10-17T16:19:15.445365+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - MessengerBot__init__
2018-10-17T16:19:15.445647+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.tracker_store  - Recreating tracker for id '2204189702989811'
2018-10-17T16:19:15.448265+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.processor  - Received user message 'elementaire mon cher watson' with intent '{'name': 'sherlock_holmes', 'confidence': 0.9350796341896057}' and entities '[]'
2018-10-17T16:19:15.448522+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.processor  - Logged UserUtterance - tracker now has 6 events
2018-10-17T16:19:15.448827+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.processor  - Current slot values:
2018-10-17T16:19:15.448831+00:00 app[web.1]:
2018-10-17T16:19:15.449263+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.policies.memoization  - Current tracker state [None, {}, {'prev_action_listen': 1.0, 'intent_sherlock_holmes': 1.0}, {'prev_utter_sherlock_holmes': 1.0, 'intent_sherlock_holmes': 1.0}, {'prev_action_listen': 1.0, 'intent_sherlock_holmes': 1.0}]
2018-10-17T16:19:15.449528+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.policies.memoization  - There is no memorised next action
2018-10-17T16:19:15.453328+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.policies.ensemble  - Predicted next action using policy_2_KerasPolicy
2018-10-17T16:19:15.453614+00:00 app[web.1]: 2018-10-17 16:19:15 DEBUG    rasa_core.processor  - Predicted next action 'utter_sherlock_holmes' with prob 1.00.
2018-10-17T16:19:15.453808+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - MessengerBot__init__
2018-10-17T16:19:15.454197+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - MessengerBotsend_text_message
2018-10-17T16:19:15.454368+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - Sending message: Eh non ! Tu n'as pas résolu cette affaire...
2018-10-17T16:19:15.454582+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - MessengerBotsend
2018-10-17T16:19:15.914007+00:00 app[web.1]: POST /me/messages response time 0.01539 s
2018-10-17T16:19:15.914190+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - MessengerBotsend_image_url
2018-10-17T16:19:15.914367+00:00 app[web.1]: 2018-10-17 16:19:15 INFO     rasa_core.channels.facebook  - MessengerBotsend
2018-10-17T16:19:17.472491+00:00 app[web.1]: POST /me/messages response time 0.00347 s
2018-10-17T16:19:17.472736+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.processor  - Action 'utter_sherlock_holmes' ended with events '[]'
2018-10-17T16:19:17.473128+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.processor  - Bot utterance 'BotUttered(text: Eh non ! Tu n'as pas résolu cette affaire..., data: {
2018-10-17T16:19:17.473132+00:00 app[web.1]: "elements": null,
2018-10-17T16:19:17.473133+00:00 app[web.1]: "buttons": null,
2018-10-17T16:19:17.473136+00:00 app[web.1]: "attachment": "https://media.giphy.com/media/yy8WRvsWEyWyI/giphy.gif"
2018-10-17T16:19:17.473138+00:00 app[web.1]: })'
2018-10-17T16:19:17.473949+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.policies.memoization  - Current tracker state [{}, {'prev_action_listen': 1.0, 'intent_sherlock_holmes': 1.0}, {'prev_utter_sherlock_holmes': 1.0, 'intent_sherlock_holmes': 1.0}, {'prev_action_listen': 1.0, 'intent_sherlock_holmes': 1.0}, {'prev_utter_sherlock_holmes': 1.0, 'intent_sherlock_holmes': 1.0}]
2018-10-17T16:19:17.474265+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.policies.memoization  - There is no memorised next action
2018-10-17T16:19:17.478626+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.policies.ensemble  - Predicted next action using policy_2_KerasPolicy
2018-10-17T16:19:17.478851+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.processor  - Predicted next action 'action_listen' with prob 1.00.
2018-10-17T16:19:17.479014+00:00 app[web.1]: 2018-10-17 16:19:17 DEBUG    rasa_core.processor  - Action 'action_listen' ended with events '[]'
2018-10-17T16:19:17.479350+00:00 app[web.1]:
2018-10-17T16:19:17.479353+00:00 app[web.1]: Webhook:
2018-10-17T16:19:17.479356+00:00 app[web.1]: signature 4.7e-05 s
2018-10-17T16:19:17.479358+00:00 app[web.1]: validate 0.000479 s
2018-10-17T16:19:17.479359+00:00 app[web.1]: create_messenger 0.000471 s
2018-10-17T16:19:17.479361+00:00 app[web.1]: handle_messenger 0.04649
2018-10-17T16:19:17.481432+00:00 app[web.1]: <IP_ADDRESS> - - [2018-10-17 16:19:17] "POST /webhooks/facebook/webhook HTTP/1.1" 200 122 2.038382
2018-10-17T16:19:17.481645+00:00 heroku[router]: at=info method=POST path="/webhooks/facebook/webhook" host=oslo-ia-rasa-bot-us.herokuapp.com request_id=6a493590-4668-4945-ba4b-9165fb5ad98c fwd="<IP_ADDRESS>" dyno=web.1 connect=1ms service=2040ms status=200 bytes=122 protocol=https

To be honest, I am not so sure either where to look for the problem, my attempt to time various parts of the rasa_core webhook process have been unsuccessful, and the slack webhook is much faster, so I am sure it doesn't come from Heroku's side.

@bbreton3 this is indeed very strange. I will try to reproduce this and will get back to you about this soon

@FellowNico @bbreton3 are you using the same NLU and Core models on slack and facebook? I benchmarked the endpoint, and it seems that the majority of time is spent on predicting actions, Note  that I've benchmarked using clock time (time.time()) rather than CPU time (time.clock()).
Here's the result:
validate_hub_signature took 4.67e-05 s
processor._predict_and_execute_next_action 1.8 s
processor._save_tracker took 9.7e-05 s
processor.handle_message took 1.85 s
whole thing took 1.85 s
<IP_ADDRESS> - - [2018-10-23 22:30:15] "POST /webhooks/facebook/webhook HTTP/1.1" 200 122 1.855675

as you can see, processor._predict_and_execute_next_action() takes up most of the time. So it doesn't look like it's an issue in the facebook connector or Rasa Core

@ricwo , we use the exact same model, and we just comment out the connection info in the credentials.yml file to switch between Slack and Facebook (we even tried servicing both at the same time, and the time gap remains between the two platforms).

Since this is nothing we can sort on our end, I will close this


Nonexistent function 'set_pitch_scale' in base 'AudioStreamPlayer'

Godot version:
3.0.2.stable.official
OS/device including version:
Linux Mint 18.3
Issue description:
if you want to apply pitchscale on an AudioStreamPlayer, the following Error Message is displayed:

Invalid call. Nonexistent function 'set_pitch_scale' in base 'AudioStreamPlayer'

I didn't found any documentation how to use set_pitch_scale properly in this case.
I posted this issue here, because it was recommended to me:
https://godotengine.org/qa/28629/how-to-use-set_pitch_scale-correctly-in-gdscript
Steps to reproduce:
Add in a parentscript of AudioStreamPlayer named "Tone200" the following line:
$Tone200.set_pitch_scale(4)
Minimal reproduction project:
PitchAudiostreamplayer.zip

I think the error is quite clear: you're calling a function that does not exist. There's no set_pitch_scale() in the AudioStreamPlayer class. This function existed in the 2.1 version, but for 3.0 the audio engine was rewritten and many things changed.


add OCI struct tags

Currently we only have json:"" struct tags for all of our exported types. While this is fine, maybe we should consider adding some OCI struct tags that add some information about the OCI specification (for example, is a particular field required or optional). This would mean that we could set up reflect-based validation that doesn't require us to keep updating the validation code and manually writing all of the checking.

On Sat, Nov 05, 2016 at 06:24:49PM -0700, Aleksa Sarai wrote:

… we should consider adding some OCI struct tags that add some
information about the OCI specification (for example, is a
particular field required or optional).

This came up in opencontainers/runtime-spec#229.  Folks seemed mostly
positive but the PR was closed.  I'm not sure why though, it doesn't
seem like these tags could apply to ocitools (now runtime-tools), but
that was @liangchenye's plan when he closed the PR.  @liangchenye, can
you fill us in?

Currently runtime-tools is using omitempty for this purpose.

i like this idea, and we had discussed it previously. It died-on-the-vine when it came to parsing and extracting the tags. Not terribly difficult, but just never got done

SGTM.


bug fix?

Orignal.
mesh->vertex_array[nv+v].uv[0] = shapes[s].mesh.texcoords[v * 3 + 0];
mesh->vertex_array[nv+v].uv[1] = shapes[s].mesh.texcoords[v * 3 + 1];
Shouldn't this be.
mesh->vertex_array[nv+v].uv[0] = shapes[s].mesh.texcoords[v * 2 + 0];
mesh->vertex_array[nv+v].uv[1] = shapes[s].mesh.texcoords[v * 2 + 1];
I was getting a crash before I changed it.

Thanks for the bug report!


Fix travis tests

Updated a bunch of things:

Karma libraries
Travis Ubuntu version
Travis Firefox version

Also for good measure, removed erroneous network requests from client tests.

Coverage remained the same at 58.719% when pulling 954a07ca62f111c5de42148f195080e66e7b1019 on verbose-client-tests into ad60c3d848e1a47ea65d4b382897d3a1cc513a9d on master.

@sderickson So, #4460 was failed maybe caused by this problem?

@ExDevilLee Yep! I'll merge this in momentarily, once that happens please merge changes into your PR. Thanks!

Coverage remained the same at 58.719% when pulling d666e380dce49aac59597a87dcc475b659f5510b on verbose-client-tests into ad60c3d848e1a47ea65d4b382897d3a1cc513a9d on master.


Splitted build configuration, build and tests steps

The build CI shared / test (windows-latest should fail (this is expected and will be fixed in a dedicated PR).
cc @Klaim

LGTM 👍🏽 (context for others: the ci failing on windows/shared is what we want)
Suggestion: adding -fvisibility=hidden in https://github.com/mamba-org/powerloader/blob/main/CMakeLists.txt#L173 so that non-msvc builds also fail as expected.

Now everything should fail

Just the shared build, yes