rewriting Nat.zero and Nat.succ after induction(') tactic

This is either a feature request or a reminder for myself and @hrmacbeth to implement a feature for our courses.
Right now, the induction and induction' tactics produce goals with bare constructors in them. (This isn't surprising and mimics Lean 3.) For instance:
example (a b : ℕ) : a + b = 0 := by
  induction a

/-
unsolved goals
case zero
b : ℕ
⊢ Nat.zero + b = 0

case succ
b n✝ : ℕ
n_ih✝ : n✝ + b = 0
⊢ Nat.succ n✝ + b = 0
-/

We'd love for teaching purposes for these goals to look like 0 + b = 0 and n + 1 + b = 0. (In Lean 3, nat.zero gets pretty printed as 0, so this appears to half-happen.) An easy way around it is to write a wrapper for induction that does a simp only at *, which will be enough for our courses. But I wanted to open this issue in case people had thoughts about a more principled change, or in case this was something worth working into the mathlib4 tactics.

An easy fix for that is to update the default eliminator to use notations:
@[eliminator] protected def Nat.recAux.{u} {motive : Nat → Sort u} (zero : motive 0) (succ : (n : Nat) → (ih : motive n) → motive (n+1)) : (t : Nat) → motive t
| 0 => zero
| n+1 => succ n (Nat.recAux zero succ n)

example (a b : Nat) : a + b = 0 := by
  induction a

/-
unsolved goals
case zero
b : Nat
⊢ 0 + b = 0

case succ
b n✝ : Nat
ih✝ : n✝ + b = 0
⊢ n✝ + 1 + b = 0
-/

Unfortunately, this makes cases a behave funny. That can probably be fixed. (When Leo generously added that feature at my request long ago, I was so grateful I didn't feel I should nitpick the details.)

After @fgdorais ' comment I realised an even cheaper fix: use the custom induction principle Nat.recAux he suggests which refers to n + 1 rather than n.succ, but rather than changing the default eliminator to this, just always invoke it explicitly with induction ... using Nat.recAux.
It's a bit wordy, but one can write a wrapper tactic for this, and it works fine for low-level teaching where the students aren't going to encounter other kinds of Lean induction and be confused by the difference.
Given the existence of two reasonable workarounds for this, I'm going to close the issue.


std.range: make unittests reproducible when -boundscheck=off is present

Signed-off-by: Luís Ferreira<EMAIL_ADDRESS>

Also, Phobos should be tested with -boundscheck=off. This is failing on my new test suite.


[TUBEMQ-444]Add consume and produce Cli commands

Restore the overwritten example codes;
Add Cli script commands for production and consumption
Adjust the naming of the Cli scripts;

Codecov Report

Merging #343 (1d35ac3) into master (66f5438) will decrease coverage by 0.11%.
The diff coverage is 0.00%.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 66f5438...1d35ac3. Read the comment docs.


Need similar method of setMemberT() for Array&Object

If there are Array/Object members in a dictionary.
Error:
.././gen/widl_dictionary_helper.h:51:58: error: no matching function for call to ‘New(const v8::Localv8::Array&)’

Working on it...


Simd.js library support

Change description:

Implemented support for the following new SIMD types. This adds to the existing SIMD types (Int32x4 and Float32x4) and meets the SIMD.js specification. [SIMD.Bool32x4, SIMD.Bool16x8, SIMD.Bool8x16, SIMD.Int16x8, SIMD.Int8x16, SIMD.Uint32x4, SIMD.Uint16x8, SIMD.Uint8x16]
Adding new builtin functions for all SIMD types to be consistent with the SIMD.js specification and the polyfill.
Updating the syntax and behavior of the existing builtin functions and removing builtins to be consistent with the SIMD.js specification and the polyfill.
Clean up of existing SIMD unittests to avoid printing SIMD values for validation. Tests prints only PASS/FAIL while verification and uses utility methods for comparing the values to the right precision.
Code refactoring to reduce code size/complexity of the SIMDjs code.

Hi @arunetm, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Arun Purushan (Intel Corp)). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

Change description:
1.Implemented support for the following new SIMD types. This adds to the existing SIMD types (Int32x4 and Float32x4) and meets the SIMD.js specification. [SIMD.Bool32x4, SIMD.Bool16x8, SIMD.Bool8x16, SIMD.Int16x8, SIMD.Int8x16, SIMD.Uint32x4, SIMD.Uint16x8, SIMD.Uint8x16]
2.Adding new builtin functions for all SIMD types to be consistent with the SIMD.js specification and the polyfill.
3.Updating the syntax and behavior of the existing builtin functions and removing builtins to be consistent with the SIMD.js specification and the polyfill.
4.Clean up of existing SIMD unittests to avoid printing SIMD values for validation. Tests prints only PASS/FAIL while verification and uses utility methods for comparing the values to the right precision.
5.Code refactoring to reduce code size/complexity of the SIMDjs code.

Updated description of the issue so the text will show up in the merge commit message.

@arunetm It looks like some of your copyright headers are incorrect or missing.
In the generated Promise.js.bc.*.h:
$ head lib/Runtime/Library/InJavascript/Promise.js.bc.32b.h
// Copyright (C) Microsoft. All rights reserved.
#if 0
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

Compare with:
$ head lib/Runtime/Library/InJavascript/intl.js.bc.32b.h
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#if 0
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

Although I believe we recently noted that there is no use for these Promise bytecodes in ChakraCore so we moved them back to Chakra. Can you confirm whether they are needed in ChakraCore for your change, and if not, remove them?

Full list of files missing or wrong copyright from the failed check:
11:54:31 --------------
11:54:31 --- ERRORS ---
11:54:31 lib/Runtime/Library/InJavascript/Promise.js.bc.32b.h ... does not contain a correct Microsoft copyright notice.
11:54:31 lib/Runtime/Library/InJavascript/Promise.js.bc.64b.h ... does not contain a correct Microsoft copyright notice.
11:54:31 test/SIMD.int32x4/testLoad.js ... does not contain a correct Microsoft copyright notice.
11:54:31 test/SIMD.int32x4/testMinMax.js ... does not contain a correct Microsoft copyright notice.
11:54:31 test/SIMD.int32x4/testStore.js ... does not contain a correct Microsoft copyright notice.
11:54:31 --------------

Thanks @dilijev. Updated the PR by removing unused bytecode headers and adding missing copyright header for the test files.

Were these generated by the header script? We might need to update some more of that with the license header changes. @akroshg will have more context (but is away for a few more weeks)

@tcare, We might not need any script updates for this. The Promise.js.bc.*.h files were generated by the Genbytecode script a while back. However the latest script does not create these files anymore.

Ah, okay. Thanks for the clarification.

Does all the kangax es7 test cases pass after this change?

Why doesn't this change remove SIMDFloat64x2

@abchatra,We have not verified this feature against the 'kangax es7' tests. We do pass the SIMD validation tests from the SIMDjs polyfill (link below).
https://github.com/tc39/ecmascript_simd/blob/master/src/ecmascript_simd_tests.js
These tests are consistent with the latest SIMD spec and we pass all of them.

