Crystal shield shows bonuses on inventory mouse-over even when it is inactive

Type
Incorrect behavior
Operating System
No response
OS Version
N/A
Bug description
When the Crystal Shield is inactive, it gives no additional bonuses (it has to be recharged and become 'active' again), but if you hover your mouse over it while it is in your inventory, it will show the bonuses of a regular Crystal Shield.
Screenshots or videos
No response
RuneLite version
Runelite version: 1.8.28
Launcher version: 2.1.0
Logs
No response

This was an issue with the wiki showing stats for the inactive shield. I've confirmed that it doesn't (thanks Rheon) and updated the wiki, so the next time the stats scraper runs, it should be fixed.
If anyone wants to confirm the Bow and Halberd, that would be very useful; They're likely the same, but since they're weapons it would be useful to make sure.

I am closing this for now. If this turns out to be an issue with the crystal bow and/or halberd (it probably is), this should be corrected on the wiki side similar to how Hydrox fixed it for the shield.


Fix CI tests

Instead of using curl, we should use urllib2 like we do in cargo port.

Fixed in d6bcc23bb6167735def00905c6db39ced8d9bf31


Yank all 0.2 versions older than 0.2.36

Due to #106. If the standard library ever do change the memory layout of SocketAddr, usage of this crate of versions before 0.2.36 will have undefined behaviour and invalid memory access and lead to segfaults. And even if the standard library never do change the layout of those types, those versions of this crate still makes assumptions they should not.
This is exactly what yanking is for. Marking a release as "should not be used". I think all versions of net2 from 0.2.0 through 0.2.35 should be yanked from crates.io.
Related issues on other crates having the same problem: https://github.com/rust-lang/socket2-rs/issues/139, https://github.com/tokio-rs/mio/issues/1412

Should we also yank all 0.1 versions?  It seems like that addr2raw() implementation has been there since the beginning:
https://github.com/deprecrated/net2-rs/commit/42bc9219624561505fa54d9866bc5024995043fe#diff-917ff224180b881299cdcef7bc14e710509229092ea4e6599861680bc0a2a458R65-R74

It has the same bug yes. We have not released any patch release fixing it for the 0.1 branch. But looking at the download stats, it has virtually zero downloads. Yes yank them IMO, they are unsound

Ping @jclulow ?

I believe all of the older versions have been yanked.

Amazing! Thank you.


Consider upgrading gin to v1.7.3

Visit https://github.com/gin-gonic/gin/releases/tag/v1.7.3.

Done.


support for cryptonote coins

is it possible to add support for cryptonote coins?

There isn't much from MPOS to do to support coins. As long as the coin is supported by Stratum (not part of MPOS) and it inserts shares into MPOS, it should work out of the box (unless you want PayPerShare [You don't], that may require a coin developer to PR a proper coin file in MPOS).


Add database automation

This adds a basic compose file with a db service that created the appropriate database and configures it for use. Currently dev only.

Can you update this branch before merging?


Add support for parcel-plugin-prerenderer

Is it possible to add support for parcel-plugin-prerenderer? Right now the plugin searches for html files as soon as the bundler is done. This means that all html files that are generated by the prerenderer are not accounted for.
I guess making this work is not straight forward as there are no hooks that are called after the prerendering is done, but I wanted to raise the issue nevertheless.

Thanks for raising the issue. Generally it's better to inform the developer, then to just grief about a problem.
Sadly solving this issue is kind of impossible right now, as my plugin can't know when the prerenderer is finished. I tried adding an explaination to the readme.
But the prerenderer will most likely always use the same route names, so you can easily create an sitemap manually...


added method to display the expected date of next period

@ayushanand308 kindly resolve the conflict

I have resolved the conflict. @nisha331

@ayushanand308 issue no?

@nisha331  '28'

@nisha331  I wanted to kindly remind you to review the PR.

@nisha331 Thank You!


[video recording] some quality of life improvements

Proposal
1-
ability to pause and resume a video recording. Most modern apps allow users to pause a video recording and continue recording after some delay. And once the recording is stopped, we get the combined video with all the intervals present.
some things to keep in mind which can be tricky are;
What if user changes camera(front/back) while in paused state? should it be allowed?
What if phone orientation changes?
Can native camera packages support this or does this need to be done manually by stitching videos together?
2-
A way to get the current recorded time in milliseconds during recording and when recording is finished.
This will be useful when we are showing a progress indicator with a max recording duration
Unfortunately, the official camera plugin can not accomplish these features.

First point should be working on master now. Pause and resume buttons are now working with the awesome builder.
Second point seems to be a Widget that stops recording after a specific duration, with a progress indicating how much time has passed since the recording started.
I believe that a pure Widget implementation should be enough for this, or am I missing something ?


Make bad token detector more generic over amm pool sources

Currently we use AmmPairProvider which is only implemented for Sushiswap
and UniswapV2. We introduce a trait to be more generic and can in the
future be implemented for more sources.
The plan is to use this to consider BalancerV2 pools as well.
Test Plan
mainnet node test still works.

I wonder if we should eventually just simulate the baseline solution in the API to check if tokens are tradable?

I guess this suggestion would be to do this instead of token detecting, because otherwise working with just baseline would encounter the same problems we are seeing today (i.e. that it would work on paraswap or 1inch, but not with Baseline). Once we have integrated all the existing onchain liquidity sources, however, this may actually work. I suppose this is what you were hinting at.

The more logic we have to implement for the bad token detection, the more I wonder if we should eventually just simulate the baseline solution in the API to check if tokens are tradable?

Good point. Not sure about the details. Will create issue to remember this.


Error with comma variable asignment

I am using Crystal 0.27.2.
When I attempted to run the code a, b, C = 1, 2, 3, I got the following error:
Nil assertion failed (NilAssertionError)
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
  from ???
Error: you've found a bug in the Crystal compiler. Please open an issue, including source code that will allow us to reproduce the bug: https://github.com/crystal-lang/crystal/issues

I am running ubuntu 18.04

Yes, constants can't be assigned inside multiple assignment. We need to give a proper error message for this.

Why not?

Because multiple assignment involves creating temporary variables so that, for example, a, b = b, a can work.
Maybe we can make it work. I don't really see the benefit of supporting this, for me (personally) it's a bit unreadable that local variables and constants are assigned in a single line.

Constants are not variables and I think there is no reason to assume they would work with multiple assignments.

I think the reason for this to be wanted is that it works in Ruby. But that's not a good enough reason for me to consider including it in Crystal.

Probably... but Ruby "constants" aren't exactly constant 😆


IGNITE-19877 Sql. Fix not allowed CAST with dynamic params

another existing issue covers highlighted problem IGNITE-20069

why do we need this patch, if we will have general solution in IGNITE-20069? Why do we need 2 JIRA cases for the same problem in the first place?

issue describes a bit different problem, i will fix it.

so, you've changed LocalDateTime --> LocalTime, but what is the difference? According to table above, both conversions T->EN and TS->EN are not allowed

you are rigth here too, but for now we have only one place in code which need to be elaborated, issue  IGNITE-20069 was covered in case of working under this one, this is not to equal issues, from my point of view this is two sequential issues

@korlov42 @lowka i hope all possible types casting is fixed by now


How Can I Send Message On Specific Skype User

I Want Send Message To All My Bot User To Inform Some Detail, I Have All Skype ID Like
json567
fss80support
rajuDiam85
This Is the skype id and i want send message to them all
so please help me to send message from bot to my all skype id
please share some code
Thanks

You can't ... at least not in the way you propose.

Then you can use that to send them a message , eg.
Let's say you did manage to save the data (as a JSON object) somewhere ...
JSON data object (pseudo code):
{
"conversationUrl": "https://facebook.botframework.com",
"conversationId": "xxxxx-xxxxxxx",
"channelId": "facebook",
"locale": "en-US",
"botUserId": "xxxxxx",
"botUserName": "xxxxxx"
}
Then you could use this data to 'resume' the conversation ...
Disclaimer: There is an alternative method as well (Google 'Resumption Cookie').
//C# code
JObject jData = JObject.Parse(data);
var connector = new ConnectorClient(new Uri(jData["conversationUrl"].ToString()));
var conversation = new ConversationAccount(true, jData["conversationId"].ToString());
var botAccount = new ChannelAccount(jData["botUserId"].ToString(), jData["botUserName"].ToString());
IMessageActivity message = Activity.CreateMessageActivity();
message.From = botAccount;
message.Conversation = conversation;
message.ChannelId = jData["channelId"].ToString();
message.Text = "This is me Spamming you";
message.Locale = jData["locale"].ToString();
await connector.Conversations.SendToConversationAsync((Activity)message);

hello @leroibeukes
Basically i want create chat support system for our skype end users, Our skype user can get support from our website using web chat When Web Chat I frame open in website for send message user can directly contact to out support person to get help and also we want to manage conversion in skype software with different user so we can easily find past history to view specific users

How would you know the user's skype ID from your webchat?

The Webchat channel and Skype Channel are two different channels - you would have to have the user identify themselves on both channels for you to be able to 'pick-up where you left-off' ...
Thus when a user starts a conversation in the webchat - you could ask them to 'login/identify' via some or other service/api or similar - you could then use the same mechanism in your Skype channel and that way 'tie/link' the two together. So to give a very rudimentary example :

User starts chatting in Webchat.

Webchat asks user if it is there first time

if not - then agent asks them to authenticate  either in -channel or break out to site and
then go to step 4.

