[Feature][Bots-Uninstall event][1489398]

Added Uninstall event and Event handling sections to subscribe to conversation events. Please review.

Docs Build status updates of commit f436d93:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 7e423a9:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 34101d7:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit e06fc29:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit cba54bc:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 3689a7c:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit e615e47:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 3ba66a8:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 11dd747:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1295, Column 1: [Warning-invalid-tab-group] Tab group with different tab id set.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit c8e9a53:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 1315639:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit d667af3:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 4cece04:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1387, Column 50: [Warning-file-not-found] Invalid file link: '../resources/dev-preview/developer-preview-intro.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 6439f09:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:warning:Warning
View
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md

Line 1387, Column 50: [Warning-file-not-found] Invalid file link: '../../resources/dev-preview/developer-preview-intro.md'.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit eda4f5b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@ojasvichoudhary, please review.

Docs Build status updates of commit 1b0c062:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 1fec999:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 94e21c2:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-PullRequestMergeConflict] Cannot sync git repo to specified state. Please make sure the pull request is mergeable.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 2a7a5cc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 266dfd8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 6eb1853:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 480e05b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 9273a87:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Docs Build status updates of commit 65f2440:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/assets/images/bots/uninstallbot.png
:white_check_mark:Succeeded
View

msteams-platform/bots/how-to/conversations/subscribe-to-conversation-events.md
:white_check_mark:Succeeded
View

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Use localisation for all texts in Smart FAQ

Acceptance criteria

All text in labels, buttons, headers etc. needs to be translated for various locales - use translation already present in the project with the t() function
Add check to text-ci job that locales in i18n folder are up to date with translations used in app

closing as will be replaced by more granular issues


Parse user sub-entities

As of https://github.com/groupbuddies/bitreserve/pull/16, userSettings and userStatus are returned as a simple hash, instead of being parsed into their own entity.
There is no obvious need for this at the moment, but since this might change, this issue will serve as a reminder

This can be applied to Assets as well

Yes, to the values. They call it normalized holdings. I'm just on the fence about how useful it will be, versus the complexity it will add.

Is this handled by #36?

@zamith not anymore since I removed OpenStruct
From my research, any similar solution (like Hashie) have huge problems, due to either speed or memory usage
We should probably wait for a more stable version on the API, and then create specific Entities for the attributes we feel relevant


Improvement move check priv out of analyze (#30403)

move check priv out of analyze
Proposed changes
pick from #30403

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall


Added note to invariants page

Codecov Report

Merging #18 (674e0f8) into main (35e0c23) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #18   +/-   ##
=======================================
  Coverage   56.75%   56.75%
=======================================
  Files          15       15
  Lines         844      844
=======================================
  Hits          479      479
  Misses        365      365

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 35e0c23...674e0f8. Read the comment docs.


Typo in explanation of detailed indicators

In the explanation of how the indicators are measured, there is a typo in "How it is meadured". Should be "How it is measured".

This typo has now been corrected. Thank you for spotting it!!


add teams' last accessed time from db

When haaukins is crashed, teams last access time did not received when getting teams from database, add last time access field to grpc response

fixed, closed with #501


refactor: convert to typescript

Got everything sorted out as requested. I did not add dot paths yet because we should get a good base first. That should be a seperate PR.
Everything is nicely typed now. The only thing that break for now, and I want your opinion on this first, is the schema. The schema now requires the enum JSONSchemaType for defining the types. I feel like that might be annoying for users, they will need to fix all their schemas. WDYT?

My bad, wrong base repo.


CSS: bad documentation for css.trace.server

Testing #33291

https://github.com/Microsoft/vscode/blob/master/extensions/css/package.nls.json#L20

But still interesting information, right?

Never hurts to know the truth.


RFC: Allow use of abstract ModelT

Me and @KaisKermani have been testing RTNeural in the context of https://github.com/AidaDSP/aidadsp-lv2 plugin, trying to find a way to make it load json files at runtime without losing performance compared to the statically constructed model types.
One approach that proved to work is to make an abstract Model class and use that as the pointer type to which the plugin calls into, which allows stuff like this:
// in plugin header
AbstractModelT* dynamicmodel;

// in runtime, after loading a json file to figure out what architecture it needs
dynamicmodel = new RTNeural::ModelT<float, 1, 1, RTNeural::LSTMLayerT<float, 1, 40>, RTNeural::DenseT<float, 40, 1>>;

Compared to the more dynamic handling of the json namespace methods, this approach gives a performance equal to creating the model with all parameters set in the code (kinda expected, as it does pass all template params in a static way).
Our idea is to have a verbose/extended json parser that then creates all known architectures possible in this "static" way, thus not losing performance.
This is a first test patch, meant for general feedback.
A proper patch would at least need the abstract class to have a template for float/double/etc type.
And I am not sure what to call that new forwardf call, we just need it to not be "forward" as to avoid recursion and name clashes.
What do you think?

So just to make sure I'm correctly understanding the proposed use case, the idea is that you want to have a system that can dynamically create/load a ModelT for any model that falls within a subset of allowed architectures? Of course it wouldn't be possible to create a system that can do this sort of things for all network architectures that RTNeural supports, since there are infinite such architectures.
Given that this is the problem you're trying to solve. I don't think the proposed solution is the best way to go. Part of the design philosophy for ModelT (and for all of the SomethingT layers), is that we should be able to use them without requiring heap allocation or function calls through an abstract interface. It seems to me that the proposed solution would go against this philosophy, but again please correct me if I'm misunderstanding.
The way I have done this sort of thing in the past is as follows:
using ModelType1 = RTNeural::ModelT<...>;
using ModelType2 = RTNeural::ModelT<...>;
using ModelVariant = std::variant<ModelType1, ModelType2, ...>;
ModelVariant model;

void custom_model_loader (const nolohmann::json& model_json, ModelVariant& model)
{
  if (is_model_type1 (model_json))
    model.emplace<ModelType1>();
  else if (is_model_type2 (model_json))
    model.emplace<ModelType2>();

  std::visit ([&model_json] (auto&& chosen_model) { chosen_model.parseJson(model_json); }, model);
}

void process_audio (float* data, int num_samples)
{
  std::visit ([&data, num_samples] (auto&& chosen_model)
    {
      for (int n = 0; n < num_samples; ++n)
        data[n] = chosen_model.forward (data[n]);
    }, model);
}

This strategy allows the model to be created in local memory rather than heap memory, and avoids the need for an abstract function call in the innermost processing loop. If you don't care for std::variant or if you're unable to use C++17, then there are alternatives available, but the same strategy should still apply. I haven't gone this far myself, but I think it should be possible to programmatically generate some of the code for constructing the variant type and determining the model type to load.
Anyway, if you can think of a way to make some helper functions or classes to encapsulate this logic, I'd be happy to add that to RTNeural. At the very least, I think it would be a good idea for me to add an example and some documentation to let folks know about this strategy.

Okay great, it seems like we are talking about essentially the same use-case :).

