Unexpected periodical istiod scale down

Describe the bug
Hello community,
We are experiencing periodical unexpected istiod deployment scale down that is far below an HPA recommendations and below a minimum replicas count value.
It happens every 12 hour in our case.
That behaviour leads to a control plane traffic amount increase and thus for an outbound traffic cost' increase for us.
If we stop an operator (scale its deployment down to 0 replicas) we don't see such a behaviour.
Example of replicas spec
replicas:
          count: 30
          max: 160
          min: 30

Please also find an example screenshot attached.
Please let me know if any additional info is required.
Thank you!
Expected behavior
To not have such a drastic scale down. Rollout restart can be used instead.
Screenshots

Additional context
Platform 1.23.16-gke.1400
Operator version v2.16.1
Pilot version 1.15.3

Hi @vitalii-buchyn-exa. Is there something interesting in the operator's logs during these events?

@LuciferInLove Hi, nothing i can spot at least, here is couple minutes before and after the issue:
some-istio-operator.log
for istiod deployment we see events like:
Events:
  Type    Reason             Age                    From                   Message
  ----    ------             ----                   ----                   -------
  Normal  ScalingReplicaSet  69s (x7 over 4d)       deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 54
  Normal  ScalingReplicaSet  69s                    deployment-controller  Scaled up replica set istiod-istio2-65745fd459 to 71
  Normal  ScalingReplicaSet  53s (x6 over 3d)       deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 51
  Normal  ScalingReplicaSet  53s (x5 over 2d12h)    deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 53
  Normal  ScalingReplicaSet  52s (x7 over 3d)       deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 50
  Normal  ScalingReplicaSet  52s (x3 over 3d)       deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 46
  Normal  ScalingReplicaSet  52s (x4 over 3d)       deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 45
  Normal  ScalingReplicaSet  52s (x3 over 3d)       deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 44
  Normal  ScalingReplicaSet  52s                    deployment-controller  Scaled down replica set istiod-istio2-8696758cfb to 41
  Normal  ScalingReplicaSet  51s (x123 over 4d12h)  deployment-controller  (combined from similar events): Scaled down replica set istiod-istio2-65745fd459 to 0

Thanks for the information. I'm trying to reproduce it but with no success yet. Did you notice any changes in resources? For example, was the HPA resource changed maybe?

If it's possible, please try to run the operator with -devel-mode and -verbose flags for verbose logging.

sure, --devel-mode and --verbose added
will wait till the next downscale event and share logs

here is the log of 5 mins before and 5 mins after the issue (timezone of logs is GMT)
some-debug-istio-operator.log
scale down happened at 03:00:30 GMT+3

The most interesting part:
2023-04-17T23:55:20.746Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ui-ingressgateway"}

Is the gateway address changed every 12 hours?

i can see a lot of such events in the log
% grep "controllers.IstioMeshGateway      gateway address has changed" istio-operator-67db7ccb48-9z2pp.log | wc -l
     237

events are like:
2023-04-18T08:51:40.263Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ui-ingressgateway"}
2023-04-18T09:08:14.282Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ingress-apigee"}
2023-04-18T09:08:20.065Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ingress-api"}
2023-04-18T09:08:25.864Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ui-ingressgateway"}
2023-04-18T09:24:59.887Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ingress-apigee"}
2023-04-18T09:25:05.662Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ingress-api"}
2023-04-18T09:25:11.464Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ui-ingressgateway"}
2023-04-18T09:41:45.482Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ingress-apigee"}
2023-04-18T09:41:51.252Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ingress-api"}
2023-04-18T09:41:57.051Z	INFO	controllers.IstioMeshGateway	gateway address has changed, trigger reconciler by requeuing	{"istiomeshgateway": "istio-system/ui-ingressgateway"}

shouldn't be there any connection between istiod deployment and istiomeshgateway deployments reconciling?

istiomeshgateway IP change shouldn't cause istiod deployment scaling down. I checked that on the same cluster. Only IstioControlPlane changes can cause this behavior. Could something be changed every 12 hours on your cluster that causes these resource changes? Could you please also share an IstioControlPlane that you use?

Could something be changed every 12 hours on your cluster that causes these resource changes?
I wish i knew... I can only find logWindowDuration https://github.com/banzaicloud/istio-operator/blob/57dbb72eb77faa75581c8c1636397db6c8324268/internal/assets/manifests/istio-discovery/values.yaml#L177 and something jwt token related https://github.com/banzaicloud/istio-operator/blob/57dbb72eb77faa75581c8c1636397db6c8324268/internal/assets/manifests/istio-discovery/templates/deployment.yaml#L199

Here is an example of IstioControlPlane CR:
istiocontrolplane.yaml.zip

These settings can't affect such behavior. Otherwise, it would be reproducible everywhere, including our test envs.
Unfortunately, there are no clues in the IstioControlPlane. I tried this ICP with some modifications according to my env, and there were no downscales for 16 hours.
Another interesting string in the logs:
2023-04-18T00:00:20.039Z	DEBUG	controllers.IstioControlPlane.discovery	resource diff
{"name": "istiod-istio2", "namespace": "istio-system", "apiVersion": "apps/v1", "kind": "Deployment",
"patch": "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"exa_service\":\"ecp-inf-istio\"}}}}}"}

Could something be causing these periodic label changes?

@LuciferInLove you are genius, Sir, there is indeed label injector cronjob with schedule 0 */12 * * *, that job modifies istiod labels...
Just wonder if such a change could trigger rollout restart instead of full scale down?
Thank you for your time and help!

@vitalii-buchyn-exa no problem. Feel free to reach out.
We'll take a look at what is possible to do. You can try to change PodDisruptionBudget settings for now. Maybe the tips from here will come in handy as well:
https://github.com/kubernetes/kubernetes/issues/72231


Got it to compile on macOS but gets error at runtime.

How I got it to compile on Sonoma 14.6.1 (x86_64)

Installed the following packages: brew install glm molten-vk vulkan-sdk
Changed shaders/glslc to glslc in Makefile
Ran make, no errors yeah!
After compilation, ran install_name_tool -add_rpath /usr/local/Caskroom/vulkan-sdk/<IP_ADDRESS>/macOS/lib ./hacker-league to get it to find libvulkan.1.dylib (this also worked, but was temporary): export DYLD_LIBRARY_PATH=/usr/local/Caskroom/vulkan-sdk/<IP_ADDRESS>/macOS/lib:$DYLD_LIBRARY_PATH

On execution I get this error: 2024-09-05 11:01:16.420 hacker-league[69356:45936312] *** Assertion failure in -[NSMenu _setMenuName:], NSMenu.m:777. Guessing there's some kind of UI init issue happening, not sure. Let me know if you need more information.

Hmm, I don't have a mac, so it's hard for me to reproduce and debug. Maybe there are some people on the discord that also have a mac. Please share when you have solved it - that would really help us :)


Upgrade from V3.3 to V3.4 - Docker images missing

Describe the bug
We want to upgrade Openslides from version 3.3 to 3.4. When we first set up openslides we used the docker image for it. But now the docker images don't seem to exist anymore. We tried to export the data from 3.3 but the export feature was added in 3.4 and is not available in 3.3.
How could we upgrade from version 3.3 to 3.4 without losing data? Or how could we export the data on 3.3?
In the end we want to move to version 4.0.
System information

OpenSlides version: 3.3
OS: Ubuntu 20.04.6 LTS

If the problem still persists, please reopen a new issue. OS3 is no longer maintained.


Move historical documentation pages into a new documentation book

Description
This PR consists of moving various sections in the user guide and dev guide that are titled "Historical: something" and move their files into docs/historical
Changed Behaviour
This PR doesn't change any behaviour of user workflows or functionality.
Fixes
Fixes #3138
Type of change

Code maintenance/cleanup

Noted, @benclifford, thank you for clarifications! I made according changes.
Additionally, I've removed all references to the deleted documents that were previously causing errors. Moving forward, I'll ensure to run tests locally before making any further pushes. Apologies for the inconvenience

Hey I decided to close, because I made too many commits, sorry! Hope others can get PRs merged!


Help needed with default setup entities

Hi,  (sorry for basic question but I guess I need help)
this addon has provided to me lots of entities and I am not sure which one are the proper to use for "energy dashboard" .
I went through all issues and searched for energy dashboard and try to see what other people used in their setup.  (I think  found one part of screenshot for electric grid)
I have put something together but frankly I am not sure. Can you share / help me which one to set ? ( JFYI - I got my solars up and running few hours ago and am excited but would need help to set up it correctly).
Thank your for your help.

@marekchowaniok Hello, any luck with the integration? I'm facing the same issue. Unfortunately, I did not find any explanation on what each sensor is for, so it is very hard for us beginners to do the HA Energy Dashboard integration. I was onyl able to configure the Grid consumption by creating this helper template:
{% set l1 = states('sensor.victron_system_grid_l1') | float %}
{% set l2 = states('sensor.victron_system_grid_l2') | float %}
{% set l3 = states('sensor.victron_system_grid_l3') | float %}
{{ (l1 + l2 + l3 ) | float }}


[Enhancement] (nereids)implement showStagesCommand in nereids

showStages command is supported in legacy planner but not in nereids(new doris fe planner). you need implement the following showStages command in nereids:
unsupportedshowStagesStatement
SHOW STAGES

@LiBinfeng-01 @starocean999 I will pick this up.

@LiBinfeng-01 will pick this


[ QUESTION ] Should filename and directory columns be treated equally?

I mean, the filesystem does not mantain the directory size(usually 4KiB) See this question.
For example: Selecting information about the filenames and the sizes
SELECT NAME, SIZE FROM /HOME

