Evaluation of inline_script parameters

As we expand the use of inline scripts in Gigastructural Engineering, it has become useful in several places to pass whole blocks of code as parameters. It would be very helpful if the parameters could be evaluated, much like how the scripts themselves infer context from where they are used.

I understand that this might be a tricky request to fulfill, but being able to catch typos in these situations without making mock-ups first would be super useful.
Thank you, once again, for all of your hard work.

It's already implemented for simple cases.

While the first option can enable the argument value inference (for scripted_triggers, scripted_effects, inline_scripts, single value or multiline), the second option can enable the inline script inference (for inline script files). And the leaving three options enable scope context inference in several situations, which may significantly affects performance.
If it's not work:

There may be a bug, just update to 1.2.5.
The case may be too complex.

Plz feedback your experience and ideas.

Well, those settings are already enabled:

The current version of the plugin which I have is 1.2.4, but that's also the newest version the plugin settings give me...
A minimal example script which just takes one parameter and places it in-situ is the simplest case that I can think of

But when it's used the parameter doesn't seem to be checked at all, and doesn't receive syntax highlighting.

So I'm not sure if I'm understanding what those settings are meant to be doing correctly.

Should be a bug in 1.2.4, update plugin to 1.2.5 on github releases and see what happens?

Also open xxx_traits.txt and see what happens to the inline script usages in these files?

I think I see what's going on now.
The trait files seem to work correctly, and if I add a second parameter which is the right hand side of an expression, like this:

Then that parameter seems to work as expected, but the one which is meant to just put its whole content there does not.

Should be a reproduced bug. 🙁

It seems to understand situations where the passed parameter is the right side of an expression, but not where it's a scope, or when it's a whole line or multiple lines.

Found out it's a bug about double quotes.

A question, when typo modifier after v = , should plugin provide completion items and make inserted text surrounding with double quotes after applied, or just do not provide completion items (for there are no double quotes after v =  and whole line or multiline parameter value must be used in double quotes) ?

I am not entirely sure what you mean, but I do think it should still provide completion when typing inside quotes.
I think the ideal behaviour would be if it acted the same as a normal code block when inside quotes, almost as if they were braces instead, maybe only when multi-line? Unsure.
If I could type inside the parameter and it acts the same as where the code ends up being, that would be perfect - so in the very basic example again:

Thank you for looking into this, it should be really useful for us.
@adriangaro probably has opinions on this too, as the only other person I know of who is doing weird things with inlines.

What do i say is that when I just typo modifier after v =  (neither v = " or v = "\n, \n means line break), should plugin provide completions for statements such as modifier = {...}? And if should , also make it surrounds with double quotes, and then, there is some text like v = "modifier = {...}"

Oh! Without quotes it should probably only suggest things which don't need quotes, like possible right-side values for expressions if the parameter is used that way.

Some examples are
https://github.com/Stellaris-Evolved/stellaris-evolved/blob/V0.9R8/common/inline_scripts/jobs/inline_evolved_job.txt
https://github.com/Stellaris-Evolved/stellaris-evolved/blob/V0.9R8/common/inline_scripts/jobs/inline_evolved_job_no_desc.txt
https://github.com/Stellaris-Evolved/stellaris-evolved/blob/V0.9R8/common/inline_scripts/jobs/inline_evolved_job_with_desc.txt
The first inline calls either of the following two depending on one of the parameters passed to the first one and delegates the rest.

Also due to the interpolation of the $job$ parameter into the modifier, the plugin has no idea that parameter is a job, so no autocomplete.
Being able to annotate that job is of the type job, would allow better highlighting.
I know it's a tall ask but would be really cool to be able to annotate parameters types, and maybe even add docs so they appear in context windows.

If type annotation/comments are added, especially for triggered blocks, it would be amazing if the scope type could also be specified. (Yet again this is a nice to have in the context of inline script parameters, or parameters in general).
Thanks for the amazing work as always!

Magic comment or annotation comment is a good idea since it's already used by JetBrains officially in various template languages (e.g. JSP and FreeMarker), and I once considered this way.
But, the standards are to be determined, these is not only type annotation comments (or, cwt config annotation comments), but also some documentation comments and even scope context comments.

Paradox-Language-Support-1.2.6.zip
Here is a pre-release to support inference for whole line / multiline parameter values

Happy to say the first example above is highlighting now, but sadly it seems to be too complex for the plugin to properly infer context for, probably due to an inline call in the chain using a parameter in the script name.

This is so much nicer than before though, so thank you!

What about inference for these inline script files, does it work well?

More simple scripts work very well:

The ones in the previous message don't, but that's probably because of these:
giga_switch

giga_toggled_code

Which conditionally leads to two scripts, giga_toggled_code_case_0 and giga_toggled_code_case_1, the first of which is empty, for only including code if the $toggle$ input is non-zero.

Technically speaking even if they were to infer everything correctly it would still break, as those toggles would resolve to 0 due to being cross-mod compatibility values, 0 when the other mod is not loaded and overwritten by that other mod to be 1.
So if the plugin somehow manages to untangle the flow in there, it would always end up leading to the empty giga_toggled_code_case_0 because has_bug_branch is always zero in our development environment.
Some kind of override annotation would be required at very least to point it at giga_toggled_code_case_1 instead, perhaps by telling giga_switch to always consider its value parameter to be 1 for the sake of inference.

Emmmmmmmmmmmmm... How do Chinese modders comment on your foxy?

I... don't understand what you mean.
What I mean to say by the previous comment is that I realised that the inference could never work for that particular script without extra hints because of the way we have structured it. It would always discard the parameters because their use is conditional upon another mod being present (because has_bug_branch is 0 when the Bug Branch mod is not present).
It seems to be working very well outside of those very complicated situations though, thank you for your efforts.

What I mean is that ... these are too many usages of paradox scripts' advance (or even very tricky) features in your mods, and so do some Chinese moddders'. Is may be sometimes necessary and convenient, but it also make paradox's languages not simple (or, not simple txt), and so do my plugin and cwtools.

I found out that the best way to provide advance language featues for implicit things, like parameter an event target's scope context, is just extended cwt config, rather than special comment in script files, or stupid inference.

It shall be mod-local (in .config which is under mod root directory) so that all mods can have its own extended cwt config files in a hidden directory to let the plugin to provide more support.
but currently user-defined cwt config files are project-local (in .config which is under project root directory), and each project & each game type has a config group.
May mod-local and project-local cwt configs are both supported.
There may be some refactoring, I'm not very sure.

f07784d53fc781c9849d47d05fcecbc6b56ef613

Another small issue is with escaped characters inside multi line strings

Related optimizations and bug fixes will be resolved in 1.3.0 aka the next plugin version, mainly inference and documentation from custom cwt config, anf some other misc bugs.
Should be finished in several weeks for there are some new games I will enjoy.

Features that supports custom documentation and scope context based on custom cwt files are implemented in v1.3.0 (in beta status).
See: https://windea.icu/Paradox-Language-Support/#/en/config.md

Looking at the definitions, how can one specify the parameter type?
Also had some success defining the scripted effects as engine effects (since the above cannot mention parameter type and cardinality yet. Only issue is that the scripted effect itself does not use the below definition (makes sense since the below defines engine effects). Although probably doing the below is not intended

@adriangaro What's the parameter type? identifier between ':' and ']'?
It's nothing special, can be 'some_key' or '<scripted_effect>' or some others.
for usage about aliases, you can refer to buitin config files and the guidance document.

The identifier type is a scripted effect, mostly used the above so i could specify parameter type, since it is one of the more important use case to detail those.
I used those exact documents to try to use alias (since it fit this usage). But yeah ideally if the parameters definitions you added could support parameter type, it would be great.
Also seems the below, does not seem to set the event target scope, used the https://windea.icu/Paradox-Language-Support/#/en/config.md as reference
    value[event_target] = {
         ## replace_scopes = { this = leader }
        tec_aiauth_pre_refragment
         ## replace_scopes = { this = leader }
        tec_aiauth_planetary_governing_node
         ## replace_scopes = { this = leader }
        tec_aiauth_ruler
         ## replace_scopes = { this = pop }
        tec_temp_pop
         ## replace_scopes = { this = leader }
        tec_aiauth_councilor
         ## replace_scopes = { this = leader }
        tec_replaced_ruler
         ## replace_scopes = { this = species }
        tec_ai_species
         ## replace_scopes = { this = species }
        tec_robot_search_species
         ## replace_scopes = { this = leader }
        tec_aiauth_pre_refragment
    }
}

Also doing the below
definitions = {
    ## replace_scopes = { this = leader prev = country }
    ## type = scripted_effect
    tec_country_refragment_aiauth_node
}

seems to not set the prev scope

It's mentioned that you can use both literal and template expression as the key.
For example, 'tec_value[xxx]species' should matches any literal starts with 'tec' and ends with '_species', no more limits for value[xxx]. Designed so, but not tested.
And alias is for declaration configs, not special configs like this.

prev cannot be replaced by ## replace_scopes, at least for PLS.

It's still a very beta feature and it's better to be discussed on somewhere else, like, just, discord.

https://discord.gg/RbU5U5TU


Update tmr-meeting-recording-change.md

Removing sentence on block download since that is now outdated.

@cichur  PR has been copyedited and is ready for final review, could you please check and merge? Thanks!

