Integration Test - Release - 2021/09/30 01:23:55

Auto create for integration test. IssueCommandFlow

@PRMerger-test-1 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

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

File
Status
Preview URL
Details

csidevdocs-public/IntegrationTest/BuildIntegrationTestFiles/ChangeSentToAuthor.md
:warning:Warning

Details

csidevdocs-public/IntegrationTest/BuildIntegrationTestFiles/ChangeSentToAuthor.md

Line 4, Column 1: [Warning-ms-prod-and-service] Only one of the following attributes can exist: 'ms.prod', 'ms.service'. Use ms.prod for on-premise products, or ms.service for cloud services.
Line 4, Column 8: [Warning-duplicate-titles] Title 'VS Code Authoring Extension' is duplicated in: 'Demo/demo.md(4,8), Demo/v-caxian/AuthorNotification.md(4,8), Demo/v-caxian/auto-merge.md(4,8), Demo/v-caxian/auto-merger.md(4,8), IntegrationTest/BuildIntegrationTestFiles/ChangeSentToAuthor.md(4,8)'. Titles must be unique within a docset.

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


feat!: rename emit to invoke and default to local

Changes
This commit renames 'func emit' command to 'func invoke' and makes the default behavior to send an event to localhost. The special '--sink' value 'local' is changed to 'cluster' to indicate that the function should be invoked on the cluster instead of locally.
All other behavior remains the same.
BREAKING CHANGE
/kind enhancement
Fixes: https://github.com/knative-sandbox/kn-plugin-func/issues/576
Partial fix: https://github.com/knative-sandbox/kn-plugin-func/issues/575
Release Note
The 'emit' command has changed to 'invoke' and the default has changed to local invocation, with the special sink value 'local' changed to 'cluster' to invoke the function on the cluster.

I have moved cloudevents/emitter[_test].go to invoker/cloudevents[_test].go and have introduced an invoker/http.go with no implementation so far. The idea is to support function invocation with either events or HTTP. But that has opened up some questions for me.
I would like to be smart about what the default behavior is. For example, if it's a CloudEvent function, it would be nice to invoke with an event, but if it's an HTTP function the default should be a simple HTTP POST. However, we don't currently store the template name in func.yaml. I think we used to, but there was no need for it to be there, so it was removed. I can't decide how I feel about reintroducing this configuration value. Any thoughts on this?
If we don't want to reintroduce the template value in func.yaml, is it enough to simply default to HTTP (the default function with create is HTTP), and have a flag for events? kn func invoke --event Or vice versa, kn func invoke --http? The invoke command currently supports lots of flags for specifying event data. Maybe we default to HTTP unless any one of these flags is set? :shrug:
@lkingland @matejvasek @zroubalik wdyt?

Handing this baton to @lkingland


How to implement library for storing mutable global state