For the plugin in question we actually want to do heap allocation, which is done in worker threads synchronized with the plugin host. We do a pointer swap when loading new models, the entire thing being thread-safe and lock-free as it is integrated with the host threads (on LV2 this can be done with the worker extension, CLAP has similar concepts too).

Sure, so my point is that any solution built-in to RTNeural::ModelT should not require heap allocation. Of course, folks implementing their own systems are free to allocate ModelTs on the heap if/when it makes sense to do so.
That said, I think that in this case, the non-heap-allocated variant-based solution still makes the most sense. For example, if you ignore host-managed threads, you could do use ints and atomic_ints as shown below (untested). I imagine that with host-managed threads, things could become even simpler.
using ModelType1 = RTNeural::ModelT<...>;
using ModelType2 = RTNeural::ModelT<...>;
using ModelVariant = std::variant<ModelType1, ModelType2, ...>;
ModelVariant models [2];
std::atomic_int active_model_index { 0 };
int inactive_model_index { 1 };

// on some non-real-time thread...
void custom_model_loader (const nolohmann::json& model_json)
{
  auto& inactive_model = models[inactive_model_index];
  if (is_model_type1 (model_json))
    inactive_model.emplace<ModelType1>();
  else if (is_model_type2 (model_json))
    inactive_model.emplace<ModelType2>();

  std::visit ([&model_json] (auto&& chosen_model) { chosen_model.parseJson(model_json); }, inactive_model);

  // swap models here!
  inactive_model = active_model.exchange (inactive_model);
}

// on the real-time thread...
void process_audio (float* data, int num_samples)
{
  std::visit ([&data, num_samples] (auto&& chosen_model)
    {
      for (int n = 0; n < num_samples; ++n)
        data[n] = chosen_model.forward (data[n]);
    }, models[active_model.load()]);
}

From what we have tested, this approach has a significant performance hit, and becomes unsuitable for the plugin (we are running it in a 1.3GHz ARM processor after all, there is not a whole lot of CPU to go around...)

Would it be possible to explain a little bit more where this performance hit is coming from? From my own testing, I haven't been able to measure any performance difference between a plain ModelT and a std::variant<ModelT<...>, ...> with the same internal network architecture. That said if you're referring to the performance hit of how long it takes to load a model, that's not something I've measured before. If you're referring to some performance hit associated with programmatically generating the code for the std::variant that's not something I've actually tried before, but again I'd be curious to know where/why exactly the performance bottleneck is happening.
By contrast, I have found that constructing a ModelT on the heap can cause a measurable performance hit.

The virtual methods was my first initial thought of something that could work for a generic loader plugin.
I am open to other suggestions that can:

Be used as heap memory, as to be able to do a pointer swap (data to be copied to/from RT and non-RT contexts needs to be plain-old-data, polymorphic C++ stuff is incompatible with LV2 and CLAP worker APIs)
Has a generic interface that does not consume a lot of memory (e.g. allocating all possible architecture types is a no-go, doesnt scale)

Sure, so I think the variant-based solution that I've proposed satisfies both these requirements. For requirement 1 (as I've shown above), it's possible to set it up so that the only data that would need to be copied between the real-time and non-real-time threads is a single array index. Or if you prefer, I guess you could use a pointer to a std::variant<ModelT<...>, ...>.
For requirement 2, in my experience, std::variant only requires approximately as much memory as the largest thing in the variant (see this example), although I guess that could depend on the implementation.

Using a union of pointers (or std::variant for a more modern C++ take on it) could be an option, but then every run would need to have a big switch case to find the right model instance type to call.

Right, so that's basically what I'm proposing, although I would say it's better to use the direct ModelT types rather than pointers. The massive switch-case can be tidied up for you with std::visit. The real benefit here (from a performance standpoint) is that the switch-case happens per-block rather than per-sample, which is essentially what you get with the polymorphic solution.

Anyway, I'm a bit busy this week, but I'll see if I can get a working example up and running sometime before the end of the week.

that all looks very good and promising, thanks for the detailed info!
there is one crucial point though, the creation of the new model and its swap are not done on the same function.
a non-RT worker context creates models, these are given to the host to later call ourselves again after plugin has finished processing (so the data structure needs to be POD compatible). it is this sequence that allows us to have lock-free rt-safe model switching, because the "pointer swap" is triggered by the host after the plugin has finished processing audio.
from your example code I dont see how we would create a model and have it pass through the host without needing to rely on the plugin class having it in some kind of variable for what to handle next.
it is quite important that, when we create new models, we can pass this pointer/instance/whatever to the host directly without storing it ourselves (doing so leads to race conditions when multiple files are schedules to be loaded quickly one after the other)

From what we have tested, this approach has a significant performance hit, and becomes unsuitable for the plugin (we are running it in a 1.3GHz ARM processor after all, there is not a whole lot of CPU to go around...)

Would it be possible to explain a little bit more where this performance hit is coming from? From my own testing, I haven't been able to measure any performance difference between a plain ModelT and a std::variant<ModelT<...>, ...> with the same internal network architecture

