'Flatten' state objects

Right now it can be awkward to work with nested state objects, especially if you don't know how deeply nested they will be, because in order to correctly access the value you need, you also have to manage a lot of observers to make sure you catch when one of the state objects at any level changes value.
We should probably implement this as a new kind of state object, which can take in any existing state object and output the innermost value obtained by unwrapping as many times as possible (or perhaps a configurable number of unwraps).

It's worth noting that in 0.3, it's less cumbersome to do thanks to #35. You can (finitely) unwrap something using nested use calls:
local parcel = Value(Value(Value("toothbrush")))
local unwrapped = Computed(function(use)
    -- unwraps up to five layers
    return use(use(use(use(use(parcel)))))
end)
print(peek(unwrapped)) --> toothbrush

You could perhaps unwrap an indefinite number of layers using a loop; this is definitely not ergonomic though.

Relates to #142

Ah yes. I think it'll be worth addressing the points I made previously there. For clarification, that previous issue related to implicit flattening in :get(), and in applyInstanceProps. The latter relates to #235, while the former relates more to this proposal.

This is a large complication - When Fusion detects a state object being passed in, right now it just sets up an observer and applies changes to the values as they come in. Making this behaviour recursive increases overhead for new learners trying to understand how Fusion works, and has the potential to massively increase the complexity of Fusion under the hood, as multiple observers will have to be created and juggled in what is one of the most critical parts of the API.

I still maintain that changing use/peek to flatten state objects would be far too heavy handed. I think it's about 50% true for applyInstanceProps, so I'm open to being convinced there one way or the other. Explicit flattening makes this an opt-in operation, so any complication is entirely opt-in. This works better in my mind.

This obscures the true shape of code - I do not think a double :get() is ugly in the slightest. Instead, I think it is an honest reflection of the structure which this code is dealing with. It quickly and effectively communicates what we expect position to contain - a nested object - and there is very little room for misinterpretation here. If we recursively evaluated state objects like this, we could be encouraging users to write code that is more writable yet less readable, by encouraging users to write code that doesn't reflect the structure that it operates upon. Writability is heavily discounted throughout Fusion's design and readability is emphasised, so I do not like the implications of this change.

I think this is true, and another reason why explicit flattening works better.

This assumes intent where intent is not guaranteed - there are two sides to this coin. We may be making it easier to intentionally accept nested values, but we would also be making it much, much easier to unintentionally unwrap nested values too. If we made :get() recurse, then how do you specify what you actually want Fusion to unwrap? What about if something in your code goes wrong and you accidentally pass in a nested state object - could this wreak havoc on a codebase silently? This will necessarily increase the overhead of working with :get() by adding considerations that could extend to every single use of :get(). It also requires weakening the strict behaviour of state objects in general, leading to code that is harder to reason about and harder to make guarantees about.

Still true. Explicit flattening removes the intent problem. This is why I'm iffy about applyInstanceProps flattening implicitly.

This puts extra work on third party library developers - We intentionally want to keep standardised interfaces as simple to implement as reasonably possible, so that we can encourage the development of third-party libraries that duplicate as little functionality as possible and which behave as predictably as possible. By keeping the definition of :get() simple, essentially acting as a pure getter, we impose almost no burden on third party library developers to get that behaviour working correctly and reliably. If we extended the specification of :get() to mandate recursive unwrapping, we would now be asking all third party library developers to implement this specifically defined behaviour exactly to spec. This is a bad approach - if we need something done consistently across all projects, Fusion should implement it on it's own rather than pushing it onto a spec.

Explicit flattening works with all state objects by default.

This would have deep implications internally - :get() is meant as the standard, universal way to get the value of a state object directly. It's designed like this to decouple the inner function of a state object from Fusion entirely. A lot of Fusion code depends on this fact internally. If we were to start modifying the behaviour of this highly fundamental API surface, we would have to consider not only how this will change the behaviour of internal APIs, but also whether we need to surface new parameters, and how would be the best way of approaching that if so. This is not a simple change to make, and so we would need very good and crystal clear motivation to change this. This would also have implications on some big upcoming paradigm shifts like use/unwrap, which were designed with the express intent of removing all special functionality from :get().

Explicit flattening makes this a non-issue, as introducing explicit flattening does not change existing behaviour.

Design should be simple enough for this. Either we could introduce a peek() or use()-style callback, or alternatively a Flatten state object. Probably not both.

This can be trivially implemented as a function;
local function flatten<T>(
    use: Use,
    thing: CanBeState<T>
): T
    while isState(thing) do
        thing = use(thing)
    end
    return thing
end

I suggest we go for this function implementation first, and only create a full state object if it becomes a common pattern.

Upgrading the importance of this feature request because #301 may increase the frequency of code that needs to deal with an unknown level of state object nesting.


Feature request - subtype support for member predicates

I'm working on migrating helm charts to Pkl and the way I've structured my shared code leverages a Listing<K8sResource> (pkl-k8s) that various pipe functions amend to add features, e.g. a database pipeline adds database env vars, ConfigMaps, and initContainers.
Summary
Quick pseudocode to show the general idea:
class Resources {
  environment: Environment

  k8sResources: Listing<K8sResource>
}

function getPostgresPipeline(databases: Listing<PostgresDatabase>) = (resources: Resources) -> (resources) {
  local environment = resources.environment
  k8sResources {
    [[kind == "Deployment"]] {
      spec {
        template {
          spec {
            initContainers { ... }
          }
        }
      }
    }
  }
}

new Resources { environment = getEnvironment(props) }
  |> getPostgresPipeline(environment.postgresDatabases)
  |> (resources: Resources) -> resources.k8sResources

This works, but the Deployment object I'm amending doesn't know it's a Deployment object, so my IDE can only autocomplete the K8sResource attributes apiVersion and kind.
Requested feature
Subtype syntax - [[is Deployment]] {} or [[kind == "Deployment"] as Deployment] {} where the subtype is known in the following amend block.
It's definitely workable as is but it would be a nice quality of life enhancement.
Thanks for the great work on this!

Does [[this is Deployment]] do the trick?

The one syntax variation I didn't think of! That does it. Thanks!

Does the IDE also "understand" it?

Mostly, though I am seeing a gap within the predicate itself
[[this is ConfigMap && metadata.name == environment.resourceName("app-env")]] {

On that line there's a warning "Unresolved reference: metadata" but on the next line it autocompletes fine

Probably worth filing an issue in pkl-intellij.


Fix predicate pushdown for identity projections

I think this fixes https://github.com/prestosql/presto/pull/1114


[FEATURE] Make it possible to configure the access level of toBuilder

Builder(toBuilder = true) is a great feature for making copies of large objects, modifying them along the way.
The method is convenient when practicing "rich domain models", more or less like this (very sketchy code ahead):
@Builder(toBuilder = true)
@Value
class Garage {
    ...
    Garage parkCar(Car car) {
         Garage copy = toBuilder().addCar(car).build();
         copy.checkInvariants();
         return copy;
    }

    private void checkInvariants() {
        if (this.parkedCars.size() > this.capacity) {
             throw new TooManyCarsException();
        }
    }
}

The problem is that currently there's no way to reduce visibility of #toBuilder().
Which defeats the point in a way, making it possible to construct an object in an illegal state (from the business logic point of view), bypassing the "official" ways of construction.
Adding a modifier, something like @Builder(toBuilder = true, toBuilderAccess = AccessLevel.PRIVATE), would be very beneficial.
P.S.: Thanks for the great job you are doing and all the effort! :)

You may check your invariants in the constructor. The only issue then is that you have to write the constructor yourself.


Please invite me to the GitHub Community Organization

Name
Avid Coder
Discord Username (if applicable) E.g John#412
No response
Questions & suggestions?
I'd love to contribute (:

Welcome to the community @AvidCoder101 !🥳
You can start your first contribution to the Practice Contribution repository.

Welcome to the community @AvidCoder101 😎


KeyRepeat event requested

Currently there is no way to determine whether or not a KeyPressed event represents the first time a key was pressed or if it is an operating system-generated key repeat event (apart from storing the key state in a boolean and trying to work it out yourself).  This information is typically provided with the event notification that is received from the operating system, and it would be nice if it could be passed on from SFML to the end application.  Sometimes this information is encoded as a boolean repeat value, but using a KeyRepeat event would be easier since the KeyEvent struct would not have to be modified; also, it would be a cleaner approach since a repeat field in the struct would be meaningless for KeyReleased events.

Please take a look at the contribution guidelines. We try to keep this track for confirmed bugs, issues and feature requests and use the forum for questions and discussions.


Two encode jobs get started at the same time

Ripping Blurays, had the same problem with HDVDs, it appears the part of the script that calls Handbreak doens't check if Handbreak is already encoding so I constantly have two jobs running which makes things take a lot longer.
Not sure what you need from me to troubleshoot things.

This is intended behavior.  The ARM scripts calls the transcoding command with "batch" which waits until the system load is below 1.5 and then queues the next transcoding job.    This is not going to be perfect for every system but overall I think it's a good compromise between running everything in serial and not maximizing the cpu and running it all in parallel and it takes forever to finish transcoding.
The only way I can think of to make this better is to use the atd command instead of batch where you can specify the desired load before the command executes instead of the default of 1.5.

Thanks for the explanation. I'm using a 4 CPU VM to do my transcoding so there must have been spare CPU cycles lying around.