@Cindy Church (Steyer Associates @.***> Hey there, bumping this request back up since I still see livesite showing the old content. May you take a look at the PR?
Best,
Nibal
From: Manuela @.>
Sent: Monday, May 31, 2021 5:16 PM
To: @.>
Cc: Nibal @.>; @.>
Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update tmr-meeting-recording-change.md (#7328)
@cichurhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcichur&data=04|01|nibal.aridi%40microsoft.com|4506bfb1fd6f40387e3b08d9247960d2|72f988bf86f141af91ab2d7cd011db47|1|0|637580926013231185|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=5fM%2FZs86YJgGFr67MLoe3WhA7EM36kScT15%2BC44Oz%2Fk%3D&reserved=0 PR has been copyedited and is ready for final review, could you please check and merge? Thanks!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fpull%2F7328%23issuecomment-851685364&data=04|01|nibal.aridi%40microsoft.com|4506bfb1fd6f40387e3b08d9247960d2|72f988bf86f141af91ab2d7cd011db47|1|0|637580926013241142|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=6XS6HJ%2Bo2nqUaIfxeHG2sHwgeZJGKsgUZHi1saURUqQ%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAEUJBFKPTXV2YJMF22NLGI3TQP4DLANCNFSM45XKDAHQ&data=04|01|nibal.aridi%40microsoft.com|4506bfb1fd6f40387e3b08d9247960d2|72f988bf86f141af91ab2d7cd011db47|1|0|637580926013241142|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=3TicKiKXjc8e5eci1MCpwX0oa59eJIxDnVsPbSV4%2BtE%3D&reserved=0.

Thanks!
From: Cindy @.>
Sent: Monday, June 7, 2021 12:35 PM
To: @.>
Cc: Nibal @.>; @.>
Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update tmr-meeting-recording-change.md (#7328)
Merged #7328https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fpull%2F7328&data=04|01|nibal.aridi%40microsoft.com|5d1d86e09f52424a7c9208d929d240a3|72f988bf86f141af91ab2d7cd011db47|1|0|637586805295277239|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ZC6WWC5ZIpBHoQ3%2FJf%2Flh6dYMBjItxJtmBF0AIMO95A%3D&reserved=0 into live.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fpull%2F7328%23event-4853185864&data=04|01|nibal.aridi%40microsoft.com|5d1d86e09f52424a7c9208d929d240a3|72f988bf86f141af91ab2d7cd011db47|1|0|637586805295287191|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=tNc72DTr8kqiUN6FF8H2l%2F2LxpTi%2B9vmzD4qFBYRsps%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAEUJBFP2E5BABPOFQGIUVM3TRTYLLANCNFSM45XKDAHQ&data=04|01|nibal.aridi%40microsoft.com|5d1d86e09f52424a7c9208d929d240a3|72f988bf86f141af91ab2d7cd011db47|1|0|637586805295287191|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=BV%2F0sV5Ag5iVnAkTSKoxRvAuYjT2MicLfffgoI3ocTk%3D&reserved=0.


Can't install app because of private maven host

Hey there
While trying installing and running Slate I couldn't complete the Maven setup because inside the pom.xml this domain is used https://mavenrepo-external.pinadmin.com which I think is not accessible to public and only those with VPN or authorized IPs.
Could you please fix this or tell me a way to install the app
Thanks

Hi @RenwaX23 we have fixed the issue, the UI build may fail on the M1 Mac

Thanks it's fixed now but could you check this error I have when running run_slate.sh:
java.lang.NoClassDefFoundError: Could not initialize class com.pinterest.slate.utils.HttpUtils
	at com.pinterest.slate.resources.ResourceFactory.init(ResourceFactory.java:63)
	at com.pinterest.slate.Slate.initV2(Slate.java:150)
	at com.pinterest.slate.Slate.run(Slate.java:118)
	at com.pinterest.slate.Slate.run(Slate.java:78)
	at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43)
	at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
	at io.dropwizard.cli.Cli.run(Cli.java:78)
	at io.dropwizard.Application.run(Application.java:93)
	at com.pinterest.slate.Slate.main(Slate.java:258)

Not sure if the problem is mine or its something else you confirm.

@RenwaX23 how are you launching it? are you using the latest scripts? I just pushed an update to the script to add defaults so it doesn't error out

Thanks now I installed the app without any issues, but when visiting slate app there is this error which prevents the react app from running:
react-dom.production.min.js:216 Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
    at Wl (react-dom.production.min.js:280:177)
    at react-dom.production.min.js:149:163
    at Ia (react-dom.production.min.js:176:171)
    at Vs (react-dom.production.min.js:268:385)
    at Ol (react-dom.production.min.js:250:347)
    at Ml (react-dom.production.min.js:250:278)
    at Sl (react-dom.production.min.js:250:138)
    at vl (react-dom.production.min.js:243:163)
    at dl (react-dom.production.min.js:237:175)
    at Xl (react-dom.production.min.js:285:27)
ss @ react-dom.production.min.js:216
n.callback @ react-dom.production.min.js:216
hi @ react-dom.production.min.js:131
hs @ react-dom.production.min.js:220
Ll @ react-dom.production.min.js:259
t.unstable_runWithPriority @ scheduler.production.min.js:18
Uo @ react-dom.production.min.js:122
Tl @ react-dom.production.min.js:252
vl @ react-dom.production.min.js:243
dl @ react-dom.production.min.js:237
Xl @ react-dom.production.min.js:285
(anonymous) @ react-dom.production.min.js:289
yl @ react-dom.production.min.js:244
ru @ react-dom.production.min.js:289
t.render @ react-dom.production.min.js:296
(anonymous) @ index.js:12
(anonymous) @ serviceWorker.js:133
(anonymous) @ serviceWorker.js:133
react-dom.production.min.js:280 Uncaught Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
    at Wl (react-dom.production.min.js:280:177)
    at react-dom.production.min.js:149:163
    at Ia (react-dom.production.min.js:176:171)
    at Vs (react-dom.production.min.js:268:385)
    at Ol (react-dom.production.min.js:250:347)
    at Ml (react-dom.production.min.js:250:278)
    at Sl (react-dom.production.min.js:250:138)
    at vl (react-dom.production.min.js:243:163)
    at dl (react-dom.production.min.js:237:175)
    at Xl (react-dom.production.min.js:285:27)

Also these website has been used which is not accessible to public:
https://analytics.pinadmin.com/ds/dashpin/v1/impression/dot/?toolId=138&itemType=209
https://statsboard.pinadmin.com/build2?settings=

We recently fixed this UI issue so it should no longer be happening, will need more details about your build / run environment to reproduce.
You can ignore the two URLs for now we will try to make them configurable in near future.

I have everything as the same version in getting started page running on a Intel Macbook pro, the error is caused by react

Let me try to re-run on linux to see if the error persists.

anything new?

Confirmed the bug still exists even in linux.
@suryabhaskarkarri could you please double check that the fix for Tour is still present?

The issue should have been fixed now.

Thanks works now


Create a dataset-questionnaire page that links to our google form

Currently we have a google form that contributors fill in which gives us an idea of the type of data they want to submit and allows us to prepare a template spreadsheet.
Currently we circulate a tinyurl because the google form url is long and unwieldy. There are a few reasons why tinyurl links are not the best so we would like to create a page:
https://data.humancellatlas.org/contribute/dataset-questionnaire
that would re-direct to view and complete the google form.
The link the above page would redirect to would be the view link to complete the form:
https://docs.google.com/forms/d/e/1FAIpQLSdjPk2Z6xYozds53ycvXo57PvFsyqOF6XMpSWCVNTpQYalZzQ/viewform
This will give us the ability to update the link in future and provide a more stable and trustworthy link to contributors.
(tag @gabsie)

Hi  @ mshadbolt would you be ok without the redirect? If we had just a page https://data.humancellatlas.org/contribute/dataset-questionnaire that had some introductory text and then a link, that would be easier to create and would be maintainable by the content team. Otherwise we need to start updating DNS records to do the redirects etc.
Rather than mimic the tiny url setup (which we are not setup to do) let's try a page with a link.  Does that sound like something that will solve this use case?
Cheers,
D

Hi @NoopDog , yes that sounds like it would be a good solution. I didn't realise the technicalities of a redirect, I think your suggestion will work perfectly well.
Cheers,
Marion

Hi @mshadbolt is still something we still want to implement? I have moved this out of the icebox and we can prioritize if this is still desired. Is the link still valid?
Cheers,
D

hi @NoopDog , let me get back to you on this before you start working on it as we have been working on improving our UI so might be implementing there instead.
Cheers, Marion

Obsolete we can re-open if this becomes a requirement


setNodeName/set not working

I wanna setnodename with mqtt
zwave/_CLIENTS/ZWAVE_GATEWAY-zwave-js-ui/api/setNodeName/set -m  "{ "args": [4,'test'] }"
but not working. where is wrong ?

Do you see any error in logs?

The message is wrong, should be:
zwave/_CLIENTS/ZWAVE_GATEWAY-zwave-js-ui/api/setNodeName/set -m  "{ "args": [4, \"test\"] }"

You must ensure the payload is a valid JSON. I still suggest you to use mqtt explorer as tool for such things...

The message is wrong, should be:
zwave/_CLIENTS/ZWAVE_GATEWAY-zwave-js-ui/api/setNodeName/set -m  "{ "args": [4, \"test\"] }"

You must ensure the payload is a valid JSON. I still suggest you to use mqtt explorer as tool for such things...

MQTT: Publishing to zwave/_CLIENTS/ZWAVE_GATEWAY-zwave-js-ui/api/setNodeName: {
success: false,
message: 'Invalid Node ID',
args: [ [length]: 0 ],
origin: '{args:["4","test"]}'
} with options { qos: 1, retain: false }

Now you added " to the nodeId too and that's become a string and not a number......

Now you added " to the nodeId too and that's become a string and not a number......

still error

args must have " too....

zwave/_CLIENTS/ZWAVE_GATEWAY-zwave-js-ui/api/setNodeName/set -m  "{ "args": [4, "test"] }"

Why you didn't simply pasted the code I gave you above?? Also why aren't you checking the JSON is valid??

now working  "{"args":[4,"test"]}"

thank u sir


Calculate fee defaults

Rather than using static values as #69 does, calculate fee defaults.
Update the individual Reveal as well.

Duplicate of #146


iOS: Feeds list: odd animation with chevron

Maybe this is normal and I just didn’t realize it. But, in case it’s not normal, here’s what happens:

Swipe left slowly on a feed to reveal the “Rename” and “Delete” buttons. Note that the chevron is gone.
Don’t let up. Swipe right slowly enough so that if you let go, the row will animate back to normal.
Note how the chevron isn’t drawing — and then, suddenly, it animates from some location on the left back to its normal position on the right.

This interaction should work the same way it does in Mail. The chevron retains its relative position at all times.

Figuring out when that reorder control is being shown is a little tricky.  I wasn't doing it correctly and the chevron was getting hidden in the drawing code by setting its frame to zero on row edits.
That's why the chevron shot across the screen when restored.  It was getting animated going from zero to the right side.  It's fixed now.


Metadata for error message not parsed properly

So...there seems to be a problem with reading the metdata for the error message.
let _version = env!("CARGO_PKG_VERSION");
let name = env!("CARGO_PKG_NAME");
let authors = env!("CARGO_PKG_AUTHORS");
let homepage = env!("CARGO_PKG_HOMEPAGE");

When using human-panic, in my CLI it still includes the information to your crate:
spacekookie@azedes ~/P/poke> target/debug/poke
Well, this is embarrasing.

human-panic had a problem and crashed. To help us diagnose the problem you can send us a crash report.

We have generated a report file at "<reports not generated yet>". Submit an issue or email with the subject of "human-panic Crash Report" and include the report as an attachment.

- Homepage: https://github.com/yoshuawuyts/human-panic
- Authors: Yoshua Wuyts<EMAIL_ADDRESS>
We take privacy seriously, and do not perform any automated error collection. In order to improve the software, we rely on people to submit reports.

Thank you kindly!

I assume I'm using the crate correctly? This is my main:
fn main() {
    human_panic::catch_unwind(|| {
        panic!("something went wrong");
    });
}

In general it's not obvious how to use this? Because the panic text I provide is for example completely ignored. And isn't there a way to generically catch panic! calls?
Edit: Looking at the code, it looks like #1 will fix this? :sweat_smile: I didn't check there was a PR before opening the issue

I don't think #1 will fix this: The problem is that cargo sets these env vars for the crate that is currently being built (which is human-panic).
A solution to this would be to rewrite human_panic::catch_unwind as a macro, so the env! calls are being injected into the main binary code and thus evaluated with its env vars.

This was fixed by #5


Fix #216 with a proper fix by upgrading hoa/fastcgi

This is roughly a revert of the original quickfix of #216 + an upgrade of hoa/fastcgi. This upgrade fixes the root cause of the bug (in https://github.com/hoaproject/Fastcgi/pull/19), which was then released (https://github.com/hoaproject/Fastcgi/issues/23).

By the way thanks @luxifer and @vdechenaux ;)


E2E Testing Snapshot Race Condition

Version

Karpenter Version: v0.27.2

Kubernetes Version: v1.23.0
Expected Behavior
E2E tests should wait to have snapshots finish the creation process before the e2e tests are run.
Actual Behavior
We see e2e tests failing due to a snapshot not being existing in the ECR.
Steps to Reproduce the Problem
See in the E2E test Logs
Resource Specs and Logs
NA
Community Note

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

This is still an issue that we need to track, but was not the root cause of our current failure.s


Please support noto-emoji in merge_noto.py

noto-emoji is a prime target for merging into other fonts for systems that are bad at interchanging fonts. please add support for merging it in the merge script.

Merging emoji font with non-emoji is harder than merging other fonts alone.  Might not happen anytime soon.

Hi!
Any update on this topic? I am looking for a single font file for Noto including emojis.
Cheers,
Alex

Hi!
Any update on this topic? I am looking for a single font file for Noto including emojis.
Cheers,
Alex

Hi!
Any update on this topic? I am looking for a single font file for Noto including emojis.
Cheers,
Alex

This is something that I also want. I wanted to merge the NotoSans-Regular with the NotoSansMalayalam-Regular as well as including emojis.


Making width and height defeault for the bounds.

For example if I set the height and width of the render window to 1600 by 600 with the engine.create options, the bounds stay at 800 by 600 (which is the default). What you have to do is update the bounds. I just think for some it might be easier that the height and width defaults to the bounds unless you change it like below.
engine.world.bounds.max.x = 1600;
engine.world.bounds.max.y = 600;

This is indeed an issue.
I'm likely going to remove world bounds very soon, as their main purpose was to disable out of world bodies to prevent the browser from locking up when simulations glitched in early development.
But if I decide to keep them, I'll add a fix for this. Thanks.

Is there any issue currently with setting the world bounds to be Infinity and -Infinity?

Yep that should work fine (or are you having an issue)?

I was not having an issue, I was just asking in case it messed up some calculations somewhere that I might not know about. Thanks for the fast reply!

Hy. I mean what i have a same problem. I don't undersatand what i do wrong. For example - http://kroteg.com/boxes/   Objects sticks in center of canvas. How i can solved this?

@jankovsky
engine.world.bounds.min.x = -Infinity;
engine.world.bounds.min.y = -Infinity;
engine.world.bounds.max.x = Infinity;
engine.world.bounds.max.y = Infinity;

There is no chance to set the boundaries of the world with this:
this.engine = Engine.create()
this.engine.world.bounds = { min: { x: 0, y: 0 }, max: { x: s.width, y: s.height } }

It's just. Doesn't. Work. AT ALL

@vostokwork what are you expecting the worlds bounds to do? They don't really apply to anything in practice (and probably should be removed to be fair). If you need collisions you should use static bodies like in the examples.


V2

Node-style callback. Update to 2.0. https://github.com/wapisasa/batchelor/issues/12

ping @sparkyfied

:+1:


Water Heater: No documentation of possible operation modes

Describe the bug
I have LG Water Heater WH20S "WHT_056905_WW-Water Heater" and it works fine with this integration. E.g. I can switch the operating mode e.g. from "vacation" to "heat pump" in Home Assistant.
Now I want to set a home assistant automation: At time x I want to set the water heater operating mode to "Heat Pump".
But when I configure the automation (see attached screenshot) of the Water Heater, I have to manually enter the desired operation mode. But I do not know what to enter for mode "Heat Pump". It says "New value of the operation mode. For a list of possible modes, refer to the integration documentation." But I could not find that list of possible modes of my LG Water Heater in the integration's documentation.
I searched the devices diagnostic information, the debug log when switching mode via button, and the source code of this integration, and tried the values "heat_pump", "HEAT_PUMP", "@WH_MODE_HEAT_PUMP_W", "25", "STATE_HEAT_PUMP", but none of those worked.
Expected behavior
There should be a documentation of the possible mode values on https://github.com/ollo69/ha-smartthinq-sensors/ (which is target of the integration's documentation link)
Screenshots

Environment details:

HASSIO KVM
Home Assistant version installed:
Core 2024.4.3
Supervisor 2024.04.0
Operating System 12.2
Frontend 20240404.2
Component version installed: Code of https://github.com/ollo69/ha-smartthinq-sensors/ from 2024-04-19
LG device type and model with issue: LG Water Heater "WHT_056905_WW-Water Heater"

OK this was a usability issue with Home Assitant automation creation interface.
(I tried to switch the water heater off and on or set the target temperature and all those also did not work. Then I tried to select the entitiy in the automation setup interface. And then the setting of the temperature worked. And then I tried operating mode "heat_pump" again and then that worked, too.)
And when you enter an invalid mode, it gives out the possible values.


Filter platform not working after 0.97

Home Assistant release with the issue:

0.97
Last working Home Assistant release (if known):
0.96
Operating environment (Hass.io/Docker/Windows/etc.):

Hass.io
Component/platform:

https://www.home-assistant.io/components/filter/
Description of problem:
Filters are not working anymore.

and the raw sensor (unfiltered data) seems to be ok:

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
  - platform: filter
    name: "room_temperature"
    entity_id: sensor.RAW_room_temperature
    filters:
      - filter: outlier
        window_size: 4
        radius: 2.0

  - platform: filter
    name: "hall_temperature"
    entity_id: sensor.RAW_hall_temperature
    filters:
      - filter: outlier
        window_size: 4
        radius: 2.0

  - platform: filter
    name: "room_humidity"
    entity_id: sensor.RAW_room_humidity
    filters:
      - filter: outlier
        window_size: 4
        radius: 4.0

Traceback (if applicable):
Log Details (ERROR)
Wed Aug 07 2019 22:59:32 GMT-0600 (CST)

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 400, in _async_add_entity
    await entity.async_added_to_hass()
  File "/usr/src/homeassistant/homeassistant/components/filter/sensor.py", line 244, in async_added_to_hass
    history_list.extend([state for state in filter_history[self._entity]])
KeyError: 'sensor.raw_room_temperature'

Additional information:

try changing the RAW to lowercase

tried changing lower case and no  change.

Same problem here.

filter hasn't changed in several versions, most likely related to the recorder component from which the filter sensor gets data from. Any changes on that ?

On client side, I didn't change anything. Just after the update, the filtered items disappeared. On the recorder, I have it setup as selective recording where I do not include the "unfiltered entities" like sensor.RAW_room_temperature, but this is how it was working just fine in 0.96. This is my recorder yaml:
recorder:
  purge_keep_days: 1
  purge_interval: 1
  include:
    domains:
      - device_tracker
      - switch
    entities:
      - binary_sensor.door_sensor
      - sensor.room_humidity
      - sensor.room_temperature
      - sensor.hall_temperature
      - sensor.hem_power_w
      - climate.room_ac
      - media_player.ben_cast
      - media_player.sala_cast
      - sensor.cpu_temperature
      - sensor.processor_use
      - sensor.memory_use
      - sensor.disk_use
      - sensor.dark_sky_precip_intensity

well you just diagnosed the problem, since the raw values are not recorded the filter sensor will fail to load previous values :(
I could create a "fix" for the error, but the filter sensor will misbehave since it will always slow start

That explanation doesn't make sense. If it was due to not recording the raw values, why did it work in the last version?
I'm in the same boat, no changes on my end between versions, but it worked Belle and doesn't now.

How come it worked before?

If it could work without recorder data would be idea. But I do not know how deeply integrated it depends on it.

Only thing I can find in the changelog regarding recording anythng is the bit about Apache Kafka. Probably unrelated. I too disabled recording state history on my raw sensors to keep my db size down. Worked fine in previous versions, broken since 0.97.x.

I'm experiencing the same issue. Raw sensors are still fine but all my filtered ones are dead.

@DoctorOctagonapus and @tungmeister to you get the same error message ? (KeyError)

Same problem here with 0.97.1...

Issue exists for me also in 0.97.1

There is already a Fix waiting to be included ASAP

Do we know what version this fix will be in?

It should already be in the beta ;)

Now on 0.98.1 and I no longer see the errors, however I have one filter that's still just not working, always showing unknown when the underlying raw sensor is working properly. Any suggestions on how to troubleshoot to see why it's showing unknown?
- platform: filter   name: "Basement Temperature"   entity_id: sensor.raw_basement_temperature   filters:     - filter: outlier       window_size: 5       radius: 5
- platform: mqtt   state_topic: "hestia/furnaceroom"   name: "Raw Basement Temperature"   unit_of_measurement: "°C"   value_template: '{{ (value_json.temp | round(1)) + 1 }}'   device_class: temperature
The MQTT shows the right value, and the filter sensor used to work properly before all these changes, but no longer does, now it just shows "unknown"

can you activate debug ?
logger:
  default: warning
  logs:
    homeassistant.components.filter: debug

I enabled the debug, and see debug for other filter entities, but not for this one. The ones I'm seeing debug entries for are for a DHT sensor that is working fine, but not for the mqtt sensor I show above. The only other difference I see for the one having an issue is it has a value template, not sure if that's relevant.

you must see something like:
2019-09-01 23:52:59 DEBUG (MainThread) [homeassistant.components.filter.sensor] outlier(sensor.raw_basement_temperature=32.0) -> 32.0
this log message happens right after filter gets a value from the raw sensor, if you don't see it, it means no value is reaching the filter.

That's the point, I'm not seeing that. I see lots of those messages, but none for that particular entity.
How do I see why it's not reaching the filter?

check in https://HASS/developer-tools/state for all information related to the raw sensor.
I'm also available on Discord for quicker assistance with the same handle

Well now I'm thoroughly confused. 2 days ago when I posted this, HomeAssistant had been up for several hours with the raw sensor showing a value, but the filter sensor showing unknown and the debug making no reference to it at all.
I was at work and couldn't check back until now, but now everything is showing properly. with the filter sensor now showing a value as well.
So I really have no idea what happened, but all's well that ends well?

I'm closing this now ;)

Thanks for fixing this - I just ran into it too.  Glad it's already fixed! :)


Now broken

Since today, the script is broken because the url on the form is encoded with &xxx;, so the script tries to submit to url containing &
the fix on UAMPageFormParams function on main/Model/UAM/UAMPageFormParams.php
modify like this
return new UAMPageFormParams(
$sMatches[1],
$jschlVcMatches[1],
$passMatches[1],
self::getJschlAnswerFromPage($pageAttributes),
htmlspecialchars_decode($urlMatches[1])
);

Well for me it is still not working with this change:
Tried reaching this page:
https://predb.me/?search=720p
"[ERROR] UAM (retry: 0) -> clearance cookie missing! Unknown error -> CF clearance could not be found!"

Yeah it's definitely NOT working. I've tested it on http://medium.com https://torrentz2.eu and various others. My script that was working for over 7 months just stopped working recently due to the bypasser not solving the cloudflare problem and instead returns the usual
          setTimeout(function(){\n             var s,t,o,p,b,r,e,a,k,i,n,g,f, CNVCtJR={"USHdsl":+((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![ ▶             g = String.fromCharCode;\n             o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";\n             e = function(s) {\n               s += "==".slice(2 - (s.length & 3));\n               var bm, r = "", r1, r2, i = 0;\n               for (; i < s.length;) {\n                   bm = o.indexOf(s.charAt(i++)) << 18 | o.indexOf(s.charAt(i++)) << 12\n                           | (r1 = o.indexOf(s.charAt(i++))) << 6 | (r2 = o.indexOf(s.charAt(i++)));\n                   r += r1 === 64 ? g(bm >> 16 & 255)\n                           : r2 === 64 ? g(bm >> 16 & 255, bm >> 8 & 255)\n                           : g(bm >> 16 & 255, bm >> 8 & 255, bm & 255);\n               }\n               return r;\n

i tried both url http://medium.com https://torrentz2.eu  and they works.
Make sure you put all of those headers (with different values if you want, but they must be present)
'Connection: Keep-Alive', 'Accept-Language: *',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0', 'Accept: /',
'Accept-Encoding: deflate, gzip',
'Upgrade-Insecure-Requests: 1'

actually i'll reopen until another release is done with the change for this bug

This is some of the code re: the headers

And this is the result

This might be a bit messy but the below is the dump output in a terminal of https://torrentz2.eu using your CFCurlTest.php file directly.
`"""
\n
\n
\n
  \n
  \n
  \n
  \n
  \n
  \n
  Just a moment...\n
  \n
\n
    \n
\n
\n
\n
\n
  \n
    \n
      \n
          \n
  \n
    Please turn JavaScript on and reload the page.\n
  \n
  \n
    \n
    \n
      \n
      \n
      \n
    \n
    Checking your browser before accessing torrentz2.eu.\n
    \n
    This process is automatic. Your browser will redirect to your requested content shortly.\n
    Please allow up to 5 seconds…\n
  \n
   \n
  \n
    \n
    \n
    \n
    \n
  \n
  \n
  +((!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![])+(+[])+(!+[]+!![]+!![]+!![])+(!+[]+!![])+(!+[]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]))/+((!+[]+!![]+!![]+!![]+!![]+[])+(+!![])+(!+[]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(!+[]+!![]+!![]+!![]+!![]+!![]))\n
  \n
   \n
\n
\n
          \n
          \n
            DDoS protection by Cloudflare\n
            \n
            Ray ID: 5732b6e44b776561\n
          \n
      \n
     \n
    \n
  \n
\n
\n`

Okay.. So it's important to note i've been using the version pulled and updated from composer require kyranrana/cloudflare-bypass
That being said i did the patch tweaks above to no avail.
I just downloaded the zip file directly from here and unpacked it in the vendor dir and now everything is working. So what is obtained via composer and what fixed are provided here don't work. I'd say update the composer package to what's in the master.zip here.

yeah i don't get why he don't make a new release

@momala454 I'm pretty sure maintaining this kind of product is really time consuming and Kyran prefer spending time on other things. I already gave him some recommendations for this package to be more usable here : https://github.com/KyranRana/cloudflare-bypass/issues/157
As I am, and many other users are, stuck with this package release process, I published a fork https://github.com/jaymoulin/cloudflare-bypass which is just a usable automatically updated fork of this repo.
Basically, every time a PR is merged, or a commit is pushed to this master, my package will update and make a usable unstable release (dev-master) available on packagist, therefore, composer (composer require jaymoulin/cloudflare-bypass:dev-master).
Also, I added a functional test case to check with both https://torrentz2.eu and https://medium.com on GitHub's servers to check the package's behaviour  and details (https://github.com/jaymoulin/cloudflare-bypass/actions?query=workflow%3ACI)
As this package is a unstable package, you all have to decrease minimum-stability of your composer.json file to dev (and adding prefer-stable to true when possible). Sorry, but this is mandatory as https://github.com/KyranRana/cloudflare-bypass/issues/157 is still open.
I'm not really happy I had to do this but I understand some of Kyran's choices.
I hope this is only a temporary fix and it will unstuck people.

Well i tried it again, but still can't access https://torrentz2.eu
Tried from 2 different servers:

first server error: "clearance cookie missing! Unknown error -> CF clearance could not be found!"
second server error: "[ERROR] Captcha (retry: 1) -> not supported! Unknown error -> Captcha page is not supported!"

i'm getting the same errors for https://torrentz2.eu and https://torrentz2.is


[kjobctl] Add describe rayjob command.

What type of PR is this?
/kind feature

What this PR does / why we need it:
Add describe rayjob  command on kjobctl.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?

NONE

/cc @IrvingMg

LGTM.


Hide the "click to select" text on hover?

Hi,
Cool plugin - thanks :) One problem I'm having, is that I don't want the "click to select" text to show to the right of the options. The reason being, is that it's only going to be 100-200px wide, and its causing the value to go onto multiple lines :/ How do I get rid of it? I tried commenting this out of the SASS file but it didn't help:
  .#{$choices-selector}__item--selectable {
    @media (min-width: 640px) {
      padding-right: 100px;
      &:after {
        content: attr(data-select-text);
        font-size: $choices-font-size-sm;
        opacity: 0;
        position: absolute;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
      }
      [dir="rtl"] & {
        text-align: right;
        padding-left: 100px;
        padding-right: 10px;
        &:after {
          right: auto;
          left: 10px;
        }

``` }
    }

(and yes, I'm using SASS and then building it into my own file :))

TIA

Andy

This was my workaround for this, but I guess the best approach is to replace the entire choices__item--selectable class.
 .choices__list--dropdown .choices__item--selectable:after { 	display: none !important; }  .choices__list--dropdown .choices__item--selectable { 	padding-right: 0 !important; }

There is also option to change this text by setting:
itemSelectText: ""
Only you will still have unneeded padding, so be sure to clear that as well.

That would be actually nice to have in options.
Having right half of the select list to be occupied by 'Press to select' text is not very common. Most people would expect to have more control over how option item actually looks like.


How retrieve number of occupied cells at specific rank level

Based on discussion in #46 , we would like to know how many of our cells are occupied at a certain rank level (in our case, we thought about kingdom, but the issue can be extended easily to any other rank). As we are working at 1km scale (~50k cells) and we are working on a time span of around 50 years, let's say, this means sending a lot of queries to GBIF, which is not recommended (see interesting discussion about here: https://github.com/ropensci/rgbif/issues/320).
So, how to get this aggregated(!) numbers in a quite fast way and without sending thousands of queries?
If I see how fast the GBIF tool observation trend works, I think a possible solution is in the air.
This is the link to the repo behind the tool: https://github.com/gbif/species-population.
Moreover, GBIF has already an API for doing it, they are writing the documentation for it: see https://github.com/gbif/species-population/issues/6. However, the issue is quite old, their plans are very likely changed.
Analyzing the requests my computer does while searching for Branta canadensis against higher taxon Anatidae, I see some requests which are linked to binary files with .mvt extension:
https://api.gbif.org/v2/map/occurrence/regression/3/3/2.mvt?higherTaxonKey=2986&minYears=10&taxonKey=5232437&year=1970,2015
and if we zoom a lot:
https://api.gbif.org/v2/map/occurrence/density/7/65/42.mvt?srs=EPSG:3857&basisOfRecord=OBSERVATION&basisOfRecord=HUMAN_OBSERVATION&basisOfRecord=MACHINE_OBSERVATION&basisOfRecord=MATERIAL_SAMPLE&basisOfRecord=PRESERVED_SPECIMEN&higherTaxonKey=2986&minYears=10&taxonKey=5232437&year=1970,2015
Notice the /v2 instead of /v1, the GBIF API standard version. So, the tool loads some binary files (downloadable, just click on the links) and query on them. The directory structure is very likely linked to zoom level and geographical area. I have tried to opened one of these files in R via ReadBin() but it didn't work. I am afraid I need to know the file structure before hand.
Another way: in the issue cited before (https://github.com/ropensci/rgbif/issues/320) Tim Robertson was speaking about SQL API which is under development: is it the right alternative to get what we want?
@stijnvanhoey, @peterdesmet : what do you think we can implement and what's at GBIF side? Thanks!

I do think the required information about setting up the query is available in the API docs using the .mvt as format option to the query resulting in mapbox vector tiles:

Vector tiles use Mapbox Vector Tile format, and contain a single layer occurrence. Objects in that layer are either points (default) or polygons (if chosen), each object has a total value; that is the number of occurrences at that point or in the polygon.

In Python, I know of a decoder for these files, e.g. for the result of your regression query:
import mapbox_vector_tile
with open('2.mvt', 'rb') as f:
    data = f.read()
decoded_data = mapbox_vector_tile.decode(data)
decoded_data

resulting in:
{'regression': {'extent': 4096,
  'features': [{'geometry': {'coordinates': [[[4627, 3091],
       [4589, 3026],
       [4513, 3026],
       [4475, 3091],
       [4513, 3157],
       [4589, 3157],
       [4627, 3091]]],
     'type': 'Polygon'},
    'id': 0,
    'properties': {'SSE': 0.14110256225160012,
     'groupCounts': '{"1972":1,"1977":6,"1978":27,"1979":40,"1982":23,"1983":40,"1984":145,"1985":8,"1987":27,"1988":2,"1989":10,"1990":1,"1991":10,"1992":8,"1994":4,"1999":1,"2000":25,"2001":46,"2002":5,"2003":48,"2004":19,"2005":79,"2006":28,"2007":28,"2008":35,"2009":89,"2010":167,"2011":348,"2012":361,"2013":424,"2014":188,"2015":199}',
     'id': '16915.0:9197.0',
     'intercept': 0.4211443769527274,
     'interceptStdErr': 1.9541723886627564,
     'meanSquareError': 0.004703418741720004,
     'significance': 0.840226171719543,
     'slope': -0.00019903926827075224,
     'slopeStdErr': 0.0009787496164624394,
     'speciesCounts': '{"1984":2,"1989":3,"1994":1,"2004":1,"2006":1,"2007":1,"2008":1,"2010":3,"2011":1,"2013":3,"2014":2,"2015":1}'},
    'type': 3},
   {'geometry':
... # and so on for each geometry in the response, i.e. each hexagon in this case

Note: this regression query is probably very useful for you as it provides number of occurrences for each year and indeed not described in the API docs where only the density and ad-hoc call are described.
So, decoding of the mvt files is certainly possible, but I'm wondering how to spatially link your rectangular grid with the options the vector tiles can provide to you?

Thanks @stijnvanhoey! I will further read about it.

It seems it is still not possible.
Meanwhile we worked in the direction of producing a Belgian data cube (see repository trias-project/occ-processing): we produced a baseline data cube at kingdom level. If in future we decide to use baselines at another taxonomic rank, the same workflow can be applied.
This issue is therefore solved.


Table "Service Order Allocation" - OnBeforeCreateReallocationEntry(var Rec: Record "Service Order Allocation"; var IsHandled: Boolean)

local procedure CreateReallocationEntry()
begin
    OnBeforeCreateReallocationEntry(Rec, IsHandled);
    if IsHandled then
      exit;

    RepairStatus2.Reset();
 ...
 end;

Please always put the full detailed signature of the requested events.

OnBeforeCreateReallocationEntry(var Rec: Record "Service Order Allocation"; var IsHandled: Boolean)

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Fix broken link for DSL reference

Fixes #16785

@bot-gradle test this

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test this

OK, I've already cancelled the old build and triggered a new ReadyForMerge build for you.

@bot-gradle test this

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.


Fred charts

Codecov Report
Attention: Patch coverage is 5.44218% with 139 lines in your changes missing coverage. Please review.

Project coverage is 71.59%. Comparing base (7e54fe6) to head (fbe0499).

Files with missing lines
Patch %
Lines

quantflow/cli/commands/fred.py
0.00%
53 Missing :warning:

quantflow/cli/commands/stocks.py
0.00%
27 Missing :warning:

quantflow/cli/commands/base.py
0.00%
25 Missing :warning:

quantflow/data/fred.py
0.00%
19 Missing :warning:

quantflow/cli/commands/vault.py
0.00%
11 Missing :warning:

quantflow/cli/app.py
0.00%
3 Missing :warning:

quantflow/utils/df.py
0.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #12      +/-   ##
==========================================
- Coverage   73.53%   71.59%   -1.95%
==========================================
  Files          38       39       +1
  Lines        2101     2158      +57
==========================================
  Hits         1545     1545
- Misses        556      613      +57

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Error when use Select component: need PortalProvider

Current Behavior
I encapsulate the Select components the same way as on the official website. https://tamagui.dev/ui/select?subpath=select
The code is:
import React from "react"
import { Adapt, FontSizeTokens, getFontSize, Select, SelectProps, Sheet, YStack } from "tamagui"
import { Check, ChevronDown, ChevronUp } from '@tamagui/lucide-icons'
import { LinearGradient } from 'tamagui/linear-gradient'

export function SelectGroup(props: SelectProps) {
    const [val, setVal] = React.useState('apple')

    return (
      <Select value={val} onValueChange={setVal} disablePreventBodyScroll {...props}>
        <Select.Trigger width={220} iconAfter={ChevronDown}>
          <Select.Value placeholder="Something" />
        </Select.Trigger>

        <Adapt when="sm" platform="touch">
          <Sheet
            native={!!props.native}
            modal
            dismissOnSnapToBottom
            animationConfig={{
              type: 'spring',
              damping: 20,
              mass: 1.2,
              stiffness: 250,
            }}
          >
            <Sheet.Frame>
              <Sheet.ScrollView>
                <Adapt.Contents />
              </Sheet.ScrollView>
            </Sheet.Frame>
            <Sheet.Overlay
              animation="lazy"
              enterStyle={{ opacity: 0 }}
              exitStyle={{ opacity: 0 }}
            />
          </Sheet>
        </Adapt>

        <Select.Content zIndex={200000}>
          <Select.ScrollUpButton
            alignItems="center"
            justifyContent="center"
            position="relative"
            width="100%"
            height="$3"
          >
            <YStack zIndex={10}>
              <ChevronUp size={20} />
            </YStack>
            <LinearGradient
              start={[0, 0]}
              end={[0, 1]}
              fullscreen
              colors={['$background', 'transparent']}
              borderRadius="$4"
            />
          </Select.ScrollUpButton>

          <Select.Viewport
            // to do animations:
            // animation="quick"
            // animateOnly={['transform', 'opacity']}
            // enterStyle={{ o: 0, y: -10 }}
            // exitStyle={{ o: 0, y: 10 }}
            minWidth={200}
          >
            <Select.Group>
              <Select.Label>Fruits</Select.Label>
              {/* for longer lists memoizing these is useful */}
              {React.useMemo(
                () =>
                  items.map((item, i) => {
                    return (
                      <Select.Item
                        index={i}
                        key={item.name}
                        value={item.name.toLowerCase()}
                      >
                        <Select.ItemText>{item.name}</Select.ItemText>
                        <Select.ItemIndicator marginLeft="auto">
                          <Check size={16} />
                        </Select.ItemIndicator>
                      </Select.Item>
                    )
                  }),
                [items]
              )}
            </Select.Group>
            {/* Native gets an extra icon */}
            {props.native && (
              <YStack
                position="absolute"
                right={0}
                top={0}
                bottom={0}
                alignItems="center"
                justifyContent="center"
                width={'$4'}
                pointerEvents="none"
              >
                <ChevronDown
                  size={getFontSize((props.size as FontSizeTokens) ?? '$true')}
                />
              </YStack>
            )}
          </Select.Viewport>

          <Select.ScrollDownButton
            alignItems="center"
            justifyContent="center"
            position="relative"
            width="100%"
            height="$3"
          >
            <YStack zIndex={10}>
              <ChevronDown size={20} />
            </YStack>
            <LinearGradient
              start={[0, 0]}
              end={[0, 1]}
              fullscreen
              colors={['transparent', '$background']}
              borderRadius="$4"
            />
          </Select.ScrollDownButton>
        </Select.Content>
      </Select>
    )
  }

  const items = [
    { name: 'Apple' },
    { name: 'Pear' },
    { name: 'Blackberry' },
    { name: 'Peach' },
    { name: 'Apricot' },
    { name: 'Melon' },
    { name: 'Honeydew' },
    { name: 'Starfruit' },
  ]

First, I received a TypeScript warning: In the when field of , Type 'string' is not assignable to type 'AdaptWhen | undefined'. ts(2322)
Adapt.d.ts(21, 5): The expected type comes from the 'when' property, which is declared here on type 'IntrinsicAttributes & AdaptProps'
(property) when?: AdaptWhen | undefined
Most importantly, when debugging on the native side using Expo, I encountered the following error:
 (NOBRIDGE) ERROR  Warning: Error: 'PortalDispatchContext' cannot be null, please add 'PortalProvider' to the root component.

This error is located at:
    in NonNativePortalComponent
    in Unknown (created by Portal)
    in Portal
    in Unknown
    in Unknown (created by SelectGroup)
    in Unknown (created by SelectGroup)
    in SelectSheetImpl (created by SelectInner)
    in SheetController (created by SelectSheetController)
    in SelectSheetController (created by SelectInner)
    in SelectProvider (created by SelectInner)
    in SelectProvider (created by SelectInner)
    in SelectInner
    in Provider (created by ProvideAdaptContext)
    in ProvideAdaptContext (created by AdaptParent)
    in AdaptParent
    in Unknown (created by SelectGroup)
    in SelectGroup (created by SettingSection)

I look forward to your reply.
Expected Behavior
No response
Tamagui Version
^1.117.2

Platform (Web, iOS, Android)
Android

Reproduction
the code above

System Info
No response

Are you using TamaguiProvider at the root? Could you open a repro and I'll re-open this.

I am having the same issue. I trying both without and with TamaguiProvider at root. I am trying to render a Sheet inside a react-native modal. If anyone has any insight, that would be helpful.

I got the same error using Expo/React Native, fixed it by importing TamaguiProvider from tamagui instead of @tamagui/core, i.e.
import { TamaguiProvider } from "tamagui";

Might be worth calling out in the docs that there's a subtle difference there.


[FEAT] Add Item Hardness/Save/HP Tracking to Item (Equipment) sheets.

As titled. Very useful to have around when the game includes the frequent use of Sunder maneuvers, etc.

 [FEAT] dd Item Hardness/Save/HP Tracking to Item (Equipment) sheets.

This will be adressed with the 0.5 release.

Fixed in current release.


Cleap matchparen highlighting in completion mode

closes: #13493

A nitpick note: there is a typo in comment message ("Cleap" -> "Clear").


Theme icon from old theme persists after theme switch

How to reproduce
1° Start the game with one theme, in my case, I'm using DanceDanceRevolution XX -STARLiGHT-
2° Switch to another theme.
----------- Mini-issue -----------
When going from DanceDanceRevolution XX -STARLiGHT- to SoundWaves, the starlight theme music still plays after the change until you get to the title screen.
----------- Mini-issue -----------
3° Trigger an error that can be handled
4° See the old theme icon in the error window
Video example: https://youtu.be/LqmOO8CuRtQ
At 0:09 you can see the mini-issue, at 0:36 you can see the main issue.

There seems to be a problem with the 'themechanged' code that isn't freeing the music.
as for the icon, that may not be fixable due to the way the windows are drawn, I'll look into it more.

At this point, the app & window icon is the OutFox icon, and no theme can change that afaik.
Closing this, since it doesn't seem relevant anymore.


deeplab cityscape edgetpu

Hi! Thank you for your work, it helps me a lot!
Now I am looking for deeplab model with cityscape pretrained, optimized for edgetpu (edgetpu.tflite)
Trying to build it by myself, but still no luck. I see you have a cityscape quant 257 and 769 - it would be ideally fit my use case. I'm trying to convert in in edgetpu.tflite file, but "Model not quantized".
If you can help me it would be awesome!

At the moment, deeplabv3 has not succeeded in full integer quantization, but I will check a little when I come home.

@Valdiolus
Unfortunately, the EdgeTPU compiler aborts. It's a voc dataset instead of a cityscapes dataset, but you can do the same.
Tensorflow v1.15.0-GPU
$ cd models/research
$ export PYTHONPATH=`pwd`:`pwd`/slim:$PYTHONPATH

$ nano export_model.py

# input_preprocess takes 4-D image tensor as input.
#input_image = tf.placeholder(tf.uint8, [1, None, None, 3], name=_INPUT_NAME)
input_image = tf.placeholder(tf.float32, [1, 513, 513, 3], name=_INPUT_NAME)

$ nano input_preprocess.py

#processed_image = tf.cast(image, tf.uint8)
processed_image = image

$ python3 deeplab/export_model.py \
  --checkpoint_path=./model.ckpt-30000 \
  --export_path=./frozen_inference_graph.pb

Tensorflow v2.1.0 self-build v1-api for Ubuntu 18.04
https://drive.google.com/open?id=1TmuXPAyNwRPDn_RW8_aFvJYWaTx5G_fU
$ sudo pip3 install tensorflow-2.1.0-cp36-cp36m-linux_x86_64.whl

import tensorflow as tf
import tensorflow_datasets as tfds
import numpy as np

def representative_dataset_gen():
  for data in raw_test_data.take(10):
    image = data['image'].numpy()
    image = tf.image.resize(image, (513, 513))
    image = image[np.newaxis,:,:,:]
    yield [image]

tf.compat.v1.enable_eager_execution()

raw_test_data, info = tfds.load(name="voc/2007", with_info=True, split="validation", data_dir="~/TFDS", download=True)

graph_def_file="frozen_inference_graph.pb"
input_arrays=["ImageTensor"]
output_arrays=['ResizeBilinear_2','SemanticProbabilities']
input_tensor={"ImageTensor":[1,513,513,3]}

# Integer Quantization - Input/Output=float32
converter = tf.lite.TFLiteConverter.from_frozen_graph(graph_def_file, input_arrays, output_arrays,input_tensor)
converter.experimental_new_converter = True
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = representative_dataset_gen
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
tflite_quant_model = converter.convert()
with open('./deeplabv3_mnv2_pascal_trainval_513_full_integer_quant.tflite', 'wb') as w:
    w.write(tflite_quant_model)
print("Integer Quantization complete! - deeplabv3_mnv2_pascal_trainval_513_full_integer_quant.tflite")

deeplabv3_mnv2_pascal_trainval_513_full_integer_quant.tflite
$ edgetpu_compiler -s deeplabv3_mnv2_pascal_trainval_513_full_integer_quant.tflite

Edge TPU Compiler version 2.0.267685300
Internal compiler error. Aborting!

Thank you, I have found a model from here and It works, all conversions are done successfully. but it's a pascal dataset. They show separately 8bit and non-8bit models.
I see that we need a special model (fully integer, or retrained on Quantization-aware training) before using conversion.
By the way, I use
tflite_convert
--graph_def_file=deeplab/frozen_inference.pb
--output_file=deeplab/deeplabv3_mnv2_pascal_8bit.tflite
--output_format=TFLITE
--input_shape=1,513,513,3
--input_arrays=MobilenetV2/MobilenetV2/input
--output_arrays=ArgMax
--inference_type=QUANTIZED_UINT8
--inference_input_type=QUANTIZED_UINT8
--inference_output_type=QUANTIZED_UINT8
--std_dev_values=127
--mean_values=128
--change_concat_input_ranges=true
--depth_multiplier=0.5
--default_ranges_min=0
--default_ranges_max=255

I converted frozen_inference_graph.tflite with edgetpu_compiler and it succeeded. Is this a problem? I understand that retraining is required using the cityscapes dataset.
Btw, tflite_converter is currently deprecated because it does not support linear quantization. Tensorflow official website strongly recommends conversion by Python API. I know that using tflite_convert significantly reduces accuracy.
deeplabv3_mnv2_pascal_train_aug_8bit_edgetpu.tflite

8bit .pb pascal file from tensorflow github converted to edgetpu.tflite successful, but I need cityscape pretrained. Will try to do Quantization-aware training. Thank you!

@Valdiolus
I recently committed a high performance model that I trained at Cityscapes. If you are interested, give it a try.
https://github.com/PINTO0309/PINTO_model_zoo/tree/master/21_edgetpu-deeplab-slim

Wow, thank you very much! I did retrain too, but the quality was bad.


fix: glob import parsing (#10949)

Description
closes #10949
supersedes/closes #11051
I was originally planning on just using findNodeAt but then noticed that it's using strip-literal which IIUC also tries to parse the file. Figured why not do it with a single AST pass.
Additional context
Keeping as draft for now because acorn-walk is giving a type error for the build script

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Before submitting the PR, please make sure you do the following

[x] Read the Contributing Guidelines.
[x] Read the Pull Request Guidelines and follow the Commit Convention.
[x] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
[x] Provide a description in this PR that addresses what the PR is solving, or reference the issue that it solves (e.g. fixes #123).
[ ] Ideally, include relevant tests that fail without this PR but pass with it.

I was originally planning on just using findNodeAt but then noticed that it's using strip-literal which IIUC also tries to parse the file. Figured why not do it with a single AST pass.

strip-literal isn't exactly parsing but only tokenizing the code, so we should probably keep it like before so we don't have to parse the entire code.

Ahh ok, I thought it was parsing and removing the nodes from the description, will revert and go with findNodeAt then,
I need some help with the types problem though: the build-types script is failing for acorn-walk currently, I'm thinking it's because it imports a type from acorn in its declaration but doesn't actually list acorn as a dependency or dev dependency. My editor seems to be fine with it but tsc refuses to build. Any ideas?

Hmm yeah we got this issue before with postcss-load-config but was fixed upstream. I think we could configure https://pnpm.io/package_json#pnpmpackageextensions to add acorn as a dependency for acorn-walk to workaround this.


⚠ Bofrost.lu has degraded performance

In 56ddb46, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1502 ms

Resolved: Bofrost.lu performance has improved in df86d85 after 30 minutes.


fix require confirmation

[X] Changes have been thoroughly tested to not break existing functionality.
[ ] New functionality has been documented or existing documentation has been updated to reflect changes.
[X] Visual changes are explained in the PR description using a screenshot/recording of before and after.

More Info
Even when we pass false to requiresConfirmation a modal still pops up, which is not an expected behaviour, what do you think?

fixed in a different way


Generate unknown type diagnostic for checked explicit constructors

Purpose
$title.
Fixes #42705
Approach
The unknownTypeRefs are updated even during silent type checking, which in result excludes relevant unknown type diagnostics. With the changes, the respective set is only updated if the diagnostic log is not muted.
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Closing this PR as we need to explore an approach for persisting the state during silent type checking.


Add groups and group-specific options

I recently decided to try AriaNg after running into issues with uGet. I noticed AriaNg is practically the only aria2 UI that is still being frequently updated, and am genuinely impressed after trying it out. However, it appears that there is no support for grouping and group-specific options.. only when adding links can you specify additional options. This would be a huge addition.

what are the group and group-specific options?

For example, when adding new links some of them may need a different user name, user agent, proxy setting, download folder, etc. Rather than have to type those in every time as they may only be required for a subset of downloads, rather than making them the default for everything—it would be ideal to select a category where those settings are saved.

I think it's a low frequent operation to set different user name/user agent/proxy in different download task for most people. AriaNg also won't support it. By the way, I think download dir may be the only option that be changed frequently by users, so AriaNg supports storing the download dir history setting you set, and you can click download dir to select them.

Thanks for your consideration. When you say AriaNg won't support it, were you referring to it not being supported by aria2 when run in daemon mode or just that you don't want to add it? I agree it isn't a high-priority request, but uGet has the functionality and I did find it useful.

AriaNg is designed for most people instead of every people. If AriaNg adds all features no matter how little people use, AriaNg would not be a light weight frontend. I'm arfraid I would refuse your request again.


[analyzer] completion.getSuggestions to handle dynamic

There is a test case in IntelliJ plugin for completion.getSuggestions, for completing import 'dart:core' show prin
This used to work, but fails after https://github.com/dart-lang/sdk/commit/c9c4aa5b25d5a64b6bd9ec8287c5a8f1fb668726#diff-2e4c5d5cea7e48adddaaccc1bea6a662cd66cd61fc0449bb5ed46b7c994f4e0bR508, giving a server-side error and a client-side timeout.
The reason is the DynamicElement not handled. I guess this should be fixed, by adding dynamic as a suggested option.

equivalent test case for 'get_suggestions_test.dart'
  Future<void> test_getSuggestions_dynamic() async {
    setTestSource('test.dart', r'''
import 'dart:core' show prin^
''');
    writeFile(path, content);
    await standardAnalysisSetup();
    await analysisFinished;
    var result = await sendCompletionGetSuggestions(path, completionOffset);
    var completionId = result.id;
    var param = await onCompletionResults.firstWhere(
        (CompletionResultsParams param) =>
            param.id == completionId && param.isLast);
    var length = 4;
    expect(param.replacementOffset, completionOffset - length);
    expect(param.replacementLength, length);
    param.results.firstWhere(
        (CompletionSuggestion suggestion) => suggestion.completion == 'print');
  }

Error
1634536428720:Ex:Failed to handle completion domain request:: completion.getSuggestions
Invalid argument(s):: Cannot suggest a DynamicElementImpl
#0      SuggestionBuilder.suggestElement (package::analysis_server/src/services/completion/dart/suggestion_builder.dart::393::7)
#1      CombinatorContributor.computeSuggestions (package::analysis_server/src/services/completion/dart/combinator_contributor.dart::29::21)
#2      DartCompletionManager.computeSuggestions.<anonymous closure> (package::analysis_server/src/services/completion/dart/completion_manager.dart::160::31)
#3      DartCompletionManager.computeSuggestions.<anonymous closure> (package::analysis_server/src/services/completion/dart/completion_manager.dart::159::11)
#4      OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::160::29)
#5      DartCompletionManager.computeSuggestions (package::analysis_server/src/services/completion/dart/completion_manager.dart::157::27)
<asynchronous suspension>
#6      CompletionDomainHandler.computeSuggestions.<anonymous closure>.<anonymous closure> (package::analysis_server/src/domain_completion.dart::111::13)
<asynchronous suspension>
#7      OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::160::14)
<asynchronous suspension>
#8      CompletionDomainHandler.computeSuggestions.<anonymous closure> (package::analysis_server/src/domain_completion.dart::108::7)
<asynchronous suspension>
#9      OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::160::14)
<asynchronous suspension>
#10     CompletionDomainHandler.computeSuggestions (package::analysis_server/src/domain_completion.dart::97::5)
<asynchronous suspension>
#11     CompletionDomainHandler.processRequest.<anonymous closure> (package::analysis_server/src/domain_completion.dart::374::22)
<asynchronous suspension>
#12     CompletionPerformance.runRequestOperation.<anonymous closure> (package::analysis_server/src/services/completion/completion_performance.dart::62::16)
<asynchronous suspension>
#13     OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::160::14)
<asynchronous suspension>
#14     CompletionDomainHandler.processRequest (package::analysis_server/src/domain_completion.dart::288::5)
<asynchronous suspension>

That probably isn't the right solution. We should investigate to see why a DynamicElement is being suggested. It looks like the code is looking at the names that are declared in dart:core, and is finding one associated with the declaration of dynamic. There shouldn't be such a mapping. The real issue appears to not be in the code completion contributor, but in the way recovery is being done in that sample of code.


:construction: creates Level component

There's an issue with importing the mushroom. Firstly that svg is quite complex and produces a lot of code. Secondly while resizing it breaks.
I will convert it to a .webp image.

Issue with the missing levels in the dependency array is that you initialize levels on every render by setting the variable inside of the component.
You can memoize the values by wrapping it into useMemo, so they are persisted between renders.
Or even better: Just move them out of the component.
levelNames, levelScores and levels don't depend on any values inside Game. Moving them outside of the component avoids re-intialisation, so you can safely pass it to the dependency array of the useEffect hook without causing an infinite loop.


🐞 Bug: Checkboxes not working

Before reporting:

[X] Ensure that the issue is reproducable on the main branch.
[X] Ensure that there isn't an issue on this(either open or closed).

Problem:
i substituted the lazyextras markdown plugin for this one but checkboxes ain't working
as you can see pretty much everything works besides the checkboxes

Steps to reproduce the issue:

nvim
install lazyvim
install all parsers
install markdownview
write a test sheet with everything the plugin offers

Expected behavior:
markview should've rendered the checkboxes
Neovim version:
NVIM v0.10.1

I experienced a similar issue recently but it fixed itself (I think I used a preset for checkboxes)

For [X], [ ] you need to have some text after them.
Old checkboxes such as [~], [o] are no longer available.
Use this if you use the old checkboxes.
{
  checkboxes = require("markview.presets").checkboxes.legacy
}


Integration with Jupyter ?

Gorilla-repl is awesome, would more traction (user base) happen if it was coordinated with the Jupyter project? It would be great to be able to be in Jupyter and select Clojure from among the other choices offered (python, R, spark, erlang, F#, etc...)
i.e. Jupyter "Evolved from the IPython Project. The language-agnostic parts of IPython are getting a new home in Project Jupyter"
https://jupyter.org/
Is this an interesting or desirable topic?
regards,
Avram

https://try.jupyter.org/

Hi Avram,
yes I think there is an interesting discussion to be had here. I can see reasons both for and against for the idea of integrating Gorilla into Jupyter.
On the "against" side, the main reason is that I see Gorilla as a distinct thing than Jupyter. There are a few design decisions that set them apart, but the main one is how the rendering works. Gorilla's renderer is very strongly tied to the idea of immutable data, whereas Jupyter has a model that more naturally fits python (and, is flexible enough to work with a wide range of languages). I think the Gorilla renderer is more elegant (of course I do!) and more powerful in a sense: in that you can compose rendered items as naturally as you compose data structures; and that it is extremely easy to extend in a way that is very natural to Clojure. The Jupyter rendering model is more generally applicable to languages that aren't data based, and less restricted, so they can do cool things like interactive widgets ... although it does come at some cost in terms of simplicity.
The other thing I think is nice about Gorilla that sets it apart from Jupyter is that it is dedicated to doing one thing - providing a notebook for Clojure - and as a result can be very simple and lightweight; can be closely integrated with other Clojure tooling; and has zero install process for an already-set-up Clojure user. This is not a criticism of Jupyter, to be clear, just to note that the different design goals end up with different designs. And from another perspective, this is an anti-feature ... you might say the great thing about Jupyter is that isn't dedicated to just doing one thing!
On the "for side", there are many reasons. Jupyter is more and more establishing itself as the de-facto open notebook. They're doing an excellent job of pushing towards being a cross-language notebook solution. The user experience is getting much more polished with every version. And their adoption is really strong, quite deservedly. I think it would be great to have first class Clojure support in Jupyter - it would definitely have broader appeal than Gorilla, and there's much value in having people develop expertise with a common tool. I haven't used the IClojure plugin yet, so I don't know what state that is in. But as far as I know it doesn't have much support for plotting, graphics etc yet.
So, an obvious question would be whether it's possible to take Gorilla REPL's renderer, and plug it in to Jupyter in a useful way? And whether it would be possible to have the same close integration of Jupyter with the rest of the clojure ecosystem (leiningen, cider etc) ... perhaps through a lein-jupyter plugin.
I should note here that one of the IPython devs reached out to me to start a discussion, but I got caught up with other projects and dropped the ball (for shame, sorry Matthias!). I'll mention him in - @Carreau - in case he wants to contribute, or you want to reach out to him.
So, to summarise my long ramble. Yes I think there's good reason to think about how Clojure is used in Jupyter, and it would make sense to try and integrate Gorilla's strengths into any such effort. I'd certainly be interested to think about whether Gorilla style rendering could be integrated into IClojure, or something similar.
Jony

Hey, thanks for pinging me,
no need to apologize for being caught up by other projects, we all are.
I think that all point are valid, I haven't particularly looked into the rendering engine used here, but I believe you in the term of composability. Side note, I'm not a huge fan of widgets either, but now they should be "just" a plugin on Jupyter. We do our best to make thing as agnostic and flexible, but Jupyter was designed first with python in mind we probably do not have the best framework.
I'm a bit disappointed not not have more functional programmers in the core team, and would also like to have more people from the javascript world to work on the UI. I think that IHaskell made a awesome job as pushing what you can do to the limit and I would love to see Andrew (IHaskell author) getting funding to do that full time.
Of course we (The core team) could investigate all kernels and separate project ourself. It's not a lack of willingness to get feedback or investigate what other kernel and project are doing, but my time at least start to dangerously approach days of only responding to email, and not actually getting things done. Gorilla-REPL is I think one of the place where we could learn from immutability.
Hopefully, we start to have some funding to actually get some work done on breaking the various component in smaller pieces, so it might be easier to just reuse pieces of our frontend, or backend, or network protocol, so it should just make writing separate project that take a different approach easier, and free up time for people like @JonyEpsilon to actually defend their idea, and get a product as polished as the Jupyter notebook much more easily (Not to say that Gorilla is not polished, but we probably have more manpower to nick pick on detail even more). So we are open to project like gorilla REPL, we are open to discussion, share ideas, help integrating or even get constructive discussion on why we disagree on fundamental point. We definitively want life of people that make this kind of things easier, not harder.
One of the things we are relatively strict about though, is that as most of the core team of Jupyter is from a Science/Academic background, and we get our funding through that. So we will be conservative in some choice that influence the design, which might constrain a few languages in their flexibility and how the Notebook document is separated from the kernel or execution engine. We are aware of the implication, we are aware of the limitation and we are slowly working on that.
We have funding for a (small) Jupyter Conference in the next two years, to gather people that are using Jupyter. I suppose we will do at some point a Call fro talk proposal, I think a "Why I do not use Jupyter with Closure" that have a different view than all the people who are happy and never complain would be good.
I don't know how @aaelony is using Jupyter / closure / Gorilla-REPL, but people that use both project, and are a bit aware of what's happening in each project and/or use both project are crucial in the interoperability and communication between the project. You are part of the people that can come to either Jupyter, or here, and warn us that :

What we do has already been done.
what we do will prevent integration with X/Y/Z
Project W has feature F which is awesome because of ... You should consider it.
Recap technical choice of project P into something understandable by average developper, and not something like: "The ALU cannot alias 37 bit pointer on the heap because the monad is variadic and the the time complexity limit in O(n^2). It would be better to use algebraic data type" (which is how most cross language discussion sounds like).

So if you have any time to investigate how you feel on both project and make a small writeup, that can be useful.
Long enough gibrish, thanks for pinging me.I have to catch a train unfortunately, so sorry if I don't re-read yself.

This is a great discussion.  Apologies as well (unnecessarily perhaps) for being forced away from this topic until now.
@JonyEpsilon, I agree with (all) your points, and also share your preferences for Clojure and Gorilla.  Thanks for following up on this idea/issue.  I only meant that it is great that a tool like Jupyter is getting traction and it would be sad if the awesomeness of Gorilla-repl couldn't be included somehow...
@Carreau, I like the idea that the Jupyter team is open to including Gorilla-repl.  Perhaps the way forward (?) is to address the points @JonyEpsilon raised by one day in the future providing a gorilla repl option that relied on the gorilla-repl implementation itself, thus allowing different rendering paradigms, immutability, and other differences?
As for myself, my favorite tools are Clojure and R so it would be great to be able to get one experience in a tool like Jupyter.  It is nice to see Jupyter and notebooks for multiple languages gaining traction, and it would be great if clojure and gorilla-repl was included.  Not sure what the best forum for this idea is, but feel free to close this issue here as necessary. cheers, -A

FYI, I'm also very interested in this, mostly because my small team enjoys jupyterhub with various kernels and shared notebooks.  It's great to showcase an implementation in Python, Scala, Julia, R.... and hopefully someday Clojure.
Clojupyter would be somewhat fitting, however i don't believe it's nearly as mature as Gorilla Repl.... it lacks for instance stack traces and the like.  I'd like to use notebooks to showcase the importance of immutable data structures and functional style programming to my team.... for instance with Clojure.

I believe the best thing to do at this point is to use Clojupyter if Clojure + Jupyter functionality is needed, if only due to the sheer amount of effort it would take to combine the two.


proposal: net/http.Client should allow omitting URLs from error strings

Context
When using a net/http.Client, especially with a context.Context that has a deadline, it’s not uncommon for the http.Client.Do() method to return an error that contains the full URL used when actioning the request. Unfortunately that URL may contain sensitive query parameters, or other things that make it unsafe for directly logging or forwarding elsewhere without first sanitizing the URL or removing it entirely.
There was a Gopher who recently ran into a case where they were almost writing sensitive URLs out to log files, but they managed to catch that in a pre-production environment. They could, at each http.Client.Do() call site, write logic to reformat the error value to not include the URL, but there are a few problems with that approach.
The first is that you’d run the risk of forgetting to add that protection somewhere, or a code change / addition in the future could omit it. In addition if you’re mutating the error value to remove the URL, you’ve made it so that callers cannot inspect that detail of the error if they wanted to use it to decide to handle the error in a specific way.
Proposal
Considering the above context, I’d like to propose that we extend the net/http.Client to optionally omit the URL from any and all errors that get generated when it tries to action a request. This would allow programmers to set the behavior on the client itself, mitigating the first risk of forgetting to filter the URL from the error at a specific call site. This would be accomplished by adding a bool field to the net/http.Client struct: OnErrorOmitURL. The zero value (false) for this field would result in the http.Client behaving like it does today, meaning this would not be a breaking change.
Because the errors returned from the http.Client.Do() method are of type net/url.Error, we will also need to extend that type to include a bool struct field, OmitURL, which results in the Error() method not including the URL in the error string it returns. This will address the second risk above as the URL will still be present in string form within the url.Error.URL field, but it won’t be implicitly included when the error value is printed or logged. Like the field on the net/http.Client, the zero value (false) will result in url.Error working like it does today, meaning this would also not be a breaking change.

cc @ianlancetaylor as likely Proposal

This seems related to net/url.(*URL).Redacted.  And, for that matter, net/http already tries to strip the password in a returned URL (https://go.googlesource.com/go/+/refs/heads/master/src/net/http/client.go#1003).
This seems like a reasonable idea to me if you want to write a proposal.  Thanks.

@ianlancetaylor thank you for the quick reply; I can definitely work to reformat this issue into more of a proposal format. I've zero experience with that so I'll figure out how to do it right.
To your comment, yeah it's definitely similar. In this case it was a query parameter that wouldn't be caught by that method, and so I was thinking it might be better to have a way to turn this functionality off versus trying to complicate the stdlib with some sort of programmer-supplied filter specification.
I'll be sure to include that context in the reformat I do, to give others a concrete opportunity to challenge that assumption. Thanks again!

@ianlancetaylor alrighty, I've reformatted the issue to be more proposal-like. If this format doesn't fit the bill give me a shout.

CC @bradfitz @neild

One thing I considered when writing my proposal was to not have the bool on the net/url.Error be exported, and to instead move the error creation to a constructor function so that net/http could still specify it. That felt like a much larger change that I had a hard time justifying, but I could see it as being a way to avoid exposing what is effectively meant to be an internal API.

This seems reasonable to me.

You can do something like this to redact the URLs without requiring any changes to net/http (playground link - won't run on the playground because of #44822):
func RedactErrorURL(err error) {
	var ue *url.Error
	if errors.As(err, &ue) {
		ue.URL = "<redacted>"
	}
}

That works even when you don't have control over the Client struct (which is pretty common in my experience) and can be used wherever is appropriate. You could use it directly after a http request, or after a wrapper function is done, or all the way down at where the error is actually being logged.

@tmthrgd you are correct that is the solution you can pursue today. In the context section I mention the challenges of that approach:

The first is that you’d run the risk of forgetting to add that protection somewhere, or a code change / addition in the future could omit it. In addition if you’re mutating the error value to remove the URL, you’ve made it so that callers cannot inspect that detail of the error if they wanted to use it to decide to handle the error in a specific way.

@tmthrgd you are correct that is the solution you can pursue today. In the context section I mention the challenges of that approach:

The first is that you’d run the risk of forgetting to add that protection somewhere, or a code change / addition in the future could omit it. In addition if you’re mutating the error value to remove the URL, you’ve made it so that callers cannot inspect that detail of the error if they wanted to use it to decide to handle the error in a specific way.

But surely that’s no different at all to how easy it would be to forget to set the OnErrorOmitURL field? Also you have to be aware of any calls to http.Get or similar, any code using a custom http.Client that you might have missed or not easily control, and any code that performs http requests as part of a library.

What about net/http.Client.MutateErr func(error) error? So the user can specify the policy and we don't need a dozen policy bools in the future for all the possible variants people might want? (keep domain, keep URL path, only redact auth, only redact params, only redact certain params, ....)

@bradfitz Considering the use case of wanting to retain the URL in the net/url.Error struct so that consumers can inspect it, but not have the error string be printed out when the .Error() method is invoked, I'm having a hard time visualizing how that would work with your suggestion. Or are you suggesting that we don't support that, and make the errors unusable by the caller?

I guess a second question comes to mind, would we want that function to take an error or a *url.Error. If we made it an error, we'd probably need to be real careful about how we change error handling inside of the net/http package going forward since folks would need to use type assertions to sanitize their URLs. Discoverability of all potential error types would likely need to be documented.

@bradfitz wanted to see if you'd had any spare cycles to noodle on the above.

If we're willing to permit net/http.Client.MutateErr to return a non-*url.Error error, then a redaction function could return an error that wraps the original *url.Error.
type redactedURLError url.Error

func (e *redactedURLError) Unwrap() error { return (*url.Error)(e) }
func (e *redactedURLError) Error() string { return fmt.Sprintf("%s: %s", e.Op, e.Err) }

func RedactURLError(err error) error {
  if e, ok := err.(*url.Error); ok {
    return (*redactedURLError)(e)
  }
  return e
}

client.MutateError = RedactURLError

This permits inspecting the original URL (by recovering the url.Error with errors.As), while redacting it from the error text.


GUI: implement the communication with the new Ledger app

Part of #39

Closing as completed by https://github.com/LedgerHQ/app-bitcoin-new/pull/76.


Not Connecting to Quasar Control Module

Downloaded this v1.4.0 installed on Windows 10, Router Port Forwarding is done correctly (I have a good level of experience with Using RAT's on remote Machines), Built two types of Clients and  these are run 1 at a time, 1 with NoIP Host name and the other with simple IP address, on execution, on remote machine, both types are sending SYN/ACK Packets to my router and to my Local Host (where Quasar is running) also, I have Wireshark running to confirm this, however, Quasar has failed to connect to both.
I know 100% that my system is set up correctly as I am a ScamBaiter and use RAT's to infiltrate Scammers PC's, I'm just hunting for another RAT to ad to my Weapons Cache.
Any Idea's?

Downloaded this v1.4.0 installed on Windows 10, Router Port Forwarding is done correctly (I have a good level of experience with Using RAT's on remote Machines), Built two types of Clients and these are run 1 at a time, 1 with NoIP Host name and the other with simple IP address, on execution, on remote machine, both types are sending SYN/ACK Packets to my router and to my Local Host (where Quasar is running) also, I have Wireshark running to confirm this, however, Quasar has failed to connect to both.
I know 100% that my system is set up correctly as I am a ScamBaiter and use RAT's to infiltrate Scammers PC's, I'm just hunting for another RAT to ad to my Weapons Cache.
Any Idea's?

Quasar is a legit admin tool and does not promote or encourage illegal use. You clearly stated your full intent to use in a illegal fashion and knowing this anyone who aides you in this can be implicated and charged in a crime. I myself won't be part of that.
Unless you have the pc owner's or courts approval (a warrant) you're committing a crime. Sorry this isn't spy school

You can run a Debug version of Quasar and try to see if there is any exception message.


 Change font type and size

Hi,
As per the title, can we have an option to change font type and size plz.
In the mean time, how can I do that in the lua?  Not sure of the exact syntax :)

+1; I'm also putting in a separate request to change the location, I like bottom middle personally.
In case you see this, add a line in the label-related block from lines 220 to 225 in ItemLevel.lua:
label:SetFont(label:GetFont(),15,"")
That will keep the same font, change the size to 15 and keep the font with its normal look.  Change the 15 as desired to adjust the size.
To change the actual font you'd have to replace the "label:GetFont()" part with a path to a font file, not sure if we're allowed to provide external links here but if this doesn't work look up API_FontInstance_SetFont on Wowpedia for more info, the example they provide is "Fonts\FRIZQT__.TTF" (quotes are required):
https://wowpedia.fandom.com/wiki/API_FontInstance_SetFont
Also, try changing the "" to "OUTLINE, THICK", seems to add a shadow and bolds it a bit, something like that might help as well, I've made that change myself.  The third option available is MONOCHROME, you can use one or multiple separated by commas.  That's documented at the link above as well.


[BEAM-9357] Bump google cloud bigquery to 1.24.0

I'm bumping the upper end of the google cloud bigquery package to the most recent package so it is easier to use other google-cloud-python packages. The bigquery package is only used by testing.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[x] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[x] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

Thank you!

Run Python PreCommit

@aaltay Since I'm not aware of how PRs get merged around here, who do I have to mention to get the merge?

@aaltay Since I'm not aware of how PRs get merged around here, who do I have to mention to get the merge?

I merged it. Thanks for the ping.

Thanks for merging this @aaltay !


extremely slow download and viewing speed

It takes almost 30 seconds to load just one page and the download time for one chapter is taking way too long.
I already changed image servers
But I can´t find a proper solution

Dex servers are in process of upgrade also steaming is slower than download since streaming is 1 by 1 downloading of the pages

Thanks for the fast answer!