If so - then agent asks for their 'token' or unique userId (assigned by you)

User provides 'token' or unique id and it is assigned to the conversation and state is retreived etc.

Same User then uses the Skype channel

On Skype User is asked for their 'token' or unique id

If User provides it then the state is retrieved and the webchat is associated with the user.

If not - then break out etc. (Same as Step3).

So in a nutshell you have to be able to identify the user when he starts engaging with you (regardless of channel) , that way you can retrieve state for the user and history etc.
Hope this helps shape your thinking.
Good luck
Cheers

If this answer doesn't work for you, please let us know.

Hi
I have created chat bot using api.ai and I have integrated with skype.
And also im using web hook to check the user data and reply to it accordingly.
But im not able to send message from chat bot to the user. I tried sending conversation object but its not working..
Does anyone know how to do this??
Thank you in advance.

Hi pranotiB,
Thank you for your submission.
The Microsoft Bot Framework team prefers that how to questions be submitted on Stack Overflow. The official Bot Framework Github repo  is the preferred platform for submitting bug fixes and feature requests.

Okay. Thanks EricDahlvang.
I have posted my query on stack overflow..

Hi @jagufru,
The Skype user needs to first communicate with the bot.   The bot then cashes the address, and can proactively message the user.  This doc explains more: https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-proactive-messages

A verbal exchange is a sequence of messages sent among your bot and one or more customers. There are three forms of conversations (also known as scopes) in teams: ... private Conversations among bots and a single consumer. groupchat Chat between a bot and two or greater customers.
https://www.techlinc.in/best-whatsapp-status-quotes/
https://www.techlinc.in/whatsapp-dp-profile-picture/


My contribution

Problem
This an example pull-request, to capture some screen shots about signing the contributor license agreement.
Summary of Changes
Corrected a spelling mistake in BUILDING.md
Fixes

 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.


Fix api-resources table parsing

For sometime tk pruning fails, as my cluster has overlapping CRD names/mismatching Kind and Name fields . Errors persisted like this:
$ tk prune environments/default
fetching UID's .. done 555.50452ms
fetching previously created resources .. Error: error: the server doesn't have a resource type "NetworkAttachmentDefinition"

The reason why this was happing was a failed parsing of the -o wide table of kubectl api-resources: The field APIGROUP no longer exists and is now part of APIVERSION.

@simonswine. I think this could maybe cause issues with people running older kubectl versions. For example,kubectl 1.18 will still return the APIGROUP column. Could this be done in a way where both are supported? Check APIVERSION and then APIGROUP if it's not set?

@julienduchesne very good point. I have fixed this for both versions.
I also noticed the test data was not fully accurate, so I replaced it with real one that I retrieved locally.


SVG should be in the Documentation links underneath HTML...

SVG is commonly used to augment basic HTML view layouts and features prominently in many examples such as "clock" from which we learn about subscriptions and the basic Elm architecture; however, it can only be found by opening up github to the overall elm-lang view and find its repository.
It (and perhaps other commonly used projects) should be included in the documentation summary page at: http://elm-lang.org/docs.

It is listed in the sidebar of http://package.elm-lang.org/ right now:

If you think it should be in other places, it is better to track in a separate issue.


Not all values are correct after unifi controller software update

After the last update of the Unifi Controller SW (5.4.16) some values are no longer updated. E.g. the fan level is no longer pulled right.
Would be great to see an update, because this plugin is so helpful! Thanks for this great tool!

As this commit is 3 years old and the adapter is working with UniFi controller v5.12.66 this issue will be closed.


uploading a json file fails

e.g.
zenodraft --sandbox file add $RECORD_ID schema.json

maybe something to do with mimetypes?

Fixed in PR #19


Make use of the webextension-polyfill library

We should install the webextension-polyfill library and make two changes:

Convert all API calls from "chrome." "browser."
Convert sendMessage and onMessage handlers to use promises and async/await

Note that in order to make use of this library, we also have to include its Js file as a background and content script. And we need to include it as a script reference in the popup HTML file.

✨✨ Here's an AI-assisted sketch of how you might approach this issue saved by @lostintangent using Copilot Workspace v0.6
Topic

Did you install the webextension-polyfill library and make the necessary changes to the API calls and message handlers?

Before

No, the webextension-polyfill library is not installed and the necessary changes are not made.
The code still uses "chrome.*" API calls and callback-based message handlers.

After

Yes, the webextension-polyfill library is installed and the necessary changes are made.
The code uses "browser.*" API calls and promise-based message handlers.
The package.json file includes the webextension-polyfill library as a dependency.
The manifest.json file includes node_modules/webextension-polyfill/dist/browser-polyfill.js as a background and content script.
The popup/popup.html file includes a script reference to node_modules/webextension-polyfill/dist/browser-polyfill.js.

Plan

Install the webextension-polyfill library using npm install --save webextension-polyfill
Replace all occurrences of chrome with browser in background.js, content.js, and popup/popup.js
Replace all callback-based message handlers with promise-based message handlers in background.js, content.js, and popup/popup.js
Add node_modules/webextension-polyfill/dist/browser-polyfill.js as a background and content script in manifest.json
Add a script reference to node_modules/webextension-polyfill/dist/browser-polyfill.js in popup/popup.html

Files to change, add or remove

package.json (ADD)
background.js (CHANGE)
content.js (CHANGE)
popup/popup.js (CHANGE)
manifest.json (CHANGE)
popup/popup.html (CHANGE)

Sketch of implementation

View the changes
Details

Code analyzed at 7ec28cdcbde337a65de112eeee2f003b447fbdbc


docs(docs, i18n): add instruction for internal links

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Closes #XXXXX

This adds instructions to make internal links work on our docs, including translated pages. These are what I found while working on #46499 .

Modified how-to-work-on-the-docs-theme.md page to also include information about docs content.
Added "How to create an internal link" section
Added "How to translate documentation with internal links" for translators

Question: should I change the file name how-to-work-on-the-docs-theme.md to match the updated title, such as how-to-work-on-the-docs.md ?
I'm afraid that by changing the file name Crowdin may think the entire file was changed and resets all the translations. We should be able to get them back from TM but still. (maybe a question to @nhcarrigan ?)

I think the file name is fine. You can leave it as-is for now.


Admin cannot get all rows from collection

I am trying to setup a collection where admin can see all the rows but users can see only their own. But unfortunately i couldnt succeed. With the below setup admin can't see other's data. If i make "read_owner_only":false then everyone sees everyhting.
            "read_owner_only": true,
            "write_owner_only": true,
            "roles_allowed_to_read":["user","admin"],
            "roles_allowed_to_update":["admin"],
            "roles_allowed_to_delete":[],

You need to set "ownerField" to something, for example "ownerId" (see "invoices" example).
ownerField is name of collection field that sotres userId. That field will be automatically set, just name it.

@kadirerdogan BTW, note: "roles_allowed_to_delete": [] in your example means: "All users can delete".

ownerField is already set to ownerId as below. I didn't paste it at first. Setting it to something else?  If i do that i think the real owner won't be able to see it. I've checked the invoices example and it is set to ownerId as well.
Btw, i dont want any rows to be deleted so i think i should set roles_allow_to_delete to a role which does not exist :)
            "owner_field": "ownerId",
            "read_owner_only": true,
            "write_owner_only": true,
            "roles_allowed_to_read":["user","admin"],
            "roles_allowed_to_update":["admin"],
            "roles_allowed_to_delete":[],

Ah, now I understand what's the problem! That feature doesn't exists yet. I'l try to include it in next version.

There is (undocumented) built-in role named "nobody", so use that if you want to restrict access to all roles.

Waiting for the next version then :)
Thanks for the "nobody" hint. I was using a dummy "nodelete" role :)

A dirty fix until next release :)

create a javascript file named 1.js which will override the auto generated publisher (we choose 1.js because of meteor's loading order)

 Meteor.publish("admin_invoices", function() {
    if(!Users.isInRoles(this.userId, ["user","admin"])) return this.ready();
    if(Users.isInRoles(this.userId, ["admin"])){
            return Invoices.find({}, {});
    }
    return Invoices.find({ownerId:this.userId}, {});
 });

add the copy directive to the json file. It should go to "SERVER_DIR/publish/" again because of meteor load order.

"copy_files": [ { "source": "js/1.js", "dest": "SERVER_DIR/publish/1.js" } ]

Meteor will give a warning "Ignoring duplicate publish named 'admin_invoices'" but it will work.

Thanks for dirty fix.
I am thinking about removing "read_owner_only" and "write_owner_only" and adding special role "owner", so to allow admin and owner:
"roles_allowed_to_read": ["admin", "owner"]
What do you think?

Neat solution :)
I guess you'll do the same for delete and update too right?

Yeah, update and delete too.

Perak,
How about a unix like permission system?
"roles_allowed_to_read": ["admin","group", "owner"]
"group" is also a special role like owner.
Let's say we want to implement an invoice software for a company having different departments. Every department may have multiple accountants where each department can see/edit their own invoices and admin should be able to do everything.
To do this each record should have groupid like ownerid and users should belong to some groups. I know it's more complicated than your solution but it's more flexible.
What do you think?

Sounds good. But don't expect it quickly. BTW, I'l upload later today new version, it supports "owner" role (and "read_owner_only", "write_owner_only" is removed).

@kadirerdogan it's online now v0.9.33 see http://www.meteorkitchen.com/getting_started (at the bottom) for more details.
Please close this issue if everything works fine.
Thanks :)