When printing directories, the size will not be right, because, the directory is just a simple link to an array of files. So, the information is not correct.
What could we do?

With the introduction of ABSOLUTE_PATH ISSUE and RELATIVE_PATH ISSUE there is no way to threat they as equal.
And, this issue is going to be closed!


azureml dependencies needed in environment

A user needs to include azureml dependencies in their environment (see bold below). They should not need to do this - it is different to the side-car method used on AmlCompute.
name: pytorch-env
channels:
- defaults
- pytorch
dependencies:
- python=3.7.0
- pytorch
- torchvision
- pip:
- mlflow
- azureml-mlflow
- azureml-core
- azureml-dataprep[pandas,fuse]

closing the issue - the issue is addressed with common runtime integration


Types cannot be unquoted to call static methods

Aim
Given
mod types {
    use std::meta::type_of;

    struct Foo {
        x: Field,
    }

    impl Foo {
        fn static() -> Field {
            3
        }
    }

    comptime fn add_static_call(m: Module) -> Quoted {
        // If I want this to be resolved in AMod, I need to use the type, since the struct name is just Foo and I need types::Foo
        let type_of_foo =quote { Foo }.as_type();
        quote {
            fn call_static() -> Field{
                $type_of_foo::static()
            }
        }
    }
}

use types::add_static_call;

#[add_static_call]
mod AMod {}

Expected Behavior
The code above should compile, so that Foo can be used in AMod even if it was resolved in its own mod.
Bug
The compiler fails to parse the macro token stream
To Reproduce

Workaround
None
Workaround Description
No response
Additional Context
No response
Project Impact
Blocker
Blocker Context
No response
Nargo Version
No response
NoirJS Version
No response
Proving Backend Tooling & Version
No response
Would you like to submit a PR for this Issue?
None
Support Needs
No response

This can be solved with a trick Jake told me today (I needed to do something similar and I didn't want to use a fully qualified name):
mod types {
    struct Foo {
        x: Field,
    }

    impl Foo {
        fn static() -> Field {
            3
        }
    }

    comptime pub fn add_static_call(m: Module) -> Quoted {
        let static_call = Foo::static;
        quote {
            fn call_static() -> Field {
                $static_call()
            }
        }
    }
}

use types::add_static_call;

#[add_static_call]
mod AMod {}

I also tried doing this but it didn't work:
let foo = std::meta::type_of(Foo { x: 1 });
quote {
  fn call_static() -> Field {
    $foo::static()
  }
}

The reason is that $foo in that parsing position must be a Path, not a Type.
Unrelated, but I'm thinking it would be nice to be able to somehow convert a type to a Type. We can do that with std::meta::type_of, but we have to pass an actual instance.
But, we can also do this:
struct Foo {
    x: Field
}

comptime fn get_type<T>() -> Type {
    let exp: T = std::mem::zeroed();
    std::meta::type_of(exp)
}

fn main() {
    comptime
    {
        let foo = get_type::<Foo>();
        println(foo);
    }
}

This can be solved with a trick Jake told me today (I needed to do something similar and I didn't want to use a fully qualified name):

This is true, I'm assuming @Thunkar's full example could be using a non-statically known type from user code somewhere so we'd still need this feature to do:
comptime fn add_static_call(m: Module, t: Type) -> Quoted {
        quote {
            fn call_static() -> Field{
                $t::static()
            }
        }
    }

So I'm working on this issue since we should also support this usecase

I don't know how you are going to implement this, but some weeks ago I wanted to implement being able to do Field::method(), i32::method(), etc. I just pushed the branch I had. I changed the parsing a bit to allow type :: name ( .. ) to be parsed, but only for primitive types. I guess allowing that for interned types would be similar, and it might enable being able to call primitive "static" methods (though in my PR it didn't work because primitive methods are assumed to have a self argument, I think)


UX: send arrow becomes a large button

I have checked the following:

[X] I've searched existing issues and found nothing related to my issue.

Describe the feature you want to add
What
Please make the send button large and obvious so it's easy to see and click.
Why
Your most common actions should be easy to accomplish. Fitz law states the distance and size of a button dictates it's ease of clickablity.
AC

Send arrow is an actual button
Button is a different color
Button is large

Mockups or Images of the feature
Consider the Gmail new icon where it stands out and is large

https://github.com/usebruno/bruno/pull/2504#issuecomment-2268992909

I agree that some folks might prefer a big visible button to perform this action.
However, the current one also looks aesthetically pleasing and is minimalist.
I am open to support an option to toggle this.
I would suggest something that can be in Preferences -> Appearances -> Send Icon that the user can select.


Any chance of an apk to test?

Sorry not really an issue I know.

Good idea, ping @Kmaschta

Sure, I'll see to deliver an apk. :+1:


Plugin failure: TypeError: Cannot read property 'temp' of undefined

Describe The Bug:
Getting error logs in the homebridge panel and I am unable to control the device.
Device: Electrolux PureA9 PA91-404GY
To Reproduce:
Added login information and it has worked for long enough to add the device, but it fails on every polling interval.
Expected behavior:
No error logs and working connectivity.
Logs:
[19/04/2021, 08:15:04] [ElectroluxWellbeing] Could not fetch appliances data
(node:28217) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'temp' of undefined
    at /usr/lib/node_modules/homebridge-electrolux-wellbeing/src/index.ts:185:72
    at Array.map (<anonymous>)
    at ElectroluxWellbeingPlatform.updateValues (/usr/lib/node_modules/homebridge-electrolux-wellbeing/src/index.ts:179:22)
    at ElectroluxWellbeingPlatform.checkAppliances (/usr/lib/node_modules/homebridge-electrolux-wellbeing/src/index.ts:101:10)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
(node:28217) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 41651)

(node:28217) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 41651)

Plugin Config:
Show your Homebridge config.json here, remove any sensitive information.
 {
            "username"<EMAIL_ADDRESS>            "password": "the_pass_word",
            "pollTime": 30,
            "platform": "ElectroluxWellbeing"
}

Screenshots:

Environment:

Plugin Version: v0.1.0
Homebridge Version: v1.3.4
Node.js Version: v14.16.1
NPM Version: v6.14.12
Operating System: Raspbian

No update here?
Might be that my unit is not tested.
A check might be needed for values, setting a default before handing the result to HB.
https://github.com/baboons/homebridge-electrolux-wellbeing/blob/b41d7770c435c4a792151ba78cefcf728e00eec6/src/index.ts#L225

Any update on this?

Anyone have any fix for this? The plugin was working fine for a while and now this issue is affecting me and causing homebridge to restart every minute

I’ve been seeing issues like this, it seems to be that the remote server logs you out after a while and then the plugin fails, rather than logs back in.
I’ve just tried to see if I can get it to relogions when this happens, but it’s slow to test changes, as I have to wait for the connection to timeout


Only deal with plugins that successfully initialized

Plugins can fail to load due to whatever dependencies may be in their code (ex: missing file, dependency on another plugin, etc). If a plugin fails to load, don't add it to the main loop.
Types of changes

[x] New feature (non-breaking change which adds functionality)

Fixes #489


Target netstandard1.1 for ReactiveUI.Testing

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Fixes #1340.
What is the current behavior? (You can also link to an open issue here)
ReactiveUI.Testing targets a whole bunch of platforms.
What is the new behavior (if this is a feature change)?
There is no platform-specific code, so just target netstandard 1.1.
Does this PR introduce a breaking change?
No.
Please check if the PR fulfills these requirements

[X] The commit follows our guidelines: https://github.com/reactiveui/reactiveui#contribute
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Other information:

@olevett good point - I hadn't noticed that Microsoft.Reactive.Testing is now netstandard 1.3. I've updated that.
Then I found that the ReactiveUI.Tests project was failing to build because it can't reference ReactiveUI.Testing anymore due to it being netstandard. I believe this means it needs to target net46 minimum, but when I try that, I run into a whole different problem. All tests are failing with:
Message: System.IO.FileLoadException : Could not load file or assembly 'System.Reactive.PlatformServices, Version=3.0.1000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Ugh, this tooling will be the death of me...

I think there's likely to be a point on that where we need to upgrade xunit as well, and that breaks some of the threading stuff that is depended on... Gotta love change!


ORM PersistenceJS

Hi, you know persistenceJS ?  Is the best ORM Library for javascript, would be very interesting to add it to the project, I can help with this ?
https://github.com/coresmart/persistencejs

It's an interesting concept, but I don't think it fits well into ngCordova. PersistenceJS creates its own wrapper for the SQLite plugin, which directly collides with the purpose of ngcordova. You should probably use this as a supplement to ngCordova.


Fix weathergov api precipitationLastHour

Pull request fixes small big in weathergov api format mismatch #3124

Codecov Report

Merging #3125 (562efc0) into develop (e985e99) will increase coverage by 0.06%.
The diff coverage is 0.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@             Coverage Diff             @@
##           develop    #3125      +/-   ##
===========================================
+ Coverage    25.55%   25.61%   +0.06%
===========================================
  Files           53       53
  Lines        11464    11464
===========================================
+ Hits          2930     2937       +7
+ Misses        8534     8527       -7

Impacted Files
Coverage Δ

modules/default/weather/providers/weathergov.js
0.00% <0.00%> (ø)

... and 1 file with indirect coverage changes

@JasonStieber can you make the requested changes?

pinging @JasonStieber in the hope he picks this PR up again

Looking into the data getting from the weather gov api there is still a property precipitationLastHour:

@rejas So we could implement a logical change to use precipitationLast3Hours if precipitationLastHour is null or close this PR.

@rejas So we could implement a logical change to use precipitationLast3Hours if precipitationLastHour is null or close this PR.