Hmmm.  I bet both jobs are in the queue waiting and finally when the CPU drops below 1.5 both jobs launch at the same time.

That's my guess as well based on your explanation of how the batch process works.


⚠ Adacta-fintech.com has degraded performance

In 3796015, Adacta-fintech.com (https://www.adacta-fintech.com) experienced degraded performance:

HTTP code: 500
Response time: 9080 ms

Resolved: Adacta-fintech.com performance has improved in b25f513 after 9 minutes.


Button elevation doesn't work

I'm using app:carbon_elevation="@dimen/carbon_elevationMax" on a carbon.widget.Button but nothing happens, there isn't any shadow. The other stuff like ripple works fine.
I'm working with API 14. What am I missing?

Are you using Carbon layouts? You have to replace android.widget.* layouts with carbon.widget.* counterparts. It's not the Button what is drawing its shadow but a parent layout.

Oops, sorry, my bad, I didn't know that. Now it's working perfectly. Thank you!


docs(pipable-operators.md): update for RxJS 6

Description:
I've noticed some people on StackOverflow referring to this document and being surprised why it doesn't work with RxJS 6 (mostly when importing "creation" methods).

Hey, great idea to update the pipeable-operator docs, but would you like to update the new docs? There is a folder docs_app. This one is used for the new docs (see: https://rxjs-dev.firebaseapp.com/). I would really like to see that becoming part of the new documentation. If you have any question to that, don't hesitate to ask me.

I guess, for now at least, we can remove documentation about importing them individually. There are a few ways, but we don't want people to import from locations under internal.
@martinsik can you do that, please?

@benlesh Ok, I removed that paragraph.

@JWO719 ... can we land this, then just move the file to the new docs app?

Thanks, @martinsik!


explicitly set inputs to a blank list on put steps that don't need them

What are the relevant tickets?
Closes https://github.com/mitodl/ocw-studio/issues/1938
Description (What does it do?)
This PR fixes an issue caused by not explicitly setting inputs to a blank list on objects of type PutStep. By default, the put step pulls in all outputs as inputs which causes major issues if any steps in the pipeline are outputting large amounts of data.
How can this be tested?
This cannot actually be tested locally, because volume streaming is not a thing when running Concourse through Docker.
Additional Context
This issue was found while testing the new MassBuildSitesPipelineDefinition in RC, where volume streaming is enabled and sites with large amounts of archive videos exist.

@pt2302 I added the test


Directory "examples/data" disapper

Describe the problem you are trying to solve.
I'm new to or-tools,when i try to run some examples,find that some examples don't have data which mentioned in the code comments.Then I review at tag v9.3,it did has data files in directory "examples/data".I don't know why it been deleted?
Describe the solution you'd like
I wish you can re-add these examples data.Beacuase this help newer more easy to learn how to use or-tools.

Too big for simple users and too big cumulatively for GitHub

see https://or-tools.dev/data


About the repeating

Happy Mid Autumn @ssb22 first of all, 中秋快乐！
About the repeating, I saw there is "Da capo":
1 1 Fine 1 1 1 1 1 1 DC
However, how to use it got me confused, as I thought that Fine should be put at the end, and DC means  repeating 'from the beginning'.
For "small repeat", there is another one "Dal Segno", i.e., D.S., which is more oftenly used, and the repeating is from the  symbol.
The segno sign is encoded in the Musical Symbols block of Unicode as U+1D10B 𝄋 MUSICAL SYMBOL SEGNO.[4]. However, my system/browser is not able to display it.

Yes Fine is at the end, but when there's a "DC al Fine", the end is not the last thing written.  E.g.:
1 2 3 4 5 4 3 2 1 - - - Fine
6 5 4 6 5 4 3 5 4 3 2 1 2 - - - DC

plays 1 2 3 4 5 4 3 2 1 - - - 6 5 4 6 5 4 3 5 4 3 2 1 2 - - - 1 2 3 4 5 4 3 2 1 - - -
In music there's also "DS al Fine" which is when you have a segno instead of going back to the very beginning, plus there are "DC al Coda" and "DS al Coda" which are versions of these two that instead of having "Fine" have an instruction to jump back past the "D* al coda" to a "coda" section at the very end.  I've not yet done jianpu-ly shortcuts for these as I've not yet encountered a piece that requires them in jianpu, but it's possible to put the Lilypond code in LP: blocks (search this Lilypond documentation page for "segno")

Oh, thanks for the explanation.
I've encountered a piece that requires "Dal Segno", i.e., D.S., but looking at the  Lilypond documentation page for "segno" you provided, I realized that it is far more complicated than I thought to get it right.
So I'll do note above and note below instead. thanks.


RSC Centos7 image

The pull request creates an RSC centos7 image. It is stored under /connect/centos7. It leaves the remaining directory structure in tact so at not to interfere with the docker build process.
Of note, this docker image is 3gb as opposed to the existing one which is 1.7gb. I suspect this is due to the inclusion of sys deps as outlined at https://docs.rstudio.com/rsc/manual-install/.
Files modified:

docker-compose.yml: created new image named rstudio-connect-centos7 which is built from the context ./connect/centos7

Files added:

./connect/centos7/: all files unchanged except Dockerfile and config files
Dockerfile: uses rstudio/r-base:${R_VERSION}-centos7 as the base image. Installs recommended sys deps from manual install and RSC. Everything else unchanged.
rstudio-connect.gcfg and rstudio-connect-float.gcfg are modified to use centos7 binaries.

 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.


New package: TSAnalysis v0.1.0

Registering package: TSAnalysis
Repository: https://github.com/fipelle/TSAnalysis.jl
Created by: @fipelle
Version: v0.1.0
Commit: f8741b7d9e5a9d865c9c814fa2b85a6f2bb6d8b2
Git reference: master

[noblock] would you please advise me on the next steps? I am not exactly sure how to fix this issue and re-run automerge.

I solved the upper bound issue. However, I am not sure where to look for the error log now. For this time, I would prefer to block the automerge at this point and to have a human looking into it.

Looks like you fixed the issue, so this will be merged automatically after 3 days.
[noblock]

@fredrikekre thank you - yes, I figured at the end. [noblock]


prep for tag 1.4

I've neglected updating the version number in our login packet for a few releases.
This updates it to 1.4. Once this goes in I will push the tag.

Codecov Report

Merging #134 (8b7f63a) into main (7a2e1b2) will increase coverage by 0.15%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #134      +/-   ##
==========================================
+ Coverage   73.99%   74.15%   +0.15%
==========================================
  Files          29       29
  Lines        5633     5633
==========================================
+ Hits         4168     4177       +9
+ Misses       1214     1208       -6
+ Partials      251      248       -3

Impacted Files
Coverage Δ

version.go
100.00% <ø> (ø)

... and 1 file with indirect coverage changes


avoid xmlsec snapshot that is no longer available

I think the wss4jVersion=2.5.0-SNAPSHOT was trying to pull in xmlsec 2.3.0-SNAPSHOT which wasn't getting downloaded when I was trying to build. This sets the xmlsec version at the released 2.3.0 for both wss4j and opensaml.

We can merge this if you want, but the SNAPSHOT has already moved onto 2.3.0 and this should be unnecessary. You may have been caught while the change was getting published; I dont think we should be charge of managing xmlsec and feels like extra work.

Looks to be a lot more severe that I thought; going to merge. Sorry for the noise.


Ethernet interrupts can cause application hanging

Summary
There is a by-default-on interrupt in the Ethernet MAC (MMC) that occurs after a specific number of packets have been sent. If the ethernet ISR is enabled when this interrupt occurs, the ethernet ISR will hang, as the status flag is never cleared.
Background
The Ethernet MAC MMC contains a number of counters that count MAC-related statistics like the number of ethernet frames sent. When these counters reach 1/2 full (2^31 packets) and full (2^32 packets), an interrupt flag is set.
There is a mask register to disable these counter interrupts, but the mask is reset-0, which means these interrupts are not masked by default (thus, they are enabled).
The failure mode here is that an application can appear to hang up after a number of days of heavy ethernet traffic.
Refer to https://github.com/quartiq/stabilizer/issues/450 for further information.

I believe we need to mask away MMC RX/TX interrupts in the ETH_MMC_TX_INTERRUPT_MASK and ETH_MMC_RX_INTERRUPT_MASK registers. These interrupts are unmasked by default.

@ryan-summers @richardeoin can we squeeze the fix for this into v0.11.0?

@jordens Agreed! PR above


circleci: only run tests that have changed recently

Hello @milas, @landism,
Please review the following commits I made in branch nicks/testchanged:
bd2705103be7b08ffa648d4468086a3637199d32 (2022-05-03 19:05:15 -0400)
circleci: only run tests that have changed recently
loosely adapted from https://github.com/tilt-dev/tilt/pull/4408
Code review reminders, by giving a LGTM you attest that:

Commits are adequately tested
Code is easy to understand and conforms to style guides
Incomplete code is marked with TODOs
Code is suitably instrumented with logging and metrics

i thought this was a cool pattern that would speed small extension contributions up a lot.
the tilt CI will still run the full test suite


Disabled activeCheckbox doesn't disable the hidden checkbox pair so values are always reset

What steps will reproduce the problem?
Use similar code:
$model->show_full_text = true;
Html::activeCheckbox($model, 'show_full_text', ['disabled' => true]);

This creates the following HTML:
<input type="hidden" name="Nutrient[show_full_text]" value="0">
<label style="margin-bottom:0">
    <input type="checkbox" id="nutrient-show_full_text" name="Nutrient[show_full_text]" value="1" checked disabled">
    Show full text
</label>

What is the expected result?
The hidden input should be also disabled.
What do you get instead?
The hidden input is not disabled. When the form is submitted, the disabled input is correctly ignored and the hidden value is submitted, i.e. the appropriate value will be always resetted.
Additional info

Q
A

Yii version
<IP_ADDRESS>

PHP version
7.1

Operating system
Ubuntu 16.04

Duplicate of #10843


Play-shortcut not working when the focus in the script editor

Godot version
4.0 beta1 mono
System information
macOS Monterey 12.5
Issue description
When the focus is in the script editor (caret is blinking in the code area) the Play-shortcut (Command + B on macOS) is not working.
Steps to reproduce

Open Script editor.
Open any existing script or create a new one.
Press Command + B

Expected: The game is compiled and started.
Actual: Nothing happens.
Minimal reproduction project
No response

It appears that ScriptTextEditor is swallowing the input because of Go To Next Bookmark shortcut.

Try removing/changing that shortcut and see what happens (or change run project/play to something else)
We may need to reconsider the default shortcuts here.

Changing "Go to Next Bookmark" to something else than Command+B fixes the issue.

Duplicate of https://github.com/godotengine/godot/issues/61782


Background control is missing some helpful labeling.

Reference:

I believe this was fixed on https://github.com/aristath/kirki/commit/4df7ccea221b2e9e372e9883d0c3dd06a4816a22
Let me know if you're still having an issue!


upgrade to latest sbt, Scala, Scala.js, utest

I'm adding this library to the Scala community build because github4s
depends on it.  none of the version bumps are strictly necessary, but
having them in place will help ensure that the library remains
compatible with the community build.

utest goes just to 0.5.4, not to 0.6.0, because the latter isn't available for Scala 2.13.0-M2 (yet?)

Thanks!


update flink and opensearch networkpolicy port

enhancement for cp4ba issue
ref:
https://github.ibm.com/IBMPrivateCloud/roadmap/issues/63821#issuecomment-83071378
https://github.ibm.com/IBMPrivateCloud/roadmap/issues/63821#issuecomment-83829378

Hi @qpdpQ
The PR looks good to me! Thank you!
Could you please also cherry pick it for scripts branch?


Connect With Azure AD

Hi, I have gone through your documentation of LDAP Settings. But my requirement is kind of, I'll definitely run it in multi tenant mode and the WebAPI's will be consumed by Mobile App and the Web Portal will be used by my internal support people to create tenants or edit anything if the consumers of WebAPI are having problem.
So my query is, can I connect the Web Portal with Azure AD? Only specific people whom I add to Azure AD can login and operate in Web Portal.

Current LDAP integration does not run for Azure AD (I don't know if it's working actually).
But you can create a class to authenticated with Azure AD. See documentation: http://www.aspnetboilerplate.com/Pages/Documents/Zero/User-Management#external-authentication

Thanks I'll try that :)

When you are done implementing your solution, mind sharing it with us?
Thank you :)
El El mié, 18 de enero de 2017 a la(s) 9:41 a.m., Krishnandu Sarkar <
<EMAIL_ADDRESS>escribió:

Closed #287 https://github.com/aspnetboilerplate/module-zero/issues/287.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/aspnetboilerplate/module-zero/issues/287#event-927656966,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIycYaXCJ7oc1gnREI3NH8JdkdGCGWrMks5rTjKngaJpZM4LkvZD
.

Sure @wocar :) If I can successfully implement it, I'll surely share it here for benefit of others