It's still not working. After v0.9.33 generated code is like below. It's still filtering with ownerId.
My setup:
"owner_field": "ownerId",
"roles_allowed_to_read":["admin","owner"],
"roles_allowed_to_update":["admin"],
"roles_allowed_to_delete":["nobody"],
Generated code:
Meteor.publish("invoices", function() {
    if(!Users.isInRoles(this.userId, ["admin"])) return this.ready();
    return Invoices.find({ownerId:this.userId}, {});
});

What it should be:
Meteor.publish("invoices", function() {
    if(!Users.isInRoles(this.userId, ["admin"])) return this.ready();
    return Invoices.find({}, {});
});

Btw, with the new version regular users can't see their own records. So i think generated code should be like below where isInRoles check the special role "owner"
Meteor.publish("invoices", function() {
    if(!Users.isInRoles(this.userId, ["admin","owner"])) return this.ready();
    if(!Users.isInRoles(this.userId, ["admin"]))
        return Invoices.find({ownerId:this.userId}, {});
    return Invoices.find({}, {});
});

Ooops, yes you're right. :( I will fix it in 0.9.34, hopefully in next 24 hours...

OK, v0.9.34 is online. Here is how generated code looks like now:
"roles_allowed_to_read": ["owner"]
Meteor.publish("customers", function() {
	return Customers.find({ ownerId: this.userId }, {});
});

"roles_allowed_to_read": ["admin"]
Meteor.publish("customers", function() {
	if(Users.isInRoles(this.userId, ["admin"])) {
		return Customers.find({}, {});
	}
	return this.ready();
});

"roles_allowed_to_read": ["admin", "owner"]
Meteor.publish("customers", function() {
	if(Users.isInRoles(this.userId, ["admin"])) {
		return Customers.find({}, {});
	}
	return Customers.find({ ownerId: this.userId }, {});
});

Also fixed "roles_allowed_to_update" and "roles_allowed_to_delete" (userCanUpdate and userCanRemove functions).

It seems like it's working :) I am closing this issue. Thanks


Bundles with changes

Resolves https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/issues/671.

This got merged, but had to go through a rebase.


Categorical dependencies

Hello, does Snorkel support dependency extraction for categorical problems?
I decided to extend my model with structure learning, my code follows the tutorial on categorical classes.
DependencySelector.select runs through without errors but doesn't return any dependencies though I deliberately tested with labeling functions which should fire together in ca. 80% of cases and give the same label.
Thank you

Hi,
Great question! And thanks for trying this out. It doesn't support categorical classes right now, but it's just because we wrote the structure learning code before adding categoricals to the main generative model. I've assigned myself and will work on adding this.

Ok, thank you, looking forward to it!

Any updates on that?

Are there any updates regarding the same?

This is still on our roadmap and we'll keep this issue open and update when we support it!


Re-port insertText() from JS

Re-port insertText() from JS

To accommodate changes in the web version of Lexical since we began the iOS project, as well as additional features now supported by iOS Lexical that were not present when we first wrote insertText(), I went back to the latest Lexical JS source and ported insertText() and deleteCharacter() line-by-line into Swift.
Practical problems this solves include some issues relating to formatting, e.g. whether formatting is applied to the selection upon certain actions (e.g. character deletion). It is also a good thing in general to have behaviour that is very similar to Lexical JS.
Note: as part of doing this work, I spotted a marked text bug: type some text, then apply a format (eg bold), then type a keystroke that initiates marked text. Instead of the expected character appearing, two non-marked characters appear after the caret. This bug is not new with this refactor -- it appears in the old codepath as well -- but I'm mentioning it here to document it.


Small optimization

Can you make a small upgrade in one of the files?
The /editor-resources/editor.js file has a function that opens a new browser window:
function openpicker(url).
I think that it would be more convenient for many people to open this window not in the left-upper corner, as now, because now it overlaps the "Properties" window.
Make the call to the window.open function as in the text below (offset as an example) or open in the center of the screen.
function openpicker(url) {
    // make sure it isn't already opened
    if (!newWindow || newWindow.closed) {
        newWindow = window.open("", "cactipicker", "left=300,top=300,scrollbars=1,status=1,height=400,width=400,resizable=1");
    }

Surely this depends on where you browser window is?
Why do you need to see both the properties and picker? The plan for the future is that the picker won't be a separate window at all... is there something I'm missing here?

IE, Crome and Opera - in these browsers, with this modification, the windows open equally.
In the properties window we see (e.g. Link from 'Device1' to 'Device2') where we need to take the data source for the graph so that the values and direction on the arrows are correct.
With a large number of devices in the picker list you have to choose the right one for a long time.

Are there any plans for the future to return the list of the latest selected devices? Or add an option filter devices based on the node name?

#74 and #54 are for restoring the features.
So really, if the picker window showed which item we're talking about, that would also work, and not require anyone to ever move a window.

Yes, if in the picker window will indicate the object to which we select the data source (node names or their labels), it will simplify the work.

OK - should be simple enough to add in :-) I'm reopening this so it reminds me.


[QUESTION] SKBlendMode.DstOver on Windows ARM device is slow. (UWP, Xamarin.Forms)

Hello,
I'm developing a UWP application with Xamarin.Forms.
Drawing lines using SKBlendMode.DstOver on Windows ARM devices is very slow.
But when I run "x64" built app on an Windows ARM device it works fine.
Information:

SkiaSharp.Views.Forms Version : 2.88.3
IDE : Visual Studio 2022 Version 17.4.1

Why does this issue occur?

Is this ARM as in ARM32 or ARM as in ARM64?
I assume ARM64 as that is what exists (plain ARM is probably Windows Phone). Do you have a sample or test case that I can check. However, UWP ARM is the least optimized platform so could very well be the case. Skia is designed for LLVM/Clang, but UWP is using MSVC that has none of the optimizations.

In my case, target the device actually tested uses Surface Pro X Model 1876.
The CPU of this device uses Microsoft SQ1, which is an ARM-based CPU.
When using this device and drawing lines using SKBlendMode.DstOver, the operation gradually becomes slower.
I have prepared a sample code that is a simple modification of MainPage.cs in SkiaSharpDemo.
SkiaSharpDemo:https://github.com/mattleibow/SkiaSharpDemo
When I ran this sample code on this device, I was able to confirm the problem.
Sample Code:
using System.Collections.Generic;
using System.Linq;
using SkiaSharp;
using SkiaSharp.Views.Forms;
using Xamarin.Forms;

namespace SkiaSharpDemo
{
	public partial class MainPage : ContentPage
	{
		private readonly Dictionary<long, SKPath> temporaryPaths = new Dictionary<long, SKPath>();
		private readonly List<(SKPath, SKPaint)> paths = new List<(SKPath, SKPaint)>();
		private readonly SKPaint TouchPathStroke = new SKPaint()
		{
			IsAntialias = true,
			Style = SKPaintStyle.Stroke,
			Color = SKColors.Black,
			StrokeWidth = 5,
			BlendMode = SKBlendMode.DstOver
		};

		public MainPage()
		{
			InitializeComponent();
		}

		private void OnPainting(object sender, SKPaintSurfaceEventArgs e)
		{
			// CLEARING THE SURFACE

			// we get the current surface from the event args
			var surface = e.Surface;
			// then we get the canvas that we can draw on
			var canvas = surface.Canvas;
			// clear the canvas / view
			canvas.Clear();

			// DRAWING TOUCH PATHS

			// draw the paths
			foreach (var touchPath in paths)
			{
				canvas.DrawPath(touchPath.Item1, touchPath.Item2);
			}
			foreach (var touchPath in temporaryPaths)
			{
				canvas.DrawPath(touchPath.Value, TouchPathStroke);
			}
		}

		private void OnTouch(object sender, SKTouchEventArgs e)
		{
			switch (e.ActionType)
			{
				case SKTouchAction.Pressed:
					// start of a stroke
					var p = new SKPath();
					p.MoveTo(e.Location);
					temporaryPaths[e.Id] = p;
					break;
				case SKTouchAction.Moved:
					// the stroke, while pressed
					if (e.InContact && temporaryPaths.TryGetValue(e.Id, out var moving))
						moving.LineTo(e.Location);
					break;
				case SKTouchAction.Released:
					// end of a stroke
					if (temporaryPaths.TryGetValue(e.Id, out var releasing))
						paths.Add((releasing, TouchPathStroke.Clone()));
					temporaryPaths.Remove(e.Id);
					break;
				case SKTouchAction.Cancelled:
					// we don't want that stroke
					temporaryPaths.Remove(e.Id);
					break;
			}

			// update the UI
			if (e.InContact)
				((SKCanvasView)sender).InvalidateSurface();

			// we have handled these events
			e.Handled = true;
		}
	}
}


provide easy defineInjectionMessage() on DefaultRetrievalAugmentor

The current phrase to attach context segments to the user query in DefaultRetrievalAugmentor ("Answer using the following information:\n") is a bit buggy because it causes the model to use the context segments even if it makes no sense for the user query. We can add Reranking to make sure irrelevant info is dropped, but wouldn't it be easier to prompt it in a more nuanced way in the first place?
Provide easier method to set the injection message
With @anunnakian we have overwritten the message as follows, is this indeed the best way currently?
this.retrievalAugmentor = DefaultRetrievalAugmentor.builder()
                .queryRouter(queryRouter)
                .contentAggregator(contentAggregator)
                .contentInjector(DefaultContentInjector.builder()
                        .promptTemplate(
                                PromptTemplate.from("{{userMessage}}\n" +
                                        "\n" +
                                        "if relevant to the question, you can use amongst others following information:\n" +
                                        "{{contents}}"))
                        .build())
                .build();