I would vote for the logical change. And you and @sdetweil ?

I would vote for the logical change.

I implemented this now.


Can't change log level and use slack-machine logger

Hey, first of all thanks a lot for your great work on the project!
I carefully read the docs and tried to:

change the log level to DEBUG by setting LOGLEVEL=DEBUG  environment variable
use loggers provided by Slack Machine in my handler functions.

None of it works:

whatever I do application prints only INFO and ERROR messages from slack-machine.
logger injected to my message handler prints only ERROR messages.

Am I doing something wrong?
❯ echo $LOGLEVEL
DEBUG

handler:
    @listen_to(regex=r"(password.*reset)|(reset.*password)")
    async def question(self, msg, logger):
        print(logger.level) # prints 0 (NOT_SET)
        logger.info("my_handler invoked!") # not printed
        logger.debug("debug my_handler invoked!") # not printed
        logger.error("error my_handler invoked!") # OK

app run:
❯ slack-machine
2023-03-01 11:06:06 [info     ] Initializing Slack Machine...
2023-03-01 11:06:06 [info     ] Loading settings...
2023-03-01 11:06:06 [info     ] Settings loaded!
0
2023-03-01T10:06:29.070461Z [error    ] error my_handler invoked!      [my_bot.plugins.password_reset:PasswordReset.question] filename=password_reset.py func_name=question lineno=14 user_id=<redacted> user_name=<redacted>

I didn't read your initial report properly. You made a mistake by setting the LOGLEVEL environment variable. The way to set the log level is to set LOGLEVEL in your local_settings.py or to set the SM_LOGLEVEL environment variable.


how to listen pump dot fun token

hey guys any ideas about how to detect when pump.fun token can be trade on raydium?  i dont know why the bot cannot get the information.
i know i need to fix my listener...

Here is bot it resolve every thing.
https://github.com/Diveinprogramming/raydium-pumpfun-fastest-sniper-bot
if you face any issue reach out to me.
Take profits and thanks me later.

Here is bot it resolve every thing.
https://github.com/Diveinprogramming/raydium-pumpfun-fastest-sniper-bot
if you face any issue reach out to me. Take profits and thanks me later.

This repo is a scam and takes your coins. Be careful!


In overflow menu, keyboard actions on overflow menu options is not working.

Accessibility issue in an open overflow menu: [Title]:  keyboard actions on overflow menu options is not working with keyboard.
Environment
Chrome 70
macOS Mojave
Detailed description
In an expanded overflow menu, the options have different operations like redirecting to a different page or opening a new modal or performing a function on click of a mouse or by pressing enter. These features are working with the mouse but not with a keyboard(like pressing enter overflow menu closes).
Steps to reproduce the issue
Here is a codepen for reference
https://codepen.io/anon/pen/pGGbyR

CC @emyarod

this seems to be a duplicate of https://github.com/IBM/carbon-components/issues/1470 if I'm not mistaken


Added GitHub login (OAuth2)

Closes #329
Checklist before merging

[x] I added an appropriate entry to CHANGELOG.md

See #246
Important: some changes to the backend need to be discussed to properly implement this.
Fractal-server endpoint /auth/github/authorize is currently used to perform a login from the command line (see example).
In that case the user opens a browser and then is redirected back to fractal-server URL http://<IP_ADDRESS>:8000/auth/github/callback.
The flow from fractal-web has to be a bit different, because the browser is already opened and the user has to be redirected to a fractal-web URL (i.e. on port 5173).
This PR provides a first attempt to have a login with the described flow, but it needs the following:

a new GitHub OAuth2 client having http://localhost:5173/auth/login/oauth2 as callback URL
a modified fractal-server that sends to GitHub that callback URL instead of  http://<IP_ADDRESS>:8000/auth/github/callback

Of course this breaks the command line login, so a proper strategy to handle dynamic callback URLs should be defined. Notice that GitHub allows only one callback URL per client, so 2 different client id and secrets have to be generated to handle both the cases. Maybe we have to define 2 different endpoints to support this using fastapi users library.
I've made this working adding the following parameter here:
https://github.com/fractal-analytics-platform/fractal-server/blob/263a91d68602beac0e230862a8dcf5fbf994ffb4/fractal_server/app/security/__init__.py#L350
redirect_url='http://localhost:5173/auth/login/oauth2'

Closes #329
See https://github.com/fractal-analytics-platform/fractal-web/issues/329#issuecomment-1808267271
I've added some specific e2e tests for the session expired cases, because I had to fix some unexpected errors caused by Svelte invalidation mechanism that makes the app behaving differently when the page is reloaded, a navigation link is clicked or something is loaded using AJAX.

Thanks Sonia!
I only added a small remark (just a sanity check about the PUBLIC_OAUTH_PROVIDER variable). Other than that, I'd say let's merge this PR.
We can then have some tests of how it looks like in real life, and then address other points in follow-up PRs. One that likely we'll need to address is how to handle a user who was not already in the DB (which is partly to be handled on fractal-server, and partly here e.g. by showing a warning message saying "your user is not verified, please ask an admin at<EMAIL_ADDRESS>or something similar).


[question] cabal build will fail

I cabal update && cabal build but get many errors. What something wrong I did?
Configuring library for prettyprinter-1.7.1..
Preprocessing library for prettyprinter-1.7.1..
Building library for prettyprinter-1.7.1..
[ 1 of 28] Compiling Prettyprinter.Render.Util.Panic ( src/Prettyprinter/Render/Util/Panic.hs, dist/build/Prettyprinter/Render/Util/Panic.o, dist/build/Prettyprinter/Render/Util/Panic.dyn_o )

src/Prettyprinter/Render/Util/Panic.hs:1:8: error:
    Could not find module ‘Prelude’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