Search exclusion text box background color broken

As designed according to @roblourens

I changed it so that text looks more like a label and less like an input box.


Add CI for Windows and Mac

Also add the badges to Cargo.toml.

I don't see the badges added to Cargo.toml yet.


multi call cache.Fetch int same frame  will miss requst callback

I user fillcache in my application, when I need request multi file in same time , it just return one callback.
so I can not get all rezult.

Sorry, it seems hard to reproduce.


Adjust about/help routes to match upstream expectation

In this PR:

Reverts change to "About" page route
Adds new route for "Session info" page

See: uportal-app-framework#765

Contributor License Agreement adherence:

[x] This Contribution is under the terms of Individual Contributor License Agreements (and also Corporate Contributor License Agreements to the extent applicable) appearing in the Apereo CLA roster.

Working on digging into the Travis-CI failing check. Apparently I get failing unit tests on latest master locally, so the failing tests Travis reports here may not be particularly about changes in this changeset. Looking further.

Potentially related to https://github.com/jasmine/jasmine/issues/1327#issuecomment-379574146


[New Module] Background Task Framework

Background Task Framework
Overview

low entry barrier for developers
centralized log/overview list for users
in System App (contrary to "Job Queue" in Base App)
additional developer tooling to handle background tasks

Diagram
Samples
Misc
Ask for Opinion:

MS
Mads Grams?
Vjeko?
Waldo?
Tobias Fenster?
Henrik Helgesen?

Description
The idea is to create a framework that wrapps the task scheduler, to improve the way developers can run code in the background.
Story
I think the majority of AL developers writes procedual code either all the time or at least most of the time. Reasons for that may be individual, but I think most of the time its just due to old habbits. The hurdle to run some task in the background is just too high to just try it or get started.
And yet it brings so many benefits to run a task in the background. And this is not about splitting a task into multiple smaller tasks to run them in background and in parallel, its just about running one task in the background instead of the UI session of the user.

The user session will be free immediately. This improves the perceived performance A LOT!
The result is, that the user can start with his next task right away and gets more productive
The service of BC can do much better load balancing when there are more sessions. Sessions get distributed between mutliple NSTs. If there is just one session, nothing can get balanced.
With the implementation of the Await() function, the developer can get an overall performance increase if the code.
Once we have the framework in place, more helper functions can be added easily. Maybe a CallBack function would make sence? Easy implemented.

So why the heck is this not used more among AL developers?
Problem 1:
Many AL developers dont touch this area too much because its a huge unknown. Not really sure how it behaves, not really sure how to implement it the right way. Especially when it comes to error handling. Most developers dont have the time to invest into learning such a technology in their daily work routine and can not afford to build a buggy solution.
So better stick with the traditional way of developing.
Solution 1:
The task framework should solve that problem by introducing a wrapper for the task scheduler. The framework will intoduce some helper functions:

Await
Callback?
Parameters for Background Tasks

And along with that some examples how to implement them correctly.
Additionally, the framework will implement default error handling and logging. This will give the certainty to the developer that there is proper error handling without the need to come up with a solution themselfes.
Problem 2:
When looking at BC from a users perpective, there are not many tasks that run background currently and in the past. Only the job queue but thats rather recurring tasks, and run a report in background. Thats it.
That means, if we (developers) suddenly start to run tasks in background, the users will be confused. The UI session does not "hang" so the task must be finished. But there was no message or confirmation. No feedback at all - very confusing.
Without any aditional development, when using the task scheduler, the user does not get any information that the action he clicked, did start, and is not yet finished. And there is no place to check the current status of tasks and to check if a task already did finish.
Also any error handling would need to be implemented manually, and therefore would differ from solution to solution.
Solution 2:
The framework should include a log table where all the tasks are logged to. The user can open this log to check currently running tasks, tasked planned for future execution, already finished tasks, and task that failed and view the error details.
It also needs to implement notifications to the user, that a task has been scheduled for background execution. The notification should include a link to open up a status/log list to check and view the current status of this task.
Job queue
When asking various people for feedback, the no 1 question I got was "But why not just use the Job Queue". Most of all, I feel like, this kind of module should not be part of the base app, its a clear candiate for the system app. But then also, the job queue module has many featues and is mainly used for reocurring tasks.
The main purpose of this framework should be to make it easier to just dispatch tasks to the background.
References
https://twitter.com/StefanMaron/status/1529038705641631745
https://thedoubleh.dev/posts/performancevsexperience/#real-world-issue

This is a first draft. I needed to create the app.json already in order to be able to create the PR.
With me working on this is @SimonOfHH and Kristof Klein.
We tried to give a decent description to get some feedback and to start a discussion first, before we get into coding.
So let us know what you think!

@darjoo should really be in these discussions 😎

Right now we are having a similiar structure to schedule processes, that should be done, after a posting of documents.
This could be refactored to a decent system module.
Therefore it is really convient to add a some delay to this tasks to avoid locking issues.
And some kind of automatic rescheduling depending on specific conditions, e.g. reschedule if error was caused by a locking issue.

Therefore it is really convient to add a some delay to this tasks to avoid locking issues. And some kind of automatic rescheduling depending on specific conditions, e.g. reschedule if error was caused by a locking issue.

I believe this is even done automatically by the task scheduler
https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-task-scheduler#retriable-exceptions-in-the-main-codeunit
But it seems like the docs do not really specify which error types are acutally covered.