It would be great to have a more direct way to set this injection message, depending on the flavour and constraints of your application, eg.
DefaultRetrievalAugmentor.builder().defineInjectionMessage("Answer strictly using the following segments and do not use your own knowledge")
or
DefaultRetrievalAugmentor.builder().defineInjectionMessage("You may use the information below if it is relevant to the question")
Optional update of the default injection message
I'm aware that changing the default message now would cause apps to behave differently. I would still be in favor of changing it to eg. "You can use the following information in your answer" or "If relevant, use the following pieces of information for answering".

@LizeRaes do you plan to use DefaultRetrievalAugmentor with AI Services?
What about:
Assistant assistant = AiServices.builder(Assistant.class)
    .chatLanguageModel(model)
    .contentRetriever(contentRetriever, "{{userMessage}}\nAnswer strictly using the following segments and do not use your own knowledge\n{{contents}}")
    .build();

Existing message can indeed be tweaked a bit

I like the suggestion of the tweaked contentRetriever() method to which we could pass the prompt template string directly. It'd be less verbose.
I think I'd add a variant that takes a PromptTemplate parameter, rather than just the String type, as someone could use a real templating engine that would produce different prompt strings, depending on the data passed to the template (for example, if the search didn't yield any result, you could tweak the prompt string to say that no result came up from the search)
Somehow, I think it's not a best practice to have the default templates stored in the code directly. I'd much rather we externalized the prompts in some dedicated file (properties file? json or something else?) That would be cleaner and potentially overridable by users. Imagine LC4J looking for a custom prompt template (provided by the user) in an expected location, and if not present, we would use the default prompt template in a specific location.
Some prompts work better with certain LLM models than others. It could also be interesting if implementors of LLM integrations could come up with their own prompt templates they know work best with their LLM.

Related thing: currently when RAG chat is done with memory, retrieved contents are stored in memory (inside the UserMessage) and this makes memory grow over time much faster and potentially contain duplicate contents:
UserMessage.from("query 1\n\nAnswer using the following information:\ncontent 1\ncontent2\content3"),
AiMessage.from("response 1"),
UserMessage.from("query 2\n\nAnswer using the following information:\ncontent 1\ncontent 3"),
AiMessage.from("response 2")

I am considering making this behavior configurable (on/off) and changind default to "not store contents in memory".
So in this case contents will be provided only for the last UserMessage.
WDYT?

Assistant assistant = AiServices.builder(Assistant.class)
    .chatLanguageModel(model)
    .contentRetriever(contentRetriever, "{{userMessage}}\nAnswer strictly using the following segments and do not use your own knowledge\n{{contents}}")
    .build();

I like this solution for giving a lot of freedom. The drawback I see is that it's not obvious from autocomplete that {{userMessage}} and {{contents}} can be used, so it needs to be documented.
It would look like this then with a retrievalAugmentor?
RetrievalAugmentor retrievalAugmentor = DefaultRetrievalAugmentor.builder()
                .contentRetriever(contentRetriever, "{{userMessage}}\nAnswer strictly using the following segments and do not use your own knowledge\n{{contents}}")
                .contentAggregator(contentAggregator)
                .build();