1 | module Prettyprinter.Render.Util.Panic (
  |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Failed to build profunctors-5.6.2.
Build log (
/home/wzy/.cabal/logs/ghc-9.0.2/profunctors-5.6.2-4f196a09220f19e6575acdf6837a75d6a824da19f91db504900c23673f3f7d0c.log
):
Configuring library for profunctors-5.6.2..
Preprocessing library for profunctors-5.6.2..
Building library for profunctors-5.6.2..
[ 1 of 16] Compiling Data.Profunctor.Unsafe ( src/Data/Profunctor/Unsafe.hs, dist/build/Data/Profunctor/Unsafe.o, dist/build/Data/Profunctor/Unsafe.dyn_o )

src/Data/Profunctor/Unsafe.hs:33:1: error:
    Could not find module ‘Control.Arrow’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
33 | import Control.Arrow
   | ^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:34:1: error:
    Could not find module ‘Control.Category’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
34 | import Control.Category
   | ^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:35:1: error:
    Could not find module ‘Control.Comonad’
    There are files missing in the ‘comonad-5.0.8’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
35 | import Control.Comonad (Cokleisli(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:36:1: error:
    Could not find module ‘Control.Monad’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
36 | import Control.Monad (liftM)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:37:1: error:
    Could not find module ‘Data.Bifunctor.Biff’
    There are files missing in the ‘bifunctors-5.5.15’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
37 | import Data.Bifunctor.Biff (Biff(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:38:1: error:
    Could not find module ‘Data.Bifunctor.Clown’
    There are files missing in the ‘bifunctors-5.5.15’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
38 | import Data.Bifunctor.Clown (Clown(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:39:1: error:
    Could not find module ‘Data.Bifunctor.Joker’
    There are files missing in the ‘bifunctors-5.5.15’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
39 | import Data.Bifunctor.Joker (Joker(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:40:1: error:
    Could not find module ‘Data.Bifunctor.Product’
    There are files missing in the ‘bifunctors-5.5.15’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
40 | import Data.Bifunctor.Product (Product(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:41:1: error:
    Could not find module ‘Data.Bifunctor.Sum’
    There are files missing in the ‘bifunctors-5.5.15’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
41 | import Data.Bifunctor.Sum (Sum(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:42:1: error:
    Could not find module ‘Data.Bifunctor.Tannen’
    There are files missing in the ‘bifunctors-5.5.15’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
42 | import Data.Bifunctor.Tannen (Tannen(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:43:1: error:
    Could not find module ‘Data.Coerce’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
43 | import Data.Coerce (Coercible, coerce)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:47:1: error:
    Could not find module ‘Data.Functor.Contravariant’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
47 | import Data.Functor.Contravariant (Contravariant(..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:48:1: error:
    Could not find module ‘Data.Tagged’
    There are files missing in the ‘tagged-0.8.7’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
48 | import Data.Tagged
   | ^^^^^^^^^^^^^^^^^^

src/Data/Profunctor/Unsafe.hs:49:1: error:
    Could not find module ‘Prelude’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
49 | import Prelude hiding (id,(.))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Failed to build selective-0.5.
Build log (
/home/wzy/.cabal/logs/ghc-9.0.2/selective-0.5-93ece29073a8a73cedec6bff298bb044ca66c4dba72510e8a1b3f0cdf1932032.log
):
Configuring library for selective-0.5..
Preprocessing library for selective-0.5..
Building library for selective-0.5..
[1 of 5] Compiling Control.Selective ( src/Control/Selective.hs, dist/build/Control/Selective.o, dist/build/Control/Selective.dyn_o )

src/Control/Selective.hs:18:8: error:
    Could not find module ‘Prelude’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
18 | module Control.Selective (
   |        ^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:33:1: error:
    Could not find module ‘Control.Applicative’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
33 | import Control.Applicative
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:34:1: error:
    Could not find module ‘Control.Applicative.Lift’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
34 | import Control.Applicative.Lift
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:35:1: error:
    Could not find module ‘Control.Arrow’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
35 | import Control.Arrow
   | ^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:36:1: error:
    Could not find module ‘Control.Monad.ST’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
36 | import Control.Monad.ST
   | ^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:37:1: error:
    Could not find module ‘Control.Monad.Trans.Cont’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
37 | import Control.Monad.Trans.Cont
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:38:1: error:
    Could not find module ‘Control.Monad.Trans.Except’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
38 | import Control.Monad.Trans.Except
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:39:1: error:
    Could not find module ‘Control.Monad.Trans.Identity’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
39 | import Control.Monad.Trans.Identity
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:40:1: error:
    Could not find module ‘Control.Monad.Trans.Maybe’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
40 | import Control.Monad.Trans.Maybe
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:41:1: error:
    Could not find module ‘Control.Monad.Trans.Reader’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
41 | import Control.Monad.Trans.Reader
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:42:1: error:
    Could not find module ‘Control.Monad.Trans.RWS’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
42 | import Control.Monad.Trans.RWS
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:43:1: error:
    Could not find module ‘Control.Monad.Trans.State’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
43 | import Control.Monad.Trans.State
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:44:1: error:
    Could not find module ‘Control.Monad.Trans.Writer’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
44 | import Control.Monad.Trans.Writer
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:45:1: error:
    Could not find module ‘Data.Bool’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
45 | import Data.Bool
   | ^^^^^^^^^^^^^^^^

src/Control/Selective.hs:46:1: error:
    Could not find module ‘Data.Function’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
46 | import Data.Function
   | ^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:47:1: error:
    Could not find module ‘Data.Functor.Compose’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
47 | import Data.Functor.Compose
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:48:1: error:
    Could not find module ‘Data.Functor.Identity’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
48 | import Data.Functor.Identity
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:49:1: error:
    Could not find module ‘Data.Functor.Product’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
49 | import Data.Functor.Product
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:50:1: error:
    Could not find module ‘Data.List.NonEmpty’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
50 | import Data.List.NonEmpty
   | ^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:51:1: error:
    Could not find module ‘Data.Proxy’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
51 | import Data.Proxy
   | ^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:52:1: error:
    Could not find module ‘Data.Semigroup’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
52 | import Data.Semigroup (Semigroup (..))
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:53:1: error:
    Could not find module ‘GHC.Conc’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
53 | import GHC.Conc (STM)
   | ^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:55:1: error:
    Could not find module ‘Control.Monad.Trans.RWS.Strict’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
55 | import qualified Control.Monad.Trans.RWS.Strict    as S
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:56:1: error:
    Could not find module ‘Control.Monad.Trans.State.Strict’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
56 | import qualified Control.Monad.Trans.State.Strict  as S
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

src/Control/Selective.hs:57:1: error:
    Could not find module ‘Control.Monad.Trans.Writer.Strict’
    There are files missing in the ‘transformers-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
57 | import qualified Control.Monad.Trans.Writer.Strict as S
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Failed to build text-binary-<IP_ADDRESS>.
Build log (
/home/wzy/.cabal/logs/ghc-9.0.2/text-binary-<IP_ADDRESS>-d7b98b8f9552a075dba6338532eb9d72809a5dcb5edadf7579316dee72bc68be.log
):
Warning: text-binary.cabal:22:21: version operators used. To use version
operators the package needs to specify at least 'cabal-version: >= 1.8'.
Configuring text-binary-<IP_ADDRESS>...
Preprocessing library for text-binary-<IP_ADDRESS>..
Building library for text-binary-<IP_ADDRESS>..
[1 of 1] Compiling Data.Text.Binary ( Data/Text/Binary.hs, dist/build/Data/Text/Binary.o, dist/build/Data/Text/Binary.dyn_o )

Data/Text/Binary.hs:4:8: error:
    Could not find module ‘Prelude’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
4 | module Data.Text.Binary where
  |        ^^^^^^^^^^^^^^^^

Failed to build vector-binary-instances-<IP_ADDRESS>.
Build log (
/home/wzy/.cabal/logs/ghc-9.0.2/vector-binary-instances-<IP_ADDRESS>-cf55e548b36c66b2a409175330be785ae525d1eb77c03e168c400883caccd92c.log
):
Configuring library for vector-binary-instances-<IP_ADDRESS>..
Preprocessing library for vector-binary-instances-<IP_ADDRESS>..
Building library for vector-binary-instances-<IP_ADDRESS>..
[1 of 1] Compiling Data.Vector.Binary ( Data/Vector/Binary.hs, dist/build/Data/Vector/Binary.o, dist/build/Data/Vector/Binary.dyn_o )

Data/Vector/Binary.hs:38:8: error:
    Could not find module ‘Prelude’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
38 | module Data.Vector.Binary (
   |        ^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:45:1: error:
    Could not find module ‘Data.Binary’
    There are files missing in the ‘binary-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
45 | import Data.Binary
   | ^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:47:1: error:
    Could not find module ‘Data.Vector.Generic’
    There are files missing in the ‘vector-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
47 | import qualified Data.Vector.Generic   as G
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:48:1: error:
    Could not find module ‘Data.Vector.Generic.Mutable’
    There are files missing in the ‘vector-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
48 | import qualified Data.Vector.Generic.Mutable as GM
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:49:1: error:
    Could not find module ‘Data.Vector.Unboxed’
    There are files missing in the ‘vector-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
49 | import qualified Data.Vector.Unboxed   as U
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:50:1: error:
    Could not find module ‘Data.Vector.Storable’
    There are files missing in the ‘vector-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
50 | import qualified Data.Vector.Storable  as S
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:51:1: error:
    Could not find module ‘Data.Vector.Primitive’
    There are files missing in the ‘vector-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
51 | import qualified Data.Vector.Primitive as P
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:52:1: error:
    Could not find module ‘Data.Vector’
    There are files missing in the ‘vector-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
52 | import Data.Vector (Vector)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:53:1: error:
    Could not find module ‘System.IO.Unsafe’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
53 | import System.IO.Unsafe
   | ^^^^^^^^^^^^^^^^^^^^^^^

Data/Vector/Binary.hs:55:1: error:
    Could not find module ‘Foreign.Storable’
    There are files missing in the ‘base-<IP_ADDRESS>’ package,
    try running 'ghc-pkg check'.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
55 | import Foreign.Storable (Storable)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
cabal: Failed to build aeson-<IP_ADDRESS> (which is required by exe:nvfetcher from
nvfetcher-<IP_ADDRESS>). See the build log above for details.

It seems that you are missing GHC boot libraries. How did you set up your Haskell developing environment? Are you using Haksell packages from Arch Linux?

Are you using Haksell packages from Arch Linux?

Right, I try to package this software to Archlinux.

Haskell packages in Arch Linux repo are linked dynamically only, so you have to tell cabal to use dynamic libraries:
cabal configure --disable-library-vanilla --enable-shared --enable-executable-dynamic --ghc-options=-dynamic

Then you will be able to build nvfetcher from source. However, this is for development purpose only, while creating Haskell packages for Arch Linux doesn't rely on cabal - you may want to take a look at https://wiki.archlinux.org/title/haskell_package_guidelines. Moreoever, you will need to package nix-prefetch-git and nix-prefetch-docker as runtime dependencies of nvfetcher.

Thanks!

https://archlinux.org/packages/extra/x86_64/haskell-aeson/'s version is <IP_ADDRESS>, but nvfetcher need >= 1.5.6 && < 2.1

We could update the bounds of aeson in nvfetcher to see if it builds with the new aeson.

We could update the bounds of aeson in nvfetcher to see if it builds with the new aeson.

I have tested it can work:
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=nvfetcher#n21
sed -i 's/&& <2\.1//' nvfetcher.cabal


HALON-479: Wait for drive to be OK before finishing reset

Created by: nc6
Turns out that when we reset a drive we need to wait for it to be visible to the OS.

Closing as an obsolete


[MRG] Rename transformer_ to components_

Fixes #196
Also renamed some related methods for consistency

I don't think I forgot anything. If CI passes we can merge


Support specifying the number of lines scrolled by the mouse

Is your feature request related to a problem? Please describe.
No, it would be a feature to specify the lines that will be skipped when using the mouse scroll
Considering that if we open a huge text file, scrolling using the mouse scroll that currently only skips one line at a time is tiring
Describe the solution you'd like
I thought of it more or less like this:
var tv = new TextView()
{
    // ...
    VerticalLinesToScroll = 5, // Anyway, any number, the default is 1, as it is currently
    HorizontalLinesToScroll = 3 // Anyway, any number, the default is 1, as it is currently, but in this case, the number would be to use with the command Shift + Mouse Scroll, which comes by default to scroll horizontally in the TextView
};

Extra note: If the values are not specified, the values will be the same as those that come by default in a TextView
Extra Note 2: Hope I'm not bothering you with so many issues

This is great stuff.  Please don't stop helping make this library better!

HorizontalLinesToScroll = 3

I think you are meaning about HorizontalColumnsToScroll

If it is specifically for the mouse wheel scrolling only then its probably a good idea to put the word MouseWheel in the property name.  If it affects other stuff like clicking the down arrow on scrollbars then the name you suggested would be fine @BDisp.

I think it would also be awesome if the values could be made dynamic and be easily changeable after the widget is created.
This way, developers can implement use cases for additional scenarios such as being able to hold down modifier (or other) keys to scroll at different paces. (I.e. hold down CTRL to scroll 100 lines, SHIFT to scroll 10, etc.)

Any updates on this?

Created a pull request.


Holds onto obsolete type declarations

Using:

atom-typescript v6.0.2
typescript v1.5.3

It seems that sometimes my edited declaration files are not considered by the plug-in.
In one case, I had renamed a field, yet wherever I used the new name, the plug-in showed an error
saying that the types were incompatible, and suggesting that I change the name back to the old one.
(BTW, I grepped my code base, and the old field name was no longer present anywhere.)
I am constantly building via the command line at the same time, and tsc reported no errors.
Is it possible that the plug-in cached the results of parsing my declaration file?
Exiting atom completely seemed to clear the problem.

Is it possible that the plug-in cached the results of parsing my declaration file?

possible. Instead of completely exiting please use sync : https://github.com/TypeStrong/atom-typescript#sync

I had renamed a field,

Did you do this externally ... i.e. outside atom / atom-typescript ?

I definitely edited the field from within atom, as I don't use any other editor for my TypeScript projects.
However, I did rename the problematic file at the command line, as I wanted to change the case of the name, and the Mac OS file system preserves but doesn't distinguish case. Perhaps this was the cause? The name went from Person.d.ts to P to person.d.ts
I often perform file system tasks at the command line, as its faster.
I also run most git commands from the command line, or from the GitHub app.


Plane alloc preliminaries

To fix #1101 I'll need to rework Plane::data a bit.

@tdaede could you please give it a go on Windows?

Coverage increased (+0.6%) to 82.667% when pulling f2a47e5bb9a70addd6cfd866f6af54664dfaf1f7 on rust-av:plane_alloc_preliminaries into fbecf188d263b64c3b952b10cfe573f900533005 on xiph:master.


Discuss: 'Background'-based tests

In combination with human languages
Proposed: Each file contains only one 'story' set up as a cucumber Background. Each Scenario in it just sets a language for the test. We handle skipping or testing languages with cucumber tags.
'Story' here means one set of user data (has 3 children, lives in an apartment, lives out of state, etc.) Usually this might be called a 'scenario', but cucumber uses that term for specific functionality that is also part of this discussion.
Pros

More fine-grained developer control over languages for each 'story'

Cons

See questions

Questions

Would a developer have to list all these languages in each test? If so, if a new language gets added, it would need to be added manually to every test as opposed to being automatically generated. If not, what is the advantage of this method over the current method? If it's to do with adding tags, tags can be added by code that auto-generates the language tests as well.
Developers have expressed a desire to give some set of variables the same values for a few different 'stories', each of which would vary some specific variable values. Would they still be able to do that with this setup?

I think Background might be better to keep with its current functionality - running some steps before each Scenario in a file.

The pre-release for the story table Background step is out. Currently for v3 on branch https://github.com/SuffolkLITLab/ALKiln/tree/75_background_table_v3. Here are some general instructions for trying it out:
To start with, we're trying pre-release version 3.3.0-background-table.1.
Get ready
Depends on the setup. Basically need to make sure that we can pull in a pre-release version of the lib.
If the repo has its own package.json, just update version of docassemble-cucumber to the pre-release version.
If the repo only has the workflow file, no package.json:

In the workflow file, add ALKILN_VERSION as input to the step that uses suffolkLITLab/ALKiln@releases/v3 along with the other secrets

           ALKILN_VERSION: "${{ version_goes_here }}"

Either put in the version you want inside the brackets or
Add ALKILN_VERSION GitHub secret with the value of the pre-release version you want and put secrets.ALKILN_VERSION inside the brackets

Write the tests
You'll need to know the id of the last page you want to get to for each Scenario.

To the beginning of your test file and add

Background:
  Given I always have this data:

Add the story table under there
In the first scenario, make sure to wait at the start to give the package module extra time to reload the server
In each Scenario, start by going to the right address
Add the step:

    And I get to "final question id" with the background data

I've rebased this to be on version 4 now, still leaving the old branch in case there's still something useful.
Can't make a pre-release personally, but I'll personally try to test it a little bit, and if I don't run into any issues, or confusing parts, I'll make a PR with this code.


feat!: add compute plan builder

Summary
TO BE REVIEW COMMIT BY COMMIT
First commit:

move the schemas file into the strategy folder. This schema file is used to implement the scheme of the different Shared stated of each strategy. With the introduction of the compute plan builder, it does not makes sense to have the file at the root of the lib.

Second commit:

Create a ComputePlanBuilder object to be inherited for every experiment to be run with substrafl.
An inheritance on Strategy base class
Rename load and save to load_local_state and save_local_state to improve understanding.
Rename build_graph to build_compute_plan

Notes
Please check if the PR fulfills these requirements

[ ] If the feature has an impact on the user experience, the changelog has been updated
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)
[ ] The commit message follows the conventional commit specification

End to end tests: :hourglass_flowing_sand: STARTING

@SdgJlbl I got a circular import error due to the move to schemas in into strategy... I don't know why I'm only getting the error now, but the only solution I found is the one describe here (and on several other forum). Wht do you think about it ? https://adamj.eu/tech/2021/05/13/python-type-hints-how-to-fix-circular-imports/

@SdgJlbl I got a circular import error due to the move to schemas in into strategy... I don't know why I'm only getting the error now, but the only solution I found is the one describe here (and on several other forum). Wht do you think about it ? https://adamj.eu/tech/2021/05/13/python-type-hints-how-to-fix-circular-imports/

Yes, if the issue is only linked to type checking, it's the way to go.

/e2e --tests substrafl --benchmarks camelyon

End to end tests: :hourglass_flowing_sand: STARTING


DateTimeRange  add close-on-select props

This function solves the problem (这个功能解决的问题)
I see close-on-select in the dateRange type, but DateTimeRange does not support it
Expected API (期望的 API)
close-on-select	boolean  Whether to close the panel automatically after the user selects a time range

can confirm not working with yearrange too

MonthRange、QuarterRange、YearRange neither support, but this prop in the document

This issue does not have any recent activity. If you are still experiencing similar problems, open a new error, including a minimal copy of the problem


atom --test not showing exceptions, simply exiting with no message

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
When running atom --test spec and there is a problem encountered that will not allow the tests to start, this is the result:
[master][~/Source/atom/keybinding-resolver] atom --test spec
Error Downloading Update: Could not get code signature for running application
[master][~/Source/atom/keybinding-resolver][1]

It turned out that the problem was that I had forgotten to run apm install on the repository before attempting to run the tests. When I finally attempted to run the tests in the GUI, I was able to find this in the JavaScript Console
Error: Cannot find module 'etch'
  at Module._resolveFilename (module.js:470:15)
  at Module._resolveFilename (/Applications/Atom.app/Contents/Resources/electron.asar/common/reset-search-paths.js:35:12)
  ...

This led me to the solution of running apm install. We should output any exception like this at the command line to help people figure out why things aren't working.
Steps to Reproduce

Execute git clone https://github.com/atom/keybinding-resolver.git ~/keybinding-resolver-test
cd ~/keybinding-resolver-test
atom --test spec

Expected behavior: An exception message (or even better a real error message explaining the problem)
Actual behavior: Program simply exits with an unhelpful error code
Versions
Atom    : 1.23.0-dev-dec47761f
Electron: 1.6.14
Chrome  : 56.0.2924.87
Node    : 7.4.0
apm  1.18.8
npm  3.10.10
node 6.9.5 x64
python 2.7.10
git 2.14.2

Confirming that I experience the same problem on Ubuntu 17.04 (as well as macOS 10.12).
Worth noting that the behavior is (naturally) the same for apm test.
My immediate guess is that something has changed/regressed in Electron, and that we inherited this via a version bump. It could also be something else — trying to investigate further now.

This regressed due to https://github.com/atom/atom/pull/15148. The temporary workaround is to use the flag --enable-electron-logging. The proper fix involves setting the environment variable ENABLE_ELECTRON_LOGGING when the user is running tests. Exactly where that line of code needs to be introduced is unknown to me at this point in time, but likely not in atom.sh since this also needs to apply to apm test.

Came here to file this bug only to find it was already filed for me 😉.
For anyone coming to this, if you run the specs from within an Atom window the developer tools should pop open with the error that would normally be printed but is silenced due to this bug.

The supposed "proper fix" suggested by @thomasjo will not be sufficient, because currently when enable-electron-logging is enabled, the test results are not shown at all, and the log output is couched inside a lot of useless noise.

Closing this as it should be fixed by #18863, we can reopen later if this turns out to be wrong.


SKIP_CHROMIUM_DOWNLOAD doesn't seem to skip chromium

Currently behind a corporate proxy and it doesn't seem to skip the chromium download even when I've specified the option
Expected behavior
I'm running SKIP_CHROMIUM_DOWNLOAD=true npm install taiko but it doesn't seem to skip the chromium download.
I've tried it the following as well:
export SKIP_CHROMIUM_DOWNLOAD=true
npm install taiko

Actual behavior

ERROR: Failed to download Chromium r594312! Set "SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
{ Error: read ECONNRESET
    at _errnoException (util.js:1022:11)
    at TLSWrap.onread (net.js:615:25) code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }

Versions
<EMAIL_ADDRESS><EMAIL_ADDRESS>

@honsq90 Thanks for reporting, will be fixing it soon.

Discussion Updates
All features of Taiko may not be available in other versions/executable. Support for Taiko features will be provided for the default bundled chromium.

Tech Notes: The current issue will be addressed with the following aspects in mind
-skip chromium download
-provide different host to download chromium
-provide executable path in case chromium is not downloaded

Fix available in 8c4d653.
Following env variable can be used now:

SKIP_CHROMIUM_DOWNLOAD set to true to skip downloading chromium
DOWNLOAD_HOST set to host url of mirror to download chromium
EXECUTABLE_PATH set to launch browser from different location

Since these can be set as env variables, I think the names DOWNLOAD_HOST  and EXECUTABLE_PATH  should be more explicit like CHROMIUM_DOWNLOAD_HOST and CHROMIUM_ EXECUTABLE_PATH.
Thoughts?

I think the environment variables used within taiko can use a TAIKO_ prefix as well to avoid accidental name clash. It also makes it more traceable, IMO - i.e. knowing the source of an env variable.

Updated variable names as below,

SKIP_CHROMIUM_DOWNLOAD to TAIKO_SKIP_CHROMIUM_DOWNLOAD
DOWNLOAD_HOST to TAIKO_CHROMIUM_URL
EXECUTABLE_PATH to TAIKO_BROWSER_PATH

Docs has to be updated with this new provision.

Hi I am seeing the ERROR: Failed to download Chromium r662092! Set "TAIKO_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
i used the command sudo npm install -g taiko  can you please let me know the exact command

Hi I am seeing the ERROR: Failed to download Chromium r662092! Set "TAIKO_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
i used the command sudo npm install -g taiko can you please let me know the exact command

@anbalagank @poornadeem Can you tell which OS you are facing this issue. What command did you run to install Taiko?

Hi @nehashri I am trying it in ubuntu box,
Command: sudo npm install -g taiko
2ndone:
sudo npm install -g taiko -skip chromium download

Same issue here - Ubuntu 19.04, I am trying:
sudo npm install -g taiko

TAIKO_SKIP_CHROMIUM_DOWNLOAD is an env variable to be set before npm install like
TAIKO_SKIP_CHROMIUM_DOWNLOAD=true npm install taiko. Seems to work fine, do let us know if it does not.

sudo TAIKO_SKIP_CHROMIUM_DOWNLOAD=true npm install -g taiko

For me it got solved when I uninstalled and reinstalled node & npm  and then ran npm install -g taiko without sudo


Different results for demo picture

Hi,
Thank you for your excellent work on the Slice3D project! I am trying to run the demo picture of a shoe using the code provided with your pre-trained models. I followed the instructions in the "Setup" and "Testing on Single Image" sections of your README file. However, I obtained different results compared to what is shown in your paper using both the regression-based method and the generation-based method. Specifically, the shape appears different, and for the regression model, there are no holes inside the shoe. I attached screenshot of my results below.
Could you please let me know if there is anything I might be doing wrong? Thank you!

Hi @SheenaB2, thank you for your interest in Slice3D! Your produced results are correct.
About your question: why are the results different to the ones in paper?
Ans: I did some data cleaning when releasing the code and ckpts, making the training dataset smaller to the one used in our paper.  Less examples of shoes/boots could be the reason why our method failed in reconstructing the hole in regression-mode.
I also notice that our regression-based results are generally better than generation-based ones. The main advantage of generation-based slicing is that it can produce multiple results instead of deterministic ones.
About data cleaning: when slice a 3D model, we need the meshes in this 3D model to be [merged] (https://github.com/yizhiwang96/Slice3D/blob/d02c0b307c94eb113feb3a5d4f6543cfdaad4dbb/render_slices/blender_script_slices.py#L163C17-L163C18). However, Blender could fail in merging meshes for some 3D models from Objaverse, yielding broken structures. I did not include these 3D models in the training dataset.


Add bindings for g_signal_connect_object()

More details: https://valadoc.org/gobject-2.0/GLib.Signal.connect_object.html

I think we'll have to go via g_signal_connect_closure() and use g_closure_new_object(), or a similar approach.


reference for GO:0061760    antifungal innate immune response

GO:0061760    antifungal innate immune response
uses a reference which isn't a fungal paper.

Doesn't it describe a fungal pathogen of nematodes?

Oh yes, I am thinking about fungi and plants. I forgot they infect other things too!


PKG-1461 Update to 7.0.1

Changes:

Update to 7.0.1 - graphblas and mongoose are skipped, same as previous versions. spex is skipped on windows for lack of gmp (upstream does the same when building with VS)
Update about section
Update dependencies
Update build scripts to match new build scripts from upstream.

https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/v7.0.1
https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/v7.0.1#compilation-options

Here is a dependant ceres-solver 2.1.0 https://github.com/AnacondaRecipes/ceres-solver-feedstock/pull/2/ waiting for this suitesparse 7.0.1


[time series Echarts] legend margin is not work in time series Echarts and radar chart

Legend margin is not work in time series Echarts and radar chart
Expected results
change legend margin will change marge
Actual results
large number of  legend margin did not change marge
Screenshots

I can also confirm that the margin field does not seem to be applied.
If you have a very long list of series in the legend, it also overflows into the chart view.
Quite frustrating!

verified fixed.


Using lftools with QGIS Conda installation

I installed QGIS 3.28.1 under miniconda on an Ubuntu 22.10 system. My issue related to the lftools plugin. I get the following error on running QGIS:
Couldn't load plugin 'lftools' due to an error when calling its classFactory() method
ModuleNotFoundError: No module named 'PIL'
I added pillow on conda  in a separate environment, thinking that this might help, but still get the same error.
Any thoughts on how to fix this, or a workaround?
The traceback information I get when running QGIS follows:
Traceback (most recent call last):
File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 423, in _startPlugin
plugins[packageName] = package.classFactory(iface)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/init.py", line 38, in classFactory
from .lftools import LFToolsPlugin
File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/lftools.py", line 41, in
from .lftools_provider import LFToolsProvider
File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/lftools_provider.py", line 36, in
from lftools.processing_provider.Cart_inom2utm import Inom2utmGrid
File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/processing_provider/Cart_inom2utm.py", line 21, in
from lftools.geocapt.imgs import Imgs
File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins/lftools/geocapt/imgs.py", line 17, in
import math, os, base64, PIL.Image
File "/home/david/miniconda3/envs/qgis/share/qgis/python/qgis/utils.py", line 888, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'PIL'
Python version: 3.11.0 | packaged by conda-forge | (main, Oct 25 2022, 06:35:31) [GCC 10.4.0]
QGIS version: 3.28.1-Firenze Firenze, exported
Python Path:
/home/david/miniconda3/envs/qgis/share/qgis/python
/home/david/.local/share/QGIS/QGIS3/profiles/default/python
/home/david/.local/share/QGIS/QGIS3/profiles/default/python/plugins
/home/david/miniconda3/envs/qgis/share/qgis/python/plugins
/home/david/miniconda3/envs/qgis/share/qgis/python/plugins
/home/david/miniconda3/envs/qgis/share/qgis/python
/home/david
/home/david/miniconda3/envs/qgis/lib/python311.zip
/home/david/miniconda3/envs/qgis/lib/python3.11
/home/david/miniconda3/envs/qgis/lib/python3.11/lib-dynload
/home/david/miniconda3/envs/qgis/lib/python3.11/site-packages
/home/david/.local/share/QGIS/QGIS3/profiles/default/python

I think you need to install the module named 'PIL'.
Install the following package as follows:
pip install Pillow


Access children DataType or return-type in ScalarUDFImpl::invoke

Is your feature request related to a problem or challenge?
I am trying to create a scalar UDF, pack, which operates on struct arrays. It packs many array into a struct array each with a distinct name
pack(("a", arr1), ("b", arr2), ...) -> struct([("a", arr1.data_type), ("b", arr2.data_type), ...])
This has a data type dependent on the input type and nullability. In the method ScalarUDFImpl::invoke I want to return an a struct array with each field having the data type and nullability of the input, however the invoke function only gives the data type of the array not the nullability of the record batch or intermediate children expressions.
I have returned this type information from return_type_from_exprs, I just need to access this in the stateless scalar udf impl.
Describe the solution you'd like
I would like add a new ScalarUDFImpl::invoke_with_data_type (or invoke_with_return_type) method which is given both the evaluated children array (as previously) and also either the previously returned type (from return_type_from_exprs) or the arguments already passed to return_type_from_exprs which could be re-evaluated by invoke. I am open to either, I guess the former seems more performant.
Describe alternatives you've considered
No response
Additional context
I believe this would be a small non-breaking, change, that I am happy to contribute.
Any ideas?

You may want to implement ScalarUDFImpl::simplify which is given nullability info.
From there you'd return a  new  ScalarUDFImpl instance with the nullability information stored on a field.
When the information is already stored, subsequent simplify call (if any), should return original expression.
Let me know if it works for your case.
At some point we could probably rename simplify to specialize cc @alamb

The suggestion for using simplify is a good one 👍

This would be the (non-breaking) change I am after

@alamb or @findepi. It would be great to get a response here. Thanks

I just read this again (quickly)
I wonder if you could (re) compute the return type from the input types using the existing return_type method:
https://docs.rs/datafusion/latest/datafusion/logical_expr/trait.ScalarUDFImpl.html#tymethod.return_type

Thanks for your reply.
What do you think about the above proposed changed?
When, in the creation/execution path, do you mean re-compute the return_type? At invoke time?
I need this type-info when calling invoke (invoke is given a [ColumnarValue]) which is missing the necessarily type information to reconstruct the type and I cannot call return_type, taking [DataType] since [DataType] is not around at invoke time.

When, in the creation/execution path, do you mean re-compute the return_type? At invoke time?

Yes

invoke is given a [ColumnarValue]) which is missing the necessarily type information to reconstruct the type

I think you can get it from: https://docs.rs/datafusion/latest/datafusion/logical_expr/enum.ColumnarValue.html#method.data_type

I am sorry for my previous response it was not quite what I was asking for.
I think your proposed solution is?
fn invoke(&self, args: &[ColumnarValue]) -> DFResult<ColumnarValue> {
  let arg_types = args.iter().map(|cv| cv.data_type()).collect_vec();
  let return_type = self.return_type(&arg_types)?;
  ...
}

I was hoping to use the result of return_type_from_exprs(self, &[Expr], &dyn ExprSchema, &[DataType]) (in invoke) since I call expr.data_type_and_nullable(schema)? on the inputs to get the correct nullability.

I think your proposed solution is?

Yes that is what I was thinking

I was hoping to use the result of return_type_from_exprs(self, &[Expr], &dyn ExprSchema, &[DataType]) (in invoke) since I call expr.data_type_and_nullable(schema)? on the inputs to get the correct nullability.

Ah, I see -- the nullability isn't available from the DataTypes.
Most functions don't use the schema nullability to see if they can use a separate fast path but instead use the actual null counts  ont he arrays (e.g Array::null_count https://docs.rs/arrow/latest/arrow/array/trait.Array.html#method.null_count)
I wonder if that would work for your usecase?

Unfortunately not.

🤔  It seems like the more general thing to do would be to change return-type to return a Field rather than a DataType  -- maybe we could add something backwards compatible

Field has a name attribute, which function top level return value doesn't have (function result is unnamed).
Top level nullability seems reported by ScalarUDFImpl::is_nullable.
For complex types (lists, structs), they already involve fields, and those fields can be marked nullable or non-null.

It looks like is_nullable & return_type can be used to specific the datatype and nullability of the scalar udf.

It would be great to figure out a way to pass this info the invoke at execution time. Do you think any of the suggestion in the initial post would be a good idea?

It would be great to figure out a way to pass this nullability info (or return) the invoke at execution time. Do you think any of the suggestion in the initial post would be a good idea?

I worry about making too many different combinations of invoke / invoke_no_args / invoke_nullable, etc

It seems like the nullability wasn't fully considered for function since the is_nullable and return_type_from_exprs where added later, would be great have this info throughout the trait.

I agree nullability was not fully considered and having a proper nullability story would be good.
I think one thing that happened is that much of DataFusion's code assumes the input can be nullable and then switches to special case no-null code at runtime based on Array::null_count rather than relying on the schema
That made ensuring that the schema's nullability aligned wasn't as important and so there are a bunch of places which are fast and loose with it

Any chance we can make a decision as if this will be supported or not?

I think there is a compelling story to be made if there is no way to implement a feature with the current API
So what I would recommend is

Create a PR with an example showing what you are trying to do and any API change you want to propose

Then we can perhaps have a more specific conversation about the specific APIs and how else you might be able to solve your challenge.

https://github.com/spiraldb/datafusion/pull/1/files

Cool, https://github.com/spiraldb/datafusion/pull/1/files

Thanks!
Is there any way you can add an example of the pack UDF that shows how this API would be used?

Here is a example of the usage https://github.com/apache/datafusion/pull/13289

Here is the draft PR https://github.com/apache/datafusion/pull/13290

I think the objection is that by all understanding, simplification is an optional optimization step. The result of an expression shouldn't change based on whether it was run.
In your proposal, simplification is required for a correct result to be produced.

That's a good point, @gatesn!
What if we had similar (same?) operation, but with different guarantees (ie mandatory step). Could be called "prepare" for example. Would it help?
BTW, I would expect simplify() to be guaranteed. For example, if simplify replaces my (hypothetical) my_like_udf with eg regexp_like, i shouldn't need to provide implementation of the my_like_udf. If it's not supposed to be called, it would be dead code, useless impl burden. Does it make sense?

Yes that makes sense.
Perhaps some of the conflict comes from the fact that we're using DataFusions expression library without the LogicalPlan or any of the relational algebra. It is mostly working OK, we have found a few structs that could do with being made public! Is this use-case intended to be supported by DataFusion? Or should we be wrapping everything up in a LogicalPlan for execution?
I mention this, because if we are expected to go via LogicalPlans for execution, then I would think that simplification is far more guaranteed to run than if we construct and evaluate the expressions ourselves.
As a side note, all this annoyance ultimately comes from nullability living inside a Field instead of inside a DataType. But this is an Arrow decision we have to live with 🤷 (or do we...?)
I'm not quite sure why adding a new prepare function would be less disruptive to the API than passing in the return_type to invoke? Perhaps making it invoke(args: InvokeArgs) would protect against future unforeseen API breaks?

As a side note, all this annoyance ultimately comes from nullability living inside a Field instead of inside a DataType. But this is an Arrow decision we have to live with 🤷 (or do we...?)

Yes I agree.

I'm not quite sure why adding a new prepare function would be less disruptive to the API than passing in the return_type to invoke? Perhaps making it invoke(args: InvokeArgs) would protect against future unforeseen API breaks?

One reason we are likely a bit worried about changing the API again is that we are in the process of changing invoke already:

https://github.com/apache/datafusion/issues/13238

So churning it again will be annoying downstream. That being said, I think it may be worth it if we follow your suggestion to make it args: InvokeArgs. This helps to:

to protect against other API changes
Is consistent with AccumulatorArgs

I guess changing the API again soon might reduce the number of people that migrate twice?

I guess changing the API again soon might reduce the number of people that migrate twice?

Unfortunately, since we just released DataFusion 43.0.0 the new API has been released now (though the old API is marked as deprecated which I think eases the upgrade pain -- it gives them a release to do the upgrade)


ProductCode on installers is not preserved when updating existing manifest

Brief description of your issue
I often post updates to the REAPER software to winget, which has ProductCode: REAPER set on both the x86 and x64 installers. However when running update with new urls and a new version, ProductCode is discarded in the new manifests.
Steps to reproduce
wingetcreate update Cockos.REAPER -u https://www.reaper.fm/files/6.x/reaper645-install.exe https://www.reaper.fm/files/6.x/reaper645_x64-install.exe --version 6.45
Expected behavior
ProductCode is preserved twice in installer manifest
Actual behavior
ProductCode is bnot preserved twice in installer manifest
Environment
WingetCreateCLI <IP_ADDRESS>

This is a sane default I think, since for MSIs the ProductCode is unique per file. I wonder if it would be best to add a --keep-product-code argument that gives the behavior you want (and I know other apps do the same thing).


Add fireproofed sites and serp sites to the exclusion list for first party cookies expiry

Task/Issue URL: https://app.asana.com/0/0/1203562061689358/f
Description
This PR adds fireproofed sites and SERP sites to the exclusion list before changing their expiry date in their 1st party cookies
Steps to test this PR

[ ] In FirstPartyCookiesModifier line 98, change the value of maxAge to 1 maxAge = 1
[ ] Go to SERP and change the theme
[ ] Close the app and wait a few seconds seconds before opening the app again
[ ] Go to SERP, theme should still be the one you set.
[ ] Doing the same in develop should reset the theme.

Current dependencies on/for this PR:

develop

PR #2654   👈

This comment was auto-generated by Graphite.

@marcosholgado I've found a weird behavior after testing this. Not sure if related with the PR or a side effect. Let me spend 5 min more minutes before merging it.

ok, still unsure why this happens...and not sure if it's related to the hardcoded code used to test this (only happens with SERP, weather.com works fine).

Go to SERP and change theme (e.g: light -> dark)
kill the app
open the app again
theme is gone ❌

BUT,

Go to SERP and change theme (e.g: light -> dark)
make another search
kill the app
open the app again
the theme was persisted 👍

Thanks @cmonfortep, ran some tests and wrote https://app.asana.com/0/1202552961248957/1203687282359965/f as a possible follow up.
tl;dr; By leaving SERP right after setting a cookie it doesn't get into the Cookies DB so on restart nothing happens.


Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.SecurityException''. Check device logcat for details

My test case stopped working and throws me below error
Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.SecurityException''. Check device logcat for details
Test running failed: Instrumentation run failed due to 'java.lang.SecurityException'

As it is written check device logcat for more details :)
Look also at this post on stackoverflow.
It helped me.
http://stackoverflow.com/questions/27132799/java-lang-securityexception-permission-denial-getintentsender-when-using-uia/27692107#27692107


Powershell like "PredictionViewStyle ListView"

On powershell, you can use PSReadLine with options
Set-PSReadLineOption -PredictionSource History -PredictionViewStyle ListView
and you can ALWAYS show 10 rows of matching history while writing (no shortcut needed). I use it for a while, and is much useful that showing only 1 suggestion like this plugin default.
Is there a way to set 5 or 6 matches in a list, always, without any shortcut, like powershell feature?
Example using powershell (NOTE that I'm only writing, not using any shortcut to start/run the list)

I added a video showing an example

Would be a great feature!

can we run it with a shortcut currently? I would love this feature!

can we run it with a shortcut currently? I would love this feature!

Yes, you can try fzf with ctrl+r.

can we run it with a shortcut currently? I would love this feature!

Yes, you can try fzf with ctrl+r.

but the feature is not the same, that's why I created this Issue

I came across a better solution: zsh-autocomplete.
History menu
Press ↑ to open a menu with the last 16 history items.  If the command line is not empty, then the contents of the command line are used to perform a fuzzy history search.

Fuzzy multi-line history search
Press CtrlR to do a real-time history search listing multiple results.

I came across a better solution: zsh-autocomplete.
History menu
Press ↑ to open a menu with the last 16 history items. If the command line is not empty, then the contents of the command line are used to perform a fuzzy history search.

Fuzzy multi-line history search
Press CtrlR to do a real-time history search listing multiple results.

Like I state in the OP, I'm suggesting a way without shortcuts (i'm using ctrl+R right now to achieve similar features, but it would be nice a native feature without shortcuts)

Like I state in the OP, I'm suggesting a way without shortcuts (i'm using ctrl+R right now to achieve similar features, but it would be nice a native feature without shortcuts)

I have this set up on my zsh without needing to press Ctrl + R or any shortcut. It does actually still use autocomplete and fzf. The only thing I did was add this line zstyle ':autocomplete:*' default-context history-incremental-search-backward to my zshrc.
It automatically displays recent commands in a list by default. You can type and autocomplete will latch on like normal. After executing the command, the default list will display once again and you can repeat the process without ever having to manually pull up your history.
(I also include zstyle ':autocomplete:history-search-backward:*' list-lines 2000 (2000 can be changed to whatever # of lines you prefer) to increase the history of commands when scrolling up as the default in zsh-autocomplete is only the 16 lines in the list. I'm sure there is a better way but this is working just fine for me.)
https://github.com/user-attachments/assets/02f895ed-ef6d-4fc4-8ab5-bdebfbaadfe4

autocomplete

thanks! that work just fine!


  Check that these dependencies exist with the requested attributes.
[warn] 		com.github.sbtliquibase:sbt-liquibase:0.2.0 (scalaVersion=2.10, sbtVersion=0.13)
[warn]

Am I doing something wrong ?
Avihay

Sorry this wasn't resolved sooner.  should be fixed now: https://oss.sonatype.org/content/repositories/releases/com/github/sbtliquibase/sbt-liquibase_2.10_0.13/0.2.0/


Suggestions for Tutorial

Environment

Python version: 3.5
Flask version: 0.12

Notes and suggestions from working through the 0.12 Tutorial:

Step 1

So ... do I run this schema.sql file? Will Flask run it for me?

Step 2

That "import ... g ..."" looks like a typo. I left it out until I
read step 4.
"The SECRET_KEY is needed..."
What do real systems do? No need to go into details, just mention
something. SHA1? SSH keys?

Step 3

"Flask is now shipped with built-in support for Click."
That's nice I guess, but what does it have to do with anything else
in this step?
"A useful pattern to manage a Flask application..."
Why? Will it make deployment in my production environment easier? To
other people? What happens if I don't?
It would be better if the text said which directory to use
before the command

Step 4

"def get_db():"
Looks like an unsafe singleton. Does Flask use threads or processes?
"Hint: Where do I put this code?"
I'd been using Flask for 30 minutes, I had no idea where to put the
code. This should be at the start.

Step 5
(flask) /home/hugh/Flask/Tutorial/flaskr/$ flask initdb
Usage: flask [OPTIONS] COMMAND [ARGS]...
Error: No such command "initdb".

Hmm, function has to have same name as in decorator?
No
Maybe the command is really flask --initdb?
No
Have I screwed up the environment var?
$ flask run
That seems to work.
(And yes I worked out shortly afterwards that this is an illusion, trying
to load a page will throw a "does not appear to exist" exception.)
$ cd flaskr
$ flask initdb

Aha!
General note: having two identically named dirs is confusing, need
to be clearer about where you should be at each step
Useful exercise that could be added:
If you want the second database attribute, the blog entry HTML, to
be named "body" instead of "text", how many files do you need to edit?

Additionally, the text expected in the testing tutorial for an empty db doesn't match what's in the templates.

FWIW, I ran into the same problem with flask initdb not working, but it turns out that I put the __init__.py file in the top flaskr directory instead of the one beneath it.

continued in #2513


Can't cancel rendering in max 2016

After merging PR #264 rendering cancellation freezes 3ds max 2016.

Fixed.


Hour of Code resources

Adding initial Hour Of Code resources.
Two pages:

/hourofcode where students are expected to go, and through deep linking end up in the different tutorials of each editor
/hourofcode-teacher for teacher resources giving them hardware links, make and code instruction links.

Plan is to have a banner on makecode.com that links to the /hourofcode page. (Not yet done)
Material: (5 Tutorials).

Hey microbit: https://makecode.microbit.org/tutorials/hour-of-code/hey-microbit
Rock Paper micro:bit!: https://makecode.microbit.org/tutorials/hour-of-code/rock-paper-scissors
WaWa Wawa!: https://makecode.adafruit.com/tutorials/siren
Magic Wand: https://makecode.adafruit.com/tutorials/magic-wand
Blinky: https://makecode.chibitronics.com/tutorials/getting-started

Not sure what to do about Minecraft as we can't deep link, I was thinking we can add a couple of tutorials for the Hour of Code and publish them inside Minecraft, and add them to the teacher resources page. Perhaps also add a page from the /hourofcode to give student instructions on how to get to these tutorials from the Game. @Jaqster ideas?

We’re starting to have a lot of duplicates JavaScript Code. Can it be moved into a separate template page?

I'll clean it up at a future date. This is mostly throw away in a week.

Hour of code pages can stay up all year long. They keep getting traffic. Besides, we should submit the URL to code.org to be listed.


Adding CODEOWNERS file

Adding CODEOWNERS file

Discussed with Edson. Approving because we're going to try out CODEOWNERS vs. openshift CI's OWNERS files for this repo since its not a code repo


Fix :  The services section must come center aligned

The services section must come center-aligned vertically to the screen on index.html. The blue background should cover the whole screen and no white part should be visible.

hI,
CAN I WORK ON THIS

Please assign me this work @harshgoel05,  I will this out!

hey @harshgoel05 can you give more explanation ?

Assigned to @adithyakam , the website is live on https://handholdingsolution.com on the homepage look on the services section. When the user scrolls to the services section, the blue background to the section must cover the whole background.

Hey @Adityachaturvedi2906 are you working on it? Please let me know if you are.

Hey @Adityachaturvedi2906 are you working on it? Please let me know if you are.

Hello,
Yes the work is in progress.


Login error "User could not be found"

Describe the bug
Whenever I try to login through the "other user" option or through another platform (Android, for example), I get the "User could not be found" error. The error goes away if the options "User Loginname must contain orgdomain" and "Validate Org domains" are on. Registration and first login after e-mail confirmation works fine.
To Reproduce
Steps to reproduce the behavior:

Disable "User Loginname must contain orgdomain" and "Validate Org domains" on console.
Register an user and login in your application.
Logout.
Try to login using the same user through "Other users" or through another platform.
See error "User could not be found"

Expected behavior
Be able to register and then login in multiple platforms with the options "User Loginname must contain orgdomain" and "Validate Org domains" disabled.
Screenshots
When these options are disabled:

Get this error with the "Other User" option or through another platform:

User after logout
Error with "Other User" option

Desktop:

OS: Windows 10
Browser: Chrome
Version 103.0.5060.114 (Versão oficial) 64 bits

Smartphone:

Device: Redmi Note 10
OS: Android 11 RKQ1.201022.002. MIUI Global 12.5.5
Browser: Chrome
Version 103.0.5060.71

Zitadel Version: v2.0.0-v2-alpha.39-amd64

Hi @yasukawa426
Thanks for your input.
We will have a look at it and get back to you.

Hi @hifabienne, thanks for the help!
The way we are setup is we have only one Organization, with the verified domain "stolzlabs.com". Inside the organization we have this user with its username being<EMAIL_ADDRESS>However, when these options are disabled, no matter how we write the loginname, we can't log in.

Domain
Loginname

Only username
username@domain (loginname)
something else

And when the options are enabled, I am able to log in using only the username ("yasukawa.luquesi.lucas@gmail.com").
Is this a bug or am I just understanding something wrong?
Thanks again for the help!

With the loginname show you should be able to login. If this doesn't work its a bug. But I can not reproduce it on my own instance, so I am not sure where the problem is.
Are you running on our SaaS service or have you setup your own instance?
If you have your own instance, can you connect to your DB and have a look at the table projections.users, projections.users_humans, projections.loginnames, and projections.failed_events?
The failed events shows if something went wrong while generating the projections from the events: https://docs.zitadel.com/docs/concepts/eventstore/zitadel#failed-events
In the other tables you should see your users. If the table doesn't show your users something in the projections went wrong.

We are running our own instance. We'll take a look into the database and then I will get back to you!
Thanks!

Hi @yasukawa426
Just wanted to ask if you could have a look into this?

@yasukawa426 I will close this issue, because without any more information we will not be able to help.
Feel free to reopen as soon as you provide us some infos.


wallets with custom walletstores as backends

As the Wallet struct's store field is unexported it cannot be set outside the gateway package. This pull request adds a simple function to make it possible to have a custom WalletStore's.

As the Wallet struct's store field is unexported it cannot be set outside the gateway package. If attempted will get the following error
implicit assignment to unexported field store in gateway.Wallet literal

@andrew-coleman  https://github.com/hyperledger/fabric-sdk-go/pull/185 this was the last pull request we had this discussion but I deleted that code hence I created a new one

@andrew-coleman


add the sysfw ABI3.x support

Signed-off-by: Chao Zeng<EMAIL_ADDRESS>

Just tried on Basic with the upstream U-Boot, but networking does not work and leads to the usual kernel panic. From the file name POV, the right DTB seems to be loaded.

Just tried on Basic with the upstream U-Boot, but networking does not work and leads to the usual kernel panic. From the file name POV, the right DTB seems to be loaded.

same issue here, investigating...

FWIW, I'm now using https://groups.google.com/d/msgid/isar-users/a7225f82-a176-adfd-9e07-98dc745ca0cd%40siemens.com to check which artifacts are loaded by u-boot.


First run

Instead of defaulting to first run, spit an error if no cache file and allow user to do something like githabit --setup to initialize the cache.
Get rid of all that kind of crappy first_run code

Fixed this, first run will alert of an error and say to run with the --setup flag to setup initial cache.


add storm

Hi,
I would like to know more about the this problem, so that I could consider this as a second optional project for BDOSSP 2016 Spring.
Thanks,
Augustine Joseph