I meant when creating the model in a dynamic way, defining its architecture while parsing the json file.
For pointers or std::variant, performance should be pretty similar if not the same.

By contrast, I have found that constructing a ModelT on the heap can cause a measurable performance hit.

Can you give more information about this? From our testing the performance is pretty much the same using stack or heap allocated models.

Right, so that's basically what I'm proposing, although I would say it's better to use the direct ModelT types rather than pointers. The massive switch-case can be tidied up for you with std::visit. The real benefit here (from a performance standpoint) is that the switch-case happens per-block rather than per-sample, which is essentially what you get with the polymorphic solution.

Can you clarify this too? Do you mean that using my proposed abstract pointer solution would lead to per-sample processing?

that all looks very good and promising, thanks for the detailed info!

No problem!

there is one crucial point though, the creation of the new model and its swap are not done on the same function. a non-RT worker context creates models, these are given to the host to later call ourselves again after plugin has finished processing (so the data structure needs to be POD compatible). it is this sequence that allows us to have lock-free rt-safe model switching, because the "pointer swap" is triggered by the host after the plugin has finished processing audio.
from your example code I dont see how we would create a model and have it pass through the host without needing to rely on the plugin class having it in some kind of variable for what to handle next. it is quite important that, when we create new models, we can pass this pointer/instance/whatever to the host directly without storing it ourselves (doing so leads to race conditions when multiple files are scheduled to be loaded quickly one after the other)

Right, so doing the swap inside the model-loading function was only part of my example because my example was assuming that host-managed worker threads don't exist. In cases where they do exist, I guess the correct solution would depend on how exactly they work, which I'm not immediately familiar with. From what I do know, I think my preferred solution would be:

have some ModelVariant objects be locally allocated inside my DSP class (as many as I need)
have some int-like value telling the DSP class which ModelVariant to use for processing audio
the value that gets passed between the real-time and the worker thread is the int-like value (after all a pointer is just an int-like value anyway)
rate-limit the model loading process as necessary to avoid race conditions

But like I said, there are some details here that I'm not very familiar with, so I trust that you'll do the right thing for your use case. If you do end up using heap-allocated objects, I'd suggest using something like a ModelVariant* rather than something like a AbstractModelT* for the other reasons we've been discussing.

For pointers or std::variant, performance should be pretty similar if not the same.

By contrast, I have found that constructing a ModelT on the heap can cause a measurable performance hit.

Can you give more information about this? From our testing the performance is pretty much the same using stack or heap allocated models.

Sure, so a heap-allocated ModelT will typically need to be fetched from some (often "cold") memory before it can be used. In a lot of cases, the cost of fetching the relevant data is negligible relative to the cost of processing a block of audio, but for smaller models running at smaller block sizes, the difference is measurable. The most obvious case is in software like VCV Rack where the model will only ever be asked to process one sample at a time.

Right, so that's basically what I'm proposing, although I would say it's better to use the direct ModelT types rather than pointers. The massive switch-case can be tidied up for you with std::visit. The real benefit here (from a performance standpoint) is that the switch-case happens per-block rather than per-sample, which is essentially what you get with the polymorphic solution.

Can you clarify this too? Do you mean that using my proposed abstract pointer solution would lead to per-sample processing?

So one of the biggest performance gains between the Model and ModelT architectures comes from the fact that the compiler knows exactly what operations a ModelT::forward() method needs to do, which allows it to inline those operations and heavily optimize any per-sample loop that calls the function. By contrast, most of the operations in Model::forward() are hidden behind a virtual function call, so the compiler can't inline them and can't do much to optimize those inner loops. With something like an AbstractModelT::forwardf(), we would have the same issue. What I meant with my previous statement is that since a virtual function call is usually implemented via v-table lookup, it's not too different from doing a per-sample switch-case (actually, on some platforms the switch-case might even be faster).

By the way, I just put together a little example project.

Bringing some news..
I ran a few tests with different approaches, and basically:

std::variant approach works well, got it running already as part of https://github.com/AidaDSP/aidadsp-lv2/pull/4
tried going old-style with a union and matching enum to pick from it, but that makes the code way too messy with big switch cases everywhere, so will skip this
compared to virtual/abstract method, the CPU usage is still pretty much the same as using std::variant. so I assume the possible optimizations on the inline forward method are more theoretical than practical, at least with GCC9 I really do not see a difference

the example project was extremely helpful, thanks a lot for that! specially the python script to generate a list of model types in a variant.
based on it I made https://github.com/moddevices/aidadsp-lv2/blob/fancy-gui%2Bdynamic-models/variant/generate_variant_hpp.py which expands it a bit:

sigmoid activation is now optional, needed for the files made by the aidadsp team
instead of listing files on a dir, I just define the possible types we are interested it and let it run through those, making it easier to extend as needed

would be nice if we could extend ModelT to support a few more constexpr compatible fields, the aidadsp plugin in particular makes use of input_skip to decide if output buffer should be processed in replacing mode vs adding mode.
not sure if this is a custom property or not, as I am not too familiar with the RTNeural json format.
on how to deal with LV2 worker contexts, for now I still ended up going with pointer swap technique and allocating the model on the heap. not by itself though, but along side other fields that relate to it.
Right now the type is
struct DynamicModel {
    ModelVariantType variant;
    char* path;
    bool input_skip;
};

which allows to add more things to it as needed.
so the final code for this is, in summary, this:
DynamicModel* RtNeuralGeneric::loadModel(..., const char* path)
{
    nlohmann::json model_json;
    /* (json loaded here) */

    std::unique_ptr<DynamicModel> model = std::make_unique<DynamicModel>();

    try {
        if (! custom_model_creator (model_json, model->variant))
            throw std::runtime_error ("Unable to identify a known model architecture!");

        std::visit (
            [&model_json] (auto&& custom_model)
            {
                using ModelType = std::decay_t<decltype (custom_model)>;
                if constexpr (! std::is_same_v<ModelType, NullModel>)
                {
                    custom_model.parseJson (model_json, true);
                    custom_model.reset();
                }
            },
            model->variant);
    }
    catch (const std::exception& e) {
        lv2_log_error(logger, "Error loading model: %s\n", e.what());
        return nullptr;
    }

    // save extra info
    model->path = strdup(path);
    /* etc */

    return model.release();
}