(I always use an augmentor since naive RAG just doesn't do the trick when building something customer facing)
I do like @glaforge's suggestion for allowing to externalize templates, do you have a concrete example of how this would look (I also read your article on maintaining prompts per fine-grained model version, and was curious to see a real life example).
When talking about RAG (but similar for tool calls), I would also love to be able to log the retrieved parts per retriever and the segments that make it through reranking. For now we have forced that on via the property below, but it's not clean:
quarkus.log.category."dev.langchain4j".level=DEBUG

I'll open a separate discussion for it, unless I've overlooked something obvious.

Related thing: currently when RAG chat is done with memory, retrieved contents are stored in memory (inside the UserMessage) and this makes memory grow over time much faster and potentially contain duplicate contents:
...
WDYT?

I like the option to make this flexible, and agree that I would default to the second option as well.
I guess it's too complicated to check uniqueness and keep one of each content present at some point or another in the chat memory (to avoid duplicates)?
Would it make sense to have a concept ContentMessage(s) so those can be managed separately (eg. cumulative adding, replacing with every new context fetch, keeping a unique set, or even programatically change it and filter it based on some conditions)?
This could then be the default templating:
UserMessage.from("query 1"),
AiMessage.from("response 1"),
UserMessage.from("query 2\n\nAnswer using the following information:\nContentMessage(s)"),
AiMessage.from("response 2")

but one could even change it to
``java
SystemMessage.from("You're a marine biologist.\n\nHere are text segments relevant to your research:\nContentMessage(s)"),
UserMessage.from("query 1"),
AiMessage.from("response 1"),

I suppose you need a similar concept when implementing FewShotMessage?

I guess it's too complicated to check uniqueness and keep one of each content present at some point or another in the chat memory (to avoid duplicates)?

This could be one of the strategies, but I would start first with the 2 described above. We can always add more.

Would it make sense to have a concept ContentMessage(s) so those can be managed separately (eg. cumulative adding, replacing with every new context fetch, keeping a unique set, or even programatically change it and filter it based on some conditions)?

Do you mean to have a new type ContentMessage that will contain RAG Contents?

I suppose you need a similar concept when implementing FewShotMessage?

For few-shot examples I consider using regular message types. User could define a List<ChatMessage> which should be added to the list of all messages sent to the LLM. User could also specify a strategy where to add them (e.g. right before the last UserMessage or in the beginning of the conversation). What do you think the default should be?

This way has my preference bcs I think it's more obvious from autocomplete what one can set, but no strong opinion

RetrievalAugmentor retrievalAugmentor = DefaultRetrievalAugmentor.builder()
                .contentRetriever(contentRetriever)
                .contentAggregator(contentAggregator)
                .contentInjectorTemplate("{{userMessage}}\nAnswer strictly using the following segments and do not use your own knowledge\n{{contents}}")
                .build();

Final contents that make it (trough reranking) to the user message can be accessed this way: https://docs.langchain4j.dev/tutorials/rag#accessing-sources Executed tools can be accessed this way: https://docs.langchain4j.dev/tutorials/tools#accessing-executed-tools There will be another way to do that once listeners for observability are implemented (for tools as well).

-> This is awesome! Thanks!

Do you mean to have a new type ContentMessage that will contain RAG Contents?

Yes, because I can see how you want to keep and manage those parts separately from the rest of the ChatMemory, especially when implementing a custom ChatMemory, eg. add them after (to) every UserMessage, OR gather all ContentMessages and add them at the end, OR drop the former ContentMessage and bring the new ones in place, OR keep a unique list, etc. So, for a custom ChatMemory implementation, I could imagine that one would want to filter on those ContentMessages and provide an injection strategy.
How were you thinking to implement the two basic strategies? Like MessageWindowChatMemory vs TokenWindowChatMemory?

For few-shot examples I consider using regular message types. User could define a List which should be added to the list of all messages sent to the LLM. User could also specify a strategy where to add them (e.g. right before the last UserMessage or in the beginning of the conversation). What do you think the default should be?

I would put as them at the beginning as default strategy (optionally even in the SystemMessage as examples, with again a specifiable injection template), because I expect things to get messed up for less clear cut cases that hold the middle between a conversation and preprogrammed replies. If you add the few-shot examples as if they were the last messages, they would interfere in a very weird way with the conversational part.
It's super important to keep the few-shot messages in the memory when it gets filled, otherwise, a longer conversation will push them out of the context window and the model will not have it's behavioral blueprint anymore.
Same question as for ContentMessage: do you imagine a way to manage all this when the few-shot messages are not marked in any way as different from the std AiMessage and UserMessage?
Also again thinking of people that might want to write a custom ChatMemory and tailor the few-shot to their use case.

Memory management may need a bit more thought, I got similar impressions as described here, there's no one-size-fits all https://blog.langchain.dev/memory-for-agents/

@LizeRaes

Yes, because I can see how you want to keep and manage those parts separately from the rest of the ChatMemory, especially when implementing a custom ChatMemory, eg. add them after (to) every UserMessage, OR gather all ContentMessages and add them at the end, OR drop the former ContentMessage and bring the new ones in place, OR keep a unique list, etc. So, for a custom ChatMemory implementation, I could imagine that one would want to filter on those ContentMessages and provide an injection strategy.

I am not sure about new message type as it would require supporting it explicitly for every LLM provider. I was considering adding metadata to the UserMessage instead to be able to distinguish between the original user message and injected stuff. This should work for use cases you describe.

I would put as them at the beginning as default strategy (optionally even in the SystemMessage as examples, with again a specifiable injection template), because I expect things to get messed up for less clear cut cases that hold the middle between a conversation and preprogrammed replies. If you add the few-shot examples as if they were the last messages, they would interfere in a very weird way with the conversational part.

Good point.
Regarding examples in system message: users can specify examples in system message already without problem. Either hardcode them in the prompt or inject with a variable.

It's super important to keep the few-shot messages in the memory when it gets filled, otherwise, a longer conversation will push them out of the context window and the model will not have it's behavioral blueprint anymore.
Same question as for ContentMessage: do you imagine a way to manage all this when the few-shot messages are not marked in any way as different from the std AiMessage and UserMessage?
Also again thinking of people that might want to write a custom ChatMemory and tailor the few-shot to their use case.

I do not plan to store example messages in the ChatMemory (they are not really a part of a "memory", those are synthetic messages), they will be added automatically to the list of messages inside AI service before sending the request to the LLM each time, so this should not be a concern.

I personally like the current way to be honest, because users don't have to know how it works. What I do believe should be easy is to have a way for users to change the default.

I do like the solution where you can use {{retrievedContent}} in the AiService and would let any template used there override whatever was specified on the Retriever (.contentInjectorTemplate()or whatever syntax we go with).
I agree with @geoand that we should keep a default behavior, which I think would work out of the box if we have the defaultContentInjector as fallback method if {{retrievedContent}} is not used in the AiService.
The thing I'm wondering is, how do you combine this template with avoiding that repeatedly retrieved context will be filling up the ChatMemory like it is currently doing? Just thinking that a way to specify add context to memory: yes / no? would already cover the two most important cases, provided that in case of no you add the {{retrievedContent}} to the last UserMessage that is sent to the model, but not to UserMessage that is stored in the ChatMemory?
I like the idea of metadata on the messages to allow distinguishing query from injected content from examples. But then again, once they are mashed into one UserMessage with the template, how do you separate them again? (and is this even needed if an approach with add context to memory: yes / no? is available)


Prefer regex to manual parsing in parseURL

parseURL in StringUtilities.cpp uses a regex to pull the authority
out of the URL, then further parsing to get the host and port.  Roll
that parsing into the regex. Note that the host can be a name, an IPv4
address, or an IPv6 address.
 Please point them out.
I scoped the individual test cases in blocks to reset the parsedURL object. I was tripped up in development when the test cases I added at the end asserted no port number, but one was set by an earlier test case.
I'm not sure when to prefer assignment initialization and when to prefer braced initialization. The existing code had a mix.
I explicitly typed some declarations. Should I just prefer auto everywhere until the compiler complains?

Thank you for your submission. It will be reviewed soon and submitted for processing in CI.

I'm not sure when to prefer assignment initialization and when to prefer braced initialization. The existing code had a mix.

As with all newer features, we're all learning what works and what doesn't and I don't have best practices to offer. Perhaps others do (our resident C++ gurus @HowardHinnant and @scottschurr can probably point to several cases where braced initialization is better).

My preference is to use {} for all constructions except:

If the type being constructed has (or might have) a constructor taking a std::initializer_list, then use {} if you want that constructor, otherwise use ().  This include all std::containers and std::basic_string.  In a generic context (where you don't know the type being constructed), be pessimistic and use () unless you intend to use a constructor taking std::initializer_list.

If you're constructing a scalar type that requires a narrowing cast, then {} won't work and you'll be forced to use ().

My rationale is that I like to use {} as much as possible because it makes constructions visually distinct from function calls, and sometimes avoids the "most vexing parse".  It is regretful that one can not take the advice to use always use {}.
I also prefer to use neither {} nor () if the construction can be done implicitly:
T t = u;

This syntax will alert you at compile time if you intended u to be implicitly convertible to T, and are mistaken.  This can easily happen when T and/or u are generic types.  If one had used T t{u}; instead, one might accidentally force an explicit construction when an implicit one was intended.  Explicit constructions are more apt to convert between types that change meanings or values.  That's valuable when needed, and harmful when called accidentally.

Me after reading @HowardHinnant's thorough and informative reply: :face_with_head_bandage:

Jenkins Build Summary
Built from this commit
Built at 20181108 - 10:52:19
Test Results

Build Type
Log
Result
Status

rpm
logfile
1139 cases, 0 failed, t: n/a
PASS :white_check_mark:

msvc.Debug
logfile
1136 cases, 0 failed, t: 620s
PASS :white_check_mark:

msvc.Debug, NINJA_BUILD=true
logfile
1136 cases, 0 failed, t: 634s
PASS :white_check_mark:

msvc.Debug -Dunity=OFF
logfile
1136 cases, 0 failed, t: 1264s
PASS :white_check_mark:

msvc.Release
logfile
1136 cases, 0 failed, t: 411s
PASS :white_check_mark:

gcc.Release -Dassert=ON, MANUAL_TESTS=true
logfile
915 cases, 0 failed, t: 6m6s
PASS :white_check_mark:

docs, TARGET=docs
logfile
1 cases, 0 failed, t: 0m1s
PASS :white_check_mark:

clang.Debug
logfile
1139 cases, 0 failed, t: 3m13s
PASS :white_check_mark:

clang.Debug -Dunity=OFF
logfile
1139 cases, 0 failed, t: 2m27s
PASS :white_check_mark:

gcc.Debug -Dcoverage=ON, TARGET=coverage_report, SKIP_TESTS=true
logfile
1139 cases, 0 failed, t: 17m8s
PASS :white_check_mark:

gcc.Debug
logfile
1139 cases, 0 failed, t: 3m26s
PASS :white_check_mark:

clang.Release -Dassert=ON
logfile
1139 cases, 0 failed, t: 5m42s
PASS :white_check_mark:

gcc.Debug -Dunity=OFF
logfile
1139 cases, 0 failed, t: 8m53s
PASS :white_check_mark:

gcc.Debug -Dstatic=OFF
logfile
1139 cases, 0 failed, t: 3m27s
PASS :white_check_mark:

gcc.Release -Dassert=ON
logfile
1139 cases, 0 failed, t: 6m6s
PASS :white_check_mark:

gcc.Debug, NINJA_BUILD=true
logfile
1139 cases, 0 failed, t: 3m3s
PASS :white_check_mark:

gcc.Debug -Dstatic=OFF -DBUILD_SHARED_LIBS=ON
logfile
1139 cases, 0 failed, t: 3m24s
PASS :white_check_mark:

clang.Debug -Dunity=OFF -Dsan=address, PARALLEL_TESTS=false, DEBUGGER=false
logfile
1139 cases, 0 failed, t: 1m50s
PASS :white_check_mark:

clang.Debug -Dunity=OFF -Dsan=undefined, PARALLEL_TESTS=false
logfile
1139 cases, 0 failed, t: 5m48s
PASS :white_check_mark:

@nbougalis My preference is to let the reviewer resolve issues they opened. Is there a team custom?


Authorisation with Google is broken in the Brave web browser.

https://community.brave.com/t/google-calendar-by-manas-tungare-will-not-authorise-with-google-in-brave/50628
Granted it's very likely a Brave issue, as this extension authorises just fine in Chrome and Opera :-) But fails to do anything in Brave for Windows.

https://github.com/manastungare/google-calendar-crx/wiki/Supported-Browsers

@manastungare does the extension rely at all on 3rd party cookies? If so that could be the root of the issue as Brave blocks 3rd party cookies by default.


An Inquiry about NIH-Pancreas dataset configuration for evaluation

During study, I am so interested in your network, Dual-task Consistency, and wondered the dataset configuration in training and testing.
My question is below:

Patient numbers in 12 labeled training sets from 82 NIH-Pancreas datasets (ex. no. 1, no. 2, ...)

Patient numbers in 20 testing sets from 82 NIH-Pancreas datasets (ex. no. 62, no. 63, ...)

Ratio of training/validation dataset in network training

If you answer the above questions, I think it will be of great help to my study.
Many thanks =)

Hi,
I have answered your questions in an email.
Best.


Getting unauthorized with Devise

Hello
I'm trying to setup Rails_admin with devise in order to force authentication to go into the admin panel but I'm getting  unauthorized messages and being redirected to the login page.
I've done this kind of integration between Devise and Rails_Admin before and didn't have any problem but this time I'm getting a lot of troubles with it. Any idea of what might be happening?
Thanks in advance
  config.authenticate_with do
    warden.authenticate! scope: :user
  end
  config.current_user_method(&:current_user)

Please use the mailing list or StackOverflow for questions/help, where a wider community will be able to help you. We reserve the issues tracker for issues only.


koordlet: fix some fmt err

Ⅰ. Describe what this PR does

Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how to verify it
Ⅳ. Special notes for reviews
V. Checklist

[ ] I have written necessary docs and comments
[ ] I have added necessary unit tests and integration tests
[ ] All checks passed in make test

Great job.


Make a new release with latest features

My team would like an official release with the new features so that we do not need to rely on snapshot versions of the plugin (and we do not need to enable snapshots from the Sonatype repository).
In particular, issue #25 "Option to install Liberty from a repository" is desired in a stable version of the liberty-maven-plugin.

This would be nice for gpoul/arquillian-container-was@ba4a6dbdbdc4be9ba95f8b92556ece7ab3f2f2f6 as well.

+1

+1

Done! The 1.1 release is now in Maven central.

Awesome! - I'll make sure we integrate this on the Arquillian container support!


Qt.QtGui.qRgba is missing

Hi !
It seems that QtGui.qRgba() is missing in Qt.py.
Qt.__version__
'1.0.0'

import Qt.QtGui
Qt.QtGui.qRgba()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'module' object has no attribute 'qRgba'

and using the PySide2 QtGui seems to work fine
Qt._QtGui.qRgba
<built-in function qRgba>

Qt._QtGui.qRgba()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: qRgba expected 4 arguments, got 0

Thanks @maty974, it looks like indeed it is missing.
Would you be able to submit a PR for it? Then the automatic tests would kick in and see if everything is allright across all bindings.

If you upgrade to Qt.py 1.1.0b7, qRgba is available there:
https://github.com/mottosso/Qt.py/blob/master/Qt.py#L337
For future reference: when running build_membership.sh, the PySide/PyQt bindings members are compared and a common_members.json file is generated. The contents of this file is what we copy-paste into the common_members dictionary of Qt.py.


AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-qVL45***************************************D1Vi. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}

