Rename ngModel to a more fitting name.

After using Angular for a while, ngModel appears to me to have nothing to do with models. It feels more like a pipeline to transfer data two ways. Its description is:
The ngModel directive binds an input,select, textarea (or custom form control) to a property on the
scope using NgModelController, which is created and exposed by this directive.

I feel like a model in Angular should be a place to store and query your data. Tutorials often teach you to manipulate and store your data via $resource, but $resource, to my understanding, is for HTTP and not for data modelling. $resource was also used as the premise for a data modelling course on EggHead which may further the confusion for new Angular developers.
This leads a developer to have to break the separation of concerns from HTTP to models. I've noted, in the previous paragraph, that there's two issues: the first with models being treated as transferring data and the second being the use of $resource for models.
Are we able to rename ngModel to something else such as ngTransfer or ngScope. I don't beleve those two names have been used yet and I think it would help improve Angular.

I'm posting this issue because I'm finding it exceedingly difficult to understand how to structure, facilitate, and modularize Angular applications. The reasons behind this difficulty is not a lack in tutorials, but in a difficulty in understanding how to store and query large amounts of JSON documents passed down from a server to Angular. It feels like there's a glass roof in the way when it comes to storing JSON with Angular. When googling for models with Angular, I'm receiving the wrong posts about a subject, that inappropriately named.

Data Model has everything to do with models, and this is how Angular interprets it. Having said so, I agree there is a share of confusion here. Let's consider for a moment the types of binding in Angular...

Static binding: ng-bind='value'
One-way binding: ng-bind='variable'
Once-off binding: ng-bind='::variable'
Two-way binding: ng-model='variable'

It is easy to see that somehow item 4 suddenly falls out of what otherwise is a logical way to binding declaration, so one has to ask - why deviate from using ng-bind all-of-a-sudden?
Why not use something that fits the common ng-bind declaration approach? Just like ng-bind was done for once-off binding we can intriduce another symbol in front of the variable to symbolize two-way binding, the only question is - what should it be? Well, there is answer to that too...
There is an existing syntax in Angular for binding in directives:
'@' - constant binding;
'&' - one-way or function binding;
'=' - two-way binding;
Surely, ng-bind must be made into something thats consistent with that... ;)

@BenMorganIO ngModel is exactly model, object with data. $resource is REST endpoints wrapper, not related to ngModel at all.

@BenMorganIO as noted by @jamm there seems to be a bit of confusion here... In AngularJS model is any JavaScript object that is exposed on a scope. $resource, on the other hand is just a fancy method of retrieving data (JSON) from a RESTful back-end and converting them to JS objects . Those objects can be exposed on a scope, then, to form model accessible to templates.
Now ngModel propagates input values from the DOM to model and from model to DOM. We could always think of a better name but I don't think we can realistically expect to change the name of the one of the most used directives like this. It would be a massive breaking change and we would need to have really good reasons....
Naming things is hard and there is always a risk that a chosen name won't fit mental model of a person mapping this name to some concept. But here we are - a name was chosen and I think we are stuck with it for good...
I'm not sure there is any action we could take here, going to keep this issue opened for few days to see what people think, but yeh, don't hold your breath...

@VitalyTomilov I actually really understood that explanation of ng-bind. For what its worth, I think some of your explanations for the current functionality of ngBind should probably be carried over to the documentation. People getting started with Angular (people like me) would enjoy hearing your explanations. Can the documentation/examples be updated to cover the @, &, and :: as well?
@jamm This is exactly what I was thinking as well. From reading the online tutorials, I was deeply confused about how models and data storage in Angular worked without a $resource.
@pkozlowski-opensource The definition of a model being that it exposes a scope is a nice definition. You could say that in Rails a model may be something that can expose a table's data to a ruby object. $resource maps to a RESTful API? Love that.
A lot of the times, you can identify a name in programming as good or bad is by breaking it down into verbs, nouns, adjectives, adverbs, prepositions, and so on...
When you say model, you're talking about a noun. When you describe models, you begin describing them as a "structure" or "representation". When you go to describe actions or the movement of the data, you use things like "get", "push", "transfer", "grab", "delegate". The argument here is that ngModel is used to "propagate". Its used as a verb.
So, I decided to look at dictionary.com. Maybe we might be able to get away with the ngModel name...
You'll notice that the word model can't be used as a verb, but it can be used "without referring to an object" via "modeled, modeling or (especially British) modelled, modelling."
I wonder what the best route is for minimizing the confusion. I'm also wondering what other peoples thoughts are.

@BenMorganIO I don't think there was any intention for the "model" from the ngModel to be a verb. If would like to express it like it verb it would be more like "ng-make-sure-that-JS-object-on-a-scope-and-DOM-are-in-synce-when-any-of-those-change".

@pkozlowski-opensource, it is true that ng-bind is used as a verb, while ng-model is a noun, which only adds confusion :)

A lot of the confusion has to do with people thinking of Angular as an MVC, whereas it's more of an MVVM. The ng-model (and other data attached to $scope) is the View-Model part of MVVM.

I find the name of ngModel to be great just the way it is. Modal as in 'data model' / 'model object'.

I take it from the last couple posts people didn't really read the first two posts to understand the nature of the problem that's explained, the illogical mixture of ng-model vs ng-bind and the prefix use in model variables vs directive scope variables.

@VitalyTomilov I can agree with that...

I see how this can be confusing. However, given that the term ngModel is established, and has even made its way into angular2, there's no real gain changing the name at this point. Aliasing to a new name also would cause more confusion than anything else. The only thing I think we could do is update the documentation to make things clearer. If anyone wants to provide this update, I'm happy to look at it.


Exception in Github onLogin callback

There is some legacy code to be removed onLogin callback, that throws exception every time user uses Github login, https://github.com/apinf/api-umbrella-dashboard/blob/develop/server/accounts.js#L60
I20160613-10:46:10.675(3)? Exception in onLogin callback: ReferenceError: GitHub is not defined
I20160613-10:46:10.675(3)?     at server/accounts.js:67:20
I20160613-10:46:10.675(3)?     at runAndHandleExceptions (packages/callback-hook/hook.js:133:1)
I20160613-10:46:10.675(3)?     at packages/callback-hook/hook.js:140:1
I20160613-10:46:10.675(3)?     at packages/accounts-base/accounts_server.js:167:5
I20160613-10:46:10.675(3)?     at [object Object]._.extend.each (packages/callback-hook/hook.js:109:1)
I20160613-10:46:10.676(3)?     at AccountsServer.Ap._successfulLogin (packages/accounts-base/accounts_server.js:166:21)
I20160613-10:46:10.676(3)?     at AccountsServer.Ap._attemptLogin (packages/accounts-base/accounts_server.js:349:10)
I20160613-10:46:10.676(3)?     at [object Object].methods.login (packages/accounts-base/accounts_server.js:526:21)
I20160613-10:46:10.676(3)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1704:12)
I20160613-10:46:10.676(3)?     at packages/ddp-server/livedata_server.js:711:19

@bajiat I am interested to cleaning up this.


Modify record file

Is there a way that I can extract information, write in information or delete information in a record file?
System information

OS Platform and Distribution (e.g., Linux Ubuntu 14.04): Linux Ubuntu 16.04
Apollo installed from (source or binary): source
Apollo version (1.0, 1.5, 2.0, 2.5, 3.0): 3.5

Hi @AOIlunar ,there are two ways to modify record, C++ and Python API. Please refer to C++ Record Demo,Python Record Demo. For more, please read this document  CyberRT_API_for_Developers.Hope to help you.


Update MD file on new branch 2017-12-09_09-42-39

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon1.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


[Footer section]

Description
By adding this animation in links of discord ,facebook, youtube and google footer section of Curious Connect looks more attractive.
Screenshots
https://github.com/Curious-Ecosystem/Curious-Connect/assets/162671639/11f4fe62-154b-481b-abde-6122773f31ff
Checklist

[X] I have checked the existing issues.
[X] I have read the Contributing Guidelines
[X] I have read the Code Of Conduct
[X] I joined onboarding group for knowledge flow and direct conversation and support from admins  Curious Developers Community - Curious Connect
[X] The changes don't break the code
[X] Please attach the screenshots and video of the development work once it is done
[X] If you need any help please join the default  (Google Meet Link)

Before

AFTER
https://github.com/Curious-Ecosystem/Curious-Connect/assets/162671639/a78d7e45-2d45-4c43-ac56-69fd03610291
I'm Husandeep Singh here GSSoC Contributer . sir please assign me this issue .

Sure you can check about this @Husan7

Yes sir I am working on it. I will definitely complete it .


Small typo in Readme.md

In setup:
Clone the repository:
git clone https://github.com/your-repo/ai-hedge-fund.git`
Change to
https://github.com/virattt/ai-hedge-fund.git

Thanks! Updated


Add Delete Existing Task Functionality

There's currently no way to delete an existing Task.
NB:

This should be done by using Local Storage.
This waits for issue #2

Yup, It's yours @ItzNesbroDev

Can I work on this?

Yup, no prob @aritroCoder.

I want to point out some things we need to implement before doing this task.

To make the delete task button accessible, we need to fix another issue (issue 1, closing of the pop up)
To make delete task button work, we need to give a unique id to each task (again this is a part of the create task functionality issue), so that we can reference a task by its unique id to delete it.

As both of these are part of their own seperate issues, how should I proceed with implementing this feature?
my suggesstion is you can reopen issue 2 and assign it to me, then I will make the localstorage store a unique id for each task, which can be used to implement the delete functionality here

@aritroCoder , by now I think the 2 are compete.
And we'll maybe have to wait for the design a little so as to know what to do next.


Support libsecp256k1

We currently use C binding rust-secp256k1. Consider also support libsecp256k1!

Fixed in master.


Fixed quic client bugs.

Codecov Report
Patch coverage has no change and project coverage change: -0.09 :warning:

Comparison is base (2f251fe) 54.65% compared to head (6cfce22) 54.56%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #141      +/-   ##
==========================================
- Coverage   54.65%   54.56%   -0.09%
==========================================
  Files          95       95
  Lines       25332    25335       +3
==========================================
- Hits        13844    13824      -20
- Misses      11488    11511      +23

Impacted Files
Coverage Δ

src/mqtt/protocol/mqtt/mqtt_quic.c
0.00% <0.00%> (ø)

... and 15 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

cool


Can't preview local image when coordinate with "Markdown All in One"

I installed this two extensions below for markdown writing, both of them are enabled.

When inserting local image, the preview page just can't load the image.
(It works well when inserting picture url :) )

I disabled markdownlint and reload vs code, the preview page just can load the local image.

I tried again.
It works well (successfully loaded local and internet images) when disabling either markdown all in one or markdownlint.
However, if I disabled markdown all in one, the preview page just can't render Latex :(

What you describe about images not loading sounds like this behavior in the documentation: https://code.visualstudio.com/docs/languages/markdown#_markdown-preview-security
Could you please have a look to see if it is related?
The markdownlint extension does not do anything to modify the document and it is not involved with the Preview window, so I do not think it should be part of this problem.
Sent with GitHawk

Thanks for your warming help :) !
I tried but it seems not related to the preview security settings :(
I also raised issue under all-in-one repo.
https://github.com/neilsustc/vscode-markdown/issues/296
They seem to have some clues now :)
Thanks again!

Closed as suggested by https://github.com/neilsustc/vscode-markdown/issues/296#issuecomment-428305193
Sent with GitHawk


test: add test cases for joins

Adds test cases for simple foreign keys, many to many tables, and joins between tables. This tests the functionality of the commutator and hash functions for the ulid type in postgres.
ref: #13

Superseded by #16


Possible error in the documentation of DifferentialActionModelAbstractTpl

Hi,
I was reading the documentation of DifferentialActionModelAbstractTpl and I think there might be an error within the documentation. When showing what the cost function for DifferentialActionModelAbstractTpl should describe, it shows that
l(x, u) = \int_{0}^{\delta_t}{a(r(x, u))}dt

I was wondering if the value of l(x, u) in this case should actually be
l(x, u) = a(r(x, u))

Yes, you're right! We integrate the cost function in the integrated action. I would be fantastic if you can help us to improve the documentation.

Of course, I would be glad to help! I can do a PR with the updated doc.


Codereview

This code review should include all the comments we talked about last week. There are two things I'd like to note.

I removed the panic in log.go. This was a bit of a tricky one. That function is mostly used in global declarations, so returning an error there wasn't an option. Since those declarations are global, if that panic were to happen, it would always happen on startup. But since not panicking is within the standard, I instead replace the bad fields with an indicator that an invalid logger was created.
I didn't rename the util package. I'm not sure what the right direction is for that issue. It could be simply renaming the package, or it could be separating the files within util into several more descriptive packages. For now, I'm leaving it as-is, and I'm opening a github issue on it so I won't forget to come back to it later.

Looks good to me.


Update cats-effect to 3.0.1

Updates org.typelevel:cats-effect from 2.4.1 to 3.0.1.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Applied Migrations

github:typelevel/cats-effect/v3_0_0?sha=series/3.x

Files still referring to the old version number
The following files still refer to the old version number (2.4.1).
You might want to review and update them manually.
website/yarn.lock

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.typelevel", artifactId = "cats-effect" } ]

labels: library-update, semver-major, scalafix-migrations, old-version-remains

Superseded by #195.


Remove upstream-breaking REVOKE CONNECT * FROM public

The default installation of Pg allows public to connect - given proper pg_hba entries. The REVOKE subltely breaks expected usage.
Summary
Provide a detailed description of all the changes present in this pull request.
Additional Context
Add any additional context about the problem here.

[ ] Root cause and the steps to reproduce. (If applicable)
[ ] Thought process behind the implementation.

Related Issues (if any)
Mention any related issues or pull requests.
Checklist

[ ] 🟢 Spec tests.
[ ] 🟢 Acceptance tests.
[ ] Manually verified. (For example puppet apply)

 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.

I tried to understand why it was even there, but it's ancient code. 1175ea2 is the earliest version where it was introduced. After that it was only minor stylistic changes or moving it around. Given that's 12 years old I wonder if it was a workaround for something.
Do you have any idea?

Yup. I looked at its origin as well. The commit doesn't lend itself to understanding why it was introduced. The comment in the code makes it seem like it is for "security" purposes. I suppose in theory it is more secure, but in practice I'm dubious of its security related benefits. Nevertheless, it deviates from upstream defaults and makes things more challenging when working with folks who don't know that this REVOKE is altering things.
I know this would be a backwards incompatible change, but I'd vote for merging the PR.

Any idea what it will take to get this PR merged?

Hello @ekohl