As this becomes a pointer, it is safe to pass around in the worker stuff.
The char* path there might look weird, but we really only need to store the path to give to the host when requested, no other string operations are needed so feels wasteful to replace it with std::string or alike.
Personally I am happy with the results.
Also means this PR is not needed in the end, but was great to start the discussion and see other (better) ways to achieve the same outcome.
PS: Just pushed Chow Centaur to the MOD plugin store <3
Discussion around the plugin in https://forum.mod.audio/t/chow-centaur/8045
The custom modgui was done by the people from aidadsp actually.

Closing this ticket, the variant approach has proven to work well.
Recently I needed to add a new shape size, it was as simple as adding a new value to the python script and running it again so it generated a new model_variant.hpp file. See https://github.com/AidaDSP/aidadsp-lv2/commit/d9c72e977d81f241320e4752eb2431716d02aef2
Great stuff! Thanks a lot for your help and a great project! <3

Very cool! Glad to hear that this approach is working well. And thanks to you for the useful discussion :)


[FEATURE] Links click count on profile page

Description
We didn't have any clear notation or lines which tell what those numbers do on the profile page
we can have an eye icon or some type of text like views or something which can server the purpose of those number on the screen

Screenshots
No response
Additional information
No response

Could you assign me to work on this?

Sure 👍  what do you have in mind? I am not sure what would help improve this

Hey, @eddiejaoude how about this? Currently, I don't see more numbers of views on the machine but I am not sure if it's in 3 digits then I might have to style it accordingly.

I think looks good 👍

This could also be done as badges similar to the profile views

I have unassigned due to no recent activity.

Closing this issue, as we've removed the public stats feature from LinkFree recently. So this is no longer a valid option.


Interrupt functionality

I'm using 3 PCA9698s and wrote my own interrupt management in the main loop. It would be great to see this implemented in the library. There is an ESP32 used in my design thus testing it on different platforms is somewhat more difficult.
Using the SMBAlert function when even more IO-expanders are used is a better solution.

I made a function to activate normal interrupt line. SMBAlert is not supported yet. New release is published with all improvments. Please feel free to test and give feedback.


Lighting change when using batching/instancing

It seems there is a change in lighting with a number of models we are using in our game when using batching. I wasn't able to isolate why these models produce this change. The same happens both when using CPU batching in editor and hardware instancing with a coded solution.
Without batching:

With batching:

Same project url: https://playcanvas.com/editor/scene/1084394

Toggle on/off batching by setting and unsetting the batch group on the Platform and boardMain entities.

Tested on windows/android Chrome.

To me the without batching screenshot looks strange .. do you use some manually bent normals or something?
Either way, non-uniform scaling is causing it .. when I use uniform scaling, all is good. It seems this is something for @raytranuk to investigate.

I assumed it was related to this PR I've just done, but it's not.
https://github.com/playcanvas/engine/pull/2836

To me the without batching screenshot looks strange .. do you use some manually bent normals or something?
Either way, non-uniform scaling is causing it .. when I use uniform scaling, all is good.

Yes the modeler added a slight curve on that face hence the extreme shading when scaled on Y, that's on purpose.
Does batching recalculates normals? Even if it does, any idea why the same happens when using hardware instancing? I wouldn't expect any change on the rendered mesh with HW instancing.

Batching only transforms normals to world space (static batching anyways, dynamic does not). Hardware instancing does not touch the mesh at all.
All this points out at the shader .. @raytranuk could have some ideas, I'm not sure why would normals change direction .. perhaps the normal was not normalized in the mesh and shader normalizes it and this is what happens?

Release v1.39.0 that includes a fix for #2836 seems to have resolved this issue when using static batching. But when using dynamic batching or hardware instancing the issue with the lighting remains.
To clarify, the normals posted on the before photo are the correct ones, it's an artistic decision.
I've updated the sample above to enable dynamic batching. I've also added a script that enables hardware instancing which reproduces the issue as well.
Without batching / Without HW instancing / With Static Batching (lighting is correct):

With dynamic batching / With HW instancing (lighting changes):

I am curious why it would change when HW instancing is enabled, since there isn't a new mesh created at all by the engine.

My theory - when you have a non-uniform scale on a mesh, then to transform object space normal into the world space, a transpose of inverse world matrix needs to be used.

rendering without batching or instancing - I believe shader uses transpose inverse world matrix, so all is ok
static batching - in that PR you linked I transform normals to world space using transpose inverse matrix, so this works too
dynamic batching and instancing - these have custom path for normals, where we only have object to world matrix, but we don't have transpose inverse version of it. And so when that is used to transform normals from object to world space, we get the issue.

Possible solutions to bring transpose inverse world matrix to shaders for case 3:

for dynamic batching - we currently store single "bone", we could store another bone with it.
for instancing, the instance vertex stream currently had 3x4 matrix, we'd need another set of  attributes for additional 3x3 matrix.
we could do transpose invert in the shader in those cases.

The performance impact here would perhaps not be worth this. In your specific case, you could reimport the mesh without non-uniform scale. Or even use static batching each frame. Or don't use any instancing / batching.


Lacrosse emoji

Lacrosse is a popular sport in some parts of the world, mostly the Americas, which is unique among ball sports in that it is played with sticks for catching (and throwing) the ball.
Petitions

change.org: Lacrosse
change.org: Lacrosse stick
iPetitions: Lacrosse

Proposals

L2/16-382: Lacrosse Stick and Ball – will be considered for Unicode 11.0 to be released in 2018
L2/17-277: Consolidated sports emoji proposals

The candidate emojis for Unicode 11 include a Lacrosse Stick and Ball emoji as U+1F94D.
http://www.unicode.org/L2/L2017/17284-emoji-recs.pdf


Product Version is still set as '5.0'