Confirm this is an issue with the Python library and not an underlying OpenAI API

[X] This is an issue with the Python library

Describe the bug
when I configure the proxy settings using the os package in Python to set environment variables, everything works as expected, and I can successfully make requests to the OpenAI API. So I am sure my API key is correct.
However, when i create an llm instance and try to get response I receive the following error.
code:
response = await llm._achat_completion(messages=["hello"])

report:
AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-qVL45***************************************D1Vi. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}

traceback:
---------------------------------------------------------------------------
AuthenticationError                       Traceback (most recent call last)
Cell In[13], [line 1](vscode-notebook-cell:?execution_count=13&line=1)
----> [1](vscode-notebook-cell:?execution_count=13&line=1) response = await llm._achat_completion(messages=["hello"])

File [d:\anaconda3\envs\zgb2\Lib\site-packages\metagpt\provider\openai_api.py:148](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/metagpt/provider/openai_api.py:148), in OpenAILLM._achat_completion(self, messages, timeout)
    [146](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/metagpt/provider/openai_api.py:146) async def _achat_completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> ChatCompletion:
    [147](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/metagpt/provider/openai_api.py:147)     kwargs = self._cons_kwargs(messages, timeout=self.get_timeout(timeout))
--> [148](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/metagpt/provider/openai_api.py:148)     rsp: ChatCompletion = await self.aclient.chat.completions.create(**kwargs)
    [149](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/metagpt/provider/openai_api.py:149)     self._update_costs(rsp.usage)
    [150](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/metagpt/provider/openai_api.py:150)     return rsp

File [d:\anaconda3\envs\zgb2\Lib\site-packages\openai\resources\chat\completions.py:1295](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1295), in AsyncCompletions.create(self, messages, model, frequency_penalty, function_call, functions, logit_bias, logprobs, max_tokens, n, parallel_tool_calls, presence_penalty, response_format, seed, service_tier, stop, stream, stream_options, temperature, tool_choice, tools, top_logprobs, top_p, user, extra_headers, extra_query, extra_body, timeout)
   [1261](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1261) @required_args(["messages", "model"], ["messages", "model", "stream"])
   [1262](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1262) async def create(
   [1263](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1263)     self,
   (...)
   [1293](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1293)     timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
   [1294](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1294) ) -> ChatCompletion | AsyncStream[ChatCompletionChunk]:
-> [1295](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1295)     return await self._post(
   [1296](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1296)         "/chat/completions",
   [1297](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1297)         body=await async_maybe_transform(
   [1298](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1298)             {
   [1299](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1299)                 "messages": messages,
   [1300](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1300)                 "model": model,
   [1301](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1301)                 "frequency_penalty": frequency_penalty,
   [1302](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1302)                 "function_call": function_call,
   [1303](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1303)                 "functions": functions,
   [1304](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1304)                 "logit_bias": logit_bias,
   [1305](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1305)                 "logprobs": logprobs,
   [1306](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1306)                 "max_tokens": max_tokens,
   [1307](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1307)                 "n": n,
   [1308](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1308)                 "parallel_tool_calls": parallel_tool_calls,
   [1309](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1309)                 "presence_penalty": presence_penalty,
   [1310](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1310)                 "response_format": response_format,
   [1311](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1311)                 "seed": seed,
   [1312](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1312)                 "service_tier": service_tier,
   [1313](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1313)                 "stop": stop,
   [1314](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1314)                 "stream": stream,
   [1315](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1315)                 "stream_options": stream_options,
   [1316](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1316)                 "temperature": temperature,
   [1317](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1317)                 "tool_choice": tool_choice,
   [1318](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1318)                 "tools": tools,
   [1319](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1319)                 "top_logprobs": top_logprobs,
   [1320](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1320)                 "top_p": top_p,
   [1321](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1321)                 "user": user,
   [1322](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1322)             },
   [1323](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1323)             completion_create_params.CompletionCreateParams,
   [1324](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1324)         ),
   [1325](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1325)         options=make_request_options(
   [1326](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1326)             extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
   [1327](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1327)         ),
   [1328](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1328)         cast_to=ChatCompletion,
   [1329](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1329)         stream=stream or False,
   [1330](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1330)         stream_cls=AsyncStream[ChatCompletionChunk],
   [1331](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/resources/chat/completions.py:1331)     )

File [d:\anaconda3\envs\zgb2\Lib\site-packages\openai\_base_client.py:1836](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1836), in AsyncAPIClient.post(self, path, cast_to, body, files, options, stream, stream_cls)
   [1822](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1822) async def post(
   [1823](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1823)     self,
   [1824](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1824)     path: str,
   (...)
   [1831](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1831)     stream_cls: type[_AsyncStreamT] | None = None,
   [1832](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1832) ) -> ResponseT | _AsyncStreamT:
   [1833](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1833)     opts = FinalRequestOptions.construct(
   [1834](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1834)         method="post", url=path, json_data=body, files=await async_to_httpx_files(files), **options
   [1835](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1835)     )
-> [1836](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1836)     return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)

File [d:\anaconda3\envs\zgb2\Lib\site-packages\openai\_base_client.py:1524](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1524), in AsyncAPIClient.request(self, cast_to, options, stream, stream_cls, remaining_retries)
   [1515](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1515) async def request(
   [1516](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1516)     self,
   [1517](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1517)     cast_to: Type[ResponseT],
   (...)
   [1522](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1522)     remaining_retries: Optional[int] = None,
   [1523](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1523) ) -> ResponseT | _AsyncStreamT:
-> [1524](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1524)     return await self._request(
   [1525](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1525)         cast_to=cast_to,
   [1526](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1526)         options=options,
   [1527](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1527)         stream=stream,
   [1528](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1528)         stream_cls=stream_cls,
   [1529](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1529)         remaining_retries=remaining_retries,
   [1530](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1530)     )

File [d:\anaconda3\envs\zgb2\Lib\site-packages\openai\_base_client.py:1625](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1625), in AsyncAPIClient._request(self, cast_to, options, stream, stream_cls, remaining_retries)
   [1622](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1622)         await err.response.aread()
   [1624](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1624)     log.debug("Re-raising status error")