You signed the CLA (IIRC you didn't when I last looked) and we can ignore the mend check. Not sure if I've ever seen that green.

Good to know.

Reading up on this (https://www.red-gate.com/simple-talk/databases/postgresql/postgresql-basics-roles-and-privileges/) tells me that in PostgreSQL < 15 any user could CREATE objects if they had CONNECT permissions. You can also (including >= 15) read schema information. As such I think this change has security implications.

There is still the pg_hba that affects whether users can login and what they can login to.
Not all security would be lost with this change.
The article reference above does state:
"""
As a database administrator you could REVOKE the ability for the PUBLIC role to CONNECT and then grant it to each role individually, but the complexity of managing that is rarely worth the effort.
"""
Also, the default upstream is to allow connect to public.
Nevertheless, I agree that merging this commit would be a breaking change, which you state below.

Because of that I'd at the very least treat this as a breaking change. Even better if we can figure out why it breaks. My reading is that it should work and perhaps there's another solution that maintains the hardening

What do you mean by "figure out why it breaks"? Are you talking about the module before my commit - which revokes connect and breaks what upstream ships? or are you talking about post-merge of my commit, which would be a breaking change for the module? Either way, I thought we knew "why" it is 'breaking'.
Also, what do you mean by "it should work"? I thought it was obvious why it didn't work.
Thanks for filling in the gaps for me.
Cheers,
-m

What do you mean by "figure out why it breaks"? Are you talking about the module before my commit - which revokes connect and breaks what upstream ships? or are you talking about post-merge of my commit, which would be a breaking change for the module? Either way, I thought we knew "why" it is 'breaking'.

I'd like to know how it breaks.

The REVOKE subltely breaks expected usage.

If you could provide any details or even better, a reproducer where something relies on the CONNECT permission to a database.

What do you mean by "figure out why it breaks"? Are you talking about the module before my commit - which revokes connect and breaks what upstream ships? or are you talking about post-merge of my commit, which would be a breaking change for the module? Either way, I thought we knew "why" it is 'breaking'.

I'd like to know how it breaks.

Ah. Yes.
I am trying to create read-only admins on for my Pg server to be able to view any database and corresponding objects in any database:
postgresql::server::role { "foo":
    username => "foo",
    superuser   => false,
    createdb    => false,
    createrole  => false,
    replication => false,
    password_hash => postgresql_password(
                "foo",
                $password_to_use,
    ),
}

and I've got the following command being exec'ing via psql in puppet:
GRANT pg_read_all_data TO foo;

and I've got the correct pg_hba entry to allow local login. But I cannot connect to any of the databases on the system that were created with puppet (due to the REVOKE).
However, if I manually create a database, I can connect and perform read-only operations on the data.
The Pg users mailing list helped debug the disconnect between what I was trying to do and what reality was:
https://www.postgresql.org/message-id/CAOLfK3Vj-PFBJi28y1170ZP3dGeW2qpG_8_9CbaJWvEgXQ8-jQ%40mail.gmail.com

I still like the hardening it provides so perhaps we should clearly document the behavior and how to deal with it if needed.

I still like the hardening it provides so perhaps we should clearly document the behavior and how to deal with it if needed.

If we're relying on this REVOKE because bad actors are connecting to the DB and:

Pg < 15 - are creating objects in the DB
or
Pg >= 15 - viewing the schema

...then the users of this puppet module have far greater security policies to implement. This isn't even considering that the bad actor(s) would have to be allowed access in the HBA, too.
The breakage from upstream defaults is of more concern for admins who want to leverage this module.
Either way, perhaps we can add an attribute:
Boolean $revoke_connect = true,

to the defined type. Thus allowing admins to turn off the revoking if so desired.
Thanks,
-m

I still like the hardening it provides so perhaps we should clearly document the behavior and how to deal with it if needed.

If we're relying on this REVOKE because bad actors are connecting to the DB and:
1. Pg < 15 - are creating objects in the DB
   or

2. Pg >= 15 - viewing the schema

...then the users of this puppet module have far greater security policies to implement. This isn't even considering that the bad actor(s) would have to be allowed access in the HBA, too.
The breakage from upstream defaults is of more concern for admins who want to leverage this module.
Either way, perhaps we can add an attribute:
Boolean $revoke_connect = true,

to the defined type. Thus allowing admins to turn off the revoking if so desired.

Any further dialogue on this topic? If not, we can close the issue.
-m


[chore] Redesigned value prop on the enrolled courses screen

Description
LEARNER-8423
In this PR new design of the value prop on the enrolled courses screen has been changed. This PR also fixes the voiceover of the enrolled course card.

@saeedbashir Top corners are not rounded as they are on the figma design.


Tests don't build without special flags

Describe the bug:
As highlighted in #873, some tests fail with common tool chains unless specific flags are used.
To Reproduce:
Ideally, a program should be buildable with
conan install --options test=unit path/to/cnl && conan build path/to/cnl

Fixed in #876


[Bug]: Theming does not work for apps created with CRUD page builder

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
Apps created with crud page builder do not have theming binding. So they don't inherit styles from theming.
Steps To Reproduce

Create a page with a page builder.
Change theme.
Notice the widgets won't inherit from theming.

Environment
Production
Version
Cloud

Closing as done.


ZEPPELIN-818: Set appropriate default permissions and allow user to c…

What is this PR for?
This PR makes users who set only r/w permissions the effective owners of the note.

If you set readers, and writers and owners is empty, it is automatically set to the user requesting the change.
If you set writers, and owners is empty, it is set it to the user requesting the change.
It also fixes a bug that did not allow one to clear the permissions for a note.

What type of PR is it?
Bug Fix, Improvement
Todos

[ ] - Task

What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-818
How should this be tested?
Outline the steps to test the PR here.
Questions:

Does this needs documentation? YES

…lear permissions
This change makes users who set permissions the effective owners of the note.

If you set readers, and writers and owners is empty, it is automatically set to the user requesting the change.
If you set writers, and owners is empty, it is set it to the user requesting the change.

There is another PR on this same bug?
https://github.com/apache/incubator-zeppelin/pull/846

correct, I was in the process of submitting a fix to the JIRA that I filed when that got submitted. This PR also addresses the issue of default owner/writer permissions when they are not set and includes unit tests for both issues.

Should this be a different JIRA then?

Looks good. Thanks @rohannr for good improvement.
Could you create new JIRA issue as @felixcheung suggested and rebase to resolve conflict?

Created a new JIRA (ZEPPELIN-825) and resolved conflict. Change is ready to merge

Thanks @rohannr for the improvement and test. LGTM

Merge if there're no more discussions


Provide opt-in to latest lkg symbol binaries

$ git cherry-pick 381a7076fe7cc76cad1a2daaf4709d09455e30ef
[users/jerick/symBinaries119 d4ca3f982] Provide opt-in to latest lkg symbol binaries
Author: Sean Prendergast<EMAIL_ADDRESS>Date: Fri Jun 16 09:26:25 2017 -0700
25 files changed, 387 insertions(+), 161 deletions(-)
create mode 100644 Tasks/PublishSymbols/SymbolsCommon.psm1
create mode 100644 Tasks/PublishSymbols/Tests/Get-SymbolBinaryPathCallers.Succeed.ps1
rewrite Tasks/PublishSymbols/make.json (97%)

@jerickmsft,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

Holding off until TFS deployment is complete.

Merging because TFS 119 deployment completed per vstsdepcomm Thu 7/6/2017 12:34 PM


Update mocha

Coverage remained the same at 100.0% when pulling 155ebd47c8dd65ff6ac3f89f3653063e63e82ead on fix/update-mocha into 34141f8ddc35350d88e5a1d626657cdc6db28c03 on master.

Coverage remained the same at 100.0% when pulling 155ebd47c8dd65ff6ac3f89f3653063e63e82ead on fix/update-mocha into 34141f8ddc35350d88e5a1d626657cdc6db28c03 on master.


🚩: Milestone 4: bookstore | feature/connectAPI - >>branch<< -

🚩: Milestone 4: bookstore | feature/connectAPI - >>branch<< -
Here is a summary of what has been done:

Set up the booksAPI.js file to manage the API information.
Use the axios library with createAsyncThunk to fetch the books from the API.
Refactor the previous code to have the same behavior as before but with changes that persist to the API.

In this new Branch, I have ADDED the succeeding *📂 folders and **📄 files.

📂* src/API/

**📄 booksAPI.js

I have added the booksAPI.js file to manage the API information.

In this Branch, I have MODIFIED the succeeding 📂* folders and 📄** files

📂* root/

**📄 index.js

Dispatch the fetchBooks action creator.

**📄 package.json

**📄 package-lock.json

I added the axios library.

**📄 index.css

I added some styling to the index.css file.

📂* src/components/

**📄 AddForm.js

Updated the onFormSubmit  event handler to dispatch the addBookAsync action creator.

**📄 Item.js

Changed the onClick event handler to dispatch the removeBookAsync action creator.

**📄 DisplayBooks.js

Added the useEffect hook to dispatch the fetchBooks action creator.
Added the useDispatch hook to dispatch the fetchBooks action creator.
Modified the map function with a ternary operator to iterate over the books array or display a message if the array is empty.

📂* src/redux/

📂* books/

**📄 booksSlice.js

Added the axios library to the booksSlice.js file.
Added the fetchBooks, addBookAsync and removeBookAsync action creators with the createAsyncThunk function from redux-toolkit.
Created the respective extraReducers for each action creator.

📂* src/styles/

**📄 AddForm.css

**📄 DisplayBooks.css

I added some new selector for styling to the AddForm and DisplayBooks components.

Thank you for taking the time to review this PR ⭐!

Thank you very much @usorfaitheloho ✨✨


After upgrading to Ionide 5 problem with locked version from global.json | Proposition to add a user friendly error message

Is your feature request related to a problem? Please describe.
This feature request is related to Ionide v5 released.
Describe the solution you'd like
In my project, I have a global.json which lock the version to 3.1.201. After Ionide update my project was not loading anymore and I had this error in the project status:
Build started. Project "Fleet.Mapping.fsproj" (ResolvePackageDependenciesDesignTime;_GenerateCompileDependencyCache;CoreCompile target(s)): Building with tools version "Current". Target "ReportAssetsLogMessages" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "RunResolvePackageDependencies" depends on it): Using "LoadAssetsFile" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "LoadAssetsFile" Done executing task "LoadAssetsFile". Using "ReportAssetsLogMessages" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "ReportAssetsLogMessages" Done executing task "ReportAssetsLogMessages". Done building target "ReportAssetsLogMessages" in project "Fleet.Mapping.fsproj". Target "_CheckForUnsupportedTargetFramework" skipped, due to false condition; ('$(_UnsupportedTargetFrameworkError)' == 'true') was evaluated as ('' == 'true'). Target "_CollectTargetFrameworkForTelemetry" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "RunResolvePackageDependencies" depends on it): Using "Telemetry" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "Telemetry" Done executing task "Telemetry". Done building target "_CollectTargetFrameworkForTelemetry" in project "Fleet.Mapping.fsproj". Target "RunResolvePackageDependencies" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageDependenciesDesignTime" depends on it): Task "CheckForTargetInAssetsFile" skipped, due to false condition; ( '$(DesignTimeBuild)' != 'true') was evaluated as ( 'true' != 'true'). Using "ResolvePackageDependencies" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "ResolvePackageDependencies" Done executing task "ResolvePackageDependencies". Done building target "RunResolvePackageDependencies" in project "Fleet.Mapping.fsproj". Target "AssignProjectConfiguration" skipped, due to false condition; ('$(CurrentSolutionConfigurationContents)' != '' or '@(ProjectReference)'!='') was evaluated as ('' != '' or ''!=''). Target "ProcessFrameworkReferences" skipped, due to false condition; ('@(FrameworkReference)' != '') was evaluated as ('' != ''). Target "_CheckForLanguageAndFeatureCombinationSupport" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ProcessFrameworkReferences" depends on it): Task "NETSdkError" skipped, due to false condition; ('$(Language)' == 'C++' and $(OutputType) != 'library' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp') was evaluated as ('F#' == 'C++' and Library != 'library' and '.NETStandard' == '.NETCoreApp'). Task "NETSdkError" skipped, due to false condition; ('$(Language)' == 'C++' and $(EnableComHosting) == 'true') was evaluated as ('F#' == 'C++' and == 'true'). Task "NETSdkError" skipped, due to false condition; ('$(Language)' == 'C++' and $(SelfContained) == 'true') was evaluated as ('F#' == 'C++' and == 'true'). Done building target "_CheckForLanguageAndFeatureCombinationSupport" in project "Fleet.Mapping.fsproj". Target "UpdateAspNetToFrameworkReference" skipped, due to false condition; ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' >= '3.0') was evaluated as ('.NETStandard' == '.NETCoreApp' And '2.0' >= '3.0'). Target "CheckForImplicitPackageReferenceOverrides" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ApplyImplicitVersions" depends on it): Using "CheckForImplicitPackageReferenceOverrides" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "CheckForImplicitPackageReferenceOverrides" Done executing task "CheckForImplicitPackageReferenceOverrides". Done building target "CheckForImplicitPackageReferenceOverrides" in project "Fleet.Mapping.fsproj". Target "ApplyImplicitVersions" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ProcessFrameworkReferences" depends on it): Using "ApplyImplicitVersions" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "ApplyImplicitVersions" Done executing task "ApplyImplicitVersions". Done building target "ApplyImplicitVersions" in project "Fleet.Mapping.fsproj". Target "_DefaultMicrosoftNETPlatformLibrary" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageAssets" depends on it): Done building target "_DefaultMicrosoftNETPlatformLibrary" in project "Fleet.Mapping.fsproj". Target "_ComputePackageReferencePublish" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageAssets" depends on it): Done building target "_ComputePackageReferencePublish" in project "Fleet.Mapping.fsproj". Target "ResolvePackageAssets" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveLockFileReferences" depends on it): Using "ResolvePackageAssets" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "ResolvePackageAssets" Done executing task "ResolvePackageAssets". Done building target "ResolvePackageAssets" in project "Fleet.Mapping.fsproj". Target "AdjustDefaultPlatformTargetForNetFrameworkExeWithNoNativeCopyLocalItems" skipped, due to false condition; ('$(_UsingDefaultPlatformTarget)' == 'true' and '$(_UsingDefaultRuntimeIdentifier)' == 'true') was evaluated as ('true' == 'true' and '' == 'true'). Target "AddTransitiveFrameworkReferences" skipped, due to false condition; ('@(TransitiveFrameworkReference)' != '') was evaluated as ('' != ''). Target "ResolveLockFileReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageDependenciesForBuild" depends on it): Using "JoinItems" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "JoinItems" Done executing task "JoinItems". Done building target "ResolveLockFileReferences" in project "Fleet.Mapping.fsproj". Target "ResolvePackageAssets" skipped. Previously built successfully. Target "ResolveLockFileAnalyzers" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageDependenciesForBuild" depends on it): Done building target "ResolveLockFileAnalyzers" in project "Fleet.Mapping.fsproj". Target "ResolvePackageAssets" skipped. Previously built successfully. Target "RunProduceContentAssets" skipped, due to false condition; ('@(_ContentFilesToPreprocess)' != '') was evaluated as ('' != ''). Target "ResolveLockFileCopyLocalFiles" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageDependenciesForBuild" depends on it): Done building target "ResolveLockFileCopyLocalFiles" in project "Fleet.Mapping.fsproj". Target "ResolveRuntimePackAssets" skipped, due to false condition; ('@(RuntimePack)' != '') was evaluated as ('' != ''). Target "RunProduceContentAssets" skipped, due to false condition; ('@(_ContentFilesToPreprocess)' != '') was evaluated as ('' != ''). Target "ResolvePackageAssets" skipped. Previously built successfully. Target "IncludeTransitiveProjectReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageDependenciesForBuild" depends on it): Done building target "IncludeTransitiveProjectReferences" in project "Fleet.Mapping.fsproj". Target "ResolvePackageDependenciesForBuild" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "AssignProjectConfiguration" depends on it): Done building target "ResolvePackageDependenciesForBuild" in project "Fleet.Mapping.fsproj". Target "_SplitProjectReferencesByFileExistence" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "PrepareProjectReferences" depends on it): Task "ResolveNonMSBuildProjectOutput" skipped, due to false condition; ('$(BuildingInsideVisualStudio)'=='true' and '@(ProjectReferenceWithConfiguration)'!='') was evaluated as (''=='true' and ''!=''). Done building target "_SplitProjectReferencesByFileExistence" in project "Fleet.Mapping.fsproj". Target "_GetProjectReferenceTargetFrameworkProperties" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "PrepareProjectReferences" depends on it): Using "MSBuild" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "MSBuild" Done executing task "MSBuild". Task "GetReferenceNearestTargetFrameworkTask" skipped, due to false condition; ('@(_ProjectReferenceTargetFrameworkPossibilities->Count())' != '0' and '$(ReferringTargetFrameworkForProjectReferences)' != '') was evaluated as ('0' != '0' and '.NETStandard,Version=v2.0' != ''). Done building target "_GetProjectReferenceTargetFrameworkProperties" in project "Fleet.Mapping.fsproj". Target "PrepareProjectReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveProjectReferences" depends on it): Done building target "PrepareProjectReferences" in project "Fleet.Mapping.fsproj". Target "ResolveProjectReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferencesDesignTime" depends on it): Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and ('$(BuildingInsideVisualStudio)' == 'true' or '$(BuildProjectReferences)' != 'true') and '$(VisualStudioVersion)' != '10.0' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and ('' == 'true' or 'false' != 'true') and '16.0' != '10.0' and '' != ''). Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '$(BuildingInsideVisualStudio)' != 'true' and '$(BuildProjectReferences)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and '' != 'true' and 'false' == 'true' and '' != ''). Task "MSBuild" skipped, due to false condition; ('%(_MSBuildProjectReferenceExistent.BuildReference)' == 'true' and '@(ProjectReferenceWithConfiguration)' != '' and '$(BuildingProject)' == 'true' and '@(_MSBuildProjectReferenceExistent)' != '') was evaluated as ('' == 'true' and '' != '' and 'false' == 'true' and '' != ''). Task "Warning" skipped, due to false condition; ('@(ProjectReferenceWithConfiguration)' != '' and '@(_MSBuildProjectReferenceNonexistent)' != '') was evaluated as ('' != '' and '' != ''). Done building target "ResolveProjectReferences" in project "Fleet.Mapping.fsproj". Target "ResolveProjectReferences" skipped. Previously built successfully. Target "FindInvalidProjectReferences" skipped, due to false condition; ('$(FindInvalidProjectReferences)' == 'true') was evaluated as ('' == 'true'). Target "_CheckForUnsupportedTargetFramework" skipped, due to false condition; ('$(_UnsupportedTargetFrameworkError)' == 'true') was evaluated as ('' == 'true'). Target "GetFrameworkPaths" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DisableStandardFrameworkResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Done building target "GetFrameworkPaths" in project "Fleet.Mapping.fsproj". Target "_CheckForUnsupportedTargetFramework" skipped, due to false condition; ('$(_UnsupportedTargetFrameworkError)' == 'true') was evaluated as ('' == 'true'). Target "GetReferenceAssemblyPaths" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.DisableStandardFrameworkResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Done building target "GetReferenceAssemblyPaths" in project "Fleet.Mapping.fsproj". Target "GetFrameworkPaths" skipped. Previously built successfully. Target "GetReferenceAssemblyPaths" skipped. Previously built successfully. Target "AssignLinkMetadata" skipped, due to false condition; ( '$(SynthesizeLinkMetadata)' == 'true' ) was evaluated as ( '' == 'true' ). Target "GenerateFSharpTextResources" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.Targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "PrepareForBuild" depends on it): Using "MakeDir" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "MakeDir" Done executing task "MakeDir". Using "FSharpEmbedResXSource" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\FSharp\FSharp.Build.dll". Task "FSharpEmbedResXSource" Done executing task "FSharpEmbedResXSource". Using "FSharpEmbedResourceText" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\FSharp\FSharp.Build.dll". Task "FSharpEmbedResourceText" Done executing task "FSharpEmbedResourceText". Done building target "GenerateFSharpTextResources" in project "Fleet.Mapping.fsproj". Target "PrepareForBuild" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Using "FindAppConfigFile" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "FindAppConfigFile" Done executing task "FindAppConfigFile". Task "MakeDir" Done executing task "MakeDir". Done building target "PrepareForBuild" in project "Fleet.Mapping.fsproj". Target "GetInstalledSDKLocations" skipped, due to false condition; ('@(SDKReference)' != '') was evaluated as ('' != ''). Target "ResolveSDKReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Task "ResolveSDKReference" skipped, due to false condition; ('@(SDKReference)'!='') was evaluated as (''!=''). Done building target "ResolveSDKReferences" in project "Fleet.Mapping.fsproj". Target "ResolveSDKReferences" skipped. Previously built successfully. Target "ExpandSDKReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Task "GetSDKReferenceFiles" skipped, due to false condition; ('@(ResolvedSDKReference)'!='') was evaluated as (''!=''). Done building target "ExpandSDKReferences" in project "Fleet.Mapping.fsproj". Target "ResolvePackageDependenciesForBuild" skipped. Previously built successfully. Target "GetFrameworkPaths" skipped. Previously built successfully. Target "GetReferenceAssemblyPaths" skipped. Previously built successfully. Target "ResolveTargetingPackAssets" skipped, due to false condition; ('@(FrameworkReference)' != '') was evaluated as ('' != ''). Target "_HandlePackageFileConflicts" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Using "ResolvePackageFileConflicts" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "ResolvePackageFileConflicts" Done executing task "ResolvePackageFileConflicts". Done building target "_HandlePackageFileConflicts" in project "Fleet.Mapping.fsproj". Target "ResolveTargetingPackAssets" skipped, due to false condition; ('@(FrameworkReference)' != '') was evaluated as ('' != ''). Target "RedirectFSharpCoreReferenceToNewRedistributableLocation" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.Targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Done building target "RedirectFSharpCoreReferenceToNewRedistributableLocation" in project "Fleet.Mapping.fsproj". Target "RedirectTPReferenceToNewRedistributableLocation" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.Targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferences" depends on it): Task "Warning" skipped, due to false condition; ( '@(ReferenceToInboxTP->Count())' != '0' ) was evaluated as ( '0' != '0' ). Done building target "RedirectTPReferenceToNewRedistributableLocation" in project "Fleet.Mapping.fsproj". Target "ResolveAssemblyReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolveAssemblyReferencesDesignTime" depends on it): Using "ResolveAssemblyReference" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "ResolveAssemblyReference" Done executing task "ResolveAssemblyReference". Done building target "ResolveAssemblyReferences" in project "Fleet.Mapping.fsproj". Target "ResolveAssemblyReferencesDesignTime" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ResolvePackageDependenciesDesignTime" depends on it): Done building target "ResolveAssemblyReferencesDesignTime" in project "Fleet.Mapping.fsproj". Target "ResolvePackageDependenciesDesignTime" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (entry point): Using "PreprocessPackageDependenciesDesignTime" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "PreprocessPackageDependenciesDesignTime" Done executing task "PreprocessPackageDependenciesDesignTime". Done building target "ResolvePackageDependenciesDesignTime" in project "Fleet.Mapping.fsproj". Target "ResolveAssemblyReferences" skipped. Previously built successfully. Target "_GenerateCompileDependencyCache" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.Targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (entry point): Using "Hash" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "Hash" Done executing task "Hash". Using "WriteLinesToFile" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "WriteLinesToFile" Done executing task "WriteLinesToFile". Done building target "_GenerateCompileDependencyCache" in project "Fleet.Mapping.fsproj". Target "_ComputeNonExistentFileProperty" skipped, due to false condition; (('$(BuildingInsideVisualStudio)' == 'true') and ('$(BuildingOutOfProcess)' != 'true') and (('$(BuildingProject)' == 'false') or ('$(UseHostCompilerIfAvailable)' == 'true'))) was evaluated as (('' == 'true') and ('' != 'true') and (('false' == 'false') or ('' == 'true'))). Target "AdjustDefaultPlatformTargetForNetFrameworkExeWithNoNativeCopyLocalItems" skipped, due to false condition; ('$(_UsingDefaultPlatformTarget)' == 'true' and '$(_UsingDefaultRuntimeIdentifier)' == 'true') was evaluated as ('true' == 'true' and '' == 'true'). Target "SetPaketCommand" in file "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\.paket\Paket.Restore.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "PaketRestore" depends on it): Task "Exec" skipped, due to false condition; ( '$(PaketExePath)' == '' AND !$(PaketDisableCliTest) AND !$(_ConfigContainsPaket)) was evaluated as ( '' == '' AND !False AND !True). Using "CreateProperty" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "CreateProperty" Done executing task "CreateProperty". Done building target "SetPaketCommand" in project "Fleet.Mapping.fsproj". Target "PaketBootstrapping" skipped, due to false condition; (Exists('$(PaketToolsPath)paket.bootstrapper.proj')) was evaluated as (Exists('c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\.paket\paket.bootstrapper.proj')). Target "PaketRestore" in file "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\.paket\Paket.Restore.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CollectPackageReferences" depends on it): Using "GetFileHash" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "GetFileHash" Done executing task "GetFileHash". Task "Warning" skipped, due to false condition; ( '$(MSBuildSupportsHashing)' != 'true' ) was evaluated as ( 'true' != 'true' ). Task "Error" skipped, due to false condition; ( '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' AND '$(PaketBootstrapperStyle)' == 'classic' AND Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))) was evaluated as ( '' == 'true' AND 'classic' == 'classic' AND Exists('c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\.paket\paket.bootstrapper.exe') AND !(Exists(''))). Task "Exec" skipped, due to false condition; ( '$(PaketBootstrapperStyle)' == 'classic' AND Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))) was evaluated as ( 'classic' == 'classic' AND Exists('c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\.paket\paket.bootstrapper.exe') AND !(Exists(''))). Task "Error" skipped, due to false condition; ( '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' AND '$(PaketRestoreRequired)' == 'true' AND '$(PaketDisableGlobalRestore)' != 'true') was evaluated as ( '' == 'true' AND 'false' == 'true' AND '' != 'true'). Task "Exec" skipped, due to false condition; ( '$(PaketRestoreRequired)' == 'true' AND '$(PaketDisableGlobalRestore)' != 'true' ) was evaluated as ( 'false' == 'true' AND '' != 'true' ). Task "Message" skipped, due to false condition; ( '$(PaketRestoreRequired)' == 'true' ) was evaluated as ( 'false' == 'true' ). Task "Error" skipped, due to false condition; ( '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' AND '$(PaketRestoreRequired)' == 'true' ) was evaluated as ( '' == 'true' AND 'false' == 'true' ). Task "Exec" skipped, due to false condition; ( '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' == '' ) was evaluated as ( 'false' == 'true' AND 'netstandard2.0' == '' ). Task "Exec" skipped, due to false condition; ( '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' != '' ) was evaluated as ( 'false' == 'true' AND 'netstandard2.0' != '' ). Task "Error" skipped, due to false condition; ( '$(DoAllResolvedFilesExist)' != 'true' AND '$(ResolveNuGetPackages)' != 'False' ) was evaluated as ( 'true' != 'true' AND 'false' != 'False' ). Task "ReadLinesFromFile" skipped, due to false condition; (($(DesignTimeBuild) != true OR '$(PaketPropsLoaded)' != 'true') AND '@(PaketResolvedFilePaths)' != '') was evaluated as ((true != true OR 'true' != 'true') AND 'obj\Fleet.Mapping.fsproj.netstandard2.0.paket.resolved' != ''). Using "ReadLinesFromFile" task from assembly "Microsoft.Build.Tasks.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "ReadLinesFromFile" Done executing task "ReadLinesFromFile". Done building target "PaketRestore" in project "Fleet.Mapping.fsproj". Target "_CheckForUnsupportedNETCoreVersion" skipped, due to false condition; ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(NETCoreAppMaximumVersion)' != '') was evaluated as ('.NETStandard' == '.NETCoreApp' And '3.1' != ''). Target "_CheckForUnsupportedCppNETCoreVersion" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CollectPackageReferences" depends on it): Task "NETSdkError" skipped, due to false condition; ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' < '3.1' and '$(Language)' == 'C++') was evaluated as ('.NETStandard' == '.NETCoreApp' and '2.0' < '3.1' and 'F#' == 'C++'). Done building target "_CheckForUnsupportedCppNETCoreVersion" in project "Fleet.Mapping.fsproj". Target "_CheckForUnsupportedNETStandardVersion" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CollectPackageReferences" depends on it): Task "NETSdkError" skipped, due to false condition; ('$(_TargetFrameworkVersionWithoutV)' > '$(NETStandardMaximumVersion)') was evaluated as ('2.0' > '2.1'). Done building target "_CheckForUnsupportedNETStandardVersion" in project "Fleet.Mapping.fsproj". Target "_CheckForUnsupportedTargetFrameworkAndFeatureCombination" skipped, due to false condition; ('$(TargetFrameworkIdentifier)' == '.NETFramework') was evaluated as ('.NETStandard' == '.NETFramework'). Target "ProcessFrameworkReferences" skipped, due to false condition; ('@(FrameworkReference)' != '') was evaluated as ('' != ''). Target "_CheckForObsoleteDotNetCliToolReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ObsoleteReferences.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CollectPackageReferences" depends on it): Task "NETSdkWarning" skipped, due to false condition; ( '%(_ReferenceToObsoleteDotNetCliTool.Identity)' != '' ) was evaluated as ( '' != '' ). Done building target "_CheckForObsoleteDotNetCliToolReferences" in project "Fleet.Mapping.fsproj". Target "CollectPackageReferences" in file "C:\Program Files\dotnet\sdk\3.1.201\NuGet.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "ComputePackageRoots" depends on it): Done building target "CollectPackageReferences" in project "Fleet.Mapping.fsproj". Target "ComputePackageRoots" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.NetSdk.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CoreCompile" depends on it): Done building target "ComputePackageRoots" in project "Fleet.Mapping.fsproj". Target "CheckForDuplicateItems" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CoreCompile" depends on it): Using "CheckForDuplicateItems" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "CheckForDuplicateItems" Done executing task "CheckForDuplicateItems". Task "CheckForDuplicateItems" Done executing task "CheckForDuplicateItems". Task "CheckForDuplicateItems" Done executing task "CheckForDuplicateItems". Done building target "CheckForDuplicateItems" in project "Fleet.Mapping.fsproj". Target "PrepareForBuild" skipped. Previously built successfully. Target "GetAssemblyVersion" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "GetAssemblyAttributes" depends on it): Using "GetAssemblyVersion" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\..\tools\netcoreapp2.1/Microsoft.NET.Build.Tasks.dll". Task "GetAssemblyVersion" Done executing task "GetAssemblyVersion". Done building target "GetAssemblyVersion" in project "Fleet.Mapping.fsproj". Target "GetAssemblyVersion" skipped. Previously built successfully. Target "InitializeSourceControlInformation" in file "C:\Program Files\dotnet\sdk\3.1.201\Microsoft.Common.CurrentVersion.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "AddSourceRevisionToInformationalVersion" depends on it): Done building target "InitializeSourceControlInformation" in project "Fleet.Mapping.fsproj". Target "AddSourceRevisionToInformationalVersion" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "GetAssemblyAttributes" depends on it): Done building target "AddSourceRevisionToInformationalVersion" in project "Fleet.Mapping.fsproj". Target "_GetUserSecretsAssemblyAttribute" skipped, due to false condition; ( '$(UserSecretsId)' != '' AND '$(GenerateUserSecretsAttribute)' != 'false' AND '$(GeneratedUserSecretsAttributeFile)' == '' ) was evaluated as ( '' != '' AND '' != 'false' AND '' == '' ). Target "GetAssemblyAttributes" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CreateGeneratedAssemblyInfoInputsCacheFile" depends on it): Done building target "GetAssemblyAttributes" in project "Fleet.Mapping.fsproj". Target "CreateGeneratedAssemblyInfoInputsCacheFile" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CoreGenerateAssemblyInfo" depends on it): Task "Hash" Done executing task "Hash". Task "WriteLinesToFile" Skipping write to file "obj\Debug\netstandard2.0\Fleet.Mapping.AssemblyInfoInputs.cache" because content would not change. Done executing task "WriteLinesToFile". Done building target "CreateGeneratedAssemblyInfoInputsCacheFile" in project "Fleet.Mapping.fsproj". Target "CoreGenerateAssemblyInfo" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.Overrides.NetSdk.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "GenerateAssemblyInfo" depends on it): Skipping target "CoreGenerateAssemblyInfo" because all output files are up-to-date with respect to the input files. Input files: obj\Debug\netstandard2.0\Fleet.Mapping.AssemblyInfoInputs.cache Output files: obj\Debug\netstandard2.0\Fleet.Mapping.AssemblyInfo.fs Done building target "CoreGenerateAssemblyInfo" in project "Fleet.Mapping.fsproj". Target "GenerateAssemblyInfo" in file "C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.GenerateAssemblyInfo.targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (target "CoreCompile" depends on it): Done building target "GenerateAssemblyInfo" in project "Fleet.Mapping.fsproj". Target "CoreCompile" in file "C:\Program Files\dotnet\sdk\3.1.201\FSharp\Microsoft.FSharp.Targets" from project "c:\Users\mamangel\Documents\Workspace\Gitlab\fleet-view\fleet-mapping\FleetMapping\Client\Fleet.Mapping.fsproj" (entry point): Building target "CoreCompile" completely. Output file "obj\Debug\netstandard2.0\Fleet.Mapping.dll" does not exist. Task "Error" skipped, due to false condition; ('$(SilverlightVersion)' != '' and '$(SilverlightVersion)' != 'v5.0') was evaluated as ('' != '' and '' != 'v5.0'). Task "Warning" skipped, due to false condition; ('$(Win32ResourceFile)' != '' ) was evaluated as ('' != '' ). Using "Fsc" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\FSharp\FSharp.Build.dll". Task "Fsc" The specified task executable location "c:\Users\mamangel\.vscode\extensions\ionide.ionide-fsharp-5.0.0\bin\fsc.exe" is invalid. Done executing task "Fsc" -- FAILED. Done building target "CoreCompile" in project "Fleet.Mapping.fsproj" -- FAILED. Done building project "Fleet.Mapping.fsproj" -- FAILED. Build FAILED.

As you can see it is not really user-friendly ^^. After, some experimentation I saw Using "Fsc" task from assembly "C:\Program Files\dotnet\sdk\3.1.201\FSharp\FSharp.Build.dll" at the end of the line. Which made me think oh perhaps I need to change the global.json file to use .NET 5.
After changing the global.json, the problem has been fixed for me.
I thought that .NET 5, was needed only for Ionide to work and we could still use other versions to build our project. Am I wrong? Or is that expected to use .NET 5 even for building and the build version is control from the .fsproj using <TargetFramework>netstandard2.0</TargetFramework> for example. I still don't understand how .NET works ^^
If that is the expected behaviour perhaps Ionide could have a nicer error message asking the user to change it's locked version and/or install .NET 5.
Note: I already had .NET 5 installed.

Hmm... I cannot reproduce this one, minimal sample seems to be working fine for me with global.json

Hum, I just tested on my project.
 But if I use version "3.1.201" or "3.1.102" it doesn't.

I guess it must be some bug in this particular version of SDK.
I think it's fine to have a verbose error message in that case at it's what will enable us debugging such specific cases.


Atempt to avoid error and thus unnecessary api calls when using maria…

Atempt to improve mariadb and mysql support as in my test case the line "connection.exec_driver_sql(f"SET search_path TO {self._schema}")" cause an unecessary error due to dialect differences and seems to cause more api calls than needed. Please check if the dialect string check is correct. And once again thank you for making this :D

Interesting... so I'm guessing this error occurred because you had the schema parameter set in SQLDatabase, right? I never ran into this error because I set the schema in the connection URI, like mariadb+pymysql://user:pass@host/schema. Personally, my preference would be to let users specify a schema in the connection string rather than handling it in LangChain.
I'm not too familiar with all the dialects, but it appears that SET search_path TO is specific to postgres. In MySQL/MariaDB it's USE schema, in Oracle it's ALTER SESSION SET CURRENT_SCHEMA=schema. Specifying the database/schema using sqlalchemy's connect_args when creating the engine also varies by dialect. I think it's better to let the user handle this, otherwise we'd have to go through and detail all the specific variations.
So I'm in favor of removing lines 178-179, or maybe even just adding a check for postgres there. I guess not many people specify schema in SQLDatabase anyway, otherwise we'd have seen a lot more of these issues. What do you think @hwchase17 @fpingham?

Can confirm that removing the  specification for the schema parameter in the function and leaving only in the uri fixed the issue

I think that removing those lines and specifying in the docs that the user needs to set the schema in the uri would be the way to go here.
Maybe even raising a warning if there is no schema defined would be helpful to help the user avoid issues with this.


How to use JobExceptionHandler's

Hi there,
Thanks for the nice project!
I've got some troubles in using JobExceptionHandler.
I tried to use OnJobError and OnScheduleError
            _singularity.OnJobError += HandlerError;
            _singularity.OnScheduleError += HandlerError;

Whereas HandlerError is private class instance method or static class  method. Neither works for me. Methods are not called.
I'm also using custom error reporting library to log exception to Sentry. So, there is some dependency I need to pass into HandlerError
It would be nice to have a sample of error handling.

HandleError should be a method you define. It's signature should match the delegate type of JobExceptionHandler.

Sure, I defined my HandlerError. I tried to define it as a private class instance method and also as static class method. Method is not called in either case.

Part of my code:
        public void Configure()
        {
            _singularity.OnJobError += OnError;

            _singularity.ScheduleJob(
                new Chroniton.Schedules.EveryXTimeSchedule(TimeSpan.FromMinutes(_options.ResetTicketQueue.Minutes)),
                new Chroniton.Jobs.SimpleJob(dt => _commandDispatcher.DispatchAsync(new Messages.Commands.Bookings.ResetQueue())),
                true
            );
        }

        private void OnError(ScheduledJobEventArgs job, Exception e)
        {
            _logger.Capture(e, job);
        }

OnError is not called in case of exception in _commandDispatcher.DispatchAsync()


Add ioutil.Discard to logger to prevent leaks

Related to #71. The documentation in https://github.com/kdar/logrus-cloudwatchlogs alludes (albeit vaguely) to the fact that ioutil.Discard is required to release memory and may actually be related to this issue in logrus upstream, https://github.com/Sirupsen/logrus/issues/328.
This likely has the side-effect of disabling logging to stdout so I'm not sure this is desirable.

Not sure I follow this one, but you say it fixed #71 in your experience?

The documentation in https://github.com/kdar/logrus-cloudwatchlogs alludes (albeit vaguely) to the fact that ioutil.Discard is required to release memory
Do you have a link to the documentation which mentions this?

and may actually be related to this issue in logrus upstream, sirupsen/logrus#328.
This issue seems to be a "non issue", it's just a question about how to disable logging to stdout?

Overall, if adding ioutil.Discard solves the CPU issue, I feel like we are working around a bug that needs to be fixed (or at least) reported in CloudWatch hook, or more likely Logrus itself. Also, I don't think we should disable logging to stdout, or at least it should be a separate flag.

I confirmed this had no impact on the CPU usage and the SpotListener patches #72 and #73 fixed the leak issues. Closing. Thank you for the quick responses and attention!


Add our partner section at about-us page

Add a Our partner section at about us page, following a design in figma:
The logos can be taken from a free search from Google, and should have a link to their website
Our partners are:
חיים וסביבה
המרכז הערבי לתכנון אלטרנטיבי
Code for Israel

@drorgivton do we have a design ready for this?


Record plugin: "Uncaught ReferenceError: i is not defined"

I am trying to use the 'mousetrap-record' plugin. I've added all required scripts to my page, and then used the code from documentation:
Mousetrap.record(function(sequence) {
  // sequence is an array like ['ctrl+k', 'c']
  alert('You pressed: ' + sequence.join(' '));
});

In runtime, when I trigger the recording and hit any button, it throws this error:

As I can see, the origin of an error is this method:

Obviously, on line 73 i variable is used, but it wasn't defined before.
Simple defining this variable solves the problem - like this:

May I create a pull request for this?

For everyone interested: I've fixed this issue, as well as #324 in my fork of this lib -
https://github.com/DmitryShashkov/mousetrap
I have also published it as an NPM module: https://www.npmjs.com/package/tn-mousetrap
I believe this is temporary, cause I hope solutions for both issues will be merged into original repository. But meanwhile, it may come in handy for someone.


Support TSX for TypeScript

I find TSX to work better out of the box, I don't mind adding it and making it default even, just want to see if there is something planned.

Thanks for reporting this issue.
Is this for .tsx to work precisely like .ts, @seivan? I believe that should already be the case. Could you provide an example to clarify, please? Thank you!


Feature communications struct

Overall this PR Created data_packet struct that can be given

Robot state
referee Data
CAN Data
Sensors

And eventually

DR16
logging data

This data can then be packed into a 4kb buffer that can be transmitted to hive to be unpacked by the same struct.
On the hive's end, I'm pretty sure all we have to do is get rid of the pack data function (and do some fun things with the lidar sensors), and everything will be good to go.
On firmware side, everything is good! (I think)
Here is a more comprehensive copilot summary of what I did:
Sensor Serialization and Inheritance:

src/sensors/Sensor.hpp: Introduced a new Sensor base class with serialize method and SensorType enum.
src/sensors/IMUSensor.hpp: Updated IMUSensor to inherit from the new Sensor base class.
src/sensors/ICM20649.hpp: Modified ICM20649 class to inherit from Sensor and implemented the serialize method.
src/sensors/TOFSensor.hpp: Updated TOFSensor to inherit from Sensor and added the serialize method.
src/sensors/buff_encoder.hpp: Modified BuffEncoder class to inherit from Sensor and implemented the serialize method.
src/sensors/d200.cpp: Updated D200LD14P class to inherit from Sensor and added the serialize method.
src/comms/data_packet.cpp: Included the new data_packet.hpp header.

Code Structure Improvements:

src/constants.hpp: Added a new header file to define constants and sensor types.

src/main.cpp: Included new headers and updated the main loop to handle data packet construction and serialization.

Make sure you comment the stuff that the doxygen bot is saying is missing


Customize aks-secure-baseline resources for NGSA

Issue-id
PR Checklist

[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.
[x] My code follows the code style of this project.
[ ] I ran lint checks locally prior to submission.
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Description

Override default naming convention from CAF repo to align with NGSA Naming Convention
Updated global settings to allow teams to create unique resource names

Does this introduce a breaking change

[ ] YES
[x] NO

Testing

Update prefix value in global_settings.tfvars to generate unique identifier for team deploying this infrastructure
Note: Asset abbreviations (rg-, kv- etc) are added on the fly as part of caf naming conventions

We can add markdown in our repo to explain the reasoning and guidance. I will look in to it


Infinite Gas in Preplaced Preupdate Hydrogen Tank.

So, I have three Portable Gas Tanks, which had been placed in the world before updating from Mekanism v8 to v9.0.1. Now they seem to be infinite. I've tried draining them with newly created tanks, so they'd be below the point where any pre-upgrade Hydrogen would have been 'in storage' in the ether, and they didn't move at all from 64,000 mb of Hydrogen. Picking up and replacing them doesn't seem to have any effect.

 Breaking and replacing should theoretically fix, but I have no plans on adding new transition features.


[BUG] Error while installing hashicorp/azurerm v3.55.0: read tcp <IP_ADDRESS>:56411-><IP_ADDRESS>:443: wsarecv: An existing connection was forcibly closed by the remote host.

Community Note

Please vote on this issue by adding a :thumbsup: reaction to the original issue to help the community and maintainers prioritize this request
Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
If you are interested in working on this issue or have submitted a pull request, please leave a comment

Terraform Version
1
AzureRM Provider Version
v3.55.0
Affected Resource(s)/Data Source(s)
dont know
Terraform Configuration Files
terraform init

Debug Output/Panic Output
│ Error: Failed to install provider
│
│ Error while installing hashicorp/azurerm v3.55.0: read tcp <IP_ADDRESS>:56411-><IP_ADDRESS>:443: wsarecv: An existing connection was forcibly closed by the remote host.

Expected Behaviour
should show me green sign for the next command
Actual Behaviour
error
Steps to Reproduce
terraform init
Important Factoids
none
References

Hi !
I'm not sure this is related to the module. Looks like an error between your computer and hashicorp registry.
Jeremy.


30095 - Tagal Murut - Correct metadata; reassign two songs; Lat-lon corrections

Song 16 has incorrect metadata. The song with the corresponding name and source number on the record, and with matching audio, is "A song about the old days of Kampong Dangulad" by Nabai Muruts from Kampong Dangulad, according to liner notes. Suggest reassigning song 16 to society 21957, Nabai Murut and changing location to Kampung Dangulad, Sabah, Northern Borneo, Malaysia, lat-lon 5.35, 116.17. Update song description.

Song 3632 should also be reassigned to to society 21957, Nabai Murut and location changed to Kampung Dangulad, Sabah, Northern Borneo, Malaysia, lat-lon 5.35, 116.17, because this is the info given in liner notes for song with the corresponding name and source number on the record.

Songs with location listed as Pensiangan District [mispelled as "Penslangan" which should also be corrected] have inaccurate lat-lon. Correct lat-lon is 4.55, 116.32.

Songs 15 and 19 have location listed as "Kampong Riam, Borneo, W C Indonesia," and lat-lon is in the center of Borneo (no clear connection to Kampong Riam). However, in metadata and liner notes the songs are described as being from Pensiangan District.  Suggest changing location to Pensiangan District, Sabah, Northern Borneo, Malaysia, lat-lon 4.55, 116.32.

Suggestions implemented


Consider converting ACB and price values to Decimal

Right now, we just kind of ignore these values, as they don't create a huge number of problems.
I think the main benefit is in tests, to avoid having to do approximate comparisons in some cases.
https://github.com/shopspring/decimal

Fixed as of https://github.com/tsiemens/acb/commit/4bd3a98505605d77974c7833696a08852b7cd645


GSoC 2022 Idea: More granularity on affinity/anti-affinity groups

Currently, defining an affinity or anti-affinity rule works only at hosts level. I would like to have more detail on the affinity group, extending it at different levels (cluster, pod, zone,..) and also within the same level, being able to add or remove resources from the group.
For hosts and storage pools, administrators can make use of host tags or storage tags to get a similar result. However, the extension of affinity/anti-affinity groups would make the administration easier.
Size of the project: Medium (~175hs)

@nvazquez thanks for the idea, can you indicate if it's either large or medium size project (175/350hrs)

Sorry forgot to reply @borisstoyanov - it is updated on the PR description: Size of the project: Medium (~175hs)

Thanks for submitting the idea, GSoC2022 has ended. I'm closing this, you can resubmit this idea again for next year in case this wasn't selected or worked upon this year.


How to take multiple rows from Embedding layer?

From the documentation, currently the embedding layer only support taking one-hot input to retrieve one row from the embedding weight matrix.
I want to take multiple rows (say, N rows, N is not fixed) from the embedding and then sum all these rows up before feeding to the next layer. Is it possible to achieve this with the current implementation of MXNet, or should I customize a new embedding layer?
Besides, can the weight matrix be updated in a sparse manner? For example in language model the vocabulary size might be ~1M, while only a relatively small number of rows of embedding matrix need to be updated given a training instance. With sparse updating a lot of memory can be saved.
Any help would be appreciated!

I don't think currently mxnet supports this feature. To give you a temporary solution, you can allocate a (batch_size, embedding_dimension) matrix using mxnet. And use numpy yourself to do whatever you want (taking multiple rows in numpy is easy) and just do something like:
exec.embed[:] = np.sum(W[ind,:], axis=0)

. Then just train the model and everytime you call backward(), you need to update the numpy parameters by yourself.

@pluskid does it support now? In my case, I want to train a item2vec model and each item will be represented by multiple rows from the embedding layer.

I'm not sure if I understand you correctly. In a recent update we updated the Embedding operator to support arbitrary input dimension. Say if you have an input of shape (10, 20), each element is the index of the word in the vocabulary. Then the output will be of shape (10, 20, D) where D is the embedding dimension. The current (updated) char-lstm example actually uses this feature.

For memory efficient gradient updating. @tqchen implemented memory efficient gradients computing. But I am not sure the updating part (optimizer) could be easily implemented for sparse updating as we probably need to modify the kvstore to support sparse matrices (or do we already support?). @tqchen or @mli might be able to give some comments.

Pretty good! thanks! @pluskid


Add Bleach: Sennen Kessen-hen - Soukoku-tan [Anime Time]

Redirect 'Bleach: Sennen Kessen-hen' EP27+ to 'Bleach: Sennen Kessen-hen - Soukoku-tan'
Fansub group: Anime Time
ToonsHub uses "BLEACH Thousand-Year Blood War S03E01" naming instead. In the Torrents tab Taiga correctly parses the title as "BLEACH: Thousand-Year Blood War Season 3", but still can't seem to link it with the entry in my anime list. Meanwhile in the torrent the actual file name has S03E27 in the name...
I have no idea what to do about this, if there even is anything that can be done.

Thanks!
For ToonsHub releases, you can add BLEACH Thousand-Year Blood War Season 3 as an alternative title to the latest series.

Thanks!
For ToonsHub releases, you can add BLEACH Thousand-Year Blood War Season 3 as an alternative title to the latest series.

Ahh, right, thanks for reminding me.


Installation fails with readonly profile

> curl https://wasmtime.dev/install.sh -sSf | bash
  Installing latest version of Wasmtime (dev)
    Checking for existing Wasmtime installation
    Fetching archive for macOS, version dev
https://github.com/cranestation/wasmtime/releases/download/dev/wasmtime-dev-x86_64-macos.tar.xz
######################################################################## 100.0%
    Creating directory layout
  Extracting Wasmtime binaries
x wasmtime-dev-x86_64-macos/
x wasmtime-dev-x86_64-macos/README.md
x wasmtime-dev-x86_64-macos/wasmtime
x wasmtime-dev-x86_64-macos/LICENSE
x wasmtime-dev-x86_64-macos/wasm2obj
     Editing user profile (/Users/nemo157/.zshrc)
bash: line 217: /Users/nemo157/.zshrc: Permission denied

I think that the installation is fine, but wasmtime is just not yet in your PATH, as your .zshrc is readonly.

Should have mentioned: the installer exited with result 1 as well, so I don't know whether the installer planned to do anything else after this step?
I've now added ~/.wasmtime/bin to my PATH in .zprofile and it appears to work.
Also, editing a users config files without telling them just seems wrong to me. It would be nice to have options to disable this like rustup's installer has. I have a carefully constructed rc/profile file, which is why I have it readonly to avoid installers messing with it.


embed error

Getting an error embedding png with transparency on the default black background (inside larger background canvas)
start with a 50x50 png with alpha channel:
sharp(in)
.resize(50, 256)
.embed()
.pipe(out)

i get the following:
Error: linear: vector must have 1 or 4 elements

The following DO work:

embedding a png with no transparency
embedding on a background that matches the source aspect ratio

Flatten seems to resolve the issue:
sharp(in)
.resize(50, 256)
.flatten()
.embed()
.pipe(out)

Looks like a bug, thanks for reporting this. I'll try to add a test case to confirm this later today.
Were you hoping to preserve transparency in the output image?

I've reproduced this @mikemliu. It occurs when embedding an image with an alpha channel onto any background colour that does not have a transparency, which includes the default.
I've added a new test case to expose the failure and the fix in commit 33782d3.
Are you able to retest via npm install lovell/sharp?

I realized the same when I actually put in my desired transparent background. Thanks!

@mikemliu Were you able to confirm this fix solved the problem? If so I'll publish a point release with it to npm.

confirmed. thanks!

This is fixed in v0.10.1, now available via npm.


feat: add telemetry apis

Signed-off-by: echken<EMAIL_ADDRESS>

@cl1111

Codecov Report

:exclamation: No coverage uploaded for pull request base (telemetry@a90eda8). Click here to learn what that means.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             telemetry     #421   +/-   ##
============================================
  Coverage             ?   49.01%
============================================
  Files                ?       50
  Lines                ?     9786
  Branches             ?        0
============================================
  Hits                 ?     4797
  Misses               ?     4591
  Partials             ?      398


Revert "Add 7-day average of each signal to Safegraph indicator"

Reverts cmu-delphi/covidcast-indicators#309 to see if that fixes this error

Why are there so many files changed/deleted?

Because the deploy-* branch structure means that every time we merge a new feature into a deployment branch, it brings with it all the changes from main that were done to every other indicator since the last time deploy-safegraph was updated. It's a known problem with this workflow, currently a P1 in the fall OKR to ameliorate.


I get "Unauthorized" error

I put the correct consumerId and privateKey but I get the "Unauthorized" error again and again. Don't know how to solve it.

I am getting the same issue, but only on live server(different timezone/location) while it is working fine in the localhost.


Run tests with GitHub Action

I made a point on the todo list, (can be updated later), specifically, the ability to run tests on every push and pull requests to master.  It required quite a lot of tackling but it should work just fine now.

Hi! Thanks for the contribution, this is a great idea and the PR is nice and clean. Do you think this would run on Ubuntu as is? The Run tests step script content as it is now is portable, so I think it should work? Could you try adding Ubuntu to the Actions YML matrix and see if it goes through?

Sure, I will make a separate PR for it.


App Information cut off at bottom on small screen

Avoid duplicates

[X] Bug is not mentioned in the FAQ
[X] Bug is specific for Android only, for general issues / questions that apply to iOS and Android please raise them in the documentation repository
[X] Bug is not already reported in another issue

Technical details

Device name: Nexus 5 emulator, API 30
Android version: 11
App version: 1.12.0 branch release/1.12.x

Describe the bug
The bottom of the App Information is cut off on a smaller device and cannot be viewed. The app version information is not displayed.
It's possible this is only an issue with debug builds.
Also, I do not have a whitelisted Google account, so I have no access to the Exposure Notification System API with a debug apk.
Steps to reproduce the issue

Build variant deviceDebug on branch release/1.12.x
Run on Nexus 5 emulator, API 30
Tap three-dot overflow menu > App Information
Try to scroll the view

Expected behaviour
It should be possible to view the version number by scrolling down. The version number is only partially displayed on this device.
Possible Fix
The layout is https://github.com/corona-warn-app/cwa-app-android/blob/release/1.12.x/Corona-Warn-App/src/main/res/layout/fragment_information.xml
I temporarily removed the android:screenOrientation="portrait" under android:name=".ui.main.MainActivity" in src\main\AndroidManifest.xml and viewed App Information in landscape orientation on a small screen. I could scroll the view, but it wouldn't scroll down far enough to display the version number in full.
However, if in addition I remove
android:layout_marginTop="@dimen/spacing_normal" under LinearLayout of fragment_information.xml then the App Information scrolls and reveals the version number. This works both in the original portrait mode and in landscape mode. I don't think this is the solution, but it may be helpful as a troubleshooting step.

Internal tracking ID: EXPOSUREAPP-5045

@MikeMcC399 Thanks. Internal tracking ID: EXPOSUREAPP-5045

Hi @MikeMcC399 many thanks for bringing this up. This issue should have been addressed by https://github.com/corona-warn-app/cwa-app-android/pull/2267 in `release/1.13.x'.

Hi @ralfgehrer
Thanks for the link to PR #2267 and I confirm that the steps to reproduce in this issue show that the PR fixes the issue!
@dsarkar
EXPOSUREAPP-5045 is solved by "Fix scrolling issue in InformationFragment (EXPOSUREAPP-4939)" #2267 planned for release 1.13.x.
I suggest leaving this issue open until 1.13 is released, as some people might see the issue on small devices when 1.12 is released.

https://github.com/corona-warn-app/cwa-app-android/pull/2180#issuecomment-778348094

@vaubaehn Yes, #2302 will fix the layout for both version information entries.
Pixel 3a at max font and element size:

@d4rken
Hi Matthias,
:tada: :+1:
Thanks for your response. Best wishes!

@d4rken
Thanks for the screen shot with 1.13.0-RC2!
I can't test to see if the ENF version is displayed in App Information in a development build, due to not being whitelisted. I did however test again using release/1.13.x at https://github.com/corona-warn-app/cwa-app-android/commit/1edad37a09d2b59efbe8197522f8848ba969aed4 level and Build variant deviceDebug on a Nexus 5 emulator, API 30, which has a smaller screen, and I can confirm that I can scroll to the bottom of the screen.
When this issue is fixed in a released version I would plan to update the FAQ entry
https://www.coronawarn.app/en/faq/#ENF_version
to describe how to find out the installed version of Google Exposure Notifications System (ENS) through the CWA app. I held back on that in https://github.com/corona-warn-app/cwa-website/pull/865 due to the scrolling bug in 1.12.0. I only corrected the description about how to display the ENS version number using the Google UI instead to make sure that the terms in the instructions matched the exact text shown by Google.

Confirmed fixed on CWA Android 1.13.2 release. Here is a screenshot from a Nexus 5 API 30 (Android 11) emulator. This device has a small screen. The App Information could be scrolled down to display both the app and the Google version numbers.
The "New Features" entry in the list is (correctly) scrolled off the top.

@MikeMcC399 And again, thanks for verifying.

@ralfgehrer @dsarkar @MikeMcC399
Unfortunately, this issue can be reopened, as it occurs again in CWA 2.1.2.

@vaubaehn

Unfortunately, this issue can be reopened, as it occurs again in CWA 2.1.2.

Thanks for the feedback! I have re-opened and I will check how it looks on the Nexus 5 emulator, API 30.

@vaubaehn
I don't see any issue on Nexus 5 emulator, API 30 with CWA version 2.1.2.
I suggest that you open a new issue with a screen shot and details of your hardware device. I will close this issue again, since the original problem is confirmed solved in the environment it was reported in.


can  conn.DownloadFiles  include remotePaths  child folder?

can  conn.DownloadFiles  include remotePaths  child folder?
public int DownloadFiles(string localDir, IEnumerable remotePaths, bool overwrite = true, FtpVerify verifyOptions = FtpVerify.None,
FtpError errorHandling = FtpError.None);

conn.GetListing(targetFolder,FtpListOption.AllFiles);


Set runAsUser for Container

What this PR does / why we need it:
Follow the instructions from "Discovering and Using USB Cameras" (https://docs.akri.sh/demos/usb-camera-demo) using microk8s and the akri-video-streaming-app container fails to start.  The error is caused by the container is running as root and the setting in deployment specifies "runAsNonRoot=true", see the output below:
Events:
Type     Reason     Age               From               Message

Normal   Scheduled  34s               default-scheduler  Successfully assigned default/akri-video-streaming-app-76c7b6849f-922wn to k8stest-4
Normal   Pulled     32s               kubelet            Successfully pulled image "ghcr.io/project-akri/akri/video-streaming-app:latest-dev" in 948.654388ms
Normal   Pulled     31s               kubelet            Successfully pulled image "ghcr.io/project-akri/akri/video-streaming-app:latest-dev" in 1.096890898s
Normal   Pulled     17s               kubelet            Successfully pulled image "ghcr.io/project-akri/akri/video-streaming-app:latest-dev" in 1.173162548s
Normal   Pulling    5s (x4 over 33s)  kubelet            Pulling image "ghcr.io/project-akri/akri/video-streaming-app:latest-dev"
Normal   Pulled     4s                kubelet            Successfully pulled image "ghcr.io/project-akri/akri/video-streaming-app:latest-dev" in 953.775431ms
Warning  Failed     4s (x4 over 32s)  kubelet            Error: container has runAsNonRoot and image will run as root (pod: "akri-video-streaming-app-76c7b6849f-922wn_default(821f9947-b5da-4f20-919a-62a5318ac027)", container: akri-video-streaming-app)
Add runAsUser: 1000 to run the container using uid 1000 (which is non-root)
Special notes for your reviewer:
If applicable:

[ ] this PR has an associated PR with documentation in akri-docs
[ ] this PR contains unit tests
[ ] added code adheres to standard Rust formatting (cargo fmt)
[ ] code builds properly (cargo build)
[ ] code is free of common mistakes (cargo clippy)
[ ] all Akri tests succeed (cargo test)
[ ] inline documentation builds (cargo doc)
[ ] all commits pass the DCO bot check by being signed off -- see the failing DCO check for instructions on how to retroactively sign commits

I think it would be better to change these containers to effectively run as non-root rather than allowing them to do so, I don't see any reason for this one to run as root.

I think it would be better to change these containers to effectively run as non-root rather than allowing them to do so, I don't see any reason for this one to run as root.

Set runAsUser to run the container as non-root.


Turn off log formatting of messages printed by the hook

I am using golang executable as a hook for the shell-operator. I want to use logging from inside the hook but it seems like anything that is printed to stdout/stderr from the hook gets log formatted by the shell operator inside the msg field.
{"binding":"kubernetes","event":"kubernetes","hook":"hook","level":"info","msg":"<msg>","output":"stderr","queue":"main","task":"HookRun","time":"2022-03-14T12:00:02Z"}

So, if we are logging something inside the hook, it gets nested inside the above msg field creating something like this
{"binding":"kubernetes","event":"kubernetes","hook":"hook","level":"info","msg":"{\"level\":\"info\",\"msg\":\"hello world\",\"time\":\"2022-03-14T12:00:02Z\"}","output":"stderr","queue":"main","task":"HookRun","time":"2022-03-14T12:00:02Z"}

Expected behavior (what you expected to happen):
Is it possible to turn off the logging by the shell-operator? Or is it possible to not add the log messages printed by the hook inside another log message of shell-operator?
Steps to reproduce:
Here is the code of the hook
package main

import (
	"flag"
	"fmt"

	log "github.com/sirupsen/logrus"
)

func main() {
	var config bool
	flag.BoolVar(&config, "config", false, "")
	flag.Parse()

	log.SetFormatter(&log.JSONFormatter{})

	if config {
		yaml :=
`configVersion: v1
kubernetes:
- apiVersion: v1
  kind: ConfigMap
  executeHookOnEvent: ["Added", "Modified", "Deleted"]
  nameSelector:
   matchNames:
    - test_cm
  namespace:
   nameSelector:
    matchNames: ["test_ns"]`
		fmt.Println(yaml)
	} else {
		log.Info("hello world")
	}
}

It's interesting, we never consider structured logging from hooks. I think we can implement some settings to configure stdout handling in the future. Right now there is no quick workaround to print JSON messages from hook without embedding into JSON messages from shell-operator.
I can offer you to use TextFormatter. And also take a look at Go hooks in addon-operator: you can drop helm and use global hooks to get shell-operator experience.

New flag was added by #383 , available in 1.0.10