Hello,
I am not sure if feedback from partners are wanted but since this open to all I will try to add productive feedback.
I am not sure if it is goo to add more strain on the scheduled task table. I know of circumstances where the scheduled task table is locked and not accessible.
And I would have a question where you would want to use this kind of module? What do you want to achieve?
Do you wish something like the page backgroundtasks for overall logon? But you speak of freeing user sessions and putting work to background, so when the user logs of, then the execution should continue, am I right?
Do you want to make independent sessions (this is how the task scheduler works) or do you want to control the sessions just like with start session? I can tell you that I have once created a parallel tasks tool also working over multiple companies so it is possible with the tools we have at hand. Unfortunately that one never got any production phase.
What technical basis you had in mind?
But we have some technical hindrances:

If Task Scheduler: if all sessions are in use then the execution will wait, could take much time on heavy use databases
if StartSession; there is a maximum number of child sessions setup in the server instance, I don't know the value in saas though
Unfortunately I know that the Scheduled Task table can be put at much strain so that it could be inaccessible for an update (I can share a support request ID for the people of Microsoft if wanted), so adding more ways to increase the usage can be troublesome from my point of view
action timeout: a few versions back we got the timeout parameters at reports and the job queue, these should also apply to these tasks, how high do you would put them?
How would you define dependencies between tasks? adding a background tasks which ads again a background tasks or even multiple ones which should start in a specified order?

Maybe if there is any usage in our daily business you could explain, it would be better for me to follow your argumentation.
Do you want to read Data parallel?
Do you want to execute tasks parallel?
Do you want to accessing external systems though web services?
Do you want to manipulate data parallel?
Please don't misunderstand my comment that I would be against it, but I don't see the benefit to the tools at hand at the moment. I am every time the first one looking for new and easiers ways to develop.
Best regards

IMO the trouble with all these older asynchronous mechanisms in BC like using task scheduler, job queue or background sessions via StartSession() is that they cannot run any code back on the user thread with their results when they are done.
That is what separates AL from any language with continuations, callbacks, async+await approaches.
But here's the thing: BC finally got the "Page background task" feature which already has the exact API needed here.
It can pass some data to a child session, do some work, send data back to user session when done and run some more code there. It is the first real normal async. API in the platform/language that I am aware of.
The only problem with the feature is the limitations placed upon it:
It is linked to pages when it could instead have been a "Background task" feature available for codeunits as well.
It blocks writing to DB inside child session.
I don't see why those two limitations couldn't be removed, finally giving AL a proper callback based asynchronous mechanism to speed up any business procedure, either on NAS or on user session, which is what you are after in this PR.

@darjoo, do you think you can find the time to engage in this discussion after 2023 Wave 1 has been sent out the door? This is a highly complex, yet highly interesting area to start a collaboration on! Would you think we're ready to handle that? What would the path forward be?

@StefanMaron, we will soon be retireing this repo for System Application contributions. The new repository will be https://github.com/microsoft/BCApps. As this PRs doesn't have any code, there isn't much to migrate or process. Could you reopen this discussion somewhere else? It doesn't really qualify as a pull request 😉 Thank you 🙏


[BUG] AQARA Roller Shutter ZHAQuirk not recognised

Copied from https://github.com/home-assistant/core/issues/70837 since I have the same problem and it seems like it wasn't reported here while that's what was suggested there.
Describe the bug
The device pairs, but the zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ is not applied
To Reproduce
Pair the device
Expected behavior
The device should be matched to the quick
Screenshots

`2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LUMI lumi.curtain.acn002 (54:ef:44:10:00:32:90:d1)
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ'>
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
....
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LUMI lumi.curtain.acn002 (54:ef:44:10:00:33:ac:14)
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ'>
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
....
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LUMI lumi.curtain.acn002 (54:ef:44:10:00:3e:35:9d)
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ'>
2022-04-27 10:21:49 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
...
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LUMI lumi.curtain.acn002 (54:ef:44:10:00:32:90:d1)
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ'>
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
...
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LUMI lumi.curtain.acn002 (54:ef:44:10:00:33:ac:14)
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ'>
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
...
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for LUMI lumi.curtain.acn002 (54:ef:44:10:00:3e:35:9d)
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.xiaomi.aqara.roller_curtain_e1.RollerE1AQ'>
2022-04-27 10:29:07 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint`
Additional context
Issues with this device are often caused by outdated ConBeeII firmware, but mine is up to date with https://deconz.dresden-elektronik.de/deconz-firmware/deCONZ_RaspBeeII_0x26780700.bin.GCF

Enable the local quirk:

https://github.com/zigpy/zha-device-handlers/discussions/693#discussioncomment-857274

Copy inside the custom_zha_quirks the current roller_curtain_e1.py file:

https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/xiaomi/aqara/roller_curtain_e1.py

Add at the end of file this quirk:

class RollerE1AQ_2(RollerE1AQ):
    """Aqara Roller Shade Driver E1 (version 2) device."""

    signature = {
        MODELS_INFO: [(LUMI, "lumi.curtain.acn002")],
        ENDPOINTS: {
            # <SizePrefixedSimpleDescriptor endpoint=1 profile=260 device_type=256
            # device_version=1
            # input_clusters=[0, 2, 3, 4, 5, 6, 9, 13, 19, 258]
            # output_clusters=[10, 25]>
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.ON_OFF_LIGHT,
                INPUT_CLUSTERS: [
                    Alarms.cluster_id,
                    AnalogOutput.cluster_id,
                    Basic.cluster_id,
                    DeviceTemperature.cluster_id,
                    Groups.cluster_id,
                    Identify.cluster_id,
                    MultistateOutput.cluster_id,
                    OnOff.cluster_id,
                    Scenes.cluster_id,
                    WindowCovering.cluster_id,
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id,
                    Time.cluster_id,
                ],
            },
            # <SizePrefixedSimpleDescriptor endpoint=242 profile=41440 device_type=97
            # device_version=0,
            # input_clusters=[]
            # output_clusters=[33]>
            242: {
                PROFILE_ID: 41440,
                DEVICE_TYPE: 0x0061,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [
                    GreenPowerProxy.cluster_id,
                ],
            },
        },
    }

Restart HA and pair the device again.

That fixed the problem!

The quirk will be available in the next HA version.
Remove your local quirk once updated.

Hi
i have 6 aqara roller shutter and sometimes more of them don’t react to my cover open o closed instructions but reports correctly temperature and battery. Also if I add again in the network without remove them start to works for a few hours. It’s not a coverage problem because I have a enough lqi.
Any idea how to fix this problem ?