@abchatra There is a possibility for the Float64x2 SIMD type to be re introduced to the SIMD spec based on some of the on going discussions(https://github.com/tc39/ecmascript_simd/issues/304).
We are planning to have a clean up PR after performing multiple cleanups including this type (in case Float64x2 is decided again to be omitted from the specification).

Using telemetry for SIMD library builtins:
The ideal use cases for SIMD builtin functions will follow the optimized versions of their implementation. The current library implementation is meant for spec coverage and they will be used only in rare cases. Collecting the telemetry for the optimized builtins might be more useful than capturing the information for the library implementations.
Testing:
The  SIMD builtins has been verified against the polyfill validation tests https://github.com/tc39/ecmascript_simd/blob/master/src/ecmascript_simd_tests.js, to ensure consistency with the latest SIMD specification. The implementation passes all of these polyfill tests.
We have not tried testing against "kangax es7" tests so far. Planning to verigy against the kangax es7 tests as the next step.

@arunetm  Do you have a new commit which I review and signoff?

@abchatra The commit 2af6118 is ready for review. Thanks.

:+1: Great job!

@abchatra  Thanks for the feedback.
I have an authorization issue for the code sign off. The tool complains that my account is not authorized. Can you please help to sign off this PR.

@arunetm Done.

@dotnet-bot test EOL Check please


⚠ SkipTheCommericals has degraded performance

In c32c426, SkipTheCommericals ($STC) experienced degraded performance:

HTTP code: 200
Response time: 4156 ms

Resolved: SkipTheCommericals performance has improved in 8feb1d7.


Add header background

At the moment, the header background is a colour. Have an option to add an image that's easy to swap to something else and works on multiple screen sizes.

Me an @drishtipeshwani will also be working on this


Allow passing arguments to a slot block

Feature request
In the case of some complex components, I want to create a abstracted API. The example I have is a TableComponent
When I use a component, I can use the component instance in a block like:
<%= render TableComponent.new(rows: @products) do |table|
  <%= table.with_column(label: "Name") { |column| … }
<% end >

The current API does not allow you to iterate through the rows and render all column with the data of said rows by declaring a slot like this. So in order to achieve that I had to create a work around (that I will present later). I wondered if others would find it a worthwhile addition to allow controlling what is passed into the block, so one can do:
<%= render TableComponent.new(rows: @products) do |table|
  <%= table.with_column(label: "Name", &:name)
  <%= table.with_column(label: "Price") { |product| number_to_currency(product.price) }
<% end >

Motivation
I some instances allowing to control what is passed into the slot block when rendering it, can allow for some really nice api, when iterating through collections.
Workaround
You can make the above API work by writing you own methods like:
class TableComponent < ViewComponent::Base
  def initialize(rows:)
    @rows = rows
    @columns = []

  end

  def column(label, &block)
    @columns << Column.new(label, &block)
  end

  def  before_render
     content # to ensure block is called
  end

  class Column
    attr_reader :label, :td_block
    def initialize(label, &td_block)
      @label = label
      @td_block = td_block
    end
  end
end

Then in the component template you can do:

    <% columns.each do |column| %>
        <%= column.label %>
     <% end %>

  <% @rows.each do |row| %>

      <% @columns.each do |column| %>

          <%= view_context.capture(row, &column.td_block) %>

      <% end %>

  <% end %>

So this works wonderfully (though it took a while to figure it out).
So I got a solution for me, but wondered whether we might add this functionality to the core library, so it could be used like this:
Proposal
Allow to declare slots like normal
class TableComponent < ViewComponent::Base
  renders_many :columns, TableComponent::Column
  ...
  class Column < ViewComponent::Base
     def initialize(label)
        @label = label
     end

     def title(label)
       content_tag :h2, label
     end
  end
end

In the component template file, allow to pass args, that will be passed to the block upon rendering:
  <% @rows.each do |row| %>

      <% columns.each do |column| %>

          <%= column(row) %>

      <% end %>

  <% end %>

So in this case you would pass the row data into the block instead of the component, you could still pass the component as needed.
column(column, row)

So you can use it in the view like this:
<%=   TableComponent(rows: @products).new |table| %>
  <%=  table.with_column |column, product| %>
       <%= column.title_style product.style %>
       <%= truncate(product.style) %>
   <% end %>
<% end %>

It would not be hard to adjust the view component code to adjust this. Though I am not sure if this kind of abstraction is what view component is striving for, especially since in this example you see the Column is not really a view component, but only an object to hold the block and params to configure the column, so it is muddying the responsability of the ViewComponent a bit.
ps: I would be happy to make a PR to enable this, I am also fine if this doesn't fit the vision of ViewComponent and the proposal is rejected.

I tried to have a go at this, but of course I see that it is not as simple as I imagined. In the end it is about the slot being rendered, as its to_s methods is called. So there are two challenges, kinda looks like you have to pass thing into the render_in call… but also the to_s method is being cached, so one would have to remove that cache.
Going deeper into the render_in method it's hard to understand what is going on with the render_template_for method, I really didn't understand at all, what was going on there.
I think the proposed API above is probably not possible, while doing something like column.render_with_params(row) or something like that might be achievable.

Hey @RolandStuder, thanks for bringing this up 😄 Please correct me if I'm wrong, but can't this be done by passing product into the component on initialization?
<%= table.with_column(label: "Price") { |product| number_to_currency(product.price) } %>

@RolandStuder do you think this accurately solves your issue or do you still feel its necessary for an alternative implementation

@camertron @reeganviljoen No, the point is that I am want to render one slot multiple times with different data. I am rendering a (table) column cell for every entry in @products.
The problem is not that I can't pass in the products to one slot rendering instance, the problem is that a slot can kinda only be used once. I can't do that:
render TableComponent.new(rows: @products) do |table|
    table.with_column(:price) { product.price }
end

The component table_component.html.erb:

        <%  columns.each do |column| %>
            <%= column.label %>
        <% end %>

  <%= @products.each do |product| %>

           <% columns.each do |column| %>
              HERE IS THE PROBLEM
              <% column # can't pass anything here to the column to render with that specific data %>
           <% end %>

     <% end %>

On the other hand I also cannot do this:
render TableComponent.new do |table|
    @products.each do |product|
       table.with_column(:price) { product.price }
    end
end

As with this, I can't render the column headings, as there is a column slot for every cell in the table, also it forces me away from the API I wanted for our component.
I think the abstraction I want is just a bit outside of what ViewComponent is indeted to support. When I researched the topic I was surprised to find out there was basically no one suggesting such a column focused approach. So I think it just abstracts a bit more than would people usually abstract in a VC.
I think it's fine to just close this issue. I have a working workaround. The fact that is is hard to communicate and that it doesn't work like a regular slot, is probably a "smell" to say, "you shouldn't do this with ViewComponent" 😅
I described my approach also here, not sure if I communicated it better there.

Hey @RolandStuder thanks for that additional information. Reading through your blog post provided the context I was missing, specifically this line:

personally, I prefer to think of tables in terms of columns

Ahhhhh ok now everything makes sense! IMO, the fundamental problem you're running into here isn't ViewComponent, or even ERB - it's HTML itself. HTML definitely thinks of tables from a row perspective, and requires you to construct them row by row. ViewComponent would have to somehow maintain "cursors" at multiple points in the output buffer to write a table by columns, which I don't think is possible given how the Rails view layer is architected. In fact, I don't know any web framework that has this capability.
The approach you shared here and in the blog post, that uses plain 'ol Ruby objects (POROs) instead of components, seems like a great way to solve the problem. Slots are not designed to be rendered multiple times, so we are unlikely to accept a change that would allow them or their #to_s methods to accept arguments.
In thinking about the problem from this fresh perspective, I've come up with an alternative approach that uses ViewComponents and includes limited trickery.
Here's how the API looks:
<%# app/views/something/index.html.erb %>
<%= render(TableComponent.new) do |table| %>
  <% table.with_column(title: "Col1") do |column| %>
    <% column.with_item { "val1" } %>
    <% column.with_item { "val2" } %>
    <% column.with_item { "val3" } %>
  <% end %>
  <% table.with_column(title: "Col2") do |column| %>
    <% column.with_item { "val1" } %>
    <% column.with_item { "val2" } %>
    <% column.with_item { "val3" } %>
  <% end %>
<% end %>

There are three components at play here, TableComponent, ColumnComponent, and ItemComponent.
TableComponent
# app/components/table_component.rb

class TableComponent < ViewComponent::Base
  renders_many :columns, ColumnComponent

  private

  def num_rows
    columns.map { |col| col.items.size }.max
  end
end

<%# app/components/table_component.html.erb %>

  <% columns.each do |column| %>
    <%= column %>
  <% end %>
  <% num_rows.times do |i| %>

      <% columns.each do |column| %>
        <%= column.items[i] %>
      <% end %>

  <% end %>

ColumnComponent
# app/views/column_component.rb

class ColumnComponent < ViewComponent::Base
  renders_many :items, ItemComponent

  def initialize(title:)
    @title = title
  end
end

<%# app/views/column_component.html.erb %>

<%= @title %>

ItemComponent
# app/views/item_component.html.erb

class ItemComponent < ViewComponent::Base
end

<%# app/views/item_component.html.erb %>

<%= content %>

This is probably what I would do if I wanted to create a column-focused table component.
Since you already have a viable workaround, and because we are unlikely to support rendering slots with arguments, I'm going to close this issue. Please feel free to reopen if necessary 😄


Brainstorming by Action

Here https://github.com/yiisoft/yii2/blob/master/framework/base/Action.php#L83
   if (!method_exists($this, 'run')) {

Perhaps it should be replaced by the interface. I know about InlineAction. It will not be easy, but  adhere to OPP and best practice.

Nope. An interface cannot be used here because the run() method can be defined differently in order to use parameter binding.

See
https://github.com/yiisoft/yii/issues/1032

I knew it and therefore wrote It will not be easy. Decided to clarify. Ok, if everything is so final.
Thanks.

If you have any concrete ideas about variable signatures + interface, let us know. The topic itself is very interesting but I don't think it's solveable.

Now:
    public function runWithParams($params)

@param array $params the parameters to be bound to the action's run() method.
I propose something like this:
namespace yii\base;

/**
 * ActionInterface is the interface that should be implemented by Action classes.
 *
 */
interface ActionInterface
{
    /**
     * This method runs the action.
     * @param array $args
     * @return
     */
    public function run($args = []);
}

abstract class Action extends Component implements ActionInterface {

public function runWithParams($params)
    {
        $args = $this->controller->bindActionParams($this, $params);
        Yii::trace('Running action: ' . get_class($this) . '::run()', __METHOD__);
        if (Yii::$app->requestedParams === null) {
            Yii::$app->requestedParams = $args;
        }
        if ($this->beforeRun()) {
            $result = $this->run($args);
            $this->afterRun();

            return $result;
        } else {
            return null;
        }
    }
}

class InlineAction extends Action
{
    /**
     * Runs this action with the specified parameters.
     * This method is mainly invoked by the controller.
     * @param array $params action parameters
     * @return mixed the result of the action
     */
    public function runWithParams($params)
    {
        $args = $this->controller->bindActionParams($this, $params);
        Yii::trace('Running action: ' . get_class($this->controller) . '::' . $this->actionMethod . '()', __METHOD__);
        if (Yii::$app->requestedParams === null) {
            Yii::$app->requestedParams = $args;
        }

        return $this->run($args);
    }

    public function run($args = []) {
        return call_user_func_array([$this->controller, $this->actionMethod], $args);
    }
}

And so on...

Such change eliminates the abiity to specify direct parameters for the run() method in the Action descendat:
class MyAction extends Action
{
    public function run($id, $name) // Produces E_STRICT
    {
    }
}

Yes, that's what @qiangxue pointed out. RFC that will allow to specify variable number of named arguments isn't there yet so it's not possible to implement on language level.
Another thing is PHP 5.6 which allows the following:
function run(...$args) {
    foreach ($args as $arg) { ... }
}

run(1, 2, 3, 4, 5);

But it doesn't have anything to do with argument names so doesn't fit.

@githubjeka more ideas?

namespace yii\web;

class Controller extends \yii\base\Controller

public function bindActionParams($action, $params)
    {
        if ($action instanceof InlineAction) {
            $method = new \ReflectionMethod($this, $action->actionMethod);
        } else {
//            $method = new \ReflectionMethod($action, 'run');
            return $params;
        }

class ViewAction extends Action
{
    /**
     * Displays a model.
     * @param string $id the primary key of the model.
     * @return \yii\db\ActiveRecordInterface the model being displayed
     */
    public function run($args = [])
    {
        var_dump($args);
    }
}

http://localhost:9000/index.php?r=site/view&id=2&cat=2
array(3) { ["r"]=> string(9) "site/view" ["id"]=> string(1) "2" ["cat"]=> string(1) "2" }

In this case, check of the integrity of data moves in action.  Is a bad?

Well, yes. You have to do it yourself each time while currently framework does it for you.

@samdark я как бы тоже плюсанусь к Жеке, раз уж вы не разделяете экшены на base и web, то почему бы сообществу не дать реализацию привычек из yii1

I had a dream. :smile:
Controller not modificated.
class ViewAction extends Action
{
    /**
     * Displays a model.
     * @param string $id the primary key of the model.
     * @return \yii\db\ActiveRecordInterface the model being displayed
     */
    public function run($args = ['id'])
    {
        var_dump($args);
    }
}

http://localhost:9000/index.php?r=site/view&id=2&cat=2
array(1) { [0]=> array(1) { [0]=> string(2) "id" } }

Dream is come to me last night. :smile:
namespace yii\web;

class Controller extends \yii\base\Controller

public function bindActionParams($action, $params)
    {
        if ($action instanceof InlineAction) {
            $method = new \ReflectionMethod($this, $action->actionMethod);
        } else {
            $method = new \ReflectionMethod($action, 'run');
        }

        $args = [];
        $missing = [];
        $actionParams = [];

        foreach ($method->getParameters() as $param) {

           //  ---------------------- IT ADDED  ----------------->>
            if ($action instanceof ActionInterface) {

                foreach ($param->getDefaultValue() as $name) {
                    if (array_key_exists($name, $params)) {
                        if (!is_array($params[$name])) {
                            $args[$name] = $actionParams[$name] = $params[$name];
                        } else {
                            throw new BadRequestHttpException(Yii::t('yii', 'Invalid data received for parameter "{param}".', [
                                'param' => $name,
                            ]));
                        }
                        unset($params[$name]);
                    } else {
                        $missing[] = $name;
                    }
                }
          //  <<---------------------------------------
            } else {
                $name = $param->getName();
                if (array_key_exists($name, $params)) {
                    if ($param->isArray()) {
                        $args[] = $actionParams[$name] = is_array($params[$name]) ? $params[$name] : [$params[$name]];
                    } elseif (!is_array($params[$name])) {
                        $args[] = $actionParams[$name] = $params[$name];
                    } else {
                        throw new BadRequestHttpException(Yii::t('yii', 'Invalid data received for parameter "{param}".', [
                            'param' => $name,
                        ]));
                    }
                    unset($params[$name]);
                } elseif ($param->isDefaultValueAvailable()) {
                    $args[] = $actionParams[$name] = $param->getDefaultValue();
                } else {
                    $missing[] = $name;
                }
            }
        }

        if (!empty($missing)) {
            throw new BadRequestHttpException(Yii::t('yii', 'Missing required parameters: {params}', [
                'params' => implode(', ', $missing),
            ]));
        }

        $this->actionParams = $actionParams;
        return $args;
    }

class ViewAction extends Action
{
    /**
     * Displays a model.
     * @param string $id the primary key of the model.
     * @return \yii\db\ActiveRecordInterface the model being displayed
     */
    public function run($args = ['id','cat'])
    {
        var_dump($args);
    }
}

http://localhost:9000/index.php?r=site/view&qweqw=2&cat=3&id=8
array(2) { ["id"]=> string(1) "8" ["cat"]=> string(1) "3" }
http://localhost:9000/index.php?r=site/view&qweqw=2&id=8
Bad - Missing required parameters: cat
http://localhost:9000/index.php?r=site/view&cat=2&id=1
array(2) { ["id"]=> string(1) "1" ["cat"]=> string(1) "2" }
It breaks backward compatibility with custom user Action.
Since they don't implement the interface.

Not trying to discourage you, but this approach is not acceptable because

It breaks BC.
It doesn't fully support the current feature (e.g. using array type hint to specific input parameters).
It is more difficult to document the method parameters.

I'm closing this issue as I think it won't lead to anywhere.

Well in v. 3.0.0 it will remake.

Unless we raise the requirement to 5.6, but I don't think this will happen in 2.x, and probably not even in 3.0.

Okay, I still love Yii2.

It all depends on PHP usage stats and PHP support deadlines. If PHP7 usage will be high, we'll use it.


Sema: NSValue-to-value-type casts are failable and should be checked.

In Swift 4 mode, no longer consider e.g. 'nsNumber as Int' or 'nsValue as NSRange' to be valid coercions. This would break compatibility with Swift 3, so in Swift 3 mode, accept the coercion, but also accept a checked cast without a warning, and raise a migration warning about the unchecked coercion.

@swift-ci Please test

@DougGregor and @rudkx, do you mind reviewing this?

@swift-ci Please smoke test and merge

@swift-ci Please smoke test and merge


doc: updated peko showcase pic

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Sebastien Ringrose seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Split user and server settings

This is the second in a series of PRs which will implement #313. The previous PR is #326.
This actually performs the split between User and Server settings:

Introduces two different enums for the two sets of settings.
Introduces a new settings file for the server settings.
Deduplicates code between the two sets of settings
Introduces two different CLI commands for the two sets of settings.
Renames the switch settings script to specify it only deals with user settings (as we won't ever switch between server profiles).
Updates tests and documentation.
Fixes what apparently was a non-working authentication enforcement on some API flows which was exposed by a unit test. Did not investigate further.

@augray Added optional vs required clarifications for all settings documentation, and tested that the log ingestion feature still works.


GenPareto cdf and quantile functions

Description of changes: Including cdf() and its inverse quantile() for the genpareto distribution, and added corresponding pytests in test_distribution_methods. Also changing np.inf to 10**15 in log_prob() of genpareto and gamma distributions to circumvent problems on gpu.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Thanks for the tests Elena. Looks good!


[ci skip] adding user @jGaboardi

Hi! This is the friendly automated conda-forge-webservice.
I've added user @jGaboardi as instructed in #2.
Merge this PR to add the user. Please do not rerender this PR or change it in any way. It has [ci skip] in the commit message to avoid pushing a new build and so the build configuration in the feedstock should not be changed.
Please contact conda-forge/core to have this PR merged, if the maintainer is unresponsive.
Fixes #2

@knaaptime Can you give this a review and also grant me permissions?


Add association with .md file type

As in the title.

What do you exactly mean by "association"?

This:


Look into handling errors within stream requests

See TODO's in requester.go. It may be OK to swallow these up, or depending on specific error we may want to do something specific about these. Should investigate further.

Hey, there are no TODOs in https://github.com/bojand/ghz/blob/master/runner/requester.go :) maybe you can close this?


db setup in kubernetes?

I might just be missing something, but when I try to deploy the replicaset to a k8s cluster, it looks like the zulip container is configured to talk to its podmates over hostnames like postgres rather than localhost. This prevents the zulip service from finding, e.g., the database.
Updating these to localhost works better but the zuplip container still gets stuck at

"Could not connect to database server. Exiting."

... but when I manually exec into the zulip container I see that the db is indeed accessible:
#  /usr/bin/pg_isready -h "$DB_HOST" -p "$DB_HOST_PORT" -U "$DB_USER" -t 1 >/dev/null 2>&1
root@zulip-1-z46gs:/# echo $?
0

Is this related to some known issue?

@jmandel Is the database in the same K8s pod context/in the same replicaset containers specified as Zulip?

Yes, the db is in the same replicaset because I'm using the replication controller defined in this repo.
Looking back at the state 17h later: the pod is up and running. I'm a bit confused abut what happened, but will close this issue until/unless I can reproduce! Thanks for the response :-)

@jmandel Good to hear the problem solved itself!


Improve 'Description' text for PCF Dev (or when no description is available in the info response)

Info response:
{
   "cd5bcfd6-3708-4856-985a-1e5bc005bd4a":{
      "name":"pcfdev",
      "build":"4af54097fef22734d857410ddfb89ee979087911",
<EMAIL_ADDRESS>      "version":0,
      "description":"",
      "authorization_endpoint":"https://login.<IP_ADDRESS>.xip.io",
      "token_endpoint":"https://uaa.<IP_ADDRESS>.xip.io",
      "min_cli_version":null,
      "min_recommended_cli_version":null,
      "api_version":"2.82.0",
      "app_ssh_endpoint":"ssh.<IP_ADDRESS>.xip.io:2222",
      "app_ssh_host_key_fingerprint":"a6:d1:08:0b:b0:cb:9b:5f:c4:ba:44:2a:97:26:19:8a",
      "app_ssh_oauth_client":"ssh-proxy",
      "routing_endpoint":"https://api.<IP_ADDRESS>.xip.io/routing",
      "doppler_logging_endpoint":"wss://doppler.<IP_ADDRESS>.xip.io:443",
      "user":"ee2cc2e8-fec2-4039-94ec-a9194d1a2f90"
   }
}

Also - when connected to PWS there's no version, so we show...
Description
Cloud Foundry sponsored by Pivotal ()


Sporadic Issue: Sorting of table

What was discovered?

somehow, and sometimes the sorting of table columns are off
meaning that the sequence from smallest to highest is interrupted
shows wrong sorting, meaning the elements in an array are wrong indexed
(will add an screenshot if this will occur again)

How to replicate?
To be honest, i don't know.

might be by using a browser with a staled state in storage
might happen if you leave the app tab open for a while and return (which should not happen actually)
might that the browser or something else interrupts with something related to the state and react updates
hint: the sort function uses modified arrays, no copy array or object for direct mutation/sorting and reversing

In which columns discovered?

Borrow: Loan-to-Value
Borrow: Interest
Monitoring: Collateral Value
Mon.: Collateralization

What do they have in common?
They are dependent on the Market price within the calculation, which is fetch from the frankencoin-api, which is fetch from coingecko regularly (api: works totally fine).

Fixes (no updates yet)

as soon react triggers a re-render, the sort function will get called and sorts those elements
in private browser, issue never occurred yet.
navigating away from the current page and re-navigate back, solves the issue
in general, everything works correctly so far
No fixes needed, because state normally updates each block

Most likely its a "hydration" error as soon the app state changes/stales or updated due to a new app version or due to "inactivity" in browser JS-VM behaviors. (?)
What always helped so far:

check if everything works under "private" browsing
delete all site data, cache, local storage

Similar issue seen with apollo-client on app (hydration). #113


Bots can't login properly

Describe the bug
When CS2 update today , i found my bots are all offline.And I can't login my bots anymore.the screenshot show the all bots "Got unhandled GC message 9187". I don't know how to fix this problem。And when i restart process, the info tell me that accouns login is OK.But i don't know why I get /stats ,all bots are offine.
To Reproduce
Steps to reproduce the behavior:

Restart the process

Screenshots

Please tell my why my project happen this error ,thanks for your help！

have same problem

same

same

https://github.com/DoctorMcKay/node-globaloffensive/issues/85

k_EMsgGCCStrike15_v2_ClientLogonFatalError = 9187

https://github.com/SteamRE/SteamKit/blob/master/SteamKit2/SteamKit2/Base/Generated/GC/CSGO/MsgGC.cs

same here

same here

https://github.com/DoctorMcKay/node-globaloffensive/issues/85#issuecomment-1931689414

https://github.com/DoctorMcKay/node-globaloffensive/pull/86

DoctorMcKay/node-globaloffensive#86

Can you tell me how to  fix this bug for "inspect" Thank you very much!

перейдите в строку 120 node_modules\globaloffensive\index.js и измените ее на эту this._send(Language.ClientHello, Protos.CMsgClientHello, { version: 2000202});

go into node_modules\globaloffensive\index.js line 120 and change it to this this._send(Language.ClientHello, Protos.CMsgClientHello, { version: 2000202});

Thanks for your help!

go into node_modules\globaloffensive\index.js line 120 and change it to this this._send(Language.ClientHello, Protos.CMsgClientHello, { version: 2000202});

Very thanks for your help!!!!!!!!!

If i see this correctly the node package in question (globaloffensive) has been updated to handle the gc message. (ref)
@Step7750 do you think it would be possible to just bump said package (also for the docker image)?
As far as i can tell the only breaking change from ^2.3 to ^3.0 would be that Node.js 14 is required now.


Fix launch error with Timeout waiting for kernel.

For #13501

[x] Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
[x] Title summarizes what is changing.
[x] Has a news entry file (remember to thank yourself!).
[x] Appropriate comments and documentation strings in the code.
[ ] Has sufficient logging.
[ ] Has telemetry for enhancements.
[ ] Unit tests & system/integration tests are added/updated.
[ ] Test plan is updated as appropriate.
[ ] package-lock.json has been regenerated by running npm install (if dependencies have changed).
[ ] The wiki is updated with any design decisions/details.

Codecov Report

Merging #13502 into master will decrease coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #13502      +/-   ##
==========================================
- Coverage   59.86%   59.83%   -0.03%
==========================================
  Files         670      670
  Lines       37295    37295
  Branches     5335     5335
==========================================
- Hits        22326    22317       -9
- Misses      13815    13821       +6
- Partials     1154     1157       +3

Impacted Files
Coverage Δ

src/client/common/utils/platform.ts
64.70% <0.00%> (-11.77%)
:arrow_down:

src/client/datascience/crossProcessLock.ts
79.41% <0.00%> (-11.77%)
:arrow_down:

src/client/linters/pydocstyle.ts
86.66% <0.00%> (-2.23%)
:arrow_down:

src/client/datascience/debugLocationTracker.ts
76.56% <0.00%> (-1.57%)
:arrow_down:

src/client/common/process/proc.ts
14.49% <0.00%> (-0.73%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4c73151...e2b25e2. Read the comment docs.

I believe this is the root of all the nightly test failures. Will queue up a run against this change to check.


Transferral of Maintenace

I would suggest a different approach:
The only change I would like to do here in this project is to link your new friendly fork and then archive this. The other changes can be made on your side.

Of course. I chiefly wanted to give you the chance to review the changes I made on my side!


Fix rescan multiple files error

Delete message if unserialize returns false.
Remove 5 argument as deleteQueue does not take any
arguments

If there is bad data in the queue, for example, the string "7164",
the unserialize call with return false which make file['fID'] null.
This causes the getByID call to fail with the error
The identifier fID is missing for a query of Concrete\Core\Entity\File\File
Then the offending queue message is never removed breaking
multiple file rescan until it is manually removed from the database.
This seems to happen after upgrade of sites with a lot of files
from version 5.7 to 8.
See this forum post for more report of the issue
https://www.concrete5.org/community/forums/installation/error-the-identifier-fid-is-missing-for-a-query-of-concretecoree/

Would it be better / possible to handle these instead of deleting them?


Use pattern matching with controller helpers example

Previously we had examples using dry-matchers' syntax and it confused some users (including me) who expected examples to "just work" after adding the gem. Updates the example in the controller helpers section to use pattern matching instead.

I was just about to open my own PR for this, so why don't we combine efforts. I wrote something very similar but I think we should actually provide a working example, for instance there is no schema definition for safe_params and you need to include Dry::Monads into the controller for this to work.
While we're here, why not flesh out the pattern-match?
require "dry/monads"

class UsersController < ApplicationController
  include Dry::Monads[:result]

  schema(:create) do
    required(:user).hash do
      required(:name).filled(:string)
      required(:email).filled(:string)
    end
  end

  def create
    case resolve("users.create").(safe_params[:user])
    in Success(user)
      render json: user
    in Failure[Integer => code, Dry::Validation::Result => errors]
      render json: { code: code, errors: errors.to_h }, status: :unprocessable_entity
    in Failure(error)
      logger.warn "unhandled error: #{error.inspect}"
      render status: :internal_server_error
    end
  end
end

Thank you for the review @alassek! I really like your idea and think we can cooperate to update the examples.
I think all examples within the doc should be working examples, but you got me thinking if the controller helpers section would be the best place for this since the focus is the resolve method. :thinking:

Perhaps it's time to break this up into sections, rather than one long page?

Perhaps it's time to break this up into sections, rather than one long page?

Yes this should be broken down into sub-sections 🙂


Allow --console to be an argument when packaging

Please Describe The Problem To Be Solved
Allow "--console" to be an optional argument when building to allow debugging packaged apps, defaults to no console
Not sure if needed but I used it the other day - needed to edit pack.py in my install
Suggest A Solution
pack.py
        parser.add_argument(
            "--debug-console",
            dest="debug-console",
            help="Show python console (Ensure correct DEBUG level)",
        )

...

        pyi_args = [options.script,  "--noconfirm"]
        if not options.debug_console:
            pyi_args.extend(["--noconsole"])

https://github.com/doug-benn/flet/commit/75eb3105a60c6171c0bcb0471559b765f7c1acac

Would you like to submit a PR with that flag?


WPF APP will hang if the editor SyntaxHighlighting=python

OS: Windows_NT x64 10.0.14393
dotnetcore: 3.1.301
my wpf app is a editor using Avalonedit.
when setting the highlight==python(py). my wpf app hang, the only thing I can do is  kill it by force.
but it works well when SyntaxHighlighting is not python, like markdown, csharp an so on.

there is the pic.
it seems that all SyntaxHighlighting will casuse the app-hang,

and also, it will hang if text length >5

I download the source code, and add it to my project.
there is the code the cause  the hang.

hi，it seem that this problem has some to do with  highlighted-rule,
eg: work well while input mcu.Core and hang when input impor

I just tried to reproduce this using a project targetting net5.0. I was unable to reproduce it. Is this still a problem using recent net5.0? Thanks!

I just tried to reproduce this using a project targetting net5.0. I was unable to reproduce it. Is this still a problem using recent net5.0? Thanks!

thanks, finall we have found that i upgrade my embed-font Cascadia Codewhich caused this issues. there is nothing
to do with avalonedit. thanks


Fix maximum on areas

The GOES Ground System presently assumes a max flash area of 10000 km^2, which nature exceeds from time to time. This in turn causes areas to wrap around.
In the short term, we could develop a heuristic to flag flashes with area > 10k where it probably overflows the area. Look at event counts vs. flash area, or sum of group areas. J.J. from NWS Lubbock identified a case where this happened. This would also be a useful science study to document a likely maximum value, and we could recommend a new scaling for flash area.
It might be as simple as changing the scale_factor to 8, so that max is 131064 km^2, and the increment in area is 8 km^2?
At the same time, it would also be a good idea to fix minimum flash area to be a short (with the same scale and offset as average flash area) instead of a float.

18 Dec 2018 in Argentina, in the GOES AMS short course, is another example where this occurred.

It's also been observed (e.g., 2018-12-14_0812) that sometimes the areas turn out as zero, instead of some other wrapped-around value. This means FED>0 and AFA=0.
If that's the case, a simple workaround might instead look for anywhere that FED > 0 and AFA (or AGA) is 0 or nan and assign area = 10000 or whatever the max area value is.
The activated pixels are the same before the scale and offset are applied to create the output file, but they are not the same after. This means that the right place to implement the workaround is probably glmtools.grid.make_grids.GLMlutGridder.write_grids  (line 599).

It turns out that the offending flashes in the 2018 example already have their areas set to _FillValue, so it's easy to check the raw flash areas for that condition and set them to the max allowed value. A patch for this is forthcoming.

The scale_factor in the output imagery right now stands at 1.0, so the max value for an unsigned 16 bit int is 65535 km^2. That's a factor of six improvement from what's in the LCFA files, corresponding to a square flash of 256 km on a side. However, the WMO has certified a flash with a width of about 800 km. While most of such megaflashes are probably elongated, not square, it suggests the upper limit should be greater than the current scale factor, so let's set that to 10.0, which corresponds to a square flash about 800 km on a side.


Collect non-benchmark tests which use a physical device

Most non-benchmark tests should be able to run without a physical device, and an emulator should be used instead to save limited DeviceLab resources and potentially improve the test execution time.
This bug tracks to collect the list.
/cc @matanlurey @jonahwilliams @jmagman

Thank you! Here is an easy one:
  - name: Linux_pixel_7pro external_ui_integration_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: external_textures_integration_test

  - name: Mac_ios external_ui_integration_test_ios
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "ios", "mac"]
      task_name: external_textures_integration_test_ios
      ignore_flakiness: "true"

These don't need a physical device.

external_ui_integration_test_ios is using the dev/devicelab/integration_test runners which check which devices are running, and pass -d to the tool, and fail if there are no devices tethered.  So this change isn't just to change the bot properties, it would involve swapping them to a different or more flexible test runner, like moving them into the tools tests.
Same for:
channels_integration_test_ios
route_test_ios
flavors_test_ios
flavors_test_ios_xcode_debug
integration_test_test_ios
integration_ui_ios_driver
integration_ui_ios_driver_xcode_debug
and others on the devicelab/devicelab_drone recipe.

Some more tests that can be emulators
  - name: Linux_pixel_7pro android_defines_test
    recipe: devicelab/devicelab_drone
    presubmit: true
    timeout: 60
    dimensions:
      kvm: "1"
      cores: "8"
      machine_type: "n1-standard-8"
    properties:
      contexts: >-
        [
          "android_virtual_device"
        ]
      device_type: "none"
      tags: >
        ["devicelab", "linux"]
      task_name: android_defines_test
      dependencies: >-
        [
          {"dependency": "android_virtual_device", "version": "34"}
        ]

  - name: Linux_pixel_7pro android_obfuscate_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: android_obfuscate_test

  - name: Linux_pixel_7pro android_semantics_integration_test
    recipe: devicelab/devicelab_drone
    bringup: true # Flaky: https://github.com/flutter/flutter/issues/124636
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: android_semantics_integration_test

  - name: Linux_pixel_7pro basic_material_app_android__compile
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: basic_material_app_android__compile

 - name: Linux_pixel_7pro channels_integration_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: channels_integration_test

  - name: Linux_pixel_7pro drive_perf_debug_warning
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: drive_perf_debug_warning

- name: Linux_pixel_7pro embedded_android_views_integration_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: embedded_android_views_integration_test

  - name: Linux_pixel_7pro external_ui_integration_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: external_ui_integration_test

  - name: Linux_pixel_7pro flavors_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: flavors_test

  - name: Linux_pixel_7pro flutter_gallery_android__compile
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: flutter_gallery_android__compile

  - name: Linux_pixel_7pro frame_policy_delay_test_android
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: frame_policy_delay_test_android

  - name: Linux_pixel_7pro integration_ui_driver
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: integration_ui_driver

  - name: Linux_pixel_7pro integration_ui_keyboard_resize
    bringup: true # Flaky https://github.com/flutter/flutter/issues/140645
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: integration_ui_keyboard_resize

        - name: Linux_pixel_7pro integration_ui_textfield
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: integration_ui_textfield

  - name: Linux_pixel_7pro native_assets_android
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: native_assets_android

  - name: Linux_pixel_7pro platform_channel_sample_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: platform_channel_sample_test

  - name: Linux_pixel_7pro platform_interaction_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: platform_interaction_test

  - name: Linux_pixel_7pro routing_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: routing_test

  - name: Linux_pixel_7pro service_extensions_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: service_extensions_test

  - name: Linux_pixel_7pro android_choreographer_do_frame_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: android_choreographer_do_frame_test

  - name: Mac_pixel_7pro entrypoint_dart_registrant
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: entrypoint_dart_registrant
    runIf:
      - dev/**
      - packages/flutter_tools/**
      - bin/**
      - .ci.yaml

  - name: Mac_pixel_7pro hello_world_android__compile
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: hello_world_android__compile

  - name: Mac_pixel_7pro integration_test_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: integration_test_test

  - name: Mac_pixel_7pro integration_ui_frame_number
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: integration_ui_frame_number

  - name: Mac_pixel_7pro native_assets_android
    recipe: devicelab/devicelab_drone
    presubmit: false
    bringup: true
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: native_assets_android

  - name: Mac_pixel_7pro run_debug_test_android
    recipe: devicelab/devicelab_drone
    presubmit: false
    runIf:
      - .ci.yaml
      - dev/**
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: run_debug_test_android

  - name: Mac_pixel_7pro run_release_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    runIf:
      - .ci.yaml
      - dev/**
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "mac", "pixel", "7pro"]
      task_name: run_release_test

Not sure about this one (@yjbanov ) but it looks like this should not be a device test at all

  - name: Linux_pixel_7pro flutter_gallery_v2_chrome_run_test
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: flutter_gallery_v2_chrome_run_test

        - name: Linux_pixel_7pro linux_chrome_dev_mode
    recipe: devicelab/devicelab_drone
    presubmit: false
    timeout: 60
    properties:
      tags: >
        ["devicelab", "android", "linux", "pixel", "7pro"]
      task_name: linux_chrome_dev_mode
      ```

I can work on getting some of the iOS ones to run on a simulator, hopefully not much more complicated than piping through a device override:
https://github.com/flutter/flutter/blob/90e4a12f2ab475185d9a3c9b164e2e26870ee643/dev/devicelab/bin/tasks/hot_mode_dev_cycle_ios_simulator.dart#L13-L19

Tl;dr: please confirm the test feasibility to switch to a VM or a VM with an emulator using this sheet: go/flutter_devicelab_to_vm_list.
Thanks @jonahwilliams @jmagman and @matanlurey for the initial input! I have scanned through all our benchmarks and created the test list combining what you have provided (categorized based on test owners).
There targets that ones that are NOT uploading metrics to Skia (NOT benchmarks), but are running with a Device.
Please help identify/confirm those that can be switched to a VM or a VM with an emulator (based on test ownership) using this sheet, and I will update the status here after finalized accordingly). Feel free to loop other stakeholders who may have more context. Thanks!

@camsim99

Mac_ios spell_check_test

@christopherfujino

Mac_ios ios_content_validation_test
Mac_arm64_ios ios_content_validation_test

@dcharkes

Linux_pixel_7pro native_assets_android
Windows_android native_assets_android
Mac_ios native_assets_ios

@dnfield

Linux_pixel_7pro integration_ui_frame_number
Mac_ios integration_ui_ios_frame_number

@gaaclarke

Linux_pixel_7pro animated_advanced_blend_perf_opengles__timeline_summary
Linux_pixel_7pro animated_advanced_blend_perf__timeline_summary
Linux_pixel_7pro animated_blur_backdrop_filter_perf_opengles__timeline_summary
Linux_pixel_7pro entrypoint_dart_registrant
Linux_pixel_7pro hello_world_impeller
Mac_ios wide_gamut_ios

@HansMuller

Linux_pixel_7pro android_semantics_integration_test (confirmed by @jonahwilliams above)

@hellohuanlin

Mac_ios native_platform_view_ui_tests_ios

@jonahwilliams

Linux_pixel_7pro animated_blur_backdrop_filter_perf__timeline_summary
Linux_pixel_7pro draw_vertices_perf_opengles__timeline_summary
Linux_pixel_7pro draw_vertices_perf__timeline_summary

@reidbaker

Linux_pixel_7pro android_choreographer_do_frame_test

@stuartmorgan

Linux_android hybrid_android_views_integration_test
Linux_pixel_7pro embedded_android_views_integration_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro platform_interaction_test
Mac_ios ios_defines_test
Mac_ios ios_platform_view_tests
Mac_ios platform_view_ios__start_up

@vashworth

Mac_arm64_ios module_test_ios
Mac_arm64_ios flavors_test_ios_xcode_debug (confirmed by @jmagman above)
Mac_ios channels_integration_test_ios (confirmed by @jmagman above)
Mac_ios flavors_test_ios (confirmed by @jmagman above)
Mac_ios integration_test_test_ios (confirmed by @jmagman above)
Mac_ios integration_ui_ios_driver (confirmed by @jmagman above)
Mac_ios integration_ui_ios_driver_xcode_debug (confirmed by @jmagman above)
Mac_ios integration_ui_ios_keyboard_resize
Mac_ios integration_ui_ios_textfield
Mac_ios platform_channel_sample_test_ios
Mac_ios platform_channel_sample_test_swift
Mac_ios platform_interaction_test_ios
Mac_ios route_test_ios

@zanderso

Linux_android devtools_profile_start_test
Linux_android flutter_view__start_up
Linux_android platform_view__start_up
Linux_pixel_7pro android_defines_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro android_obfuscate_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro basic_material_app_android__compile (confirmed by @jonahwilliams above but is a benchmark test. Please DOUBLE confirm.)
Linux_pixel_7pro channels_integration_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro drive_perf_debug_warning (confirmed by @jonahwilliams above)
Linux_pixel_7pro external_ui_integration_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro flavors_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro flutter_gallery_android__compile (confirmed by @jonahwilliams above but is a benchmark test. Please DOUBLE confirm.)
Linux_pixel_7pro frame_policy_delay_test_android (confirmed by @jonahwilliams above but is a benchmark test. Please DOUBLE confirm.)
Linux_pixel_7pro hello_world_android__compile
Linux_pixel_7pro imagefiltered_transform_animation_perf__timeline_summary
Linux_pixel_7pro integration_test_test
Linux_pixel_7pro integration_ui_driver (confirmed by @jonahwilliams above)
Linux_pixel_7pro integration_ui_keyboard_resize (confirmed by @jonahwilliams above)
Linux_pixel_7pro integration_ui_textfield
Linux_pixel_7pro linux_chrome_dev_mode (mentioned by @jonahwilliams above but is a benchmark test. Please DOUBLE confirm.)
Linux_pixel_7pro platform_channel_sample_test
Linux_pixel_7pro routing_test
Linux_pixel_7pro run_debug_test_android
Linux_pixel_7pro run_release_test (confirmed by @jonahwilliams above)
Linux_pixel_7pro service_extensions_test
Mac_ios external_ui_integration_test_ios (confirmed by @matanlurey above)
Mac_ios flutter_view_ios__start_up
Windows_android channels_integration_test_win
Windows_android flavors_test_win

@yjbanov

Linux_pixel_7pro flutter_gallery_v2_chrome_run_test

Linux_pixel_7pro animated_blur_backdrop_filter_perf__timeline_summary
Linux_pixel_7pro draw_vertices_perf_opengles__timeline_summary
Linux_pixel_7pro draw_vertices_perf__timeline_summary

These are definitely benchmarks.
basic_material_app_android__compile

This is a benchmark but it is reporting the compile times from the host, so the target device is irrelevant.
linux_chrome_dev_mode

This looks like a web benchmark that is running on the host. @yjbanov would need to confirm.
frame_policy_delay_test_android

ACK, this one is actually a benchmark, strike it from the list.

@dcharkes

Linux_pixel_7pro native_assets_android
Windows_android native_assets_android
Mac_ios native_assets_ios

At least for ios the simulator needs less signing than the physical device, so to keep test coverage for the signing, we should keep running that one on device.
For the Android ones I'd be a little uncomfortable if we don't test on any physical device. There might be some differences between emulator and physical device, but nothing pops to mind. cc @reidbaker @stuartmorgan

The tool literally cannot tell the difference between Android emulators/simulators, beyond architecture (in fact, a number of flagship phones claim to be emulators in their adb config). As long as you can get an arm/arm64 emulator, there should not be any differences.

We did have this weird behavior difference between the emulator and physical device:

https://github.com/dart-lang/sdk/issues/53249

But if we're struggling for capacity maybe we don't care about the minimal differences between device and emulator. @reidbaker Should probably make the call here.

At a high level I think that we should be able to run on real devices provided the tests are in post submit and real devices long-term are important for us to test on.
I hear the arguments for why emulators are better, especially in presubmit where we have the ability to scale.

Here's an example of a test moving out of devicelab runner into the tool integration tests: https://github.com/flutter/flutter/issues/70978 and https://github.com/flutter/flutter/pull/74685

Here's an example of a test moving out of devicelab runner into the tool integration tests: #70978 and #74685

To expand on this, some of the tests running in the devicelab or on devicelab recipe aren't doing anything on a target device, either physical or simulator.  They are building or otherwise validating apps on only a host machine.
The runProjectTest tests are good candidates to be moved into the tool integration tests.
android_obfuscate_test (currently using a Linux/Pixel devicelab bot)
engine_dependency_proxy_test (already running in a VM)
gradle_desugar_classes_test (VM)
gradle_plugin_bundle_test (VM)
gradle_plugin_fat_apk_test (VM)
gradle_plugin_light_apk_test (VM)
ios_content_validation_test (currently using a Mac/iOS devicelab bot) PR to move: https://github.com/flutter/flutter/pull/142272

basic_material_app_android__compile

This is a benchmark but it is reporting the compile times from the host, so the target device is irrelevant.

Sounds a good fit for a host only benchmark (may not be suitable for a VM): https://github.com/flutter/flutter/issues/126090

Sounds a good fit for a host only benchmark (may not be suitable for a VM): #126090

https://github.com/flutter/flutter/pull/142280#discussion_r1468242596

hot_mode_dev_cycle is the only test I'm aware of where we need a pinned physical device and pinned host hardware since the benchmark is measuring hot reload times, so time for the host to prep it and the device to apply it.
The __compile ones are hostonly benchmarks, they are gathering metrics for how long compilation/subsequent complication takes.  So they do not run on physical mobile devices, but should run on physical hosts pinned to consistent hardware.  Like I don't know why we have a Mac_pixel_7pro hello_world_android__compile and Mac_arm64_android hello_world_android__compile tests, they are doing the same and should be on Mac_benchmark.

@jmagman chatted with me offline in a group chat, and mentioned two bits for aspiring migrators:

With our existing runners it's a lot of work to move out of dev/devicelab/bin/tasks/, the test essentially needs to be rewritten.  Here's an example where I moved one from that runner into the tools integration test runner https://github.com/flutter/flutter/pull/74685
A more scalable way to do this would be to decouple dev/devicelab/ from the actual devicelab and instead allow that runner to target a simulator, instead of the currently tethered physical device

/cc @jtmcdole

A more scalable way to do this would be to decouple dev/devicelab/ from the actual devicelab and instead allow that runner to target a simulator, instead of the currently tethered physical device

(Similar to this https://github.com/flutter/flutter/issues/142070#issuecomment-1907135483)


WFLY-4871 Upgrade to Hibernate Search 5.3.0.Final

This is blocking the Hibernate ORM 5 upgrade, however that will need an additional HS upgrade.
Already discussed with @scottmarlow .

Linux with security manager Build 1789 is now running using a merge of 208e68de975e4697afce610e0b0e479d75913e15

Linux Build 6892 is now running using a merge of 208e68de975e4697afce610e0b0e479d75913e15

Windows Build 1967 is now running using a merge of 208e68de975e4697afce610e0b0e479d75913e15

Thanks for this change Sanne!

Linux with security manager Build 1789 outcome was SUCCESS using a merge of 208e68de975e4697afce610e0b0e479d75913e15
Summary: Tests passed: 864, ignored: 311 Build time: 0:06:25

Windows Build 1967 outcome was SUCCESS using a merge of 208e68de975e4697afce610e0b0e479d75913e15
Summary: Tests passed: 2929, ignored: 367 Build time: 0:49:07

Linux Build 6892 outcome was FAILURE using a merge of 208e68de975e4697afce610e0b0e479d75913e15
Summary: Tests failed: 1 (1 new), passed: 2927, ignored: 367, muted: 1 Build time: 0:51:35
Build problems:
Failed tests detected
Failed tests
org.jboss.as.test.integration.ws.wsse.signencrypt.EJBSignEncryptTestCase.encryptedAndSignedRequest: <no details avaliable>

I tested this change with Hibernate 5 and the HibernateSearch test now passes for me, thanks again for the fix Sanne!  branch with both changes is at https://github.com/scottmarlow/wildfly/tree/hibernate5_july2_hibernatesearch.  This change is approved from a JPA perspective.

thanks all!


Fix support for GCP Shared VPC

This Merge Request aim to add support for having the docker-machine operate on a project that is using a shared VPC.
Part of the support is already baked in, like accepting full resource urls for the network and subnetwork parameters of the docker-machine; but is lacking support when checking the presence of the firewall rule to connect to the docker port.
Until now the firewall rule will always searched, created and updated using the project set for the VMs, but this will break if the project is using a shared VPC hosted on another project and so can’t contain firewall rules.
The smaller fix that this merge contains is to extract the project value from the network project link if contains the projects part and fallback to the project variable if not found, and then using this new parameter for all the firewall requests (and to construct the subnetwork link if is not a self link for the same reasons).

Can we get this merged?

It'd be also very usefull for me, will it be merged?


help->log auto-scroll

Sometimes does not work. Window not moving whether new lines added to list ctrl.
Request information for further analysys.

The auto-scroll won't automatically scroll the window unless the vertical scrollbar is to the bottom of the window. This was done so that the auto-scroll feature won't constantly move the scrollbar when you're trying to view previous log entries.


How to decrease the memory consumption in forward, is there something like MXNET_BACKWARD_DO_MIRROR or memmonger

This issue is closed due to lack of activity in the last 90 days. Feel free to ping me to reopen if this is still an active issue. Thanks!


Clean up DateRange, ensure it really works for all cases with Github.fetch.

Specifically, the onOrBefore and onOrAfter choices probably don't work with GitHub.fetch.


Depth value acquisition

Dear author, I am amazed at your experimental results, but I found that the format of the officially obtained data is tiff. I wonder if it is convenient for you to share data in PNG format. Thank you very much for your call back!

Hello, I want to ask how the dataset is imported into the program? Thank you very much for your reading and answering.

Dear author, I am amazed at your experimental results, but I found that the format of the officially obtained data is tiff. I wonder if it is convenient for you to share data in PNG format. Thank you very much for your call back!

Hello, I want to ask how the dataset is imported into the program? Thank you very much for your reading and answering.


The statements of restriction of workspace name seems not correct.

The statements are different in section "Troubleshooting" of this page and page Azure CLI. It states "If you use the same workspace name, but different resource group, subscription or region, you will get an error This workspace name is already in use." But I've tested it in azure portal, it is more like "Workspace name must be unique per resource group" which states in page  Azure CLI. It is ok to create many workspaces with same name as long as they are in different resource groups, even in same subscription or region.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d20b7cb4-558b-2f36-a6ef-5bce7a2e6808
Version Independent ID: de87106c-0a07-27f2-f6c4-e6390612856d
Content: Create a Log Analytics workspace in the Azure portal - Azure Monitor
Content Source: articles/azure-monitor/logs/quick-create-workspace.md
Service: azure-monitor
Sub-service: logs
GitHub Login: @bwren
Microsoft Alias: bwren

@CherylHuan Thanks for your comment! We will review and provide an update as appropriate.

@CherylHuan Thanks for bringing this to our notice. I have made necessary changes to the document and it will reflect soon.
As there are no further documentation changes, we will close the issue for now. If there are further questions , please revert and we will be glad to assist you.


Quantify the contributions of different drivers to the observed changes using established attribution methods, such as fingerprinting techniques or attribution frameworks.

From Bindoff: https://www.ipcc.ch/site/assets/uploads/2018/02/WG1AR5_Chapter10_FINAL.pdf
There are four core elements to any detection and attribution study:

Observations of one or more climate variables, such as surface temperature, that are understood, on physical grounds, to be relevant to the process in question

An estimate of how external drivers of climate change have
evolved before and during the period under investigation, including both the driver whose influence is being investigated (such as rising GHG levels) and potential confounding influences (such as
solar activity)

A quantitative physically based understanding, normally encapsulated in a model, of how these external drivers are thought to have affected these observed climate variables

An estimate, often but not always derived from a physically
based model, of the characteristics of variability expected in these
observed climate variables due to random, quasi-periodic and chaotic fluctuations generated in the climate system that are not due to externally driven climate change

**Correlation Analysis:
Start by conducting correlation analyses between the South Australian upwelling and each of the climatic indices (SAM, ENSO, IOD, Polar vortex). This will provide an initial insight into potential relationships.
**Time Series Analysis:
Use time series analysis techniques to identify patterns, trends, and cyclical behavior in both the upwelling and the climatic indices over the historical period.
Attribution Framework:
**Develop a framework to attribute changes in the South Australian upwelling to the different factors. You might use statistical techniques, such as regression or machine learning, to model the relationship between the upwelling and the climatic indices.
**Modeling:
Build models that simulate the behavior of the South Australian upwelling based on the relationships you've identified. This could involve using multiple regression models or more sophisticated methods like dynamic models that incorporate lagged effects.
**Scenario Analysis:
Run simulations under different scenarios: for instance, simulate periods with strong positive SAM, ENSO, IOD, and Polar vortex weakening, and compare the simulated upwelling behavior with the observed data.
**Quantifying Contributions:
Quantify the contributions of each factor to the observed changes in the upwelling. This might involve calculating the percentage of variability explained by each factor or assessing their relative importance through sensitivity analyses.
**Visualization:
Create visualizations that illustrate the relationships and differences between the upwelling and the climatic indices. Time series plots, correlation matrices, and maps can help communicate your findings effectively.
**Uncertainty Analysis:
Account for uncertainties in your analysis. Sensitivity analysis can help you understand how uncertainties in the climatic indices might impact your results.

The correlation analysis between the South Australian upwelling and each of the climatic indices (SAM, ENSO, IOD) can be found in the partial_cor.ipynb notebook.


Broker does not authenticate with Redis/MySQL/MongoDB but with password file

Description
I want to run a VerneMQ Broker inside docker with a Redis/MySQL/MongoDB as the password database. I used Redis for the bug description because it was the easiest to reproduce, but also tried MySQL and MongoDB.
Expected Behavior:

Client A should be authenticated on subscribe
Client B should be able to publish data after authentication
Client A should receive data

Actual Behavior:

Client A seems to be authenticated on subscribe
Client B publishes data
Client A disconnects and reconnects
Client A has no data received

This all works with a password file but not with a database.
Steps to reproduce:

docker-compose up on Broker
docker exec -it redis bash
redis-cli
SET "[\"\",\"stefan\",\"stefan\"]" "{\"passhash\":\"$2a$12$PqE5JPkdtYstntK9cDfN4ODOWAvHoy4/79wc57g7sAAuMry1DK4qa\",\"subscribe_acl\":[{\"pattern\":\"#\"}], \"publish_acl\":[{\"pattern\":\"#\"}]}"
docker restart vmq

Client side:

mosquitto_sub --url mqtts://stefan:secretpassword@example.com:8883/Jupp/outgoing/G1 --id stefan --cafile letsencrypt.pem --debug --qos 2

Client stefan sending CONNECT
Client stefan received CONNACK (0)
Client stefan sending SUBSCRIBE (Mid: 1, Topic: Jupp/outgoing/G1, QoS: 2, Options: 0x00)
Client stefan received SUBACK
Subscribed (mid: 1): 2

mosquitto_pub --url mqtts://stefan:SdvhvpKew4yuNXuP@example.com:8883/Jupp/outgoing/G1 --id stefan -m "test" --debug --cafile letsencrypt.pem  --qos 2

Client stefan sending CONNECT
Client stefan received CONNACK (0)
Client stefan sending PUBLISH (d0, q2, r0, m1, 'Jupp/outgoing/G1', ... (4 bytes))
Client stefan received PUBREC (Mid: 1)
Client stefan sending PUBREL (m1)
Client stefan received PUBCOMP (Mid: 1, RC:0)
Client stefan sending DISCONNECT

Subscriber seems to die without any message:

Client stefan sending CONNECT
Client stefan received CONNACK (0)
Client stefan sending SUBSCRIBE (Mid: 2, Topic: Jupp/outgoing/G1, QoS: 2, Options: 0x00)
Client stefan received SUBACK
Subscribed (mid: 2): 2

Environment

VerneMQ Version: 1.11.0-alpine
OS: Docker Alpine

vernemq.conf:
accept_eula = yes
allow_anonymous = off
listener.ssl.cafile = /etc/ssl/cacerts.pem
listener.ssl.certfile = /etc/ssl/cert.pem
listener.ssl.keyfile = /etc/ssl/key.pem
listener.ssl.default = <IP_ADDRESS>:8883
plugins.vmq_diversity = on
plugins.vmq_passwd = off
plugins.vmq_acl = off
vmq_diversity.auth_redis.enabled = on
vmq_diversity.redis.host = redis
vmq_diversity.redis.port = 6379
allow_anonymous = off

docker-compose.yml:
version: "3.7"
services:
  vmq:
    image: vernemq/vernemq:1.11.0-alpine
    volumes:
      - ~/vernemq.conf:/etc/vernemq/vernemq.conf
      - ~/vmq.passwd:/etc/vernemq/vmq.passwd
      - ~/cert.pem:/etc/ssl/cert.pem
      - ~/key.pem:/etc/ssl/key.pem
      - ~/cacerts.pem:/etc/ssl/cacerts.pem
    ports:
      - "8883:8883"
  redis:
    image: redis
    ports:
      - "6379:6379"

@NemesisFLX what do the Verne logs say?

@ioolkos nothing for redis. Everything seems to be fine for MongoDb and MySQL only gibberish

For MongoDB this is the Error:
vmq_1  | 11:48:52.465 [error] gen_server <0.661.0> terminated with reason: {bad_query,#{<<"$err">> => <<"not authorized for query on credentials.vmq_acl_auth">>,<<"code">> => 13,<<"ok">> => 0.0}} in mc_connection_man:process_error/2 line 123
vmq_1  | 11:48:52.465 [error] CRASH REPORT Process <0.661.0> with 0 neighbours crashed with reason: {bad_query,#{<<"$err">> => <<"not authorized for query on credentials.vmq_acl_auth">>,<<"code">> => 13,<<"ok">> => 0.0}} in mc_connection_man:process_error/2 line 123
vmq_1  | 11:48:52.465 [error] can't execute find_one [{<<"client_id">>,<<"stefan">>},{<<"mountpoint">>,<<>>},{<<"username">>,<<"stefan">>}] due to exit:{{{bad_query,#{<<"$err">> => <<"not authorized for query on credentials.vmq_acl_auth">>,<<"code">> => 13,<<"ok">> => 0.0}},[{mc_connection_man,process_error,2,[{file,"/opt/vernemq/_build/default/lib/mongodb/src/connection/mc_connection_man.erl"},{line,123}]},{mc_connection_man,read_one,2,[{file,"/opt/vernemq/_build/default/lib/mongodb/src/connection/mc_connection_man.erl"},{line,37}]},{vmq_diversity_worker_wrapper,handle_call,3,[{file,"/opt/vernemq/apps/vmq_diversity/src/vmq_diversity_worker_wrapper.erl"},{line,126}]},{gen_server,try_handle_call,4,[{file,"gen_server.erl"},{line,661}]},{gen_server,handle_msg,6,[{file,"gen_server.erl"},{line,690}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]},{gen_server,call,[<0.661.0>,{apply,mc_worker_api,find_one,[<<"vmq_acl_auth">>,#{<<"client_id">> => <<"stefan">>,<<"mountpoint">> => <<>>,<<"username">> => <<"stefan">>},#{}]},infinity]}}
vmq_1  | 11:48:52.466 [error] can't call function auth_on_register with args [{addr,<<"<IP_ADDRESS>">>},{port,53912},{mountpoint,<<>>},{client_id,<<"stefan">>},{username,<<"stefan">>},{password,<<"secretpassowrd">>},{clean_session,true}] in "./share/lua/auth/mongodb.lua" due to {badarg,execute_find_one,[<<"auth_mongodb">>,<<"vmq_acl_auth">>,{tref,31}]}
vmq_1  | 11:48:52.466 [error] Supervisor {<0.451.0>,poolboy_sup} had child vmq_diversity_worker_wrapper started with {vmq_diversity_worker_wrapper,start_link,undefined} at <0.661.0> exit with reason {bad_query,#{<<"$err">> => <<"not authorized for query on credentials.vmq_acl_auth">>,<<"code">> => 13,<<"ok">> => 0.0}} in mc_connection_man:process_error/2 line 123 in context child_terminated
vmq_1  | 11:48:52.466 [warning] can't authenticate client {[],<<"stefan">>} from <IP_ADDRESS>:53912 due to lua_script_error

This is the underling json:
{
    "_id": {
        "$oid": "60c1d2fc77c3471c987d6710"
    },
    "mountpoint": "",
    "client_id": "stefan",
    "username": "stefan",
    "passhash": "$2a$12$PqE5JPkdtYstntK9cDfN4ODOWAvHoy4/79wc57g7sAAuMry1DK4qa",
    "publish_acl": [{
        "pattern": "#"
    }, {
      "pattern": "Jupp/outgoing/G1"
    }],
    "subscribe_acl": [{
        "pattern": "#"
    }, {
      "pattern": "Jupp/outgoing/G1"
    }]
}

Okay Redis still does not work but for MongoDB i am able to get a little "further":
I created a user
db.createUser(
{
user:"vernemq-deamon",
pwd:"secret",
roles:[{role: "read", db: "credentials" }],
passwordDigestor: "server",
mechanisms: ["SCRAM-SHA-1","SCRAM-SHA-256"]
}
)

But mongo gives me still this error:
mongodb    | {"t":{"$date":"2021-06-10T12:17:35.299+00:00"},"s":"I",  "c":"QUERY",    "id":51777,   "ctx":"conn219","msg":"Assertion for valid query","attr":{"error":{"code":13,"codeName":"Unauthorized","errmsg":"not authorized for query on credentials.vmq_acl_auth"},"namespace":"credentials.vmq_acl_auth","query":{"$query":{"client_id":"Jupp","mountpoint":"","username":"Jupp"},"$readPreference":{"mode":"primary"}}}}

@ioolkos okay mongodb has another error: https://github.com/vernemq/vernemq/issues/1678
But if i fixed it mongodb and redis have the same behavior:
no log output on vernemq:
last line:
vmq_1  | 12:34:43.389 [info] enable auth script for mongodb "./share/lua/auth/mongodb.lua"

and reconnect on subscriber

This was the dumbest mistake i ever made. Thanks @ioolkos for your help!
The error was not ssl, nor the database nor anything password related.
You can't connect with an ID twice. Subscriber connects, Publisher connects, Subscriber gets kicked, Publisher publishes & disconnects, Subscriber reconnects. 16h+ was enough to finally take the issue one by one :D

@NemesisFLX apologies that it didn't occur to me.
The ClientID thing. Yep, it happens to everyone :)


Multiple Token Connectors Bug

I have a stack with 2 token connectors (erc1155 and erc20_erc721), I send a POST to /pools with the payload:
{
    "name": "ACME_COIN",
    "symbol": "$ACME",
    "type":"fungible",
    "connector": "erc1155"
}

The transaction succeeds, but no token pool gets created:

I reproduced this in a single connector environment with erc1155 and the token pool is created as expected.
Logs:
poolBug.log

Was not able to reproduce on latest mainline. @eberger727 can you confirm?

I did not have the latest token connector images. There is no bug.


Create Demos for LoraWan gateway administration and management

Gateway management at scale
Gateway management gets challenging when there are multiple gateways involved, over time different gateways need different configuration files, firewalls, static IPs, and managing that and getting the right config file to the right gateway is fraught with the possibility of human error.
Colin will demonstrate a much easier open source gateway management with the following highlights:

[x] Multiple config files going to the correct gateway automatically

[x] No ports open on the LAN or WAN interfaces (just localhost), so invisible on the network

[x] All communication end-to-end encrypted

[x] No need for fixed IP addresses

[x] No need for firewall configurations (NAT) or VPN's to manage the gateway

@gkc calling this done or just started? !

Done for demo purposes I think. You agree?

Moving this to "For Review"


feat(NODE-5464): OIDC machine and callback workflow

Description
Implements OIDC new machine and human callback workflows.
What is changing?

Implements the OIDC callback workflow. Specified with OIDC_CALLBACK auth mech property.
Implements the OIDC human callback workflow. Specified with OIDC_HUMAN_CALLBACK auth mech property.
Implements the OIDC Test machine workflow. Specified with ENVIRONMENT:test auth mech property.
Implements the OIDC Azure machine workflow. Specified with ENVIRONMENT:azure auth mech property.
Implements the OIDC GCP machine workflow. Specified with ENVIRONMENT:gcp auth mech property.
Uses a new generic TokenCache for all OIDC authentication that sits at the auth provider level.
Removes the old complex callback workflow global caching.
Removes the old global Azure token cache.

Is there new documentation needed for these changes?
What is the motivation for this change?
https://github.com/mongodb/specifications/pull/1471
https://github.com/mongodb/specifications/pull/1544
https://github.com/mongodb/specifications/pull/1513

Release Highlight

Support for MONGODB-OIDC Authentication
MONGODB-OIDC is now supported as an authentication mechanism for MongoDB server versions 7.0+. The currently supported facets to authenticate with are callback authentication, human interaction callback authentication, Azure machine authentication, and GCP machine authentication.
Azure Machine Authentication
The MongoClient must be instantiated with authMechanism=MONGODB-OIDC in the URI or in the client options. Additional required auth mechanism properties of TOKEN_RESOURCE and ENVIRONMENT are required and another optional username can be provided. Example:
const client = new MongoClient('mongodb+srv://<username>@<host>:<port>/?authMechanism=MONGODB-OIDC&authMechanismProperties=TOKEN_RESOURCE:<azure_token>,ENVIRONMENT=azure');
await client.connect();

GCP Machine Authentication
The MongoClient must be instantiated with authMechanism=MONGODB-OIDC in the URI or in the client options. Additional required auth mechanism properties of TOKEN_RESOURCE and ENVIRONMENT are required. Example:
const client = new MongoClient('mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC&authMechanismProperties=TOKEN_RESOURCE:<gcp_token>,ENVIRONMENT=gcp');
await client.connect();

Callback Authentication
The user can provide a custom callback to the MongoClient that returns a valid response with an access token. The callback is provided as an auth mechanism property an has the signature of:
const oidcCallBack = (params: OIDCCallbackParams): Promise<OIDCResponse> => {
  // params.timeoutContext is an AbortSignal that will abort after 30 seconds for non-human and 5 minutes for human.
  // params.version is the current OIDC API version.
  // params.idpInfo is the IdP info returned from the server.
  // params.username is the optional username.

  // Make a call to get a token.
  const token = ...;
  return {
     accessToken: token,
     expiresInSeconds: 300,
     refreshToken: token
  };
}

const client = new MongoClient('mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC', {
  authMechanismProperties: {
    OIDC_CALLBACK: oidcCallback
  }
});
await client.connect();

For callbacks that require human interaction, set the callback to the OIDC_HUMAN_CALLBACK property:
const client = new MongoClient('mongodb+srv://<host>:<port>/?authMechanism=MONGODB-OIDC', {
  authMechanismProperties: {
    OIDC_HUMAAN_CALLBACK: oidcCallback
  }
});
await client.connect();

Double check the following

[x] Ran npm run check:lint script
[x] Self-review completed using the steps outlined here
[x] PR title follows the correct format: type(NODE-xxxx)[!]: description

Example: feat(NODE-1234)!: rewriting everything in coffeescript

[x] Changes are covered by tests
[ ] New TODOs have a related JIRA ticket

@blink1073 Is there ever a divergence between connection level and client level caching?

I can't find where to respond.  Yes, if another connection on the same client has already re-authenticated, we see that the client cache is different (or newer) than the connection cache, and use that instead.

@blink1073 Is there ever a divergence between connection level and client level caching?

I can't find where to respond. Yes, if another connection on the same client has already re-authenticated, we see that the client cache is different (or newer) than the connection cache, and use that instead.

@blink1073 I'm just curious as to what the point of the connection cache is at all? If the client cache is always the source of truth for all connections, isn't simpler just to always use that and not copy tokens down to all the connections and need to check their values against the client cache?

@blink1073 I'm just curious as to what the point of the connection cache is at all? If the client cache is always the source of truth for all connections, isn't it simpler just to always use that and not copy tokens down to all the connections and need to check their values against the client cache?

It allows us to figure out how to handle a 391 error, whether we actually need to call the callback again.  If we get our 391 after another connection, then it would have already updated the client cache, making it different/newer than the connection cache.


Is this repo still active?

Hey @geerlingguy  - We're doing a general cleanup of repos in the ansible-community org to archive those repos no longer in use.
Is this repo still valid? It hasn't had activity for a few years, but unsure if that means it's still in use somewhere.

No, it was mainly used in testing some performance improvements we were making at the time. It has not really been used since, so feel free to archive it! Thanks :)

Cool thanks!


az vmss update can't set osDisk caching to None

This is autogenerated. Please review and update as needed.
Describe the bug
These commands work:
$ az vmss update --set virtualMachineProfile.storageProfile.osDisk.caching=ReadOnly
# outputs
...
      "storageProfile": {
        "osDisk": {
          "caching": "ReadOnly"
...
$ az vmss update --set virtualMachineProfile.storageProfile.osDisk.caching=ReadWrite
# outputs
...
      "storageProfile": {
        "osDisk": {
          "caching": "ReadWrite"
...

This one does not. It returns successfully but will not change the value of the field to "None".
$ az vmss update --set virtualMachineProfile.storageProfile.osDisk.caching=None
# outputs
...
      "storageProfile": {
        "osDisk": {
          "caching": "ReadWrite"
...

If I try to PATCH the VMSS directly and then update all instances via the CLI, the operation succeeds. So it's not an API level issue, the bug is in CLI or Python SDK.
ace@ace-vm:~$ cat patch.json
{
    "properties": {
        "virtualMachineProfile": {
            "storageProfile": {
                "osDisk": {
                    "caching": "None"
                }
            }
        }
    }
}
ace@ace-vm:~$
ace@ace-vm:~$ az rest --method patch --uri "${VMSS_RESOURCE_ID}?api-version=2020-06-01" --body "${PATCH}"
...
      "storageProfile": {
        "osDisk": {
          "caching": "None"
...

Command Name
az vmss update
Errors:
To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
Create a VMSS with ReadWrite/ReadOnly OS disk caching, then try this:
az vmss update -g {} -n {} --set virtualMachineProfile.storageProfile.osDisk.caching=None

Expected Behavior
It should change the caching mode to None, as demonstrated via the patch.
Environment Summary
Linux-5.4.0-37-generic-x86_64-with-debian-bullseye-sid
Python 3.6.10
Installer: DEB

azure-cli 2.11.1

Extensions:
kusto 0.1.0 (dev) /home/ace/code/azure-cli-extensions/src/kusto
aks-preview 0.4.62 (dev) /home/ace/code/azure-cli-extensions/src/aks-preview

Additional Context

hi @qwordy could you pls help to look at is this a partial patch issue? thanks.

You can't set it to None through PUT. None means don't change. It keeps the old value. This is designed by service.

@qwordy can you please explain the sample output for my PATCH? 'None' does NOT mean "don't change". It is a valid value from the service perspective?

I disagree that this works as intended. Please see my workaround for this bug: https://github.com/alexeldeib/azbench/blob/3d59017d1a0c3dcb5a6a9a06088ff825da5145e3/scripts/cluster.sh#L73-L88

It is a known issue in Azure CLI. The default implementation of update command in CLI is using PUT. We are migrating it to PATCH. It is a long term plan.


Dame sprint oct staging

Coverage decreased (-0.3%) to 27.163% when pulling 0a4ffe166589ba99379cf1949aef8abaf2eaf1d4 on dame-sprint-oct-staging into b1417c10ad560ac2ee827da7a4528d7ae370975e on master.


Triple quoted strings cannot be compared to typical strings with the Expression class

Tested versions

Reproducible in v4.3.stable.artix_linux

System information
Godot v4.3.stable unknown - Artix Linux
Issue description
In the editor, if you compare a double quoted string to a triple double quoted string, they are equivalent.
If you use the Expression class to compare them, they are not equivalent.
I'm guessing it shouldn't matter whether it's a double, single, triple double or triple single quoted string. They should all be the same if the contents mean the same thing.
Steps to reproduce
  func evaluate():
      if "x" == """x""":
	      print("sane")
      else:
	      print("insane")

      var xp = Expression.new()
      var err = xp.parse('"x" == """x"""', [])
      if err != OK:
	      push_error("failed to parse")
      var res = xp.execute([])
      if xp.has_execute_failed():
	      push_error(xp.get_error_text())
      print('Does expression.execute() think they are the same?')
      print(res)

Prints:
sane
Does expression.execute() think they are the same?
false

Should print:
sane
Does expression.execute() think they are the same?
true

For any combination of quote types.
Minimal reproduction project (MRP)
godot-quote-bug.zip

It looks like Expression doesn't support triple quoted strings, but it doesn't report a parse error.
var e := Expression.new()
print(error_string(e.parse('"""test"""'))) # OK
print(var_to_str(e.execute())) # ""
print(error_string(e.parse('"a""test"""'))) # OK
print(var_to_str(e.execute())) # "a"


Refactor asset code and fix check_jobs and sage_detection tasks

Add test for asset derived images

Add test for asset update_symlink

Refactor asset derived images code and use pathlib in general

Move FORMAT into FORMATS as a class attribute so it can be
accessed by different methods
Change os.path to pathlib.Path for nicer path APIs instead of
string manipulation

Catch RuntimeError in check jobs task
We have a periodic task that checks all the asset group sighting jobs sent to
acm.  There's a runtime error because RestManager tries to access the
current request flask.request in order to get some header values:
[2021-09-07 14:41:16,026: ERROR/ForkPoolWorker-7] Task app.modules.job_control.tasks.check_jobs[ca9c3c27-2faa-4669-a7f8-159b8d8231fd] raised unexpected: RuntimeError('Working outside of request context.\n\nThis typically means that you attempted to use functionality that needed\nan active HTTP request.  Consult the documentation on testing for\ninformation about how to avoid this problem.')                                                Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 450, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/code/app/__init__.py", line 167, in __call__
    return self.run(*args, **kwargs)
  File "/code/app/modules/job_control/tasks.py", line 17, in check_jobs
    JobControl.check_jobs()                                                                                File "/code/app/modules/job_control/models.py", line 18, in check_jobs
    AssetGroupSighting.check_jobs()                                                                                File "/code/app/modules/asset_groups/models.py", line 285, in check_jobs
    asset_group_sighting.check_all_job_status()
  File "/code/app/modules/asset_groups/models.py", line 292, in check_all_job_status
    current_app.acm.request_passthrough_result(
  File "/code/app/extensions/acm/__init__.py", line 125, in request_passthrough_result
    response, response_data, result = self.request_passthrough_parsed(
  File "/code/app/extensions/acm/__init__.py", line 72, in request_passthrough_parsed
    response = self.request_passthrough(tag, method, passthrough_kwargs, args, target)
  File "/code/app/extensions/restManager/RestManager.py", line 368, in request_passthrough
    header_value = request.headers.get(header_key, None)
  File "/usr/local/lib/python3.9/site-packages/werkzeug/local.py", line 348, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/usr/local/lib/python3.9/site-packages/werkzeug/local.py", line 307, in _get_current_object
    return self.__local()
  File "/usr/local/lib/python3.9/site-packages/flask/globals.py", line 38, in _lookup_req_object
    raise RuntimeError(_request_ctx_err_msg)
RuntimeError: Working outside of request context.

Catch this error and set the header values to none and continue with the
code.

Fix callback and asset urls sent to sage detection
The urls were wrong... Instead of /api/v1/asset/... and
/api/v1/asset_group/..., we needed /api/v1/assets/... and
/api/v2/asset_groups/....

Fix sage_detection task not finding asset group sighting
In AssetGroup.begin_ia_pipeline, we called the sage_detection task
before adding the new sighting to db.session causing the
sage_detection task to sometimes not be able to find the new sighting.
Change the code to add the new sighting before calling the
sage_detection task.

/rebase