Question
First of all, thank you for all the work on this framework. This is probably one of the coolest projects in Rust that I have seen.
I am trying to create a library for managing global state with functional components (#1026). I want to have an API that is similar to Redux. It should look something like this:
let counter = counter_state.use_selector(|state| state.counter);

let increment = counter_state.dispatch_callback(CounterMsg::Increment);

html! {
    <>
        <p>{ format!("Counter: {}", counter) }</p>
        <button onclick=Callback::from(move|_| increment()) />
    </>
}

What I've tried
I am having difficulty creating a global store. When I was digging through yew and yew-state source to look for some reference code, I noticed that context agents use thread_local!, e.g:
https://github.com/yewstack/yew/blob/eb841bb7cf04eb9d34cfd593496a476cc6982859/yew/src/agent/local/context.rs#L10-L12
Since WASM is single threaded, does it mean it's ok to use thread_local! for global state? I am worried that the WASM threads proposal might break this in the future.
I also tried using lazy_static! but I can't make my Store struct Sync because it is storing the closures which are not Sync.
My question is how does Yew Context agents work and is there a way I can use Context Agents for a global store. If not, what are some other options to implement global state.
BTW, I think the documentation on Agents is a bit brief and not details enough. I am having a bit of trouble understanding how Bridges and Links work. It would also be nice to have some code examples.

I'm also trying to tackle this problem over at yew-state!

I think this should be fine. thread_local! only becomes an issue when you send things across thread boundaries. When you do this, the any references from the spawned thread to the item in the LocalKey will refer to a newly initialized thread-specific LocalKey rather than the previous one.
Do you plan to use the WebAssembly thread spec later in your application (if not it shouldn't be an issue)?


Use params as a StringToStringMap for additional parameters?

We continue to use params as StringToStringMap for additional parameters for now, but we should reconsider our options and decide whether we might want to go for another approach of setting additional parameters for certain operations.
The alternative could be:

global configuration file,
global configuration class,
configuration class passed as an argument to the operations,
hierarchy of configuration classes, and optionally ad-hoc additional parameters specified by passed params argument, or
some other approach; remains to be suggested.

An option suggested by @tfiedor is the following:
I think the configuration (dictionary with params), while on one hand is quite versatile, it is also quite error prone and inellegant. Maybe we could consider some different way. Maybe some singleton class Configuration? And instead of
determinize(aut, {"algorithm": "classic", "minimize": True});

We could write something like:
Config.DeteminizationAlgorithm = Determinization.Classic;
Config.MinimizeAfterDeterminization = true;
determinize(aut);

It is longer, but maybe more manageble, less error-prone (debuging "minimize": "treu" could be hell).

When I see the two versions together here I prefer the original StringToStringMap. It's dynamic, flexible, extendable. I wouldn't prefere global config, at least until we have a CLI. Then it would make sense since we set Config during parsing CLI params. I would consider a common store of predefined default StringToStringMap for different algorithms where the possible options would be documented.


Data Import Error

Describe the bug
We get an incorrect formatting error when attempting to import new data.
Validation error
Error at item 0: "llm.inputs.retrieved_context" key is expected in task data [assume: item["data"] = task root with values] :: {'data': {'observability.identifiers.user': [{'key': 'session_id', 'value': ''}], 'observability.identifiers.system': [{'key': 'correlation_id', 'value': ''}, {'key': 'trace_id', 'value': ''}, {'key': 'parent_span_id', 'value': ''}], 'observability.identifiers.llm': [{'key': 'interaction_id', 'value': ''}, {'key': 'runnable_sequence_id', 'value': ''}, {'key': 'runnable_sequence_step', 'value': ''}, {'key': 'runnable_id', 'value': ''}], 'llm.inputs.retrieved_context': [{'id': '1', 'title': '', 'body': ''}, {'id': '2', 'title': '', 'body': ''}], 'llm.outputs': [{'key': 'text_response', 'value': ''}]}, 'file_upload_id': 28}

I believe this error is telling me that the key llm.inputs.retrieved_context defined in my interface is not present in the data being uploaded, however it is there.
If we import a data file, then add the interface it works fine, but if the interface is already existing we get the error message.
To Reproduce
Example Interface:
<View>
  <Style> .lsf-select { display: none; } </Style>
  <List name="retrieved-context" value="$llm.inputs.retrieved_context" title="Retrieved Context" />
  <header>LLM Outputs:</header>
  <Paragraphs name="llm-outputs" nameKey="key" textkey="value" value="$llm.outputs" layout="dialogue" />
  <Choices name="sentiment" toName="llm-outputs" choice="single" showInLine="true">
   <Choice value="ambiguous"/>
   <Choice value="factually accurate"/>
   <Choice value="factually inaccurate"/>
  </Choices>
</View>

example data:
fa-test.json
Steps to reproduce the behavior:

Create a new project
Add Label Interface
Try to Import the data file

Expected behavior
Data file is uploaded and rendered through the interface
Screenshots
With data input directly into the labeling interface configuration:

When data is uploaded prior to setting up the labeling interface:

When attempting to import data as a file after labeling interface is saved:

Environment (please complete the following information):

OS: Mac OS Sonoma 14.5
Label Studio Version [e.g. 1.13.1]

Additional context
The same example data works if input as data in the labeling interface preview
The same example data also renders correctly in the UI if you:

Create a new project
Upload the example data file FIRST
Create the labeling interface

Hello Rich,
Its because the way data is structure. If you have llm.inputs.retrieved_context then it would mean the strucuture is something similar to this:
"llm": {
"inputs": {
"retrieved_context": [...]
},
But if you just remove llm.inputs and name it as "retrieved_context" it works.

Hmm okay interesting, So I'm not able to target nested items using dot notation;
for instance with your example:
"llm": {
"inputs": {
"retrieved_context": [...]
}
},

using dot notation like llm.inputs.retrieved_context does not actually target retrieved_context
however I did realize that it was the . causing the issue; it seems that you can't use any special characters as separators in the key name, for example something like: llm:inputs:retrieved_context
Are both of those statements accurate?

Hey @AbubakarSaad So I did some more digging here, I think there's a couple of bugs, the main one being:
It appears that I can nest data, but I can't do that for example data when creating the labeling interface
It seems that there is some difference in how JSON is parsed between the labeling interface preview, the UI file import feature, and the Importing tasks via API.
Thank you!


Rewrite financetimescale?

The library has lacked intraday financetimescale support, and thanks to @brobits we now have one.
We now have 2 custom scales financeEODDiscontinuousScale and financeIntradayDiscontinuousScale
I was in favor of having 2 scales initially, but as I started to create some examples, my view has changed. I prefer a single scale for handling discontinuous input.
I have mentioned this in some other issues, and this issue is a good place to reiterate it.  Do not use custom scales unless you really have to. Make sure that a d3.time.scale() will not satisfy your need.
Here is a list of reasons you would want to use a custom discontinuous scale

you are working with discontinuous data, like the equity market, which is closed on weekend and on weekdays is only open during certain hours
want to automatically jump to the next interval when you zoom out. like here as you zoom out the interval changes from 1d to 1w to 1m

is there no other discontinuous scale available?
There are 2 that I know of

d3fc - example
techan.js - example

d3fc is really simple, I like the fact that you can specify a discontinuity, and it uses d3.time.scale() behind the scenes and just removes a tick if it appears on the discontinuity. Unfortunately this happens.

techan.js - I did not see this when I started, this aligns more closely to what I like. It does not need an index to be pre-calculated. It does seem to work well, I played around by deleting different data sets in this plunker. I am now trying to understand how it works and may be we could use it too. Initial glance seems that the domain has to be the entire dataset and not the data which has to be drawn, there is usage of a visibleDomain, which I am not too excited about, but you could argue this is better than adding an index property to each element.
My wishlist for a discontinuous scale

One discontinuous scale for intraday and historical, can also be used in price movement chart types like Renko, P&F for both intraday and historical - d3fc scale is ruled out here since price movement charts types do not have a defined discontinuity
Nice tick values. This is the main reason I started the custom scale. what I mean by this is

1:00 AM above is the first tick of the next day. I would rather see mmm dd there instead of the time
similarly

Dec 2 is the first tick of month Dec, so I would rather see the tick value as Dec YYYY

Jan 6 is the first tick of the year, I would rather see the tick value as YYYY This might be a small thing but it makes a huge difference for a price movement based chart

Show tick values beyond the last data point. - This is not possible with our existing financetimescale or the techanjs financetime scale.
provide a utc variant of the scale - both techanjs and d3.time.scale have utc variants

are there other financetime scales out there I am not aware of?
any thing else which should make the the wishlist?
Lately I feel that "jump to next interval automatically on zoom out" has to be implemented in userland, and should not be part of the library itself. This should also factor into the rewrite

for example

[x]  Add a new scale which combines both eod and intraday into one
[x]  remove the jump to next interval feature

Examples using the new scale
Intraday -
http://rrag.github.io/react-stockcharts-next/documentation.html#/intra_day_with_discontinuous_scale
EOD historical - http://rrag.github.io/react-stockcharts-next/documentation.html#/edge_coordinate
Price movement chart - http://rrag.github.io/react-stockcharts-next/documentation.html#/renko
Example using d3.time.scale
Intraday - http://rrag.github.io/react-stockcharts-next/documentation.html#/intra_day_with_continious_scale
This new scale addresses 1, 2, 4 from the wishlist above, 3 seems much harder to implement, I also looked at a few other charting applications which deal with discontinuous scale, and they have not implemented it too. If there are any ideas on how to implement 3 above please share them
ping: @brobits @svk31@mikewin @iNikNik

fixed, published in 0.5


Restructure crate as core module

Aligns module with rust-lang/library/core, creating an... unusual
architecture that is easier to pull in as a module, as core itself can
have no dependencies (as we haven't built core yet).

One comment is that a downside of stdarch's, err, architecture, is that it has nearly the worst IDE support of any part of the standard library. I'm not sure whether or not we should keep that in mind, but it would be nice if core::simd avoided this, somehow.

It looks like most of the changes are stylistic (since the imports got longer).  One thing I don't understand--why make these changes at all?  Can core not use core_simd as a crate dependency, and then do a simple pub use core_simd::*?

This code depends on core though, which would make it a circular dep, unless we do the work to make it #![no_core].
That said, I'm not sure I've ever seen a non-macro no_core crate.

Yeah, I suppose that makes sense.

I looked, for a long while, at alternatives.
I did not find a good one.

This code depends on core though, which would make it a circular dep, unless we do the work to make it #![no_core].
That said, I'm not sure I've ever seen a non-macro no_core crate.

This would break everything because then we would have to forge our own lang items, which would not match the ones in core.
Anyways, in the end, we can resolve this issue by simply closing out the subtree and thus this repo if we must.

One comment is that a downside of stdarch's, err, architecture, is that it has easily the worst IDE support of any part of the standard library (everything in core::arch::*:: shows up as unrecognized).

Also, is this due to the path or due to it being a submodule? Because this will be in-tree as a subtree for rust-lang/rust, not a submodule.

https://github.com/rust-analyzer/rust-analyzer/issues/3898 It looks like there is an open bug for this? But
https://github.com/rust-analyzer/rust-analyzer/pull/9963 at least in theory this is fixed for core::arch.
So this shouldn't actually be an issue.

But rust-analyzer/rust-analyzer#9963 at least in theory this is fixed for core::arch.
So this shouldn't actually be an issue.

I suspect this means core::arch resolves, but things inside it still don't. Or something like that,  since I can confirm it's still an issue.

Also, is this due to the path or due to it being a submodule? Because this will be in-tree as a subtree for rust-lang/rust, not a submodule.

It's because it's a #[path] that points outside the crate.

I literally just tried
pub use core::arch::x86_64::{
    __m128, __m128i, _mm_add_ps, _mm_cvtps_epi32, _mm_load_ps, _mm_load_ss, _mm_max_ps, _mm_min_ps,
    _mm_mul_ps, _mm_set1_ps, _mm_setzero_ps, _mm_shuffle_ps, _mm_store_si128,
};

in a fresh crate and it seems to resolve fine.

Hm, maybe it's an issue with my setup and then it's not worth worrying about. I just wanted to avoid us having the same bad experience as core::arch due to developing out-of-tree.

At the moment I am using an Extremely Basic "Visual Studio Code + rust-analyzer plugin with barely any modifiers" setup so, nothing terrible exotic is likely responsible for a difference here.
I would be okay with nesting in theory but I am concerned that if we nest inside library/core/src/portable-simd/crates/core_simd/src we will risk running afoul of the Overly Long Path limitations on a Certain OS, and in general confusing the matter.

 Might have been fixed since then though.

The patch in question was merged on Aug 20, so it is worth updating r-a and retrying.


[FLINK-4145] [core] Configure port range for JMXReporterTest

I saw multiple failures of the JmxReporterTest most likely due to a port conflicts. The test relies on the default JMX reporter port range, which spans 5 ports. Running on Travis with multiple concurrent builds and bad timings, this can lead to port conflicts.
Some example failed runs:
https://s3.amazonaws.com/archive.travis-ci.org/jobs/141999066/log.txt (one out of 5 jobs failed)
https://travis-ci.org/uce/flink/builds/141917901 (all 5 jobs failed)
I propose to take the fork number into account (like the forkable Flink testing cluster) and configure a larger port range.
Can you review this, @zentol?

the default port range is 9010-9025, that's 15 not 5 ports.

I would suggest using a random port range.

I believe the underlying issue is that there are a bunch of tests that just don't close their ports properly, as for quite a few tests a MetricRegistry is fired up silently in the background.
To circumvent this we don't even need a random range or a greater one, just once that is distinct from the default port range.

I'm closing this after an offline chat with @zentol who will fix this properly.


after the android package name ,it console error type==null

After I change the Android package name, when I send the data.uri to server will console error type==null ,please help me!

but the server has not received any requests,  and ios can

i have solved the problem thanks


Cannot save community roles in dev environment

Steps

Run teiserver locally
Launch website and login as root@localhost password
Find a user and edit them
Tick the community roles
Save changes
Go to edit user again. The checkboxes should be ticked but aren't.

@L-e-x-o-n Can you please verify if you get this bug on your local machine or if it's just me?

I can fix this, please assign to me.

I saw something like this while following https://github.com/beyond-all-reason/teiserver/pull/256, but the difference is that I wasn't able to give my spads bot the Bot role, it wouldn't save it - like you're seeing here. I ended up completely messing up my root permissions and doing mix teiserver.fakedata to sidestep it.

I saw something like this while following #256, but the difference is that I wasn't able to give my spads bot the Bot role, it wouldn't save it - like you're seeing here. I ended up completely messing up my root permissions and doing mix teiserver.fakedata to sidestep it.

Just tested and it I can set someone to bot if I use root@localhost . Make sure you test with Administrator login because they are the only one who can give bot role.

Tldr: I still have the problem, because booleans from the checkboxes are not transferred into the role field.
Unfortunately this issue still persisted for me, maybe it is due to the elixir version (I used 1.14.5) or some dependency behaving differently. (I logged in as root@localhost so that shouldn't be an issue)
Thats why I decided to dig into it more.
In a nutshell: 3 files are relevant here:

The html form page for editing the user (where the checkboxes get loaded): https://github.com/beyond-all-reason/teiserver/blob/master/lib/teiserver_web/templates/admin/user/form.html.heex
The change request processing from the form: https://github.com/beyond-all-reason/teiserver/blob/3e13abb6cb79f17c684db2aa8b38fb581724c7e2/lib/teiserver/account/schemas/user.ex#L52
The part where the update gets written into the database: https://github.com/beyond-all-reason/teiserver/blob/3e13abb6cb79f17c684db2aa8b38fb581724c7e2/lib/teiserver/account/libs/user_lib.ex#L169

The Problem
I add IO.inspect() calls to the functions and found out that the attrs that are passed to (2.) from the form (1.) are in another format:
%{
  "Contributor" => "false",
  "Mapping" => "false",
  "permissions" => [],
  "data" => %{
    "bot" => false,
    "chobby_hash" => nil,
    "country" => "??",
    "discord_dm_channel" => nil,
    "discord_dm_channel_id" => nil,
    "discord_id" => nil,
    "email_change_code" => nil,
    "hw_hash" => nil,
    "last_login" => 28609015,
    "last_login_mins" => 28609015,
    "last_login_timex" => "2024-05-24T08:55:12.000625Z",
    "lobby_client" => "SPADS v",
    "lobby_hash" => "57015357 5636bd6e65323f54",
    "moderator" => false,
    "password_hash" => "$argon2id$v=19$m=65536,t=8,p=2$I57FcJMdwpGTcuOL4Xs4HA$SusoCqS/9adD3+/oKsxPF/6CWNuUKrzOYckmAUZmWNk",
    "print_client_messages" => false,
    "print_server_messages" => false,
    "rank" => 0,
    "restricted_until" => nil,
    "restrictions" => [],
    "roles" => [],
    "shadowbanned" => false,
    "spring_password" => true,
    "steam_id" => nil,
    "verified" => false
  },
  "icon" => " fa-solid fa-user",
  "Caster" => "false",
  "Core" => "false",
  "colour" => "#666666",
  "BAR+" => "false",
  "Engine" => "false",
  "Community team" => "false",
  "Verified" => "false",
  "Streamer" => "false",
  "Mentor" => "false",
  "Moderator" => "false",
  "behaviour_score" => "10000",
  "Server" => "false",
  "Tournament" => "false",
  "Reviewer" => "false",
  "Gameplay" => "false",
  "VIP" => "false",
  "Infrastructure" => "false",
  "email" =><EMAIL_ADDRESS>  "trust_score" => "10000",
  "roles" => [],
  "Promo team" => "false",
  "Overwatch" => "false",
  "Data export" => "false",
  "Donor" => "false",
  "Trusted" => "false",
  "Bot" => "true",
  "Admin" => "false",
  "Tester" => "false",
  "social_score" => "0",
  "Academy manager" => "false"
}

We can see that each checkbox is passed as their own attribute. However, the form in (1.) loads loads all the checkbox values from the roles field.
"roles" => [],

e.g.
roles: ["Bot", "Caster", "Mapping", "Mentor", "VIP"]

The fields e.g. ("Bot", "Admin") are not part of the user:
%Teiserver.Account.User{
  __meta__: #Ecto.Schema.Metadata<:loaded, "account_users">,
  id: 28,
  name: "spadsbot[000]",
  email<EMAIL_ADDRESS>  password: "$argon2id$v=19$m=65536,t=8,p=2$I57FcJMdwpGTcuOL4Xs4HA$SusoCqS/9adD3+/oKsxPF/6CWNuUKrzOYckmAUZmWNk",
  icon: " fa-solid fa-user",
  colour: "#666666",
  data: %{
    "bot" => false,
    "chobby_hash" => nil,
    "country" => "??",
    "discord_dm_channel" => nil,
    "discord_dm_channel_id" => nil,
    "discord_id" => nil,
    "email_change_code" => nil,
    "hw_hash" => nil,
    "last_login" => 28609015,
    "last_login_mins" => 28609015,
    "last_login_timex" => "2024-05-24T08:55:12.000625Z",
    "lobby_client" => "SPADS v",
    "lobby_hash" => "57015357 5636bd6e65323f54",
    "moderator" => false,
    "password_hash" => "$argon2id$v=19$m=65536,t=8,p=2$I57FcJMdwpGTcuOL4Xs4HA$SusoCqS/9adD3+/oKsxPF/6CWNuUKrzOYckmAUZmWNk",
    "print_client_messages" => false,
    "print_server_messages" => false,
    "rank" => 0,
    "restricted_until" => nil,
    "restrictions" => [],
    "roles" => [],
    "shadowbanned" => false,
    "spring_password" => true,
    "steam_id" => nil,
    "verified" => false
  },
  roles: [],
  permissions: [],
  restrictions: [],
  restricted_until: nil,
  shadowbanned: false,
  last_login: nil,
  last_login_timex: ~U[2024-05-24 08:55:12Z],
  last_played: nil,
  last_logout: nil,
  discord_id: nil,
  discord_dm_channel_id: nil,
  steam_id: nil,
  user_configs: #Ecto.Association.NotLoaded<association :user_configs is not loaded>,
  clan_id: nil,
  clan: #Ecto.Association.NotLoaded<association :clan is not loaded>,
  smurf_of_id: nil,
  smurf_of: #Ecto.Association.NotLoaded<association :smurf_of is not loaded>,
  user_stat: #Ecto.Association.NotLoaded<association :user_stat is not loaded>,
  behaviour_score: 10000,
  trust_score: 10000,
  social_score: 0,
  inserted_at: ~N[2024-05-24 08:44:35],
  updated_at: ~N[2024-05-24 16:33:05]
}

Possible solution
I made a draft that transforms the attributes and fits them into the roles field, which works and fixes the issue for my setup. (I will link it soon).
However, I am kind of confused why this is not a problem for @jauggy . Maybe there are differences in the versions used.
I used Elixir 1.14.5 and Erlang/OTP 26 [erts-14.2.3] all dependency versions should be the standard ones from the mix.exs file.

@jere0500 are you saying when you tick the Bot checkbox, save, then return to the user, the bot checkbox is not ticked?

Yes, edit > ticking boxes > save changes
after clicking edit again, no previous ticked checkbox is ticked.
No, it does not work for the Bot checkbox either. In fact, it does not work for any checkbox. Other fields in the form work as expected.
Thanks for the remark I will create a new issue.
I have also tried to do a mix deps.clean --all and retried with your versions, same result.


Add OD log level as param to ClientConfig

By default I would use ERROR here but a developer can change it in the ClientConfig.

see #94


Add a 'How to contribute' section

Description
The NHS App Design System team is looking to add a 'How to contribute' section to their microsite to give more information about contributions and encourage users to feedback their insights, experiences and ideas to our team.
Related documentation
NHS App microsite link
Evidence (where applicable)
Supported by user needs uncovered through remote interviews - ideation sessions Mural link can be found here.

I've drafted an overview 'How to contribute' page, with an aim to cover the key messages in one place: https://docs.google.com/document/d/1XtU97SJ0TZOmgYnxJb8qbweEiy3xFn1LShRq19kE85c/edit?usp=sharing
Feedback gratefully received. This could potentially be the first page of the section. These are the potential surrounding pages that have been suggested by the team:

Backlog
The team
Roadmap
How we work
Upcoming components and patterns

https://github.com/nhsuk/nhsapp-frontend/pull/150


Report uncaught Javascript exceptions

Currently, WebTorrent Desktop only sends crash reports via Crashpad when one of the processes dies. There's no telemetry for uncaught Javascript exceptions. Lots of times those result in a gray screen and the app stops responding to input--we want to make sure those never happen.
I think we can do this with process.on('uncaughtException') in the main process and window.onerror in the renderer processes.

Should the exceptions be reported to the user and/or submitted to the crash report url?
How often should they be reported?
Exceptions occur quite often in the renderer processes (at least for me 😅), so we would probably want to log them and submit them in bulk?

this is done! @mathiasvr yeah, we are submitting in bulk along with the rest of our telemetry, only once per time someone runs webtorrent desktop
i also limited the size and number of error reports, so if something goes v wrong and there's say a stack overflow (which produces a huge stack trace) or a cascade of exceptions (1000s of errors), we don't try to send a massive POST request. it will report at most ~20 exceptions, and truncates each message and stack trace to a few kilobytes

exceptions occur quite often in the renderer process

hmm, i see them v rarely. the latest version has a lot of fixes. if there are still commonly occurring uncaught exceptions, let's fix them! note not all red text in the console is uncaught exceptions, often it's just calls to console.error

👍 nice work DC!


fix: warnings about missing keys when children are static

So, now we know what "s" in "jsxs" stands for... 😆 Static!
A bit of context after doing some source code reverse-engineering:
The jsxs function indicates that the top array was created by React. In which case, there are no keys required and following triggers no warning:
<A>
  <B />
  <C />
</A>

However, whether static or dynamic, children is always an array in the JSON payload. On the client side, we map over it and "dynamically" render:
<AComponentDefinition>
   [BComponentDefinition, CComponentDefinition].map(render)
</AComponentDefinition >

This will be automatically transformed to jsx factory on the client. Since there is no way to force the above code to go jsxs route (since that's what it is on the server), we need to drop JSX and call appropriate factory function ourselves.

Note: if you have dynamic array, you still must pass explicit keys

Note: React uses same factory in production for both static and dynamic. This is mostly DEV-only to improve debugging.

Discussed we're going with first implementation and $staticChildren property. @ericvicenti


Add an example with an array of HX711

relates to #40
and here - https://forum.arduino.cc/t/10x-hx711-code-problem/1160536

Done in develop branch


add SimdJsonParser2 base on bitindex

issue: https://github.com/simdjson/simdjson-java/issues/59

@arouel thanks very much, I have fix the code based on your suggestion.
In the case of determining the parsing path, simdjsonParserWithFixPath provides better performance and supports compressing map and list type data into strings. It can quickly skip paths that do not require parsing and avoid creating instances of JSON nodes for each JSON node
Benchmark testing indicators. refer:
simdjson: 184.387 ops/s
simdjson-with-fixpaths: 232.102 ops/s
jackson: 69.323 ops/s

How is this different from On-Demand parsing available in the c++ simdjson version?
I introduced a form of on-demand parsing in https://github.com/simdjson/simdjson-java/pull/51 (see: org.simdjson.OnDemandJsonIterator). The API requires specifying a target class to which the JSON will be parsed. However, it should be relatively easy to extend this to support a DOM-like API (JsonValue, JsonIterator, etc.), which I believe is more intuitive than introducing syntax for accessing fields and then returning an array of strings with the corresponding values.

@piotrrzysko I agree with you, a DOM-like API (JsonValue, JsonIterator, etc.) would be very helpful in use cases where only specific parts of the JSON are conditionally relevant, so that a mapping to an object would cause allocation that you want to avoid.
Can you guide us a bit, so that we can prepare a PR?

How is this different from On-Demand parsing available in the c++ simdjson version?
I introduced a form of on-demand parsing in #51 (see: org.simdjson.OnDemandJsonIterator). The API requires specifying a target class to which the JSON will be parsed. However, it should be relatively easy to extend this to support a DOM-like API (JsonValue, JsonIterator, etc.), which I believe is more intuitive than introducing syntax for accessing fields and then returning an array of strings with the corresponding values.

@piotrrzysko hello, piotrrzysko, I think the idea of reducing unused json node construction is similar with On-Demand parsing
There may be some performance advantages in getting multi-values in multi-layer nested JSON.
for example:
{
	"statuses": [{
			"text": "@aym0566x \n\n名前:前田あゆみ\n第一印象:なんか怖っ！\n今の印象:とりあえずキモい。噛み合わない\n好きなところ:ぶすでキモいとこ😋✨✨\n思い出:んーーー、ありすぎ😊❤\nLINE交換できる？:あぁ……ごめん✋\nトプ画をみて:照れますがな😘✨\n一言:お前は一生もんのダチ💖",
			"user": {
				"name": "AYUMI",
				"screen_name": "ayuu0123",
				"followers_count": 262,
				"friends_count": 252
			},
			"retweet_count": 0,
			"favorite_count": 0
		},
		{
			"text": "RT @KATANA77: えっそれは・・・（一同） http://t.co/PkCJAcSuYK",
			"user": {
				"name": "RT&ファボ魔のむっつんさっm",
				"screen_name": "yuttari1998",
				"followers_count": 95,
				"friends_count": 158
			},
			"retweet_count": 82,
			"favorite_count": 42
		}
  ],
  "search_metadata": {
    "count": 100,
  }
}

In multi-level scenarios, avoid repeated construction of parent nodes
if we want to get value for ['$.statues.[0]. user.name'],
in the case of on-demand-parse，first need to construct jsonNode_statues, then construct jsonNode_statues[0], then construct jsonNode_statues[0]_user, then construct jsonNode_statues[0]_user_name, actually we only need the last jsonnode.
in the case of SimdJsonParserWithFixPath, the parsing result array is only constructed once during initialization, and can be reused every time JSON data is parsed.

2.When parsing multiple fields at one level, just scan the token list once to fill in all fields。
if we want to get values for ['$.statues.[0]. user.name', '$.statues.[0]. user.screen_name', '$.statues.[0]. user.followers_count', '$.statues.[0]. user.friends_count'] ,
in the case of on-demand-parse, we first need to travel to jsonNode_statues_[0]_user, and each time parse the fields under the jsonNode of user,we need to completely traverse the entire tokens list under the user. In this case, need to repeat the traversal four times.
in the case of SimdJsonParserWithFixPath，just need to scan the tokens list once to fill all fields
In some specific scenarios, especially big data log cleaning scenarios, it can replace the json_tuple function of hive, which may be useful.

How is this different from On-Demand parsing available in the c++ simdjson version?
I introduced a form of on-demand parsing in #51 (see: org.simdjson.OnDemandJsonIterator). The API requires specifying a target class to which the JSON will be parsed. However, it should be relatively easy to extend this to support a DOM-like API (JsonValue, JsonIterator, etc.), which I believe is more intuitive than introducing syntax for accessing fields and then returning an array of strings with the corresponding values.

hello, piotrrzysko, I used on-demand parsing，it is very convenient and efficient to deserialize json strings into java classes.it is also a solution provided by many mainstream json sdk.
However, this solution requires building a Java class before parsing the field, especially for deep paths, which is not very convenient for users. for example，if want to get field for $.a.b.c.d.  first we need to define class  a { class b { class c{class d}}}，and then to parse value, and every time parse json string, we need to create an class instance for each node, in case of large-scale data, performance may be affected.
For SimdJsonParserWithFixPath, if we want get values for multi-paths: [$.a.c,$.a,$.a.d,$.b], we only need to provide the json paths, the usage is similar to hive's user define function: json_tuple.  It also supports obtaining the value of the children of the container object while obtaining the compressed string value of the container object.
the path tree will only be created once during initialization，and the result array can be reused each time json string is parsed. In scenarios with large amounts of data, repeated creation and destruction of class instances can be avoided, and there will be some advantages in performance.

Hi, sorry for the delayed reply.
@heykirby
What I meant was that we can introduce on-demand parsing for a DOM-like API, which would significantly reduce the need for creating new objects. In fact, we could have a single instance of something like OnDemandJsonValue, which would be mutable and traverse a parsed JSON under the hood (likely leveraging org.simdjson.OnDemandJsonIterator).
The schema-based API you’re referring to is simply using logic that could potentially be utilized by the on-demand DOM API as well.
@arouel

Can you guide us a bit, so that we can prepare a PR?

I’d be happy to help. Perhaps I could start by creating a skeleton of the on-demand DOM API.

Hi, sorry for the delayed reply.
@heykirby What I meant was that we can introduce on-demand parsing for a DOM-like API, which would significantly reduce the need for creating new objects. In fact, we could have a single instance of something like OnDemandJsonValue, which would be mutable and traverse a parsed JSON under the hood (likely leveraging org.simdjson.OnDemandJsonIterator).
The schema-based API you’re referring to is simply using logic that could potentially be utilized by the on-demand DOM API as well.
@arouel

Can you guide us a bit, so that we can prepare a PR?

I’d be happy to help. Perhaps I could start by creating a skeleton of the on-demand DOM API.

thanks，piotrrzysko, It's always an expected feature.


lumina-fm: Adjust display size of file preview icons

Thumbnail previews under lumina-fm aren't much use on a 4K display currently because you cannot scale the size of the image (and hopefully video and pdf files soon too) preview icons to make them easily visible.

After looking into this I realized we already have this functionality.


Invoke-Reboot - doesn't work

The command Invoke-Reboot doesn't works as expected - the PowerShell window is closed only but after commenting the line 57 in the file Boxstarter.Bootstrapper\Invoke-Reboot.ps1 error is visible like on the attached screenshot.

The error message is
You cannot call a method on a null-valued expression.
At <path>\Boxstarter\Boxstarter\Boxstarter.Bootstrapper\Invoke-Reboot.ps1:38 char:223
+ ... arter -RebootOk -NoPassword:`$$($Boxstarter.NoPassword.ToString())`""
+
    + CategoryInfo              : InvalideOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId  : InvokeMethodOnNull

Thanks for reporting this! Will get this fixed tonight.

I have a "fix" for this but its really just a warning. Invoke-Reboot should only be called from a package and not the commandline where it won't do anything. At least now it tells you that instead of closing the window. If you really do want to restart the machine from a commandline, use Restart-Computer.
Thanks!


Add channel for rubocop 1.34.1

rubocop/rubocop just released version 1.34.1.
We would like our projects with CodeClimate to stay up to date with this, but it looks like the 1.34.1 channel has not been made available yet according to the channel list.

Just want to add as a general comment in regards to channels. It would be great to see channels of the latest versions be made available more quickly.
We also like out projects with CodeClimate to stay up-to-date with RuboCop, but the lack of available channels for new versions is roadblocking us. I understand the beta channel tends to have the latest Rubocop version. However, since the beta channel isn't locked to a version, it does not give us control to lock into a Rubocop version on our projects.

Also worth pointing out here is that channel: rubocop-1-31-0 doesn't work with the online version. It only works on the CLI. See https://github.com/codeclimate/codeclimate-rubocop/pull/318#issuecomment-1202978992


Ma feature/tcg

moved search-results back into card-container

push has conflicts, fix before pushing again


 Additionally the vast majority of the application
should run fine without root and the parts that need root are
typically things we can't do in containers anyway.
Related to https://github.com/ManageIQ/manageiq-pods/issues/442
Merge with https://github.com/ManageIQ/manageiq-pods/pull/466

Jansa backport details:
$ git log -1
commit a9116583dd8eb86f6f0f947b5769fc9b89e5b853
Author: Brandon Dunne<EMAIL_ADDRESS>Date:   Fri Apr 24 14:46:09 2020 -0400

    Merge pull request #20095 from carbonin/dont_run_pods_as_root

    Don't run worker pods as root

    (cherry picked from commit 78cecce6e0a3954d3d14f3b270e0c39ab057b9ea)


2 gateways BLE issue

I found #968 which describes the exact problem I'm facing. A BLE device is connected via gw1 initially but later it shows connected via gw2 in device info page and cannot be controlled. In Mi Home the device still works but not in HA anymore. Gw1 is closer to said device and gw2 further away of course.
It is mentioned under #968 that BLE devices just radio signals, but in my case the BLE device doesn't actually belong to any BLE mesh network but can only talk to gw1, since it's too far from any other BLE device other than gw1, and therefore cannot be controlled when HA somehow believes it should talk to this BLE device through gw2, which is pretty far from it and only works sometimes.

In another word, I don't think gw1 and gw2 and all their BLE devices can form a large BLE mesh network in my case, they need LAN to communicate.

I have the same issue with one of my BLE device. Integration version is v3.1.0.
I have Gw1 ZNDMWG03LM with firmware 1.5.0_0102, Gw2 DMWG03LM with firmware 1.0.3_0028, and Gw3 ZNDMWG03LM with firmware 1.5.0 added to HA.
The BLE switch with problem is far from Gw3 and Gw2, but very close to Gw1. So also Gw1 is far away from Gw2 and Gw3.
The switch works normally with MI home or other integrations in HA. It also works normally if I only add Gw1 to HA by this integration. However after Gw2 and Gw3 are added for a while, I cannot/failed turn on or off the BLE switch through HA (the switch button in HA is enabled anyway,  but if you toggle it, it changes, then quickly goes back to the previous state, and the physical switch does not response to this operation). However, the switch on off state does update correctly in HA if I toggle the switch through MI home.
In MI Home, the switch is only shown under Gw1, which is because the switch is too far away from the other two gateways. However in HA, it is shown under all the 3 gateways, I guess this causes the problem, if the integration tries to control the switch by Gw2 or Gw3, not Gw1. Any ideas?
Thanks.

Please provide your gateways firmwares and models. And your BLE models you talking about.

Two gateways: gateway ZNDMWG03LM Firmware: 1.5.0_0102
The mesh switch that sometimes offline: mesh DHKG01ZM

Update to 1.5.4. It has a lot of fixes for BLE/Mesh

Right and I just noticed the v3.2.0 update on this repo. Thank you for your work and I'll report if any problem surfaces.

Just upgraded the integration to v3.2.1, and all the three gateways to the latest firmware version. The issue still exists for one of my BLE mesh switches. The switch model is not recognized, shows as "mesh (4380)".
However, I figured out that renaming or reloading the integration of gateway Gw2 (DMWG03LM) can solve this issue. After reloading the integration of the gateway Gw2, the entity of the BLE switch will be changed to in Gw1 instead of Gw2. I think that fixes the problem. So I create an automation to auto reload integration of Gw2 when HA is started. So far, it works well.

Will this issue be fixed in the future? When multiple multi-mode accesses, distant devices will occasionally become unavailable.

I met the same problem. I have two gateways DMWG03LM with 1.0.6_0016 and ZNDMWG03LM with 1.5.4_0090, each on different floor. I am running 3.2.1 plugin on HA 2023.5.4, and I believe the issue was there before upgrade plugin and HA versions.
I have Mesh Wall Switches on both floors, all the mesh devices show up in both gateways, however, entities will only appear on one side. Once I disable the BLE support in one gateway options, all the entities will move into the other gateway, however become unavailable if they are on different floor. Even I re-enable BLE support on previous gateway, those entity still cannot be controlled.
Tried to hack "via_device_id" in core.device_registry, but no luck, as it will always change again.

https://github.com/AlexxIT/XiaomiGateway3/releases/tag/v3.3.0


Switch to random backdrop

Expected Behavior
It would be nice if switch backdrop to %1 included random backdrop as one of the options.
Actual Behavior
The options list contains the current backdrops along with 'next' and 'previous'

Should other menus also have random options?

switch costume
start/play sound
Any other ideas?


Ei after data

This addresses #366

The tests remain green, so this is looking pretty good!
I'd love to get a new spec in spec/integration_spec.rb that confirms we can successfully parse a PDF with this issue (and that main can't parse the same PDF).
It could be generated using the prawn fragment on #366, and I'd be happy if the test just extracted text (not necessarily the inline image itself.

Thanks for the tests in #390.
I've confirmed the specs are green when run against this branch. I'd have been fine with the new specs being added directly to this PR as well ❤


Could not find output layer in quantized network

I quantized my custom network and I ran ExecuteNetwork both on the original and quantized model. I got this error only on the quantized model:
./ExecuteNetwork -f caffe-binary -m mymodel_quantized.caffemodel -c CpuAcc -i input  -d test_data.txt -o prob
ArmNN v20190500
Armnn Error: Couldn't find requested output layer 'prob' in graph

I presume you have verified that the output layer is indeed called 'prob' and not something else?

yes, the inference command works with the same non-quantized network

yes, I think the output name must have changed. It's worth checking.
Out of interest, which quantisation tooling are you using with Caffe?

The one provided in armnn:
cd armnn/build
./ArmnnConverter -f caffe-binary -m mymodel.caffemodel -i input  -o prob -p ./mymodel_converted.armnn
./ArmnnQuantizer -f mymodel_converted.armnn -d . -o mymodel_quantized.caffemodel

How can I check that the name has changed in the caffemodel?

Ah that's interesting, "./ArmnnQuantizer -f mymodel_converted.armnn -d . -o mymodel_quantized.caffemodel" will have written the model in .armnn format (Arm NN has no code for creating caffe files, only for reading them). You're then reading it as a caffe-binary model (should be armnn-binary), but the error message is misleading.
Can you retry with "./ExecuteNetwork -f armnn-binary -m mymodel_quantized.caffemodel -c CpuAcc -i input -d test_data.txt -o prob" ?
We'll have to look in to why the error message is wrong.

I got the following:
WARNING: Layer of type Normalization is not supported on requested backend CpuAcc for data type Unsigned8 (reason: in validate_arguments src/core/NEON/kernels/NENormalizationLayerKernel.cpp:46: ITensor data type QASYMM8 not supported by this kernel), falling back to the next backend.
ERROR: Layer of type Normalization is not supported on any preferred backend [CpuAcc ]
Armnn Error: Optimize returned nullptr

Ah yes, there's no quantised NormalizationLayer in Compute Library (as per #217) so you'll need to enable the CpuRef backend.

using armnn-binary and enabling CpuRef solves the issue. The inference time is high, I think that's because CpuRef is called.

Cool.
We'll have to think about what to do with those NormalizationLayers. In more advanced quantisation tools (e.g. tflite_convert) the normalisation layers are folded into the quantisation parameters.


ERROR: [HLS 200-1023] Part 'xczu7ev-2ffvc1156' is not installed.

Hi,
I am following the third end2end_example. I am going through the examples one by one, and I encountered an error while building the accelerator.

Here is error message
Building dataflow accelerator from /home/vboxuser/Desktop/FINN/finn-examples/build/finn/notebooks/end2end_example/cybersecurity/cybsec-mlp-ready.onnx
Intermediate outputs will be generated in /tmp/finn_dev_vboxuser
Final outputs will be generated in output_ipstitch_ooc_rtlsim
Build log is at output_ipstitch_ooc_rtlsim/build_dataflow.log
Running step: step_qonnx_to_finn [1/18]
Running step: step_tidy_up [2/18]
Running step: step_streamline [3/18]
Running step: step_convert_to_hls [4/18]
Running step: step_create_dataflow_partition [5/18]
Running step: step_target_fps_parallelization [6/18]
Running step: step_apply_folding_config [7/18]
Running step: step_minimize_bit_width [8/18]
Running step: step_generate_estimate_reports [9/18]
Running step: step_hls_codegen [10/18]
Running step: step_hls_ipgen [11/18]

multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 125, in worker
    result = (True, func(*args, **kwds))
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 48, in mapstar
    return list(map(*args))
  File "/home/vboxuser/Desktop/FINN/finn-examples/build/finn/src/finn/transformation/fpgadataflow/hlssynth_ip.py", line 71, in applyNodeLocal
    inst.ipgen_singlenode_code()
  File "/home/vboxuser/Desktop/FINN/finn-examples/build/finn/src/finn/custom_op/fpgadataflow/hlscustomop.py", line 356, in ipgen_singlenode_code
    assert os.path.isdir(ip_path), "IPGen failed: %s not found. Check log under %s" % (
AssertionError: IPGen failed: /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/project_MatrixVectorActivation_2/sol1/impl/ip not found. Check log under /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/vboxuser/Desktop/FINN/finn-examples/build/finn/src/finn/builder/build_dataflow.py", line 161, in build_dataflow_cfg
    model = transform_step(model, cfg)
  File "/home/vboxuser/Desktop/FINN/finn-examples/build/finn/src/finn/builder/build_dataflow_steps.py", line 499, in step_hls_ipgen
    model = model.transform(HLSSynthIP())
  File "/home/vboxuser/Desktop/FINN/finn-examples/build/finn/deps/qonnx/src/qonnx/core/modelwrapper.py", line 140, in transform
    (transformed_model, model_was_changed) = transformation.apply(transformed_model)
  File "/home/vboxuser/Desktop/FINN/finn-examples/build/finn/deps/qonnx/src/qonnx/transformation/base.py", line 111, in apply
    new_nodes_and_bool = p.map(self.applyNodeLocal, old_nodes, chunksize=1)
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 367, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/usr/lib/python3.10/multiprocessing/pool.py", line 774, in get
    raise self._value
AssertionError: IPGen failed: /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/project_MatrixVectorActivation_2/sol1/impl/ip not found. Check log under /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8

And here is log:

****** Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2022.1 (64-bit)
  **** SW Build 3526262 on Mon Apr 18 15:47:01 MDT 2022
  **** IP Build 3524634 on Mon Apr 18 20:55:01 MDT 2022
    ** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.

source /tools/Xilinx/Vitis_HLS/2022.1/scripts/vitis_hls/hls.tcl -notrace
INFO: [HLS 200-10] Running '/tools/Xilinx/Vitis_HLS/2022.1/bin/unwrapped/lnx64.o/vitis_hls'
/tools/Xilinx/Vitis_HLS/2022.1/tps/tcl/tcl8.5/tzdata/Europe/Dublin can't be opened.
INFO: [HLS 200-10] For user 'vboxuser' on host 'finn_dev_vboxuser' (Linux_x86_64 version 5.4.0-150-generic) on Fri Jan 05 11:44:57 +0000 2024
INFO: [HLS 200-10] On os Ubuntu 22.04.1 LTS
INFO: [HLS 200-10] In directory '/tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8'
Sourcing Tcl script '/tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/hls_syn_MatrixVectorActivation_2.tcl'
INFO: [HLS 200-1510] Running: source /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/hls_syn_MatrixVectorActivation_2.tcl
HLS project: project_MatrixVectorActivation_2
HW source dir: /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8
finn-hlslib dir: /home/vboxuser/Desktop/FINN/finn-examples/build/finn/deps/finn-hlslib
custom HLS dir: /home/vboxuser/Desktop/FINN/finn-examples/build/finn/custom_hls
INFO: [HLS 200-1510] Running: open_project project_MatrixVectorActivation_2
INFO: [HLS 200-10] Creating and opening project '/tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/project_MatrixVectorActivation_2'.
INFO: [HLS 200-1510] Running: add_files /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/top_MatrixVectorActivation_2.cpp -cflags -std=c++14 -I/home/vboxuser/Desktop/FINN/finn-examples/build/finn/deps/finn-hlslib -I/home/vboxuser/Desktop/FINN/finn-examples/build/finn/custom_hls
INFO: [HLS 200-10] Adding design file '/tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/top_MatrixVectorActivation_2.cpp' to the project
INFO: [HLS 200-1510] Running: set_top MatrixVectorActivation_2
INFO: [HLS 200-1510] Running: open_solution sol1
INFO: [HLS 200-10] Creating and opening solution '/tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/project_MatrixVectorActivation_2/sol1'.
INFO: [HLS 200-1505] Using default flow_target 'vivado'
Resolution: For help on HLS 200-1505 see www.xilinx.com/cgi-bin/docs/rdoc?v=2022.1;t=hls+guidance;d=200-1505.html
INFO: [HLS 200-435] Setting 'open_solution -flow_target vivado' configuration: config_interface -m_axi_latency=0
INFO: [HLS 200-1510] Running: set_part xczu7ev-2ffvc1156
ERROR: [HLS 200-1023] Part 'xczu7ev-2ffvc1156' is not installed.
command 'create_platform' returned error code
    while executing
"source /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/hls_syn_MatrixVectorActivation_2.tcl"
    invoked from within
"hls::main /tmp/finn_dev_vboxuser/code_gen_ipgen_MatrixVectorActivation_2_4npd16v8/hls_syn_MatrixVectorActivation_2.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel 1 hls::main {*}$newargs"
    (procedure "hls_proc" line 16)
    invoked from within
"hls_proc [info nameofexecutable] $argv"
INFO: [HLS 200-112] Total CPU user time: 0.78 seconds. Total CPU system time: 0.44 seconds. Total elapsed time: 0.8 seconds; peak allocated memory: 612.438 MB.
INFO: [Common 17-206] Exiting vitis_hls at Fri Jan  5 11:44:57 2024...

I'm targeting ZCU-104, so I changed code like below.. (same problem with xc7z020clg400-1 as default)
cfg_stitched_ip = build.DataflowBuildConfig(
    output_dir          = rtlsim_output_dir,
    mvau_wwidth_max     = 80,
    target_fps          = 1000000,
    synth_clk_period_ns = 10.0,
    fpga_part           = "xczu7ev-2ffvc1156", # ZCU-104 fpga part
    generate_outputs=[
        build_cfg.DataflowOutputType.STITCHED_IP,
        build_cfg.DataflowOutputType.RTLSIM_PERFORMANCE,
        build_cfg.DataflowOutputType.OOC_SYNTH,
    ]
)

Here's my environment info:
Ubuntu 18.04
Vitis, Vitis_HLS, Vivado version is 2022.1
finn repo branch is dev
I don't know how to handle error ERROR: [HLS 200-1023] Part 'xczu7ev-2ffvc1156' is not installed.
Please let me know how to resolve this error!! Thank you!

This means the board files for that part are missing. These files can be found here for example: https://github.com/Xilinx/XilinxBoardStore/tree/2022.2/boards/Xilinx/zcu104/1.1
Instructions on how to install these files can be found here https://github.com/Xilinx/XilinxBoardStore/wiki/Accessing-the-Board-Store-Repository though a manual installation should also be possible (as in https://support.xilinx.com/s/question/0D54U00007TQ6f8SAD/how-to-fix-error-hls-2001023-part-is-not-installed-?language=en_US)

Thank you for your reply.
I think I already have board files..

(path is /tools/Xilinx/Vivado/2022.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu104/1.1)
Is this not enought to prevent this error ERROR: [HLS 200-1023] Part 'xczu7ev-2ffvc1156' is not installed.?
Or do I need something more process like "registration" thing?

This means the board files for that part are missing. These files can be found here for example: https://github.com/Xilinx/XilinxBoardStore/tree/2022.2/boards/Xilinx/zcu104/1.1
Instructions on how to install these files can be found here https://github.com/Xilinx/XilinxBoardStore/wiki/Accessing-the-Board-Store-Repository though a manual installation should also be possible (as in https://support.xilinx.com/s/question/0D54U00007TQ6f8SAD/how-to-fix-error-hls-2001023-part-is-not-installed-?language=en_US)

Thank you for your reply.
I think I already have board files..

(path is /tools/Xilinx/Vivado/2022.1/data/xhub/boards/XilinxBoardStore/boards/Xilinx/zcu104/1.1)
Is this not enought to prevent this error ERROR: [HLS 200-1023] Part 'xczu7ev-2ffvc1156' is not installed.?
Or do I need something more process like "registration" thing?

Could you try to change your part name to "xczu7ev-ffvc1156-2-e"? This is also the part name that is used in the board.xml of the zcu104/1.1 board files.


Travis CI is not working due to change from travis-ci.org to travis-ci.com

[kind/bug]

What versions of software are you using?

Operating System:
Output of odo version:

How did you run odo exactly?
Actual behavior
Expected behavior
Any logs, error output, etc?

Tests currently blocked due to required Travis ci
https://docs.travis-ci.com/user/migrate/open-source-repository-migration

we have removed travis CI and instead running the integration tests on openshift CI

@girishramnani Why you closed this ?
The issue is not resolved i guess

Reopening the issue :+1: we need to have this fixed.

This is ultra ultra ultra hight prio and needs  to be fixed ASAP

What do we need to do to fix travis?

Travis will need to be authorized again to fix the tests themselves,
But for now atleast, we still cant make it blocking for tide merge.

This is no longer critical as no longer blocks prs and integration tests work fine on prow and are now enabled as blocking for merge.
But yes, considering we are going to use travis for non linux testing, we should really get the feedback working again as soon as possible
/remove-priority critical-urgent
/priority high

@mohammedzee1000 @kadel Travis job started reflecting in odo pr #1759

Now Travis CI works fine. I am closing it for now


.debug-all missing?

I was a little surprised today to find that .debug-all isn't a class provided by Tachyons, as the docs led me to believe.
Not sure if this is more appropriate for the docs repo, but I figured I would ask if this is intentional.
The CSS to make this was easy enough to find since it was inlined on the page. Depending on what is more appropriate, I'd be happy to open a pull request to either add support for this or a clarifying note to the docs.
Thanks!

Currently it is just a partial you can include during development. Adding it to core I think would be too much weight for the value outlining each element in a different color brings. I still go back and forth on whether there should be any debug classes shipped in core as a part of the compiled css. The docs are not clear about this on the site though so I'll make a note to improve the copy there. Currently it's just highlighted as a comment in the tachyons.css manifest file.


[codelab] <CAN"T INSTALL NPM packages>

after npm install, it shows ERR! find Python Python is not set from command line or npm configuration
and my command prompt full of error messages.

Hi, either you missed the step to set up your CSS preprocessor in the 'Setting up your development environment' section, or try to delete the package-lock.json and node_modules folder and run npm install
It fixed the problem for me.

gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used
gyp ERR! find Python - "python2" is not in PATH or produced an error
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if the py launcher can be used to find Python 2
gyp ERR! find Python - "py.exe" is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Python27\python.exe
gyp ERR! find Python - "C:\Python27\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Python37\python.exe
gyp ERR! find Python - "C:\Python37\python.exe" could not be run
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
gyp ERR! find Python   (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python   npm config set python "C:\Path\To\python.exe"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack     at PythonFinder.fail (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:307:47)
gyp ERR! stack     at PythonFinder.runChecks (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
gyp ERR! stack     at PythonFinder.  System Windows_NT 10.0.19041
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
"--release"
gyp ERR! cwd C:\SouthIndus Labs\Material Design Component Tutorial\material-components-web-codelabs-master\mdc-103\complete\node_modules\fibers
gyp ERR! node -v v14.15.5
gyp ERR! node-gyp -v v5.1.0
gyp ERR! not ok
node-gyp exited with code: 1
Please make sure you are using a supported platform and node version. If you
would like to compile fibers on this machine please make sure you have setup your
build environment--
Windows + OS X instructions here: https://github.com/nodejs/node-gyp
Ubuntu users please run: sudo apt-get install g++ build-essential
RHEL users please run: yum install gcc-c++ and yum groupinstall 'Development Tools'
Alpine users please run: sudo apk add python make g++
'nodejs' is not recognized as an internal or external command,
operable program or batch file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\watchpack-chokidar2\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\webpack-dev-server\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>install: node build.js || nodejs build.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:

this is the error which terminal returns.... after did that u said

I am the same issue and have done all the corrections ? What is going on here?
cmd: npm install -g<EMAIL_ADDRESS>npm ERR! code 236
npm ERR! git dep preparation failed
npm ERR! command /usr/local/bin/node /usr/local/lib/node_modules/npm/bin/npm-cli.js install --force --cache=/Users/richjagger/.npm --prefer-offline=false --prefer-online=true --offline=false --no-progress --no-save --no-audit --include=dev --include=peer --include=optional --no-package-lock-only --no-dry-run
npm ERR! npm ERR! code ENOTDIR
npm ERR! npm ERR! syscall rename
npm ERR! npm ERR! path /usr/local/lib/node_modules/homebridge-inkbird-wifi-gatewaynpm ERR! npm ERR! dest /usr/local/lib/node_modules/.homebridge-inkbird-wifi-gateway-4ACtSijX
npm ERR! npm ERR! errno -20npm ERR!
npm ERR! ENOTDIR: not a directory, rename '/usr/local/lib/node_modules/homebridge-inkbird-wifi-gateway' -> '/usr/local/lib/node_modules/.homebridge-inkbird-wifi-gateway-4ACtSijX'npm ERR! npm ERR! npm ERR!      /Users/richjagger/.npm/_logs/2023-05-13T15_18_14_334Z-debug-0.lognpm ERR!      /Users/richjagger/.npm/_logs/2023-05-13T15_18_04_272Z-debug-0.logOperation failed. Please review log for details.


Unable to write to Workspace Settings because command .. is not a registered configuration

I am trying to update StatusBar color in VScode Setting.json using the Configuration and Workspace. But when the code tries to update I am getting following error:
Error: Unable to write to Workspace Settings because workbench.colorCustomizations.statusBar.background is not a registered configuration.

here is my code:
const conf = workspace.getConfiguration("workbench.colorCustomizations");
console.log('config-->'+JSON.stringify(conf));
await conf.update( "statusBar.background", "#00AA00");

On GetConfiguration I am getting the existing StatusBar color value but not able to Update it.

You will need to do something like set the value of workbench.colorCustomizations to its current value plus your statusBar.background key added in


npm installation workflow (Master Task)

We have some really good use cases for wanting to install Reason via npm.

First and foremost, our Nuclide IDE project is built using npm packages, and we want to give first class support to Reason in Nuclide. By adding npm support to Reason, people will be able to install the entire toolchain right from inside the editor.
CI deployments, where we need to copy over entire trees of source files before beginning to build. npm supports this pretty easily.
Make it easier for JS developers to get started, since 99% of them already have npm installed, it eliminates one step.
Remove the barrier to sharing of dependencies, since even official npm packages can depend on git URLs. This means that people can commit and share experiments in a lightweight manner without requiring review, and without any special commands (they are still installed via npm install like any other package).

You can get a sense for the new workflow here:
git clone https://github.com/reasonml/ExampleProject.git
cd ExampleProject
npm install

Then the project and all its dependencies are installed, including the OCaml compiler, and Reason. You'll see a Test.exe as a result. The executables are built on the architecture, by the source, so the first time you install a project it takes a few minutes for all the dependencies.
Remaining Work

[ ]  Make editor plugins use node_modules for plugin source, merlin, and reason
[ ]  Create automatic adapter for opam packages so that we could:

Have a script that automates packaging up opam packages as npm dependencies.
Or eventually (not immediate goal), have the package manager resolve opam dependencies on the fly using the official opam repo.
(Much longer term), convert an npm package back to opam.

[ ] Include a lighter weight top level

bs-platform + reason-cli get this done :)


Unknown platform. Failed to find Elite Dangerous install directory

Unknown platform. Failed to find Elite Dangerous install directory

Looks like you are missing an end quote in your steam launch options.
cmd /c "MinEdLauncher.exe %command% /autorun /autoquit /edh"

Thank you that is correct !
I think the documentation should have the default be launching of Odyssey (or specify the most popular)
Specifically in readme.md
Section Usage Setup Steam 4.
iv. Windows users - Set the value to cmd /c "MinEdLauncher.exe %command% /autorun /autoquit /edh4"
And in the file included in the release
4. Windows users - Set the value to cmd /c "MinEdLauncher.exe %command% /autorun /autoquit /EDH"
4. Windows users - Set the value to
    for ED:Odyssey `cmd /c "MinEdLauncher.exe %command% /autorun /autoquit /EDO"`
    for ED:Horizons `cmd /c "MinEdLauncher.exe %command% /autorun /autoquit /EDH4"`

Lastly, is there a way to not show, or hide the command console ?
thanks !

Lastly, is there a way to not show, or hide the command console ?

You can run the launcher directly instead of through cmd. MinEdLauncher.exe %command% /autorun /autoquit /edo Note that you won't see any feedback unless you open your log file. If FDev servers are running slow or game files are being updated, it might look like it's just not launching the game.
I don't have a windows machine available at the moment to test, but you might also be able to launch the game via start instead of cmd. start /min MinEdLauncher.exe %command% /autorun /autoquit /edo.
You might have to play around with quotes (e.g. around %command%) since there's a space in your path to the elite dangerous folder.

Thanks I tried with start but
with command
start /min "MinEdLauncher.exe %command% /autorun /autoquit /EDO"

Also there is this other choice that comes up when you start the game, any idea how to set it to auto select "Play Elite Dangerous" and stop asking ?

Thanks !

Same issue here "Unknown platform. Failed to find Elite Dangerous install directory".
MinEdLauncher.exe in the exact same folder as EDLaunch.exe

Thanks I tried with start but
with command start /min "MinEdLauncher.exe %command% /autorun /autoquit /EDO"

start might be one of windows' special commands. You might have to try launching it via cmd first or creating a batch file that you launch instead of cmd.

Also there is this other choice that comes up when you start the game, any idea how to set it to auto select "Play Elite Dangerous" and stop asking ?

As far as I know, that's a steam specific thing that you can't get rid of. If you do figure out how to auto select that box though, I'd be interested to know.

Same issue here "Unknown platform. Failed to find Elite Dangerous install directory".
MinEdLauncher.exe in the exact same folder as EDLaunch.exe
Edit: It actually works when I start through the Steam Library, setting the launch option. But, then, I use this to have many shortcuts to start ED in VR and flat both in Odyssey and Horizon Legacy. I'm quite sure it's a common use case. And it used to work just fine before we had these last versions released.
Soooooo. Is there a way to make it work like that again? Can we have multiple shortcuts pointing to different game options? Am I missing something here?

I've created a new issue for your specific issue at #82.


Clarifying Documentatino

As I go through this getting-started I am going to clarify some small points in the documentation.
Also, removing trailing spaces.

 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.You have signed the CLA already but the status is still pending? Let us recheck it.


change: drop references to sidechain-main-cli-image

Description
Drop references to sidechain-main-cli-image which isn't exposed by partner-chains-smart-contracts anymore.
Checklist

[ ] Commit sequence broadly makes sense and commits have useful messages.
[ ] New tests are added if needed and existing tests are updated.
[ ] Relevant logging and metrics added
[ ] CI passes. See note on CI.
[ ] Any changes are noted in the changelog.md for affected crate
[ ] Self-reviewed the diff

Corresponding PR from partner-chains-smart-contracts - https://github.com/input-output-hk/partner-chains-smart-contracts/pull/89


Prepare for 3.2.0.Final keycloak deployment

Modified git clone steps to use the tag
Modified the dist name referred to, in Dockerfile
Modified the standalon-*.xml files to keep the changes made by "OpenShift.io team", but discarded the changes specific to wildfly versions.

compiled and created https://hub.docker.com/r/sbose78/keycloak-3.2.0
deployed on http://keycloak-test-kc.dev.rdu2c.fabric8.io

Tested out the following

token generation using grant_type=password
Space creation  :  ./bin/wit-cli create space --key $ALM_TOKEN  --payload '{ "data":{ "type":"spaces" ,  "attributes":{"name":"testuser-space-1"}}}' -H localhost:8080 --pp This covers a lot of endpoints.
Collaborators : ./bin/wit-cli add collaborators --key $ALM_TOKEN  --spaceID "5d8165b7-e07d-463d-b940-111fb2aae3dd"  --identityID "ac5a1aee-1aae-4bbb-a21a-0f1e4d081a46"  -H localhost:8080 --pp
Login : Tested out login using Facebook.
Linking : Tested out linking github.

[test]

A couple of kerberos related tests are failing .

@sbose78 I don't know why but these tests always fail here. It's not critical bc the same tests pass in fabric8-services/keycloak in Travis. Don't know why the same tests fail in centos-ci.
So, it's not a blocker for this PR but we need to investigate and fix it (separately).

@sbose78 - Firstly, apologies for writing here as my question is not directly related to this PR.
Im interested in using sbose78/keycloak-3.2.0. However, I couldnt find the source for this. I am trying to understand what env vars are needed to run this in Openshift. Can you help?

Hi @magick93 , Do you mind heading over to the #keycloak  irc channel on freenode ? I could assist you there :)

Hi @hectorj2f , I took in the changes from the standalone-*.xml created in the distribution/server-dist/target/keycloak-3.2.0.Final/standalone/configuration/standalone.xml . That's where the changes in version ( downgrading ) was present. I'm guessing the downgrading is because they moved to wildfly 10 instead of 11 ?

Did the following after making the recent changes :

created an image by doing a $ docker build --tag sbose78/keycloak-3.2.0 .
deployed it on the dev cluster
check the server version deployed from the keycloak UI ( to ensure its really 3.2 ;) )
ran tests against fabric8-wit & tried out space creation.

All looks GREEN to me.
Is this the right way to test , @hectorj2f  ?
I was wondering if I should deploy the image which was generated as part of this PR's CI kick-off ?

@sbose78 if you play with fabric8-platform and it worked it is good. But, perhaps, we could also try in clustered mode.

lgtm


Move to and use the meta

the sidebar.js has dates in the code
		// TODO: cleanup
		let ldName = "Ludum Dare 42";
		let ldStartDate = new Date(Date.UTC(2018, 7, 10, 22, 0, 0));

		let compoEndDate = new Date(Date.UTC(2018, 7, 12, 22, 0, 0));
		let compoEndDate2 = new Date(Date.UTC(2018, 7, 12, 23, 0, 0));

		let jamEndDate = new Date(Date.UTC(2018, 7, 13, 22, 0, 0));
		//let jamEndDate2 = new Date(Date.UTC(2018, 7, 13, 23, 0, 0));
		let jamEndDate2 = new Date(Date.UTC(2018, 7, 14, 22, 0, 0));

		let gradeEndDate = new Date(Date.UTC(2018, 8, 4, 20, 0, 0));
		let resultsDate = new Date(Date.UTC(2018, 8, 4, 24, 0, 0));

Some of these already exists on the featured node and its meta. I would propose we add the rest to the meta as well asap. That would unlock working on other aspects of the code that require knowledge of these times.
Meta currently holds event-start event-end that could replace ldStartDate and jamEndDate. The ldName can be gotten directly from from the featured node. But perhaps better than using the existing event-end  introduce:
event-compo-end event-compo-end-submission event-jam-end event-jam-end-submission event-grading-end event-results-show?
If only event-end exists then use that and event-end-submission (if exists) else use the jam/compo varieties.
My only concern is that we have no event editor and it is starting to become quite a few things to put into the db. Now that there's also event-join-page in #1765

It also makes quick tuning when things go wrong much easier since it doesn't require code update, only db-update.

Just to note. We'll spoof this in $Calendar.Get in shrub on the js side while waiting for a real api.


Spam detection

I would like to add a project for spam detection.
Here, I would take sample data from datasets and then detect whether it is a spam data or not.

6 days has passed by... There is no discussion on this issue

Can you describe what dataset are you going to use?

Can I work on this issue?


Smoother preview animation

Make the preview JSON animation smoother instead of just revealing it.

@mezotv I would like to work in this

@mezotv I would like to work in this

Sure sounds good!

How's it going so far @Rounak-28


chore(deps): upgrade dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-main" workflow

Codecov Report

Merging #260 (9a054fa) into main (2974dfe) will increase coverage by 8.93%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #260      +/-   ##
==========================================
+ Coverage   83.33%   92.26%   +8.93%
==========================================
  Files           2        1       -1
  Lines         126      349     +223
  Branches       31       34       +3
==========================================
+ Hits          105      322     +217
- Misses         21       27       +6

Impacted Files
Coverage Δ

src/index.ts
92.26% <100.00%> (+10.26%)
:arrow_up:

example/src/main.ts

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 526f870...9a054fa. Read the comment docs.


Making Siterwell TRVs using presets modes

Future changes for the TRV:

Making the quirk using presets Away, Schedule and Manual instead of system mode (the TRV is not supporting on/off its always working)(need adding Siterwell presets in ZHA) and ZHA is not supporting Schedule (Schedule_programming_mode) as system mode only as occupancy presets.
Deleting in device not implanted attribute:
SITERWELL_VALVE_STATE_ATTR = 0x026D  # [0,0,0,55] opening percentage
Adding in device supported attribute:
SITERWELL_WINDOW_ALARM_ATTR = 0x0411  # [0] clear [1] alarm
SITERWELL_VALVE_JAMMED_ATTR = 0x0413  # [0] clear [1] alarm
but not in the ZHA GUI (upcoming).
Adding switch for SiterwellChildLock in ZHA GUI but its only working setting.
Adding max and min heating so ZHA is showing the right scale.
Deleting "electric" then is one copy and paste from the original electric heating thermostat that is having one own quirk.

Missing upcoming futures for the TRV:

Switches with status update from the local state shall being implanted for window and valve detect.

Status sensor for "window is open" and "valve is jammed" shall being implanted.

Battery attribute with type and quantity shall being implanted (AA and 2 or 3 batteies for new TRV types).

Away mode is showing idle in ZHA without setpoint temperature but it can being set on the TRV or by cluster attribute.
Look at https://github.com/zigpy/zha-device-handlers/discussions/1084 for more information.

Its look like this is one dead end for all Siterwell TRVs is staying with 75% broken functionality ;-(


Add a formatting script for Travis CI

This is a simple script which automatically checks and corrects file formatting to comply with POSIX standards. The POSIX standard for text files says that text files have lines delimited with newline characters and the file ends with a newline character. GitHub shows warnings in the diffs when files don't end with newline characters.
To run on Travis, this repo needs to be added on the Travis CI website (optional). The formatting script can also be run locally to fix formatting, which I did with the 2nd commit.
Starting with Godot 3.2, Godot will automatically ensure files end in newlines with its internal editor, but this script can help with fixing up old files, and ensuring this is done with all text files.

Thanks a lot!


[FEATURE]Product page- add side button '+ Colors' on mobile

Related to the issue #406
Describe how this feature will help us improve
Easy and quick way of choosing color of product
Describe the solution you'd considered
Add side button '+ Colors' on mobile product page as below:

After pressing the '+ Colors' button a list of available colors of the product appears as below:

After pressing color, the choice is remembered as long as user is on that product page. Then if user adds the product to the cart, the product is added with chosen color.
Acceptance criteria

[ ]  the '+ Colors' button is added to the product page on mobile
[ ] after pressing the '+ Color' a list of available colors appears
[ ] chosen color is remembered as long as the user is on that product page
[ ] pressing the x sign at the bottom of the list closes it
[ ] after choosing the color, when user adds the product to the cart, it is added with tat chosen color

@akrajna can you add Feature issues at Storefront UI?

related link https://github.com/DivanteLtd/storefront-ui/issues/949


bitcoin regtest testcontainer should be reachable via tor

Make bitcoin testcontainer available via onion address.
-> Interfaces
ipv4: reachable
ipv6: reachable
onion: unreachable

Not really needed anymore. Reopen on demand.


#1147 Allow disconnect on rebalance, currently if trying to rebalance kafka…

Trying to fix the bug where if we call disconnect on kafka consumer and a rebalance is  in process then the disconnect does not work.
https://github.com/tulios/kafkajs/issues/1147

@tulios @Nevon
This pull request will allow the consumer to call disconnect with an optional parameter allowReconnectAfterRebalance.
if allowReconnectAfterRebalance is set to false, then if the consumer calls disconnect while a rebalance is occurring then the rebalance wont automatically reconnect the consumer.
It does not change the default or affect any of the default behaviour that kafkajs provides it should not cause any problems to existing code.
Given the way the unit tests are structured I am unsure about the way to engineer a unit test. Any reccomendations would be appreciated.
typescript definitions are updated.
Please give me advice on how to get this pull request accepted.
Thanks in advance for your time.


Constraining annotation subject to transcript level variants for Molecular Consequence

Should we require that a 'transcript-level' variant as the subject for this annotation type (and perhaps other VA types)?
Some data sources will enforce this and provide only transcript-level variants (e.g. ClinGen). Others will not enforce this (e.g. GeL/Cellbase) and provide genome-level variants  - but these should always be qualified/contextualized by a specific transcript where the reported consequence occurs.
Consider implementation and modeling challenges if we do vs do not enforce this constraint in our model.
If this is not constrained at point of data creation (e.g. data creators can use genomic  or transcript or protein level variants as subjects of Molecular Consequence), then normalization needs to be done downstream.

post-processing of GA4GH compliant data to convert genomic representations (plus transcript qualifiers) to a transcript representations
expansion of queries for transcript variant to also query for all genomic variants that it can derive from, and all protein variants it can derive into.
Ideally we would create/provide a service that automates any necessary post processing - through transformation/normalization of the data, or expansion of the query.

Additionally, NOT constraining variant type to the transcript level creates a modeling challenge in that a transcript qualifier on the primary statement becomes necessary in cases where a genome-level variant is used as the subject.
If, however, variant normalization to a specific sequence type is enforced at data creation, we avoid these issues, but place a burden on data creators. We may need to provide some support / service for source data using genome or protein level variants to facilitate/automate the conversion of these to transcript-level representations.

This issue touches upon is the balance between too much flexibility (good for adoption, bad for interoperability) and too little (makes adoption harder but improves out of the box interoperability). I think we need a deeper understanding about the primary use case(s) for the model, how DPs anticipate populating the model with their data, and how much flexibility we need to support in cases like this.
We may want to walk through data examples in our catalog and consider problems that we may encounter if require transcript level variant (e.g. GeL and CG to walk through their data examples, and how they would transform to the standard if we do constrain variant type, or create molecular consequence value sets that are too strict)

w.r.t. the 'variant normalization services' alluded to above, the ability to identify 'equivalent' or 'related' variants at different levels is fundamental to many use cases in GA4GH, ClinGen, other integration efforts - it is absolutely necessary to enable integration and exchange of variant knowledge and support operations on integrated data sets.
And an ability to support queries at different levels of aggregation/expansion (i.e. casting wider net if results from small net not sufficient) is a related but also critical function.
e.g. patient has variant X, but no relevant data for this specific variant found.  Expand search to pull data about variants that affect same aa, same exon, same functional motif in the resulting protein, same gene, etc.

I like the category definitions that you developed during the review of molecular consequence.  I think it may be helpful to recognize that they require different types of information bundled together to make a statement.
Ref my previous comment, where I suggested that these terms require an allele AND a sequence AND a set of annotations.

Variation class: requires a comparison between two sequences (a reference and an alt sequence), each containing a different allele
Affected feature type: requires the location of a specified allele (but not necessarily the allele itself) on a specified sequence with a given set of annotations
Processing consequence: requires a specified reference sequence (containing one allele) that has a given set of annotations, an alt sequence (containing the other allele) with the same set of annotations, and a predicted processed sequence for both the ref and alt sequences
Feature consequence: requires a comparison between two sequences (a reference and an alt sequence), each containing a different allele, with a given set of annotations

I find it is helpful to think about the entities and relationships that would be required to make each of these assertions when trying to decide how they might differ at the model level, but YMMV.


Error of "At least 1 small equation solver pivot term(at UZ dof of node 1876), Check for an insufficiently constrained model

🤓 Before submitting the issue

[X] I have visited the Troubleshooting section.
[X] I have searched among the existing issues.
[X] I am using a Python virtual environment.
[X] I am using the latest version of PyMAPDL and its dependencies (fully updated virtual environment). You can update them using pip install --upgrade --upgrade-strategy eager ansys-mapdl-core in your activated virtual environment.

🔍 Description of the bug
I have been trying to simulate basic thermal analysis to my imported model. I am getting insufficiently constrained model error, which is mentioned in detail. A few people said that there is a problem with boundary cond. in uz direction, but I thought that I constrained it in script.
Glad to hear solutions from you guys
🕵 Steps To Reproduce
import tikzplotlib
import numpy as np
import pyansys
import matplotlib as plt
import markdown
import trame_vuetify
import rich
import meshio
from ansys.mapdl.core import launch_mapdl
from ansys.mapdl import core as pymapdl

license_type='mech_2'
mapdl=launch_mapdl(license_type=license_type)

mapdl.aux15()
mapdl.igesin(fname='cs_12_dev',ext='igs')

mapdl.vplot(show_lines=True)

mapdl.finish()
mapdl.prep7()
mapdl.mp("kxx",1,5)
mapdl.mp("kyy",1,30)
mapdl.mp("kzz",1,10)
mapdl.et(1,"SOLID187")
mapdl.vmesh(1)
mapdl.allsel()
mapdl.eplot()

mapdl.asel("S",vmin=3)
mapdl.nsla()
mapdl.d("ALL","UX","TEMP",5)
mapdl.asel("S",vmin=4)
mapdl.nsla()
mapdl.d("ALL","UZ","TEMP",5)
out=mapdl.allsel()

mapdl.vsweep(1)
mapdl.run("/SOLU")
mapdl.solve()
out=mapdl.finish()

mapdl.post1()
mapdl.set(1,1)
mapdl.post_processing.plot_nodal_temperature()

💻 Which Operating System are you using?

WARNING: Ignoring invalid distribution -rpcio (c:\users\bahadirmurat\anaconda_last\lib\site-packages)
WARNING: Ignoring invalid distribution -nsys-mapdl-reader (c:\users\bahadirmurat\anaconda_last\lib\site-packages)
WARNING: Ignoring invalid distribution -illow (c:\users\bahadirmurat\anaconda_last\lib\site-packages)
📝 Logger output file
The error I got:

MapdlRuntimeError                         Traceback (most recent call last)
Cell In[48], line 3
1 mapdl.vsweep(1)
2 mapdl.run("/SOLU")
----> 3 mapdl.solve()
4 out=mapdl.finish()
File ~\anaconda_last\lib\site-packages\ansys\mapdl\core_commands\solution\analysis_options.py:3450, in AnalysisOptions.solve(self, action, **kwargs)
3430 """Starts a solution.
3431
3432 APDL Command: SOLVE
(...)
3447 in the first phase of a linear perturbation analysis.
3448 """
3449 command = f"SOLVE,{action}"
-> 3450 return self.run(command, **kwargs)
File ~\anaconda_last\lib\site-packages\ansys\mapdl\core\mapdl.py:3004, in _MapdlCore.run(self, command, write_to_log, mute, **kwargs)
3001     return self._response
3003 if not self.ignore_errors:
-> 3004     self._raise_errors(text)
3006 # special returns for certain geometry commands
3007 short_cmd = parse_to_short_cmd(command)
File ~\anaconda_last\lib\site-packages\ansys\mapdl\core\mapdl.py:4019, in _MapdlCore._raise_errors(self, text)
4017 # flag errors
4018 if "*** ERROR ***" in flat_text:
-> 4019     self._raise_output_errors(text)
File ~\anaconda_last\lib\site-packages\ansys\mapdl\core\mapdl.py:4091, in _MapdlCore._raise_output_errors(self, response)
4085     continue
4086 else:
4087     # We don't need to log exception because they already included in the main logger.
4088     # logger.error(response)
4089     # However, exceptions are recorded in the global logger which do not record
4090     # information of the instances name, hence we edit the error message.
-> 4091     raise MapdlRuntimeError(
4092         f"\n\nError in instance {self.name}\n\n" + error_message
4093     )
MapdlRuntimeError:
Error in instance GRPC_<IP_ADDRESS>:50052
*** ERROR ***                           CP =      12.344   TIME= 08:37:36
There is at least 1 small equation solver pivot term (e.g., at the UZ
degree of freedom of node 1876).  Please check for an insufficiently
constrained model.
    CUM ITER =      1
*** TIME =   1.00000         TIME INC =   1.00000      NEW TRIANG MATRIX

Hi @bahadir14
This should be asked in the Discussion section as it is not an PyMAPDL Issue i.e. not a bug.  Or a feature request.  Onto the code, the "TEMP" in the two D commands does not make sense:
mapdl.d("ALL","UX","TEMP",5)
mapdl.asel("S",vmin=4)
mapdl.nsla()
mapdl.d("ALL","UZ","TEMP",5)

TEMP is not defined in the script.   Also a boundary condition for UY is missing.  Lastly why is nodal temperature (as a degree of freedom) being post-processed on a structural element only model?
MIke


Add support for LLVM 12

Fixes #10434
All credit to @maxfierke

Hah was hoping to get back to this at some point but distracted myself with the shiny arm64 stuff. I think I got hung up on something in codegen that was breaking with struct returns, so unless something has changed elsewhere, that will probably still need to be addressed?

@maxfierke Haha no problem :) I've been using this patch locally as llvm on arch has updated to 12 and can't say I've encountered any problems.  I guess we'll let CI be the judge of it.

So compiler specs actually do fail when compiled with LLVM 12 :/
Invalid memory access (signal 11) at address 0x8
[0x55d3d5496816] *Exception::CallStack::print_backtrace:(Int32 | Nil) +118
[0x55d3d528a82c] ~procProc(Int32, Pointer(LibC::SiginfoT), Pointer(Void), Nil) +316
[0x7fc916ff2870] ???
[0x7fc918b089b6] _ZN4llvm15ValueEnumerator13EnumerateTypeEPNS_4TypeE +246
[0x7fc918b0b0e3] _ZN4llvm15ValueEnumerator19incorporateFunctionERKNS_8FunctionE +211
[0x7fc918af59cd] _ZN4llvm13BitcodeWriter11writeModuleERKNS_6ModuleEbPKNS_18ModuleSummaryIndexEbPSt5arrayIjLm5EE +4861
[0x7fc918af9491] _ZN4llvm18WriteBitcodeToFileERKNS_6ModuleERNS_11raw_ostreamEbPKNS_18ModuleSummaryIndexEbPSt5arrayIjLm5EE +257
[0x7fc918adf16c] LLVMWriteBitcodeToMemoryBuffer +188
[0x55d3d63fe9aa] *LLVM::Module#write_bitcode_to_memory_buffer:LLVM::MemoryBuffer +10
[0x55d3d64905bc] *Crystal::Compiler::CompilationUnit#compile_to_object:(LLVM::Module | Nil) +284
[0x55d3d6490363] *Crystal::Compiler::CompilationUnit#compile:(LLVM::Module | Nil) +51
[0x55d3d5288216] ~procProc(Nil) +550
[0x55d3d55b1b6e] *Fiber#run:(IO::FileDescriptor | Nil) +174
[0x55d3d52846b6] ~proc2Proc(Fiber, (IO::FileDescriptor | Nil)) +6
[0x0] ???
/usr/bin/ld: _main.o: in function `~procProc(Int32, Int32, LibMylib::Struct)@spec:12':
main_module:(.text+0xe3fd): undefined reference to `*struct.LibMylib::Struct::new:struct.LibMylib::Struct'
/usr/bin/ld: G-lobal.o: in function `*Global::x:Int32':
Global:(.text+0x3): undefined reference to `Global::x'
/usr/bin/ld: G-lobal.o: in function `*Global::x=<Int32>:Int32':
Global:(.text+0x15): undefined reference to `Global::x'
collect2: error: ld returned 1 exit status
Error: execution of command failed with code: 1: `cc "${@}" -o /tmp/cr-spec-504bb544/spec_helper.cr/crystal-spec-output  -rdynamic /tmp/cr-spec-504bb544/extern/temp_c.o -lpcre -lm -lgc -lpthread -levent  -lrt -ldl`
make: *** [Makefile:89: compiler_spec] Error 1

However, probably doesn't block merging as it's limited to this one specific use case?

I think struct returns are fairly important for some C lib bindings

More so meant it could be fixed in another pr. Of course that should be done before saying llvm 12 is officially supported.

Updated w/ the struct return stuff ironed out in 31a8aa2, passes the whole compiler suite now


Pomodoro timer conflicts when started from web and using desktop

Steps to reproduce the bug:

Having installed OSX Client and Web Chrome Toggl Button
Login in both
Activate Pomodoro, and set timer (e.g. 25min)
Start a task in desktop app, stop it before 25 min (e.g. 23 min)
Start another task via web app, it doesn't start the Pomodoro timer again (as it should), but takes into account last task, so it will stop automatically around only 2 min of work.

What version are you using? This issue should be solved in latest beta (7.3.325).

Oh ok, I'm on 7.3.319.
Downloading new version…

Moved to the Beta channel, tested same steps, solved. Thanks!