-> [1625](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1625)     raise self._make_status_error_from_response(err.response) from None
   [1627](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1627) return await self._process_response(
   [1628](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1628)     cast_to=cast_to,
   [1629](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1629)     options=options,
   (...)
   [1633](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1633)     retries_taken=options.get_max_retries(self.max_retries) - retries,
   [1634](file:///D:/anaconda3/envs/zgb2/Lib/site-packages/openai/_base_client.py:1634) )

AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-qVL45***************************************D1Vi. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}

I would greatly appreciate it if I could receive any response or assistance from you!
To Reproduce
...
Code snippets
...

OS
windows11
Python version
Python v3.11.11
Library version
openai v1.39.0

Alright, let's dive into this AuthenticationError. It's throwing a 401, which usually means the API key is getting rejected. But you've already confirmed it works with a proxy, so there's something else going on.
Looking at the traceback, it seems the error is happening within the _achat_completion call. This suggests the issue might be with how the llm instance is handling the API key when making that specific request.
Here's what we can check:
API Key Passing: Make sure the llm instance is correctly passing the API key in the Authorization header of the _achat_completion request. There might be a bug where it's not being included or is being formatted incorrectly.
Environment Variables: Although you've confirmed the API key works with a proxy, double-check that the environment variable is being read correctly within the llm instance. There might be a conflict or a different way the instance accesses environment variables.
Library Version: You're using openai v1.39.0. Check if there are any known issues or bug reports related to authentication in this version. It's possible a newer version has a fix or a workaround.
Request Inspection: If possible, inspect the actual HTTP request being sent by the _achat_completion call. This will help confirm whether the API key is being included and formatted correctly in the Authorization header.
OpenAI Support: If all else fails, reach out to OpenAI support directly. They might have insights into specific issues with the Python library or the API itself.
Let's systematically investigate these points and see if we can pinpoint the root cause of this authentication error.

Alright, let's break down this AuthenticationError and get to the bottom of it.
First, let's confirm the API key situation. You mentioned it works with a proxy, so it's likely valid. However, the error message explicitly states an incorrect key. This inconsistency suggests the key might not be passed correctly to the _achat_completion function.
Looking at the traceback, the error originates from openai_base_client.py, specifically within the _request function. This function likely handles the API call to OpenAI's servers. The AuthenticationError is raised when the server responds with a 401 status code, indicating authentication failure.
Here's a breakdown of potential causes and debugging steps:
API Key Handling:
Verify how the OpenAILLM class stores and accesses the API key.
Ensure the key is correctly passed to the aclient.chat.completions.create(**kwargs) call.
Inspect the kwargs dictionary to confirm the key is present and correctly formatted.
Environment Variables:
While the key works with a proxy, ensure the OpenAILLM instance accesses it correctly.
Print the key's value within the _achat_completion function to confirm it matches your actual key.
Library Version:
Check for known authentication issues in openai v1.39.0.
Consider upgrading to the latest version if a fix is available.
Request Inspection:
If possible, capture and examine the HTTP request sent by _achat_completion.
Verify the Authorization header includes the correct key and prefix (e.g., "Bearer sk-[your_key]").
OpenAI Support:
If the above steps don't resolve the issue, contact OpenAI support for assistance.
Let's systematically investig

a few more things I'm noticing as well beyond this
First, that traceback is long, but it doesn't show us the contents of kwargs. That's where the API key should be, and we need to see exactly how it's being passed to the create() call.  Without that, we're kinda shooting in the dark.
Second, this metagpt thing... is that a custom library or something?  It's involved in the call stack, but we don't know much about it.  Could be relevant, could be a red herring, but worth noting.
Third, it's using httpx for requests.  Not the usual requests library.  Might be a difference in how they handle environment variables or headers.  Something to keep in mind.
And lastly, this is all happening in a Jupyter notebook (Cell In[13]).  Those can sometimes have weird environment quirks.  Maybe worth trying this outside the notebook, just a basic Python script, to rule that out.
Overall, feels like we're missing some key info.  Need to see that kwargs dictionary, maybe dig into metagpt, and consider those httpx and Jupyter factors.  The more we know, the better we can hunt down this bug

Maybe you have to check if your headers are being passed extra_headers or not.

Thank you all!!


How do I set the eslintrc‘s path?

We want to have only a few rules for formatting.
Because the “--fix” of some rules can cause bugs.

@xiaocaibird You cannot set the path. The extension starts at the directory of the file being formatted and looks up until it finds the eslintrc

Hi @idahogurl , I know that the config file is found by being traversed up but do you think that we may support other configurations to support https://github.com/prettier/prettier-eslint#options ?

@jungwookim I could support some of the options in https://github.com/prettier/prettier-eslint#options. I don't have time however to implement any enhancements currently. Feel free to create a PR similar to what I did to implement pretterLast
https://github.com/idahogurl/vs-code-prettier-eslint/pull/150

@idahogurl Thanks. I'm going to make a PR later. No problem!


Fix an issue in the NetworkX codebase

Once the applicant has the local development environment setup they can work on open issues in the networkx repository.
If the applicant is interested in working on specific issues they can comment on them (Good First issues). Applicants can also pick any other open issue if they like or even open a new issue/discussion if there is something in our documentation or codebase that doesn't make sense :)
Once you have created a pull request in the networkx repository please add a link to that pull request in your folder created in the first task. Create a new file nx_pull_requests.txt in your folder in this repository and add links to the pull requests in the networkx repository.

[ ] #4

Hi @MridulS , as I was looking through the Referece->Functions (https://networkx.org/documentation/latest/reference/functions.html)page, I found that there are plenty of functions missing examples. Can I please start working on those functions? If so, which could be a proper repo for me to add the PR link? Thanks in advance!

Hi there, there'll be some update on the Good First Issues list during this time of contributions ? I looked at the list and it's empty by now.
Thanks in advance!

@jeftersantiago unfortunately currently we don't have any open good first issues, please first go through all the others ones in https://github.com/networkx/outreachy/issues.
You can pick up any other open issue https://github.com/networkx/networkx/ too :)

Hey @MridulS , I would like to work on this issue!


Selectively pass system properties to maven resolver

We can't remove system properties all together since some poms require properties to fully resolve (weird). ex: profile activation depends on reading the java version if <id><jdk>... is set. Which is silly because it's not dependency info, but we have to resolve the full pom as it is given to us. :shrug:
hopefully fixes #94

@liutikas does this patch solve your issue?

Just curious - do you happen to know of any cases where these system properties are needed?

The resolver actually does need the jdk version in these cases. The effective pom parser needs to fully parse the pom including profiles.
Removing them results in errors like:
Caused by: org.apache.maven.model.building.ModelBuildingException: 600 problems were encountered while building the effective model for dev.sigstore:sigstore-java:0.3.0
[ERROR] Failed to determine Java version for profile checkstyle-tests @ com.google.cloud:google-cloud-shared-config:1.5.5

I might be casting too wide a net, maybe all that is needed in the java version and we can add more in as we find them.

alright scoped to just the property I know we need. we can add more later.

The resolver actually does need the jdk version in these cases. The effective pom parser appears to fully parse the pom including profiles.
Removing them results in errors like:
Caused by: org.apache.maven.model.building.ModelBuildingException: 600 problems were encountered while building the effective model for dev.sigstore:sigstore-java:0.3.0
[ERROR] Failed to determine Java version for profile checkstyle-tests @ com.google.cloud:google-cloud-shared-config:1.5.5

Oh interesting.
It looks like there's some information at https://github.com/grails/grails-core/pull/492#issue-32894447 saying that the DefaultModelBuilder uses the JdkVersionProfileActivator which looks for the presence of the java.version system property.
I think that means the latest version of this pull request, which just includes the java.version system property, makes sense to me.
Thanks!

So it looks like gradle is compatible with gradle's monitoring of system properties: https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:requirements:reading_sys_props_and_env_vars
I'll merge for now and see what happens.


loader: simplify template cache invalidation

loader: remove NewObjectCache
There are no external users of the object cache, remove the public
constructor.

Signed-off-by: Lorenz Bauer<EMAIL_ADDRESS>
loader: simplify template cache invalidation
The loader tries to avoid recompiling endpoint programs if possible by
caching them on disk, based on their configuration. To allow reuse it
formats the configuration as a header file and hashes that. The hash is then
used as a key for the cache.

It also tries to be resilient to something or someone deleting a cached
program by creating an inotify watcher on the state directory. This has
several drawbacks:

* inotify watches are a global resource and can therefore run out
* Eviction of deleted cache objects is asynchronous. The loader may
 therefore intermittently try to use a non-existing cached file.

Rewrite the cache to just fall back to recompilation if opening the cached
object from disk fails. This allows getting rid of all the inotify code and
is functionally equivalent.

Signed-off-by: Lorenz Bauer<EMAIL_ADDRESS>
serializer: remove package
There are no users left in the code base, remove the package.

Signed-off-by: Lorenz Bauer<EMAIL_ADDRESS>

/test

/test

/test

@lmb the fix references a downstream issue (https://github.com/isovalent/cilium/issues/1474). Do you mind creating and linking an upstream issue so I can better understand the reason for the PR?

@danehans We've been wanting to shorten the compiler + loader pipeline for a while now (see https://github.com/cilium/cilium/issues/25004, for example), but this particular defect came up during internal chaos testing:
The fsnotify documentation states:

When a file is removed a REMOVE event won't be emitted until all file descriptors are closed; it will emit a CHMOD instead […]

The agent doesn't hold open file descriptors to the files in the cache. It also ignores all fsnotify events other than REMOVE. Therefore, if we hold a file descriptor open from another process and then delete the file, the REMOVE event will never be triggered, and the cache won't see the file as deleted. However it will still attempt to read from the file.
Also, as mentioned in the commit messages in this PR, inotify handles are a global resource, and global node configuration can interfere with this. As such, to reduce the amount of moving parts and reduce the potential for failures to occur, we're no longer going to rely on inotify.

/test

I don't have enough understanding of the surrounding system, so I can't give an in-depth review off hand aside from the odd nit

Good thing we are early in the cycle :sweat_smile:

/test

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/ci-ginkgo

/test


Loglevel doesn't work in prod mode

Describe the bug
Debug logs don't work in prod mode.
To Reproduce
pc run --loglevel debug --env prod
Expected behavior
I should see the debug logs, but I don't.
Screenshots
If applicable, add screenshots to help explain your problem.
** Specifics (please complete the following information):**

Python Version: 3.11
Pynecone Version: 0.1.12
OS: Mac
Browser (Optional):

Additional context
Add any other context about the problem here.

I am new to the project and I may be wrong but it seems like the RUN_BACKEND_PROD constant already have a "log-level" argument. Thus two arguments with the same keyword is given to the subprocess and it probably selects the first one.

If this is the case, I can open a PR to solve it.

I am new to the project and I may be wrong but it seems like the RUN_BACKEND_PROD constant already have a "log-level" argument. Thus two arguments with the same keyword is given to the subprocess and it probably selects the first one.

If this is the case, I can open a PR to solve it.

Hi yes this would be great! It may be a little tricky because the gunicorn subprocesses need their log levels need to be suppressed. But if you can get the log levels working for prod that would be awesome.  Let me know if this doesn't make sense I can explain more.

It would be better if you can explain more. I don't understand what you mean by their log levels need to be suppressed(I don't know about gunicorn too unfortunately)


Sites with a dash in them don't work

If you have a site with a dash there will be a timeout and the site won't work.

Cannot reproduce... I have been working on my "waterschap-app" site without seeing this issue. I have seen a timeout or two, but those were actual FCGI timeouts (cold Drupal cache). Tried it again just now on the master branch: no problem. Could you be experiencing an actual timeout? Maybe we need to increase the Apache FCGI handler backend timeout instead?


Create alert and notice components

create a closable alert and notice components and keep it in shared/components

Created and pushed to the new branch notice_component


VS2015 crashing after R tools update

Application: devenv.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: Microsoft.R.Host.Client.REvaluationException
at Microsoft.R.Host.Client.RExpressionEvaluatorExtensions.ThrowOnError(System.String, Microsoft.R.Host.Client.REvaluationResult)
at Microsoft.R.Host.Client.RExpressionEvaluatorExtensions+d__3.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task)
at Microsoft.R.Host.Client.Session.RSession+d__113.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.R.Host.Client.Session.RSession+d__105.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.R.Host.Client.Session.RSession+d__104.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.R.Host.Client.Session.RSession+d__103.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.R.Support.Help.IntelliSenseRSession+d__16.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.R.Support.Help.Packages.PackageIndex+d__17.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)
at Microsoft.R.Support.Help.Packages.PackageIndex+d__16.MoveNext()
at Microsoft.Common.Core.TaskExtensions+<>c.b__6_0(System.Object)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