ProductVersion() still returns '5.0' from SM5 rather than etterna's version.

Fixed in 14b52d23565454812b2292a2d89eb4d31b2ee1f7, thanks for the report.


Sphinx not detecting mock sites

As can be seen in https://travis-ci.org/astropy/astroplan/jobs/151028147#L751, the Sphinx build test in python3.5 appears to not be able to find sites which are in of_site_mock. When running Python setup.py build_sphinx -w on my local machine, it completes without any warnings on python3.5 as well as python2.7.

The problem seems to be phantom (it was fixed when the check was rerun).


Yes route train movement bug

I have heard from Macaw45's discord that a completing the train level bugs out movement, sprites get a y-velocity after level load

I figured the shaking animation was the source, so I watched the variable that holds the Y position of the sprites. It was oscillating each frame with the value in a table in memory (MTrTbl = Monorail Tremble Table?). When the next level loads after the train, the value that holds the latest Monorail offset is stuck on 1 or -1 one from the table so the sprites go up/down 1 pixel each frame
I set this variable (Tremble_Mono) to clear on level load for fix.


feat(networks): Support multiple excluded IPs for MACVLAN networks

Close #3954
Close #3918

@pull-dog up

cc @ncresswell for review

@ncresswell the pattern is my-device=111.222.333.444 for excluded IPs as AuxiliaryAddresses is a map between a device name and an IP (cf https://github.com/portainer/portainer/issues/3918#issuecomment-648969169) and we are parsing both the key (device name) and the value (ip) from the input, sperated by =.
It's the same format as before but you are now able to specify as many as you want

Oh then we need to make that input box more intuitive.. it will need to split into two, beIng a name plus value box.
Or we just accept IP addresses and then we add device1=  and device2=
Personally, we just accept ip’s and prepend a generated name.
Rgds,
Neil Cresswell
On 27/06/2020, at 5:18 AM, xAt0mZ<EMAIL_ADDRESS>wrote:

@ncresswellhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_ncresswell&d=DwMCaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=0fx0h4vB56iTLpw2McH1ZD6TqG_QGpbggVOB-PfMJpM&m=d89a2qTH7wd0KH-K-Im-0qTSc2zuiRV1boiMDu5ewnc&s=8mNBpUX10wRu34dIgTY1Oz7-VXv5s1O6_AAvTpy-3MI&e= the pattern is my-device=111.222.333.444 for excluded IPs as AuxiliaryAddresses is a map between a device name and an IP (cf #3918 (comment)https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_portainer_portainer_issues_3918-23issuecomment-2D648969169&d=DwMCaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=0fx0h4vB56iTLpw2McH1ZD6TqG_QGpbggVOB-PfMJpM&m=d89a2qTH7wd0KH-K-Im-0qTSc2zuiRV1boiMDu5ewnc&s=deqK-MkG6gGfzWZDfqognuMmJH9k4sTa_WkIkoyaQWM&e=) and we are parsing both the key (device name) and the value (ip) from the input, sperated by =.
It's the same format as before but you are now able to specify as many as you want
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_portainer_portainer_pull_3962-23issuecomment-2D650297184&d=DwMCaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=0fx0h4vB56iTLpw2McH1ZD6TqG_QGpbggVOB-PfMJpM&m=d89a2qTH7wd0KH-K-Im-0qTSc2zuiRV1boiMDu5ewnc&s=19LLCBDzLLZNotqurpCog3sexgcA2ZdGncdt8wkLUL4&e=, or unsubscribehttps://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AFQ2XFMAOSVPK2MK5ULRBTTRYTJ5TANCNFSM4OIRC5IQ&d=DwMCaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=0fx0h4vB56iTLpw2McH1ZD6TqG_QGpbggVOB-PfMJpM&m=d89a2qTH7wd0KH-K-Im-0qTSc2zuiRV1boiMDu5ewnc&s=2TWT7UxStqMJ6uVNfrC8kfraRnmKKT2RB_pAKzuNTv4&e=.

@ncresswell
I fixed it with a generated name if we not find name in the field.
Exemple:

"Name": "myNetwork",         "Id": "5121bd07d08c6873323ad6f16e4d5d37e0d3443f2a18219029c1744a4362eb7c",         "Created": "2020-06-27T15:02:37.418969653+02:00",         "Scope": "local",         "Driver": "bridge",         "EnableIPv6": false,         "IPAM": {             "Driver": "default",             "Options": null,             "Config": [                 {                     "Subnet": "<IP_ADDRESS>/25",                     "Gateway": "<IP_ADDRESS>",                     "AuxiliaryAddresses": {                         "device0": "<IP_ADDRESS>",                         "device1": "<IP_ADDRESS>",                         "my-router": "<IP_ADDRESS>"                     }                 }             ]         },

@pull-dog down

@pull-dog up

my thoughts..
The new IPAM format for Aux Addresses is valid ONLY for Local Scope MACVLAN deployments, and NOT for Swarm Scope.
_Solution: we need to change the payload from
{
AuxAddress: "my-router=<IP_ADDRESS>"
Gateway: "<IP_ADDRESS>",
Subnet: "<IP_ADDRESS>/25"
}
to
{
AuxiliaryAddresses: {
my-router: "<IP_ADDRESS>"
},
Gateway: "<IP_ADDRESS>",
Subnet: "<IP_ADDRESS>/25"
}_

I have opened an issue in the swarmkit repo to understand more..


Looking forward to the "write" operation

Thanks for your great work. I'm really looking forward to the write operation.

I want to encode a PIL Image Array with heif compression, and I need to specify the compress image quality manually. Like the way in opencv:
result, encimg = cv2.imencode('.jpg', img, [int(cv2.IMWRITE_JPEG_QUALITY), random.randint(30, 95)])
img = cv2.imdecode(encimg, 1),

where img is a numpy array.
Is there any easy implementation for such imencode and imdecode functions? Thanks.

Will this functionality be added over time? annoying that we do not have such opportunities for python.

whatever, looks like pillow-heif has an API for that, I need to google better next time


Remove duplication between function/method type constructors

Just a small refactoring. I think this formulation makes the differences
more immediately obvious, while highlighting the similarities as well.

Hi Sam! Just saw this work come over the transom and made some comments on the internal version, @jeffmo suggested I put them up here as an FYI as well:
I don't think these names are quite right. Functions may be identical to methods with a dummy this in the current implementation, but that's not what they actually are abstractly, so I'd rather not use names that imply it.
Also +1 to @mroch's comment. [He was venting about the foo/foo2 pattern that's still in here from the early days - BH] Whenever we touch these (or f, f_ pairs), it's worth (a) figuring out the actual difference between them and (b) renaming them to reflect it.
Some suggested names in inline comments...
Inline Comments
flow/src/typing/flow_js.ml
47
mk_function_or_method_type_with_closureid = { ... }

let mk_methodtype_with_closureid = mk_function_or_method_type_with_closureid

58
mk_functiontype_with_closureid

...this isn't a call to action, Jeff will take whatever of these suggestions he feels good about and fold them in on our side - just wanted to proselytize. :) ...but of course it goes without saying that I'm totally keying off of the impulse to factor that led you to put up this PR in the first place, so thanks again!

Based on that, I think it makes sense to close this, because the proposed refactoring is actually a step in the wrong direction. Glad I could help bring this issue to a head. :stuck_out_tongue:
The comment above this section of the code ("function types and object types, which unfortunately have many fields, not all of which are meaningful in all contexts") and your comment, above ("that's not what they actually are abstractly") are a bit vague—is the issue that we don't quite know what the constraints are, or that we do know the constraints, but not the representation?
For my own curiosity, if someone could explicate the constraints surrounding a correct implementation of these types, I would certainly appreciate it.
Thanks for sharing the internal discussion with me!

I don't know that it's a step in the wrong direction at all - it's just that there are two levels of meaning here. Your refactoring makes perfect sense at the level of implementation: as of now, functions and methods really are modeled as variations on a theme, the variations being the meaning of this.
OTOH I just wanted the names to reflect the distinction between the two concepts at the level of the language's abstractions: we don't actually want to lock into an abstract definition of function that's simply a synonym of method with dummy this.
WRT the other comment you mention, I'm going to have to defer a deeper discussion, but the problem is a general one of data design: a big record is used to represent several different concepts, and not everybody uses all the fields all the time. The tension lies in the fact that tightening the representation, for instance with inheritance of by introducing tagged unions either at the top level or in subsections, adds complexity. It basically boils down to a fight between tightness/correctness by construction/architectural heaviness on one side, and simple data design along with looseness, asserts, private agreements on the other. No perfect answer, but the general movement is from the latter towards the former, as design stabilizes and problem boundaries start to settle down.
An example of this shows up in the upcoming Env_js stuff, which BTW the second update I mentioned is in process and should land soon, at which point I can go over it with you from the perspective of Let/Const.

I suppose what I was asking was where does the notion that function = method w/ dummy this actually break down? Do we lose out on correctness in the type checker? This seems like a pretty subtle area of the language, so I probably just need to read up on it. No need to spend a bunch of time explaining it to me.
Moving from simple data with private agreement to heavier, correct-by-construction implementations seems like a good path forward. Even in the short time I have been following along, I have witnessed this trend.
Continuing to look forward to the Env_js update. :smiley:


Add support to rename the SimpliVity policy name

Signed-off-by: Hemant Chaudhari<EMAIL_ADDRESS>Description
Add support to rename the SimpliVity policy name
Issues Resolved
None
Check List

[x] New functionality includes testing.

[x] All tests pass($ tox).

[x] New functionality has been documented in the README if applicable.

[x] New functionality has been thoroughly documented in the examples (please include helpful comments).
[x] New endpoints supported are updated in the endpoints-support.md file.

[x] Changes are documented in the CHANGELOG.

Closing this pull request


Menu Button Clickability when the window size is Small

While the document talks about various Navigation View Customization by extending the view to the TitleBar, it is not clear how to set the Back Button and the Menu Button as clickable when the window size is Small.
If the documented snippets are followed, the Menu Button and the Back Button, when IsTitleBarAutoPaddingEnabled="False", does not receive any hit-tests, as they are processed as a part of the title bar. Can you explain how this can be overcome?

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

ID: e69449df-a1ec-70dd-e563-0ad508733c47
Version Independent ID: dc0e0acb-d92a-a039-5c16-f54a4b71d954
Content: Navigation view - Windows UWP applications
Content Source: windows-apps-src/design/controls-and-patterns/navigationview.md
Product: uwp
Technology: design
GitHub Login: @jwmsft
Microsoft Alias: jimwalk

The doc does say this:

If your app specifies the draggable region by calling the Window.SetTitleBar method

Did you do that?

I think that it would be useful to have an example showing the use of Window.SetTitleBar in the documentation of NavigationView, rather than having to piece it together. There is some ambiguity on what specifically should be set as the TitleBar when using this control (since we're not actually homebrewing an entire custom layout like we used to when implementing this pattern from scratch).
Delving into the control gallery app's source helps, but some people might not think of that or get confused as to what specifically they're looking for (new UWP developers, for example).


Implement \middle

\left(A \middle| \frac{a}{b} \right)
The | operator should take the same height as the outer fence.

cdf86e8


FAILED TRACKS

SOMETIMES RANDOM VIDEOS WILL FAIL, LIKE
https://music.apple.com/id/music-video/in-the-afternoon/1491273488
https://music.apple.com/id/music-video/when-you-die/1324749216
https://music.apple.com/id/music-video/happier-than-ever/1578991894
prob not a internet issue, this happens to specific videos

SOLVED.SETTING MUST BE CHANGED TO ALLOW EXPLICIT CONTENT.


[BUG] Regression: Rich rendering of console status broken in 10.2.0 and above

Rich rendering of the console status is broken in 10.2.0 and above (broken both on 10.2.0 and 10.2.1, works on 10.1.0)
To reproduce, use this minimal snippet
import time
import rich.console
console = rich.console.Console()

console.print("[green] This text is green [/]")
with console.status("[green] This text should also be green [/]"):
    time.sleep(10)

which produces the following result on 10.2.0 and later:

Will have a fix in the next version. In the meantime, you can replace that string with Text.from_markup("[green] green text")

Fixed in 10.2.2


Widget specification

I see three possible forms of specification:

[x] Declarative, programmatic specification: this has been the main focus so far (via macros), and is the preferred option for anything which can be compiled in.
[x] Dynamic, programmatic specification: at a basic level, we need support for dynamic content (reconfiguration); given this, the rest is easy.
[ ] Dynamic content from external specification (file input): many GUIs support configuration either via something like XML or via a scripting language. We should support at least one of these options but currently have no plans.

With the current API, there should be no problem adding widgets of type Box<dyn Handler<Msg = VoidMsg>> — however, event handling assumes that each widget can be given an appropriate Msg type.
To solve this problem, we could:

use dyn Any as a message type — but to consume such a message, one must use downcast with a fixed type, thus the widget's event handler must still be implemented in Rust (or translate to/from a fixed set of types)
use an enum over a fixed set of types — while limited, this allows an adaptor to a scripting language to be written

Note that both the above can be done without changes to the core traits: it should already be possible to write an external crate which produces widgets from a configuration or scripting language.
Since supporting a simple configuration DSL is not very useful and writing a compatibility layer for Python/JavaScript/Lua/... is a major topic, it deserves a dedicated repository, not a bullet-point on this issue, therefore I am closing this.


SyntaxRewriter: Use an own arena to manage the modified layouts

Remove an usage of SyntaxArena.default

@swift-ci Please test

This possibly causes retain cycle.


(feat) Improve retry_decorator with blacklist exceptions

What problem or use case are you trying to solve?
In #4482 a specific exception (for Cloudflare) needed to be treated as non-retryable even though its base exception was APIError.
The latter is part of the list of retriable exceptions.
cc @neubig
Do you have thoughts on the technical implementation?
I asked llama-3.1-nemotron-70b-instruct to come up with an improvement (related files: retry_mixin.py, llm.py):
Q: How could the retry_decorator be enhanced to specify a list of exception types, that should NOT be retried, even if the base exception is part of one in the retry_exceptions list.
Example: see LLM_RETRY_EXCEPTIONS, where APIError is a generic exception that could contain text in the error message that would qualify to NOT be retried?
Answer:
Enhancing retry_decorator to Exclude Specific Exception Types
To achieve this, we'll modify the retry_decorator to accept an additional parameter, exclude_exceptions, which will contain a list of exception types that should not be retried, even if their base exception is in retry_exceptions.
Updated Code
class RetryMixin:
   ...

    def retry_decorator(self, **kwargs):
       ...
        retry_exceptions = kwargs.get('retry_exceptions')
        exclude_exceptions = kwargs.get('exclude_exceptions', [])  # New parameter
       ...

        def _should_retry(exception):
            """Check if an exception should be retried."""
            return (
                isinstance(exception, tuple(retry_exceptions))
                and not isinstance(exception, tuple(exclude_exceptions))
            )

        return retry(
           ...
            retry=(retry_if_exception_type(_should_retry)),  # Update retry condition
           ...
        )

Explanation

We added a new parameter exclude_exceptions to retry_decorator, defaulting to an empty list.
We defined a new inner function _should_retry that takes an exception as input.
_should_retry checks if the exception is an instance of any type in retry_exceptions but not an instance of any type in exclude_exceptions.
We updated the retry decorator to use _should_retry as the condition for retrying exceptions.

Example Usage
LLM_RETRY_EXCEPTIONS = (
    APIConnectionError,
    APIError,  # Generic exception that might contain non-retryable errors
   ...
)

LLM_EXCLUDE_EXCEPTIONS = (  # New tuple for exceptions to exclude
    APIErrorIfContainsText,  # Custom exception that checks for specific text in APIError
)

...

@self.retry_decorator(
    num_retries=self.config.num_retries,
    retry_exceptions=LLM_RETRY_EXCEPTIONS,
    exclude_exceptions=LLM_EXCLUDE_EXCEPTIONS,  # Pass the exclude exceptions
   ...
)
def wrapper(*args, **kwargs):
   ...

Custom Exception Example (APIErrorIfContainsText)
class APIErrorIfContainsText(APIError):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.text_to_check = "specific error text that should not be retried"

    def __instancecheck__(self, instance):
        return (
            super().__instancecheck__(instance)
            and self.text_to_check in instance.response.text
        )

In this example, APIErrorIfContainsText is a custom exception that checks if the APIError response text contains a specific string. If it does, the exception will be excluded from retries.

This new exception class APIErrorIfContainsText could then be extended with the exceptions to the rule (pun intended) text occurences for a centralized handler.

There is an issue over at litellm on this: https://github.com/BerriAI/litellm/issues/6550
IMHO this solution is better than what we currently have, in the meantime. The code with the __instancecheck__ will need added on the metaclass, though. Source: bug in python


we are still using odo.openshift.io/v1alpha1 as apiVersion for json output ( post GA )

[kind/Feature]

Which functionality do you think we should add?
We are still using odo.openshift.io/v1alpha1 as the ApiVersion for
machine readable output mostly everywhere in odo.
Post GA we should change it odo.openshift.io/v1?
https://github.com/openshift/odo/blob/d1d002d3b04ca02ec2c3593866e34c449d460946/pkg/machineoutput/types.go#L16

This is more of a question than a feature.
/kind discussion
/remove-kind json-output

IMO yes. We should change it to /v1, however, we'll have to implement some form of backwards compatibility if there are any breaking changes.


Timedelta not working

I use Python 3.6 and already updated twint.
Description of Issue
If I am not mistaken,
c.Timedelta = 100`
is supposed to make a interval of 100 days for every request.
However, doing so makes no difference no matter which number I use.
There is always no interval at all.
I want to scrape 10000 tweets from 2006 until 2018. At the moment it only scrapes the most recent tweets. What do I have to do?
Environment Details
Windows 10 64 Bit
Python 3.6
IDE: Pycharm

Actually Twitter returns 20 tweets for every request, so if the last tweet (of that request) was tweeted two years before the first tweet (of that request) the "timedelta" is about 730 days.
Timedelta is used when the difference between c.Since and c.Until is too much, ref https://github.com/twintproject/twint/issues/102#issuecomment-391263217


Use SQL Server 2019 in Actions

Description
Trying to fix intermittent sqlsrv connection errors in image.
Checklist:

[x] Securely signed commits

Closed for #4554


LabelLayout alignment and numberOfLines issue

Hello,
I've created a layout to list a person's name and title like so:
class TeamMemberLayout: InsetLayout<View> {
    public init(person: Person) {
        let nameLayout = LabelLayout(
            text: "Person Name",
            font: .boldSystemFont(ofSize: 16),
            alignment: .center
        )

        let titleLayout = LabelLayout(
            text: "Chief Executive Officer and Vice President",
            font: .systemFont(ofSize: 12),
            alignment: .center,
            config: { label in
                label.numberOfLines = 1
            }
        )

        super.init(
            insets: UIEdgeInsets(top: 12, left: 12, bottom: 12, right: 12),
            sublayout: StackLayout(
                axis: .vertical,
                spacing: 6,
                alignment: .topFill,
                viewReuseId: "teammemberlayout",
                sublayouts: [nameLayout, titleLayout]
            ),
            config: nil
        )
    }
}

As you can see, I am limiting the number of lines for the title label to be one, and for the alignment to be .center. However, my layout renders like so:

Any idea what I'm doing wrong? Thanks!

LabelLayout needs to know numberOfLines.
let titleLayout = LabelLayout(
    text: "Chief Executive Officer and Vice President",
    font: .systemFont(ofSize: 12),
    numberOfLines = 1
    alignment: .center,
)


Add tox and simplify Travis CI builds

Description

Migrated the project to use tox
Updated the README
Slight refactoring

GitHub Issues
Relates to #813

@Miserlou  Perhaps you can help me, I am running into an issue with a test that has a known problem. It's always failing on my local branch, even without my changes. I suspect its due to caching between builds, and that something was cached on Jenkins for a while, which with my change somehow changes that.
Here is the line, which has a comment about how its broken. https://github.com/Miserlou/Zappa/blob/master/tests/tests_placebo.py#L186

Update: Looks like test pollution. If I run the tests for just tests/tests_placebo.py they pass.

Coverage increased (+0.2%) to 73.855% when pulling 7bfdc2a282b14117d59d71263d181f775b55caf8 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 51297d120304866306e39c01e05df018c723f736 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 51297d120304866306e39c01e05df018c723f736 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 51297d120304866306e39c01e05df018c723f736 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 51297d120304866306e39c01e05df018c723f736 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 51297d120304866306e39c01e05df018c723f736 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 72e7f6fb1219e44f97146245633bdc27105ad6ab on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.

Coverage increased (+0.3%) to 73.953% when pulling 4e0548d9ed4e4682239f6f6bdf4931ec2d0c8322 on bxm156:bxm156_tox into 3a6263186b2acb95e0db6b50b4aa3ee3956c6018 on Miserlou:master.


Fix errors displayed by Rider / ReSharper

I decreased some of ReSharper code inspections from Error to Warning. I assume the configuration was created when all contributors were using ReSharper and since then developers have contributed without using ReSharper. And alternative to relaxing the code inspections would be to run them during the build.
I did not find a way to instruct ReSharper to use the C# language version specified in the .csproj files and instead had to create .csproj.DotSettings files. This does not feel right as the C# language version is now specified in two places. On the plus side I did simplify the C# language version settings in the .csproj files.
I ignored the Rider directory (.rider/). I don't know how well Rider will support working on the Service Bus Explorer code base but I was able to compile and launch.
No errors are remaining in the solution:

Fix #487.

:white_check_mark: Build ServiceBusExplorer 5.1.0-fix-rider-resharper.6.build.743 completed (commit https://github.com/paolosalvatori/ServiceBusExplorer/commit/8006364845 by @)


feat: LSP autocomplete constructor fields

Description
Problem
Part of https://github.com/noir-lang/noir/issues/1577
Summary

^ The above is just an example of it working, I'm not encouraging using constructors of std types 😄
Additional Context
This is the last autocompletion I had in mind while implementing autocompletion, so I'll likely won't send any other LSP PRs for a while...
That said, if you think of other autocompletions (that don't involve auto-importing, because that's a big thing) let me know (or capture an issue) and we can work on it.
Documentation
Check one:

[x] No documentation needed.
[ ] Documentation included in this PR.
[ ] [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist

[x] I have tested the changes locally.
[x] I have formatted the changes with Prettier and/or cargo fmt on default settings.

Actually, I just remebered that trait methods are not suggested yet, so that will be the last LSP PR for now (later) 😅


Rm redundant code

Codecov Report

Merging #462 (8590209) into dev (831b117) will increase coverage by 0.83%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##              dev     #462      +/-   ##
==========================================
+ Coverage   75.42%   76.26%   +0.83%
==========================================
  Files          12       12
  Lines        1050     1007      -43
==========================================
- Hits          792      768      -24
+ Misses        258      239      -19

Impacted Files
Coverage Δ

src/loading.jl
68.00% <100.00%> (+5.64%)
:arrow_up:

src/metadata.jl
77.64% <0.00%> (-0.02%)
:arrow_down:

src/registry/src/Registry.jl
0.00% <0.00%> (ø)

src/registry/src/check_registry.jl
0.00% <0.00%> (ø)

src/builtins/Transformers.jl
96.34% <0.00%> (+0.09%)
:arrow_up:

src/builtins/ThresholdPredictors.jl
92.30% <0.00%> (+0.71%)
:arrow_up:

src/utilities.jl
16.12% <0.00%> (+0.97%)
:arrow_up:

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 831b117...8590209. Read the comment docs.