Logger: homeassistant.components.websocket_api.http.connection
Source: components/zha/cover.py:162
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 01:21:42 (14 occurrences)
Last logged: 06:27:43
[140153997668176]
[140153078588432]
[140152972252240]
[140153228200336]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/zigpy/device.py", line 310, in request
return await req.result
^^^^^^^^^^^^^^^^
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service
await hass.services.async_call(
File "/usr/src/homeassistant/homeassistant/core.py", line 1965, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2005, in _execute_service
return await cast(
^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service
return await service.entity_service_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 848, in entity_service_call
response_data = task.result()  # pop exception if have
^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1192, in async_request_call
return await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 892, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/zha/cover.py", line 162, in async_stop_cover
res = await self._cover_cluster_handler.stop()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/util.py", line 132, in retry
return await func()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zhaquirks/xiaomi/aqara/roller_curtain_e1.py", line 133, in command
(res,) = await self.endpoint.multistate_output.write_attributes(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/zcl/init.py", line 618, in write_attributes
return await self.write_attributes_raw(attrs, manufacturer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/zcl/init.py", line 624, in write_attributes_raw
result = await self._write_attributes(attrs, manufacturer=manufacturer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/quirks/init.py", line 321, in _write_attributes
return await super()._write_attributes(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/zcl/init.py", line 375, in request
return await self._endpoint.request(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/endpoint.py", line 253, in request
return await self.device.request(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/zigpy/device.py", line 309, in request
async with asyncio_timeout(timeout):
File "/usr/local/lib/python3.11/asyncio/timeouts.py", line 111, in aexit
raise TimeoutError from exc_val
TimeoutError


Code improvements in Address class and more logs

In these changes I'm trying to improve code in Address::init and remove redundant executions;
More logs to http_server_test.

Codecov Report

Merging #722 into master will decrease coverage by 0.99%.
The diff coverage is 91.66%.

@@           Coverage Diff            @@
##           master     #722    +/-   ##
========================================
- Coverage   67.45%   66.45%    -1%
========================================
  Files          50       50
  Lines        7223     6231   -992
========================================
- Hits         4872     4141   -731
+ Misses       2351     2090   -261

Impacted Files
Coverage Δ

src/common/net.cc
87.67% <91.66%> (-1.98%)
:arrow_down:

include/pistache/router.h
92% <0%> (-8%)
:arrow_down:

include/pistache/tcp.h
75% <0%> (-5%)
:arrow_down:

include/pistache/net.h
84.61% <0%> (-3.62%)
:arrow_down:

include/pistache/flags.h
85.71% <0%> (-3.18%)
:arrow_down:

include/pistache/view.h
86.36% <0%> (-3.12%)
:arrow_down:

include/pistache/http_headers.h
92.85% <0%> (-2.98%)
:arrow_down:

include/pistache/description.h
79.16% <0%> (-2.98%)
:arrow_down:

src/common/description.cc
17.07% <0%> (-2.78%)
:arrow_down:

include/pistache/optional.h
90.62% <0%> (-1.97%)
:arrow_down:

... and 37 more

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 0bb0151...6a12354. Read the comment docs.

This commit uses static_assert which belongs to C++ 17. Before, the code has been compiled with C++ 14 without a problem.
Is it a project decision to have C++ 17 as a minimal requirement?

No, that was an oversight.  hyperxor@, please wrap the static asserts in an #ifdef that checks for c++17 support.

@dennisjenkins75 @miketsts Hello, I have made a fix. Fortunately, there is a better solution rather than #ifdef use.

Cool.  Thank you for finding a better solution.  My brain is still stuck in the 80's, so I often reach for the wrong hammer to make the screw turn...

@dennisjenkins75 Oh, never mind, everything is really cool and I like when you give me an advice about my code. In this case it was my mistake, used wrong static_assert implementation.


Elaboration requested on the config's 'data_files'

Thanks for your interesting work!  I have a question on the config file.
What is the exact difference in config settings when generating the 2 different data files? I assumed simply reducing resolution_index in convert_wavelet.py by 1 would generate the second wavelet file from the SDFs, but is that correct?
data_files = [('wavelet_data/03001627_0.1_bior6.8_3_zero.npy', 3), ('wavelet_data/03001627_0.1_bior6.8_2_zero.npy', 2)]
Thanks a lot!

Yes, you are correct. If you reduce the resolution_index by 1, you can generate the second file, which is the detail coefficient volume for the shape. Generally, the resolution_index of "3" represents the coarse coefficient volume, while "2" represents the detail coefficient volume.


Node.js 16 actions are deprecated

03fcc74cd74880b697950c4930c9ec8a67c69ecc == v2.0.1.

Fixed with v2.0.2
Thanks for the nudge!


Shell escape arguments in output

Tweaked version of https://github.com/rust-lang/cargo/pull/1673.

@bors: r+ 8b378da

:hourglass: Testing commit 8b378da with merge 9cfa5d2...

r? @huonw
(rust_highfive has picked a reviewer for you, use r? to override)

:broken_heart: Test failed - cargo-win-msvc-64

@bors: r+ ea41f5c

:hourglass: Testing commit ea41f5c with merge 89435c4...

:sunny: Test successful - cargo-linux-32, cargo-linux-64, cargo-mac-32, cargo-mac-64, cargo-win-gnu-32, cargo-win-gnu-64, cargo-win-msvc-64

It looks like something got missed in this change: cargo build -v and similar don't quote arguments like --cfg feature="default" , so if you paste them into a shell, the shell eats the doublequotes. That needs to get printed like --cfg 'feature="default"' . (Or, alternatively, rustc needs to stop requiring the doublequotes there, but that seems less likely.)
Reported as https://github.com/rust-lang/cargo/issues/5665


Add Hyper to Container Runtime

And Hyper.sh - container-native cloud
Thanks!

+1

Added

Hi @Gnep please find in 0.9.4 https://github.com/cncf/landscape/tree/master/landscape


Rest API Query Syntax Enhancements

Proposal to improve the rich query semantics of FireFly, to support "starts with" and "ends with", and add extra flexibility/consistency.

Looks really good to me. Feels like a nice set of params for the vast majority of cases, and addresses my long gripe against our ^ and @ usage :)

This looks great to me. I realize it's a breaking change. Normally we would need to plan a way to mitigate breakage and deprecate the old behavior, but we're still pre-1.0 at this point, so I think we can just make this change in place. That's a convenience we won't be able to afford going forward thoguh.

@awrichar @nguyer - made one small extension as I was closing out the implementation, and realized we're missing a trick of allowing people to distinguish between an empty value and nil in queries

Moving this FIR into the Final Comment Period, set to close on 2022-01-17


Total price is displayed on the cart section.

Related Issue
Solves #983
Description
The total price of the new items added in the cart are displayed . Also the + and - buttons on click also increase and decrease the cost respectively.
Type of PR

[ ] Bug fix
[x] Feature enhancement
[ ] Documentation update
[ ] Other (specify): _______________

Screenshots / videos (if applicable)
[Attach any relevant screenshots or videos demonstrating the changes]
https://github.com/Suchitra-Sahoo/AgriLearnNetwork/assets/143121854/c2d2c28d-025c-4003-b614-5d6abce8d02b
Checklist:

[x] I have performed a self-review of my code
[x] I have read and followed the Contribution Guidelines.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.

Additional context:
[Include any additional information or context that might be helpful for reviewers.]

The cart has come to center so fix it


Delete OSS-EC_TI_LM35_LM35A_00000057

@per1234 Sorry. I decide you no longer wish to request the removal of the library from the Arduino Library Manager


per #419, ignore bolus wizard carb entries without a bolus

This needs to be tested by someone with a pump that is capable of writing carb-only bolus wizard records when you cancel out of the bolus wizard or enter a zero bolus.
Test procedure:

Enter a small number of carbs via the bolus wizard.  Cancel out or enter a zero bolus.  Make sure that the carbs show up in NS and in meal.json.
Check out this branch: cd ~/src/oref0 && git fetch && git checkout ignore-carb-corrections && git pull
Enter another small number of carbs the exact same way as before.  Make sure the carbs do not show up in NS or in meal.json.
Enter a small number of carbs with a minimal bolus (0.1U or whatever your pump supports).  Make sure those show up normally.
Test out other normal scenarios and make sure they all still work.

i tried this and it worked - before fix (5g) and after fix ns (no carbs) treatment report:
Delete record Edit record	9:36 PM	Carb Correction			5					openaps://medtronic/523	Food estimate 0.25 Correction estimate 0 Bolus estimate 0.25 Target low 99 Target high 99 Hypothetical glucose delta 0
Delete record Edit record	9:43 PM									openaps://medtronic/523	Food estimate 0.2 Correction estimate 0 Bolus estimate 0.2 Target low 99 Target high 99 Hypothetical glucose delta 0

Cool.  Anything else we need to test before merging this to dev?

meal.json changed, but i don't know how to interpret it...
before fix (5g cancelled carbs):
cat monitor/meal.json
{"carbs":39,"boluses":1.7,"mealCOB":5,"currentDeviation":null,"maxDeviation":0,"minDeviationSlope":0}
after fix (4g cancelled carbs):
cat monitor/meal.json
{"carbs":43,"boluses":1.7,"mealCOB":6,"currentDeviation":4.44,"maxDeviation":2.11,"minDeviationSlope":0}

How many non-canceled carbs did you enter in the last DIA hours?  That's what the "carbs" should represent.

ok, there were some carbs from just under DIA (4 hours) ago - now its back to just the 5g from the pre-fix carb cancel, seems right then.

since its been over DIA hours now since real carbs i asked him to try again - it does seem to get the cancelled carbs into meal.json still - just not nightscout:
root@benaps:~/myopenaps# cat monitor/meal.json
{"carbs":9,"boluses":0,"mealCOB":5,"currentDeviation":3.41,"maxDeviation":4.44,"minDeviationSlope":-0.459}
<entered 6 cancelled carbs>
root@benaps:~/myopenaps# cat monitor/meal.json
{"carbs":15,"boluses":0,"mealCOB":10,"currentDeviation":2.8,"maxDeviation":4.44,"minDeviationSlope":-0.544}

Ok, that's not right.  Let me investigate that.

Can you paste the bolus / boluswizard entries from pumphistory.json for the canceled carb entry?

here's the one before changing to the fix:
{
"_type": "BolusWizard",
"bg": 0,
"bg_target_high": 99,
"_description": "BolusWizard 2017-07-02T21:36:14 head[2], body[15] op[0x5b]"
,
"timestamp": "2017-07-02T21:36:14",
"_body": "055000c84b6300000a000000000a63",
"_head": "5b00",
"unabsorbed_insulin_total": 0.0,
"correction_estimate": 0.0,
"_date": "4ee4150211",
"bolus_estimate": 0.25,
"bg_target_low": 99,
"carb_ratio": 20.0,
"food_estimate": 0.25,
"carb_input": 5,
"sensitivity": 75
},
then the one immediately after (4g):
{
"_type": "BolusWizard",
"bg": 0,
"bg_target_high": 99,
"_description": "BolusWizard 2017-07-02T21:43:26 head[2], body[15] op[0x5b]"
,
"timestamp": "2017-07-02T21:43:26",
"_body": "045000c84b63000008000000000863",
"_head": "5b00",
"unabsorbed_insulin_total": 0.0,
"correction_estimate": 0.0,
"_date": "5aeb150211",
"bolus_estimate": 0.2,
"appended": [
{
"_type": "UnabsorbedInsulinBolus",
"_description": "UnabsorbedInsulinBolus unknown head[14], body[0] op[0x5
c]",
"data": [
{
"amount": 0.25,
"age": 213
},
{
"amount": 1.45,
"age": 223
},
{
"amount": 3.4,
"age": 243
},
{
"amount": 0.6,
"age": 253
}
],
"_body": "",
"_head": "5c0e0ad5043adf0488f30418fd04",
"_date": ""
}
],
"bg_target_low": 99,
"carb_ratio": 20.0,
"food_estimate": 0.2,
"carb_input": 4,
"sensitivity": 75
},
and the latest one:
{
"_type": "BolusWizard",
"bg": 0,
"bg_target_high": 99,
"_description": "BolusWizard 2017-07-02T22:14:00 head[2], body[15] op[0x5b]"
,
"timestamp": "2017-07-02T22:14:00",
"_body": "065000c84b6300000c000000000c63",
"_head": "5b00",
"unabsorbed_insulin_total": 0.0,
"correction_estimate": 0.0,
"_date": "40ce160211",
"bolus_estimate": 0.3,
"bg_target_low": 99,
"carb_ratio": 20.0,
"food_estimate": 0.3,
"carb_input": 6,
"sensitivity": 75
},

Just pushed a potential fix for the meal.json calculations.  Can you git pull the latest version of this branch and try that part again?

that seems better - no change to meal.json this time, no carbs in ns still.

And normal bolus wizard entries (with a bolus) show up correctly still?

yes, a normal bolus wizard entry worked - insulin and carbs in ns, carbs in meal.json...
we'll keep using it for a bit tomorrow.


fix(deep): torch model outputs need to be transferred to cpu before c…

…hecking for additivity #3280
Overview
Closes #3280
Description of the changes proposed in this pull request:

check_additivity now also works for deep explainer with torch when running on gpu

Checklist

[x] All pre-commit checks pass.
[ ] Unit tests added (if fixing a bug or adding a new feature)

I believe the failing tests are not related to what I did in this pull request:
=========================== short test summary info ============================
ERROR tests/explainers/test_partition.py::test_translation - OSError: mesolitica/finetune-translation-t5-super-super-tiny-standard-bahasa-cased is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=<your_token>`
ERROR tests/explainers/test_partition.py::test_translation_auto - OSError: mesolitica/finetune-translation-t5-super-super-tiny-standard-bahasa-cased is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=<your_token>`
ERROR tests/explainers/test_partition.py::test_translation_algorithm_arg - OSError: mesolitica/finetune-translation-t5-super-super-tiny-standard-bahasa-cased is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=<your_token>`
ERROR tests/explainers/test_partition.py::test_serialization - OSError: mesolitica/finetune-translation-t5-super-super-tiny-standard-bahasa-cased is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=<your_token>`
ERROR tests/explainers/test_partition.py::test_serialization_no_model_or_masker - OSError: mesolitica/finetune-translation-t5-super-super-tiny-standard-bahasa-cased is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=<your_token>`
ERROR tests/explainers/test_partition.py::test_serialization_custom_model_save - OSError: mesolitica/finetune-translation-t5-super-super-tiny-standard-bahasa-cased is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo either by logging in with `huggingface-cli login` or by passing `token=<your_token>`
===== 231 passed, 39 skipped, 108 warnings, 6 errors in 686.94s (0:11:26) ======

Latest master merged -> Tests succeed.
Ready to merge.


Teams EOC app Title change

Is there a way to change "Microsoft Teams Emergency Operations Center" at the top of the teams app page in Teams. Added screenshot not sure if its visible.

@przekom, At present we don't have this customization available.
Thank you for brining this up, we will try to include this in one of our future releases.


cell marks matrix

Is there an issue in the cell marks matrix generation, I only get the "NA" as list. Could you please elabroate how the matrix should look like.

Hi Uma,
Would you mind posting the code you're using to generate the distance matrix using some fake data? We'd be happy to take a look and see what might be going wrong.

#Ref: https://github.com/nateosher/DIMPLE, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10370183/
# Get the x coordinates for the cells
cell_x_coords = unlist(rawdata[,8]) %>% as.numeric()
# Get the y coordinates for the cells
cell_y_coords = unlist(rawdata[,9]) %>% as.numeric()
# Get the patient ids for the slides
patient_ids = rawdata$deidentified_ID
# Get the slide ids for the slides
slide_ids = rawdata$`Slide ID`

# Map phenotypes to character vector
test_n = length(rawdata$`Phenotype CD112`)

tictoc::tic()
cell_marks = tibble(
  #cell = rawdata$`Phenotype Cell`[1:test_n] == "Cell",
  cd_112 = rawdata$`Phenotype CD112`[1:test_n] == "CD112",
  cd_226 = rawdata$`Phenotype CD226`[1:test_n] == "CD226",
  cd_56 = rawdata$`Phenotype CD56`[1:test_n] == "CD56",
  cd_96 = rawdata$`Phenotype CD96`[1:test_n] == "CD96",
  ck = rawdata$`Phenotype CK`[1:test_n] == "CK",
  dapi = rawdata$`Phenotype DAPI`[1:test_n] == "DAPI",
  grzb = rawdata$`Phenotype GrzB`[1:test_n] == "GrzB",
  pvr = rawdata$`Phenotype PVR`[1:test_n] == "PVR",
  pvrig = rawdata$`Phenotype PVRIG`[1:test_n] == "PVRIG"
) %>%
  as.matrix() %>%
  (\(m){
    m %*% 1:9
  }) %>%
  map_chr(\(x) c("CD112", "CD226", "CD56", "CD96", "CK", "DAPI", "GrzB", "PVR", "PVRIG")[x + 1])

#na_marks = which(is.na(cell_marks))

na_marks = which(is.na(cell_marks))
cell_x_coords = cell_x_coords[-na_marks]
cell_y_coords = cell_y_coords[-na_marks]
patient_ids = patient_ids[-na_marks]
slide_ids = slide_ids[-na_marks]
cell_marks = cell_marks[-na_marks]

test_experiment = DIMPLE::new_MltplxExperiment(
                    x = cell_x_coords,
                    y = cell_y_coords,
                    marks = cell_marks,
                    slide_id = slide_ids)

test_experiment

The data I use is attached herewith
test.txt

I think there are a couple things going on here. One problem is that it looks like the cell data you're using is for just one slide (with one exception, from slide LT051_P3_HN). So instead of storing it as a MltplxExperiment, it probably makes the most sense to store it as a MltplxObject.
I think the problem is that the original code only works when each cell is only positive for one phenotype. In your data set it looks like cells can be positive for many phenotypes. Here's some code that does what I think you want it to:
library(tidyverse)
library(DIMPLE)

rawdata = read_tsv("test.txt") %>%
  filter(`Slide ID` != "LT051_P3_HN")

phenotype_matrix = tibble(
  cd_112 = rawdata$`Phenotype CD112` == "CD112+",
  cd_226 = rawdata$`Phenotype CD226` == "CD226+",
  cd_56 = rawdata$`Phenotype CD56` == "CD56+",
  cd_96 = rawdata$`Phenotype CD96` == "CD96+",
  ck = rawdata$`Phenotype CK` == "CK+",
  dapi = rawdata$`Phenotype DAPI` == "DAPI+",
  grzb = rawdata$`Phenotype GrzB` == "GrzB+",
  pvr = rawdata$`Phenotype PVR` == "PVR+",
  pvrig = rawdata$`Phenotype PVRIG` == "PVRIG+"
) %>%
  as.matrix()

cell_marks = map(1:nrow(phenotype_matrix), \(row){
  c("CD112+", "CD226+", "CD56+", "CD96+", "CK+", "DAPI+",
    "GrzB+", "PVR+", "PVRIG+")[phenotype_matrix[row,]]
}) %>%
  map_chr(\(phenotype_vec){
    paste0(phenotype_vec, collapse = '')
  })

mltplx_obj = new_MltplxObject(
  x = raw_data$`Cell X Position`,
  y = raw_data$`Cell Y Position`,
  marks = cell_marks,
  slide_id = rawdata$`Slide ID`[1]
)

plot(mltplx_obj)

If you do want to make a MltplxExperiment object with multiple slides, the code actually doesn't change much. Here's what it would look like with the test data- however, note that this should theoretically work if you were to concatenate your data from all of your slides together into a single rawdata data frame:
library(tidyverse)
library(DIMPLE)

rawdata = read_tsv("test.txt") %>%
  arrange(`Slide ID`)

phenotype_matrix = tibble(
  cd_112 = rawdata$`Phenotype CD112` == "CD112+",
  cd_226 = rawdata$`Phenotype CD226` == "CD226+",
  cd_56 = rawdata$`Phenotype CD56` == "CD56+",
  cd_96 = rawdata$`Phenotype CD96` == "CD96+",
  ck = rawdata$`Phenotype CK` == "CK+",
  dapi = rawdata$`Phenotype DAPI` == "DAPI+",
  grzb = rawdata$`Phenotype GrzB` == "GrzB+",
  pvr = rawdata$`Phenotype PVR` == "PVR+",
  pvrig = rawdata$`Phenotype PVRIG` == "PVRIG+"
) %>%
  as.matrix()

cell_marks = map(1:nrow(phenotype_matrix), \(row){
  c("CD112+", "CD226+", "CD56+", "CD96+", "CK+", "DAPI+",
    "GrzB+", "PVR+", "PVRIG+")[phenotype_matrix[row,]]
}) %>%
  map_chr(\(phenotype_vec){
    paste0(phenotype_vec, collapse = '')
  })

mltplx_experiment = new_MltplxExperiment(
  x = raw_data$`Cell X Position`,
  y = raw_data$`Cell Y Position`,
  marks = cell_marks,
  slide_id = rawdata$`Slide ID`
)

mltplx_experiment

# MltplxExperiment with 2 slides
# No intensities generated
# No distance matrices generated
# No attached metadata

mltplx_experiment[[1]]

# MltplxObject
# Slide id: LT051_P3_HN
# Image with 1 cells across 1 cell types
# Cell types: DAPI+
# No intensity generated (yet)
# No distance matrix generated (yet)

mltplx_experiment[[2]]

# MltplxObject
# Slide id: MG299_P3_HN
# Image with 99 cells across 5 cell types
# Cell types: CD112+CD96+CK+DAPI+PVR+, CD112+CD96+DAPI+, CD96+DAPI+, CD96+DAPI+PVRIG+, DAPI+
# No intensity generated (yet)
# No distance matrix generated (yet)

Hope that helps- let us know if you have any other questions!

Thanks, I will try this out

The documentation of new_MltplxExperiment gives some examples, which you can view by typing ?new_MltplxExperiment. I think the vignettes are also probably a good place to start. Specifically vignette("mltplx-experiment") for a brief overview. The example analysis vignette is unfortunately not fully incorporated into the master branch yet, but you can still download the .Rmd file from the provided link and build it.
If you you still have questions after that, let us know!

Many thanks

Of course! Happy to help


Added status application command

I don't see any tests for the new status code 🤔

This is still a draft, working on them 🙂

Good deal!


Repeating argument inside [options]

Hi.
I was trying to simplify some scripts by using [options] but i got into a issue when i had to have repeating arguments.
The following code is the old way where i have to define the repeating arguments in the usage section
from docopt import docopt

__docopt__ = """
usage:
  script foo <bar> [-v ...] [options]

Options:
  <bar>               Key identifier username
  -v                  increase verbosity
"""

args = docopt(__docopt__)
print(args)

that works fine when callde with
$ python repeat_broken.py foo asd -vvv

{'-v': 3,
 '<bar>': 'asd',
 'foo': True}

but when trying to move the repeating part down to the options definition i get the following
from docopt import docopt

__docopt__ = """
usage:
  script foo <bar> [options]

Options:
  <bar>               Key identifier username
  -v ...              increase verbosity
"""

args = docopt(__docopt__)
print(args)

and called with
$ python repeat_broken.py foo asd -vvv

{'-v': 'vv',
 '<bar>': 'asd',
 'foo': True}

In this case it interpretates the ... as something different then when defined in the usage section.
Is it intended that ... should not be possible to use in the options section or is this a bug?

Right now in option section any text after an option is interpreted as an argument to that option. Not sure if the best solution would be to raise an error in this case, or to allow more flexibility in options section.

or to allow more flexibility in options section.

I'd be in favor of this. Using [options] is highly ergonomic, but a lot of those ergonomics disappear if you need to have repeating flags. Some way of specifying it in the "options" section would be great.
@keleshev I'd be happy to write a proposal for this. Do you have a process in place for this? Should I just submit a PR and we can discuss its merits there?
cc @alexcrichton

Cargo also recently ran into this problem, our doc string should in theory allow commands of the form:
cargo build --bin foo --bin bar

but unfortunately you can only pass one --bin for now. We could in theory modify the usage string to include [--bin NAME ...], but we'd have to repeat that for --test, --example, etc, and also repeat that across the other subcommands that Cargo has. Overall I agree with @BurntSushi that modifying the options section would be what I'd love to see as well!

@BurntSushi this issue seems like a nice place to write a proposal. No need for PR yet, let's discuss first.

I have an experimental implementation of this working and I think it works quite nicely. I basically just took the idea in the OP and ran with it. If ... proceeds a flag name/argument in an option description (separated by exactly one space, just like the argument), then that flag is allowed to be repeated an arbitrary number of times. Namely, this:
Usage: prog [-a ...]

is equivalent to
Usage: prog [options]

Options:
  -a ...

I've written down some test cases that should clarify the rest:
r"""Usage: prog [options]

Options:
  -a ...  Foo
"""
$ program
{"-a": 0}
$ program -a
{"-a": 1}
$ program -a -a
{"-a": 2}
$ program -aa
{"-a": 2}
$ program -a -a -a
{"-a": 3}
$ program -aaa
{"-a": 3}

r"""Usage: prog [options]

Options:
  -a, --all ...  Foo
"""
$ program
{"-a": 0}
$ program -a
{"-a": 1}
$ program -a --all
{"-a": 2}
$ program -aa --all
{"-a": 3}
$ program --all
{"-a": 1}
$ program --all --all
{"-a": 2}

r"""Usage: prog [options]

Options:
  -a, --all ARG ...  Foo
"""
$ program
{"-a": []}
$ program -a 1
{"-a": ["1"]}
$ program -a 2 --all 3
{"-a": ["2", "3"]}
$ program -a4 -a5 --all 6
{"-a": ["4", "5", "6"]}
$ program --all 7
{"-a": ["7"]}
$ program --all 8 --all 9
{"-a": ["8", "9"]}

r"""Usage: prog [options]

Options:
  --all ...  Foo
"""
$ program
{"--all": 0}
$ program --all
{"--all": 1}
$ program --all --all
{"--all": 2}

r"""Usage: prog [options]

Options:
  --all=ARG ...  Foo
"""
$ program
{"--all": []}
$ program --all 1
{"--all": ["1"]}
$ program --all 2 --all 3
{"--all": ["2", "3"]}

r"""Usage: prog [options]

Options:
  --all  ...  Foo
"""
$ program --all --all
"user-error"

r"""Usage: prog [options]

Options:
  --all ARG  ...  Foo
"""
$ program --all foo --all bar
"user-error"

Two notes:

This prevents flag argument names from beginning with a .. I don't think I've ever seen such a flag argument name in the wild, so I think that's OK.
I've left out any ability to emulated bounded repetition, which can still only be expressed in a usage pattern (e.g., -aa). I'm not convinced we want that much flexibility in the option descriptions, and if we did, it could always be added later.

@BurntSushi that all looks great! The only possible concern I can come up with is that --foo BAR ... kinda looks like --foo a b c d gets parsed as {"--foo": ["a", "b", "c"]} (but that's not possible due to ambiguities), but that could possibly be fixed by requiring --foo=BAR .... That being said I prefer the aesthetics of --foo BAR ... so I'd want to accept both.

Hmm, good point. I guess the issue there is, at least as I understand it, this is a valid usage string today:
Usage:
  program --all ARG ...

Options:
  --all ARG  Foo.

So we'd probably want to stay consistent. But certainly --foo=BAR ... would also be accepted!

@BurntSushi looks good.
Also, I'm pretty sure that future versions of docopt will require you to write --all=<arg> and disallow --all <arg> in usage (but not in command-line). Can't find the issue where this was discussed, but the point is that --all=<arg> is readable without context, where in case of --all <arg> you need to scroll down to see the option's description to disambiguate.

Hey all:
I wrote a project called docpie, which is similar to docopt but with the feature above (and also some other features & differences):
"""Usage: prog [options]

Options:
  -a ...  Foo
"""
from docpie import docpie
print(docpie(__doc__))

$ program
{'--': False,
 '-a': 0}
$ program -aa -a
{'--': False,
 '-a': 3}

"""Usage: prog [options]

Options:
  -a ARG...  Foo
"""

$ program
{'--': False,
 '-a': []}

$ program -a 1 2
{'--': False,
 '-a': ['1', '2']}

"""Usage: prog --all=ARG..."""

$ program --all 1 2
{'--': False,
 '--all': ['1', '2']}

"""Usage: prog (--all=ARG)..."""

$ program --all 1 --all=2
{'--': False,
 '--all': ['1', '2']}

"""Usage: copy <source_file>... <target_directory> <log_file>"""

$ program a.txt b.txt / /tmp/log
{'--': False,
 '<log_file>': '/tmp/log',
 '<source_file>': ['a.txt', 'b.txt'],
 '<target_directory>': '/'}

What do you think? It's very new, so unlike docopt, it needs more tests & feedbacks.
Any suggestion is welcome :)

Missing this feature.  It means that instead of specifying all options in an Options: section, simple repeating ones like -v... must be specified outside of that section.

Is there any movement on this? It sounds like there's code that could be PR'd?

Looking now...

I'd love to have this. I'm unfortunately not familiar enough with Python or Doctopt's source code to provide a PR myself.


Log and persist events by ID

Trello: https://trello.com/c/zjBz0vTu
Declare and persist events by identifiers, rather than by their string
representations.
These changes will allow the event_id and event attributes/columns to
coexist until such time a migration is ran to convert the existing
event column values to their respective event_ids.
Some of the changes to support this:

Override event reader and attempt to map message via EVENTS
Add the event_id attribute for persistence
Default event to an empty string so it is no longer mandatory
Don't validate event when an event_id is provided
Fixup broken specs that referred to the event directly
Removed a redundant spec that was well covered elsewhere

A follow-up PR is due shortly to populate the event_ids of existing rows via
mapping from the event. After this we can dispense with the event column.

My apologies if this has already been discussed, but would this work better as a set of objects with properties such as id, message, requires_initiator? and so on? At the moment there's the possibility of an event type being added without a message, for example.

@jamiecobbett That's a good point. I think we can cover this by beefing up the validation on event_id. Give me a few moments.

@jamiecobbett d3ba8dc should guard against that particular circumstance. I agree that perhaps relying on constants and a hash lookup isn't the cleanest possible approach, but thought it good enough for something stable that isn't core to the application.


Updating CAPI Overview - Prereqs Section/Additional Links

Adding an update to the CAPI Overview page "Prerequisites" section specifying where to disable and remove webhooks and the embedded-cluster-api, as well as adding links to the CAPI site on CAPI provider information.

@martyav Just updated the steps across versions!

There are a few more broken links (/docs in the turtles URL) on lines 95, 180, 188.

Apologies Billy, should all be updated now!


failed to npm install with node 16

just upgraded to node 16 and realized sigma-vue failed to 'npm install' as it failed to build node-sass.

this is an upstream issue, until then node 14 has to be used for now.

in fact node-sass is deprecated and will never be updated, https://sass-lang.com/blog/libsass-is-deprecated an alternative must be used for the future otherwise you will never able to use node16+ for this project

"If you’re a user of Node Sass, migrating to Dart Sass is straightforward: just replace node-sass in your package.json file with sass. Both packages expose the same JavaScript API." here is my fix:
npm uninstall node-sass
npm i -D sass
after that node-16 works fine

to migrate from node-sass to sass
https://github.com/sass/migrator
npm install sass-migrator
sass-migrator module --verbose src/assets/layout/layout.scss

Please check with the latest version.


Quick starts version bump to 2.1.0

Includes Cooper's work in https://github.com/redhat-developer/app-services-guides/pull/391
Updating quick starts to 2.1.0, this includes the fix for the prerequisite links not being rendered in the introduction step.

cc @wtrocki @pmuir

Lock file needs to be created using npm version from repo. Otherwise build is failing

thanks @wtrocki that did it


test: Added tests for corporate card component changes

Description

🤖 Generated by Copilot at 219619c
This pull request adds and updates mock data, unit tests, and HTML attributes for the corporate card feature in the mobile app. It mainly affects the platform-corporate-card.data.ts, corporate-credit-card-expense.service.spec.ts, tasks.service.spec.ts, corporate-card.component.html, corporate-card.component.spec.ts, and bank-feed-sources.data.ts files. The purpose is to enable testing and development of different card feed sources and scenarios for corporate card expenses.

🤖 Generated by Copilot at 219619c

We're testing corporate cards with mock data, me hearties
We're testing corporate cards with mock data, yo ho
We'll cover every case and every source, on the count of three
We'll cover every case and every source, and away we go

Walkthrough

🤖 Generated by Copilot at 219619c

Add a new file bank-feed-sources.data.ts that exports an array of bank feed source enums for mock data purposes (link)
Rename the platformCorporateCard variable to mastercardRTFCard in the platform-corporate-card.data.ts file to reflect that it is a card connected to the Mastercard RTF feed (link)
Add four new mock data objects for different types of corporate cards: visaRTFCard, statementUploadedCard, bankFeedCard, and yodleeCard in the platform-corporate-card.data.ts file (link)
Import the bankFeedSourcesData array from the bank-feed-sources.data.ts file in the corporate-credit-card-expense.service.spec.ts file to use it for testing the service methods (link)
Replace the platformCorporateCard variable with the mastercardRTFCard variable in the getCorporateCards test case in the corporate-credit-card-expense.service.spec.ts file to match the updated mock data (link)
Add a new test case for the getBankFeedSources method in the corporate-credit-card-expense.service.spec.ts file to verify that it returns the expected array of bank feed source enums (link)
Replace the platformCorporateCard variable with the mastercardRTFCard variable in the tasks.service.spec.ts file to match the updated mock data (link, link, link, link, link)
Add a data-testid attribute to the default card icon, icon container, visa icon, mastercard icon, more options button, feed live status, last synced date, and data feed source elements in the corporate-card.component.html file to facilitate testing with selectors (link, link, link, link, link, link, link, link)
Modify the corporate-card.component.spec.ts file to add the necessary imports, mock components, providers, and variables for testing the corporate-card.component.ts file and change the xdescribe to fdescribe to focus on this test suite (link)
Add several test cases for the corporate-card.component.ts file to verify the logic and rendering of the card number, card logo, options menu button, and feed information based on different types of corporate cards and data feed sources (link)

Clickup
https://app.clickup.com/t/85ztm6gjv
Code Coverage
Corporate Card Component

Card Number Component

Will review after @rvab/ @Dimple16

@rvab @Dimple16 You can refer the implementation PR for these test changes here
The above PR is large, it is due to a bunch of lint fixes in it. 🙏


Footer Structure

In  this milestone of Js capstone, we have :

Created the footer structure
Styled the footer
fix CSS linters

Status: Approved  :+1: :
Good job applying the project requirement!

GOOD HIGHLIGHTS :heavy_check_mark:

Linter checks are passing
Good commit messages
Professional README.md description
Adhered to GitHub flow
Check the comments under the review.

Cheers and Happy coding :clap: :clap: :clap:
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me in your question so I can receive the notification.


Refine syscall generation

Summary
The first three patch fix the minor issue found during review
The last two patch reduce the files need to be modified when we add/delete/modify syscall function
Impact
Testing

It's unavoidable to include header file out side the include section:
syscall/syscall_funclookup.c:124:3: warning: #include outside of 'Included Files' section
syscall/syscall_nparms.c:58:3: warning: #include outside of 'Included Files' section
syscall/syscall_stublookup.c:73:1: warning: #include outside of 'Included Files' section
syscall/syscall_stublookup.c:90:3: warning: #include outside of 'Included Files' section
include/sys/syscall.h:67:3: warning: #include outside of 'Included Files' section

I added Issue #994 to address this.


Support for AWS Lambda under API Gateway

This would be valuable if run in a Lambda and could take requests coming from API Gateway.
I am interested in adding support for this. Has there been any thought about this use case? What would be the best way to begin?

I'm not sure I understand the need, can you give me an example of use?
At first it sounds interesting and promising 😃

In AWS, you can have a serverless API by using Lambda for code execution and API Gateway for receiving the API calls and passing them to the Lambda.
Typically, postgrest (and I assume prest now) was used behind a proxy that would manipulate the URL to something more user friendly. I'm suggesting supporting AWS Lambda execution of prest. AWS Vends a Golang REST API proxy that works with GorillaMux https://github.com/awslabs/aws-lambda-go-api-proxy which might facilitate this.
If prest supported Lambda, then API Gateway could do the job that NGINX often does and manipulate the urls. Perhaps it would be good to vend an AWS CDK Construct that would create a Lambda using prest and the API Gateway needed to do the URL mapping. Then users could easily deploy prest into AWS.

@aidan-plenert-macdonald so I understood it would be to create a page in the documentation of how to configure pREST on AWS using AWS Lambda, not necessarily an implementation on pREST core, correct?
If so (and being part of the aws team), can you contribute to this documentation?

@avelino I created a Draft PR https://github.com/prest/prest/pull/395/files with roughly the work needed to make this work. Obviously needs tests and such. Just wanted to get a thumbs up before going much further.
And suggestions or comments?


Extend information from leapp saved to leappdb

Extend leappdb for leapp-inspector
This commit combines multiple additions to the leapp database.
First addition is tracking of entity metadata. The Metadata model stores the metadata of entities such as Actor or Workflow. This data is stored in a new table metadata of the leapp.db file.

metadata of discovered actors.
For an actor, the metadata stored contain:
class_name    - the name of the actor class
name          - the name given to the actor
description   - the actor's description
phase         - phase of execution of the actor
tags          - names of any tags associated with an actor
consumes      - list of all messages the actor consumes
produces      - list of all messages the actor produces
path          - the path to the actor source file

workflow metadata.
For a workflow, the metadata stored contain:
name           - name of the workflow
short_name     - short name of the workflow
tag            - workflow tag
description    - workflow description
phases         - all phases associated with the workflow

Next addition is tracking of dialog question. Previously leapp was not able to detect the actual question asked from the user as it could be generated dynamically when actor is called and depend on the configuration of the user's system.
Last addition includes storing the actor exit status. Exit status is now saved as an audit event actor-exit-status. Exit status 0 represents successful execution or StopActorExecution/StopActorExecutionError, while 1 indicates an unexpected and unhandled exception.
These changes collectively improve the metadata handling capabilities of, ensuring accurate storage and retrieval of essential information for various entities.

/packit copr-build

rebased

@dkubek seems good to me :100:   I will do some testing yet on rhel8 to be sure and I think we can squash&merge it.

/packit copr-build


Fail to open a file which is uploaded using the generated path on Windows

Repro Steps:

Generate a file path and copy it to clipboard.
Right click one blob container and select 'Upload block blob...'.
Paste the generated path to the Text Box, then press Enter.
Check whether the uploaded file can be opened or not.

Expect:
Succeed to open the uploaded file.
Actual:
Fail to open the uploaded file with error.

Repro...

Closing pending customer feedback.


thanks alot for specific solution, I think Needed cache management

My tenants are stored in db. first load read al from db. When upddated refresh cache
i need to do.
As i could understand there is not a way to do that.
regards
ans thnks alot again ..

SaasKit provides caching support but it's pretty basic right now as you can't control the CacheItemPolicy used to cache instances.
For now, you can get access to the cache instance used by the CachedTenantResolver like so:
MemoryCache cache = new MemoryCache("SaasKit.Tenants");

You can then call cache.Remove providing you know the cache key used by the tenant instance.
Are you using Sql Server? If so you could implement your own version of CachedTenantResolver that makes use of SqlChangeMonitor.

Nope using mysql and Identity 2.0
I solved by clearing cache.
regards.


Enable ARM Compute Library: compiler issues

https://github.com/ARM-software/ComputeLibrary
Enable with Clvk and Clspv

@kpet , should we also close this one?

Yeah, unless @dneto0 disagrees, I suggest we create more specific issues if/when needed.