REvaluationException can be caused by the same problem we had in package manager session.

#3195 related

Yes, package index calls InstalledPackagesFunctionsAsync. Was this fixed in RC2?

Quite interesting though why we didn't have this issue before. For some reason RHost allows code execution before initialization is actually completed.
@int19h , @karthiknadig  - do you have any ideas?

We had the issue of evals executing before initialization was complete before. But it is supposed to be fixed. Perhaps this had regressed?

To be specific, look at how is_r_ready is set and checked in host.cpp. So far as I can tell, the code should still be operating correctly.
Just to be clear, what kind of initialization are we talking about here? The host guarantees that any incoming messages won't be processed until the first R prompt appears (which should only happen when R loaded all the standard packages). If you mean our own initialization code that loads rtvs package, then that's supposed to be enforced by RSession, right? Neither the host itself, nor the RHost wrapper, know anything about it.

Package index may be getting REvaluationException simply because some package fails to load such as when dependency is missing or something else that makes inspection of the package to fail.

Previously, we allowed evaluation before IRCallbacks.ReadConsole is called. Right now, we call AfterHostStarted inside IRCallbacks.ReadConsole, so it doesn't look like regression on RTVS side.

Here is another error that I've seen in REvaluationException:
rtvs:::packages.installed()

Error in get(name, envir = asNamespace(pkg), inherits = FALSE) :
  object '.get_standard_repository_db_fields' not found
Calls: <Anonymous> ... packages.installed.named -> installed.packages -> .instPkgFields -> ::: -> get

https://github.com/Microsoft/RTVS/commit/bd30fdccb5ad88a13db543cf9be4d5150a8152c2


runtime error

ValueError: At least 2 points are needed to compute area under curve, but x.shape = 0
auc曲线那里获取不到数据？

ValueError: At least 2 points are needed to compute area under curve, but x.shape = 0 auc曲线那里获取不到数据？

请问这个问题您解决了吗
Have you solved this problem?


Set self.num_features to neck_chans if neck_chans > 0 for vision_transformer_sam

Knowing the number of feature channels is crucial when this neural network is used as a backbone in other systems. It allows for better integration and adaptability with various architectures that might require information about the dimensions of the output features. I think that self.num_features should be neck_chans if neck_chans > 0.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Vue 3 CLI and Auto Importing

Hello!
How to setup vue.config.js in order to support Auto Importing feature? I can't use "import from..." there, so can't do it like this (taken from the https://github.com/antfu/unplugin-icons#auto-importing):
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import Components from 'unplugin-vue-components/vite'

Seems like I need to use "require", but how can I specify resolver for the unplugin-vue-components plugin?
Thanks!

const Icons = require('unplugin-icons/vite')
const IconsResolver = require('unplugin-icons/resolver')
const Components = require('unplugin-vue-components/vite')

Like this?

Yeah, I tried it first, but... Still have the question: "how can I specify a resolver for the unplugin-vue-components plugin?", in our case - for Components. Using your schema I can just create several objects, but how can I set it up so it uses the correct iconsResolver?
Thanks!
BTW - my bad, I had to write the correct import section, it would be like this (so - 'webpack' but not 'vite'):
import Icons from 'unplugin-icons/webpack'
import IconsResolver from 'unplugin-icons/resolver'
import Components from 'unplugin-vue-components/webpack'


🐛 Front camera doesn't recognize text on iOS

What were you trying to do?
Hi, I am implementing the text recognition function using Vision camera's frame processors.
I used aarongrider/vision-camera-ocr plugin.
Reproduceable Code
import React, {useEffect, useState} from 'react';
import 'react-native-reanimated';
import {Text, View, PixelRatio, TouchableHighlight} from 'react-native';
import {scanOCR} from 'vision-camera-ocr';
import {
  Camera,
  useCameraDevices,
  useFrameProcessor,
} from 'react-native-vision-camera';
import {runOnJS} from 'react-native-reanimated';

const ScanView = ({navigation}) => {
  const [hasPermission, setHasPermission] = useState(false);
  const [cameraPosition, setCameraPosition] = useState('back');

  const [ocr, setOcr] = useState();
  const [pixelRatio, setPixelRatio] = useState(1);
  const devices = useCameraDevices();
  const device = devices[cameraPosition];

  const frameProcessor = useFrameProcessor(frame => {
    'worklet';
    const data = scanOCR(frame);
    runOnJS(setOcr)(data?.result?.text);
  }, []);

  const onSwitchCamera = () => {
    setCameraPosition(p => (p === 'back' ? 'front' : 'back'));
  };

  useEffect(() => {
    (async () => {
      const status = await Camera.requestCameraPermission();
      setHasPermission(status === 'authorized');
    })();
  }, []);

  return device !== undefined && hasPermission ? (
    <View style={{flex: 1}}>
      <Camera
        style={{flex: 1}}
        frameProcessor={frameProcessor}
        device={device}
        isActive={true}
        frameProcessorFps={5}
        onLayout={event => {
          setPixelRatio(
            event.nativeEvent.layout.width /
              PixelRatio.getPixelSizeForLayoutSize(
                event.nativeEvent.layout.width,
              ),
          );
        }}
      />
      <TouchableHighlight
        onPress={onSwitchCamera}
        underlayColor="#0877a1"
        style={{backgroundColor: '#005F83', height: 60}}>
        <Text
          style={{
            color: 'white',
            textAlign: 'center',
            lineHeight: 60,
            fontSize: 24,
          }}>
          Switch Camera
        </Text>
      </TouchableHighlight>
    </View>
  ) : (
    <View>
    </View>
  );
};
export default ScanView;

What happened instead?
At first, the rear camera only worked successfully in landscape mode, but when I upgraded the iOS software to 15.5, it also worked in portrait mode on the rear camera.(Refer to https://github.com/aarongrider/vision-camera-ocr/issues/6 )
However, the front camera still has the following error and does not recognize the text.

2022-06-23 16:54:46.978811+0900 OCRTest[1530:771941] [native] VisionCamera.captureOutput(:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:47.212998+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:47.245639+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:47.284475+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:47.317643+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.

I saw a similar issue related to this on the vision camera github, but the vision camera claimed that it was a plug-in problem. However, the ocr plug-in side says to contact the vision camera.
https://github.com/aarongrider/vision-camera-ocr/issues/6

What am I supposed to do?
Relevant log output
2022-06-23 16:54:42.313559+0900 OCRTest[1530:771946] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.347084+0900 OCRTest[1530:771946] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.380720+0900 OCRTest[1530:802277] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.413700+0900 OCRTest[1530:802277] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.441685+0900 OCRTest[1530:802277] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.474329+0900 OCRTest[1530:775074] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.707918+0900 OCRTest[1530:773694] [native] VisionCamera.invokeOnFrameProcessorPerformanceSuggestionAvailable(currentFps:suggestedFps:): Frame Processor Performance Suggestion available!
2022-06-23 16:54:42.741557+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.775176+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.808394+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.847382+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.880107+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.913682+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.941626+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:42.975107+0900 OCRTest[1530:773694] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.
2022-06-23 16:54:43.209156+0900 OCRTest[1530:775074] [native] VisionCamera.captureOutput(_:didOutput:from:): The Frame Processor took so long to execute that a frame was dropped.

Device
iPhone 8 plus (iOS 15.5)
VisionCamera Version
2.13.5
Additional information

[ ] I am using Expo
[X] I have read the Troubleshooting Guide
[X] I agree to follow this project's Code of Conduct
[X] I searched for similar issues in this repository and found none.

Hmm, maybe you chose a format that is not supported? Try selecting a different format and log the colorspace as well as the video dimensions

@mrousavy  I don't know why, but I checked with another device model after a long time and it worked.
But now, when the text is recognized by the front camera, the text is read in reverse.(e.g." >>>>wOaHMMO3Ya>>")
Isn't there any way to make text recognizable as human readable? (e.g. "PMKORJU<<BYEON<<<")

Ah, you need to flip the frame before passing it to the frame processor in that case. That's because the selfie camera is flipped by VisionCamera to match the style of Snapchat, Insta and TikTok (what people are used to)

@mrousavy  Can you provide a code snippet on how to flip the frame before handing it over to the frame processor?

Closing as this is a stale issue - this might have been fixed with the full rewrite in VisionCamera V3 (🥳) - if not, please create a new issue.

(also this is not really related to VisionCamera - your model might not be trained on mirrored data, or the pixelFormat is not supported (YUV_420-8bit vs YUV_420-10bit HDR))


Quality of life

Doing simple actions like sending tokens to other address or checking account balance requires writing excessive amount of code currently (multiple long function calls). Following actions should by possible with by executing short function calls:

[x] spend tx (in #203)
[ ] check balance
[x] interfacing most of our modules (eg. Chain.top_height instead of Aecore.Chain.Worker.top_height)
[ ] any other common actions not included in this list and requiring currently multiple or complex function executions

A week has passed without me finding time for this task. So I'm freeing it if someone wants to work on it.  I pushed one file with small progress.

creating a spend tx is included with #203 now

once #203 is merged to master I will provide an easy get balance function

there is a balance function in master already, so I guess we can close this. In case any other quality of life ideas arise, we can propose a new task