Http 500 error when exceeding Azure OpenAI quota

Context / Scenario
I've deployed Kernel Memory as a service to an Azure App Service. I'm ingesting a large amount of data. These operations are continuously being retried by Azure AI as we've reached our token limit. When I try to ask a question using the Kernel Memory Web Client, I randomly get a http/500 error which does not have any additional information.
As 99% of our App Insights logs are being sampled, I've only seen the underlying error being logged once. It was caused by the Azure AI token limit.
What happened?
Using the Kernel Memory Web Client, I try to ask a question:
var memory = new MemoryWebClient("<URL>");
var result = memory.AskAsync("What do you know about Roe v. Wade").Result;

Response: One or more errors occurred. (Response status code does not indicate success: 500 (Internal Server Error).)
When I keep retrying, at some point it works
Expectation:

Ingestion should not take up all available quota, the Ask web service should have priority.
The response should not be a HTTP/500 error, but e.g. HTTP/429.

Importance
I cannot use Kernel Memory
Platform, Language, Versions
Kernel Memory service: Updated the service 2 days ago (23 January 2024)
Kernel Memory Webclient: 0.26.240121.1
Relevant log output
Azure.RequestFailedException: Requests to the Embeddings_Create Operation under Azure OpenAI API version 2023-12-01-preview have exceeded call rate limit of your current OpenAI S0 pricing tier. Please retry after 1 second. Please go here: https://aka.ms/oai/quotaincrease if you would like to further increase the default rate limit.
Status: 429 (Too Many Requests)
ErrorCode: 429

Content:
{"error":{"code":"429","message": "Requests to the Embeddings_Create Operation under Azure OpenAI API version 2023-12-01-preview have exceeded call rate limit of your current OpenAI S0 pricing tier. Please retry after 1 second. Please go here: https://aka.ms/oai/quotaincrease if you would like to further increase the default rate limit."}}

Headers:
Retry-After: 1
x-ratelimit-reset-requests: REDACTED
x-ms-client-request-id: b8c73f4c-6b2d-4a2e-bc9f-81c5573eb520
apim-request-id: REDACTED
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
policy-id: REDACTED
x-ms-region: REDACTED
Date: Tue, 23 Jan 2024 03:41:06 GMT
Content-Length: 341
Content-Type: application/json

   at Azure.Core.HttpPipelineExtensions.ProcessMessageAsync(HttpPipeline pipeline, HttpMessage message, RequestContext requestContext, CancellationToken cancellationToken)
   at Azure.AI.OpenAI.OpenAIClient.GetEmbeddingsAsync(EmbeddingsOptions embeddingsOptions, CancellationToken cancellationToken)

Microsoft.SemanticKernel.HttpOperationException:
   at Microsoft.SemanticKernel.Connectors.OpenAI.ClientCore+<RunRequestAsync>d__42`1.MoveNext (Microsoft.SemanticKernel.Connectors.OpenAI, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.SemanticKernel.Connectors.OpenAI.ClientCore+<GetEmbeddingsAsync>d__26.MoveNext (Microsoft.SemanticKernel.Connectors.OpenAI, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.SemanticKernel.AI.Embeddings.TextEmbeddingGenerationExtensions+<GenerateEmbeddingAsync>d__0.MoveNext (Microsoft.KernelMemory.Abstractions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.KernelMemory.MemoryDb.AzureAISearch.AzureAISearchMemory+<GetSimilarListAsync>d__7.MoveNext (Microsoft.KernelMemory.MemoryDb.AzureAISearch, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ThrowForFailedGetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.KernelMemory.MemoryDb.AzureAISearch.AzureAISearchMemory+<GetSimilarListAsync>d__7.System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult (Microsoft.KernelMemory.MemoryDb.AzureAISearch, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at Microsoft.KernelMemory.Search.SearchClient+<AskAsync>d__8.MoveNext (Microsoft.KernelMemory.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.KernelMemory.Search.SearchClient+<AskAsync>d__8.MoveNext (Microsoft.KernelMemory.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Program+<>c+<<<Main>$>b__0_7>d.MoveNext (Microsoft.KernelMemory.ServiceAssembly, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null: D:\projects\poc\kernel-memory\service\Service\Program.cs:273)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Http.RequestDelegateFactory+<<TaskOfTToValueTaskOfObject>g__ExecuteAwaited|92_0>d`1.MoveNext (Microsoft.AspNetCore.Http.Extensions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Threading.Tasks.ValueTask`1.get_Result (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.KernelMemory.Service.HttpAuthEndpointFilter+<InvokeAsync>d__2.MoveNext (Microsoft.KernelMemory.ServiceAssembly, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null: D:\projects\poc\kernel-memory\service\Service\Auth\HttpAuthHandler.cs:37)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Threading.Tasks.ValueTask`1.get_Result (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Http.RequestDelegateFactory+<<ExecuteValueTaskOfObject>g__ExecuteAwaited|129_0>d.MoveNext (Microsoft.AspNetCore.Http.Extensions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Http.RequestDelegateFactory+<>c__DisplayClass102_2+<<HandleRequestBodyAndCompileRequestDelegateForJson>b__2>d.MoveNext (Microsoft.AspNetCore.Http.Extensions, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware+<<Invoke>g__AwaitRequestTask|7_0>d.MoveNext (Microsoft.AspNetCore.Routing, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware+<Invoke>d__6.MoveNext (Microsoft.AspNetCore.Authentication, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1+<ProcessRequestAsync>d__2.MoveNext (Microsoft.AspNetCore.Server.IIS, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=adb9793829ddae60)
Inner exception Azure.RequestFailedException handled at Microsoft.SemanticKernel.Connectors.OpenAI.ClientCore+<RunRequestAsync>d__42`1.MoveNext:
   at Azure.Core.HttpPipelineExtensions+<ProcessMessageAsync>d__0.MoveNext (Azure.AI.OpenAI, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=92742159e12e44c8)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Azure.AI.OpenAI.OpenAIClient+<GetEmbeddingsAsync>d__18.MoveNext (Azure.AI.OpenAI, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=92742159e12e44c8)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.SemanticKernel.Connectors.OpenAI.ClientCore+<RunRequestAsync>d__42`1.MoveNext (Microsoft.SemanticKernel.Connectors.OpenAI, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=f300afd708cefcd3)

Thanks for including the logs. As you can see the error message includes the reason:

Azure OpenAI API version 2023-12-01-preview have exceeded call rate limit of your current OpenAI S0 pricing tier. Please retry after 1 second. Please go here: https://aka.ms/oai/quotaincrease if you would like to further increase the default rate limit.

We can change the exception thrown in that scenario, but the problem persists and is about the amount of requests exceeding the max quota available.

We can change the exception thrown in that scenario, but the problem persists and is about the amount of requests exceeding the max quota available.

Thanks for your prompt response. Yeah, returning a proper response code would be useful.
So, the main issue is that we're ingesting thousands of docs continuously hammering Azure AI. Is it possible to throttle application side, so that way it leaves some quota remaining for asking questions? I don't mind if ingestion takes a bit longer, the key requirement is that it responds quickly to asking questions.
E.g. it would be nice if we can configure KM to only ingest x at a time. We're using Azure Queues for ingestion.
@dluc

When using the service with the underlying queues, the ingestion should continue, retrying. I haven't tested this specific scenario though.  If the ingestion stops then it's a bug.
On the "ask" side though, your client will have to retry. We'll change the error code to 429 or similar, so you don't have to retry on 500.

E.g. it would be nice if we can configure KM to only ingest x at a time.

agreed, though we'd need someone to work on it, because of other priorities. Consider also that the service can be deployed on multiple machines, so "x at a time" would have to be orchestrated centrally.
For now you could slow down the ingestion, waiting for a document to be complete before sending the next.

also this is can be related to https://github.com/microsoft/semantic-kernel/issues/4744
Im tryin to test retry logic
https://github.com/microsoft/semantic-kernel/blob/main/dotnet/samples/KernelSyntaxExamples/Example08_RetryHandler.cs

Update: @alkampfergit is working on embedding batch generation, which will reduce the number of requests, see for example PR https://github.com/microsoft/kernel-memory/pull/526 and https://github.com/microsoft/kernel-memory/pull/531

I have a PR opened and I'm modifying adding the setting maximum number of element in batch, since azure openai with ada have an hard limit on 16 elements maximum in a batch

Hi @roldengarm actually I suggest using the new embedding model, as far as I know it seems that they do no suffer the 16 element problem. I've custom ingestion pipeline where I constantly pass block of 50 elements without any problem (I did not checked if the underling client perform limit for me).
OpenAI api (not azure) have 2048 as limit :/

Large or small depends on how fast is your vector store, but remember that those models supports additional parameters to reduce number of dimensions.

errors about token limits

might not be relevant, but consider also that there's a max size for each chunk of text. Each model can handle a different max amount. So there's always three factors to consider:

are the text chunks too big for the embedding model?
is the client sending too many requests per second to the LLM endpoint?
with batching: is the client sending too many chunks per batch?

with batching: is the client sending too many chunks per batch?

I'm still not sure how I can enable batching in Kernel Memory when running as a service, or does that happen automatically? @dluc

the feature is not ready yet -- once ready it will be configurable -- still TBD because each service has different limits to consider

Can we do this as configuration option?

Batch embedding generation ready and released. Thanks @alkampfergit https://github.com/microsoft/kernel-memory/pull/531 !
Quick notes:

batch support added to OpenAI and Azure OpenAI embedding generators
batch size configurable. Default for OpenAI is 100. Default for Azure OpenAI is 1 to support old deployments.
batch size can be changed at runtime via RequestContext, in case you want to try different values without changing the config and restarting the service.

Work left before closing:

reproducing 429
change KM code to surface 429s appropriately.

E.g. when calling KM service, if AI internally returns 429, KM web service should return 429 too (including some useful info)

^^ it's the same policy implemented here https://github.com/microsoft/kernel-memory/blob/main/extensions/AzureOpenAI/Internals/ClientSequentialRetryPolicy.cs, used both for OpenAI and Azure OpenAI.
In case of throttling and 503, KM retries following the delay provided by the remote service. In case of other errors, the Km retries using the underlying durable queues.
I think we can close this issue.


Add feature to delete Transit Gateway and its attachments

Description
This PR implements the feature that deletes Transit Gateway and its attachments (VPCs and Route Tables), as proposed on #171
Usage
go run main.go aws --resource-type transit-gateway-attachment --resource-type transit-gateway-route-table --resource-type transit-gateway --region us-east-1INFO[2021-01-20T11:24:45-03:00] The following resource types will be nuked:  INFO[2021-01-20T11:24:45-03:00] - transit-gateway-attachment
INFO[2021-01-20T11:24:45-03:00] - transit-gateway-route-table
INFO[2021-01-20T11:24:45-03:00] - transit-gateway
INFO[2021-01-20T11:24:46-03:00] Retrieving active AWS resources in [us-east-1]
INFO[2021-01-20T11:24:46-03:00] Checking region [1/1]: us-east-1
INFO[2021-01-20T11:24:47-03:00] The following 1 AWS resources will be nuked:
INFO[2021-01-20T11:24:47-03:00] * transit-gateway tgw-09b092c0913d64de9 us-east-1

THE NEXT STEPS ARE DESTRUCTIVE AND COMPLETELY IRREVERSIBLE, PROCEED WITH CAUTION!!!

Are you sure you want to nuke all listed resources? Enter 'nuke' to confirm (or exit with ^C): nuke
INFO[2021-01-20T11:24:52-03:00] Terminating 1 resources in batches
INFO[2021-01-20T11:24:52-03:00] Deleting all Transit Gateways in region us-east-1
INFO[2021-01-20T11:24:52-03:00] Deleted Transit Gateway: tgw-09b092c0913d64de9
INFO[2021-01-20T11:24:52-03:00] [OK] 1 Transit Gateway(s) deleted in us-east-1

Tests
$ go test -v -run TestNukeTransitGateway
=== RUN   TestNukeTransitGateway
=== PAUSE TestNukeTransitGateway
=== RUN   TestNukeTransitGatewayRouteTable
=== PAUSE TestNukeTransitGatewayRouteTable
=== RUN   TestNukeTransitGatewayVpcAttachment
=== PAUSE TestNukeTransitGatewayVpcAttachment
=== CONT  TestNukeTransitGateway
=== CONT  TestNukeTransitGatewayVpcAttachment
=== CONT  TestNukeTransitGatewayRouteTable
INFO[2021-01-20T11:45:16-03:00] Random region chosen: us-west-2
INFO[2021-01-20T11:45:17-03:00] Random region chosen: ap-southeast-1
INFO[2021-01-20T11:45:17-03:00] Random region chosen: eu-central-1
INFO[2021-01-20T11:48:19-03:00] Deleting all Transit Gateways in region eu-central-1
INFO[2021-01-20T11:48:19-03:00] Deleted Transit Gateway: tgw-0dcd2cc7edd7b5527
INFO[2021-01-20T11:48:19-03:00] [OK] 1 Transit Gateway(s) deleted in eu-central-1
--- PASS: TestNukeTransitGateway (183.92s)
INFO[2021-01-20T11:51:19-03:00] Deleting all Transit Gateway Route Tables in region us-west-2
INFO[2021-01-20T11:51:20-03:00] Deleted Transit Gateway Route Table: tgw-rtb-072982251b52854d6
INFO[2021-01-20T11:51:20-03:00] [OK] 1 Transit Gateway Route Table(s) deleted in us-west-2
INFO[2021-01-20T11:51:20-03:00] Deleting all Transit Gateways in region us-west-2
INFO[2021-01-20T11:51:20-03:00] Deleted Transit Gateway: tgw-0d33494972358a0f3
INFO[2021-01-20T11:51:20-03:00] [OK] 1 Transit Gateway(s) deleted in us-west-2
--- PASS: TestNukeTransitGatewayRouteTable (364.40s)
INFO[2021-01-20T11:51:24-03:00] Deleting all Transit Gateway Vpc Attachments in region ap-southeast-1
INFO[2021-01-20T11:51:25-03:00] Deleted Transit Gateway Vpc Attachment: tgw-attach-0792df2f43c062029
INFO[2021-01-20T11:54:25-03:00] [OK] 1 Transit Gateway Vpc Attachment(s) deleted in ap-southeast-1
INFO[2021-01-20T11:54:27-03:00] Deleting all Transit Gateways in region ap-southeast-1
INFO[2021-01-20T11:54:27-03:00] Deleted Transit Gateway: tgw-04ea04d8203d0436a
INFO[2021-01-20T11:54:27-03:00] [OK] 1 Transit Gateway(s) deleted in ap-southeast-1
--- PASS: TestNukeTransitGatewayVpcAttachment (551.20s)
PASS
ok      github.com/gruntwork-io/cloud-nuke/aws  551.739s

$ go test -v -run TestGetAllTransitGateway
=== RUN   TestGetAllTransitGatewayInstances
=== PAUSE TestGetAllTransitGatewayInstances
=== RUN   TestGetAllTransitGatewayRouteTableInstances
=== PAUSE TestGetAllTransitGatewayRouteTableInstances
=== RUN   TestGetAllTransitGatewayVpcAttachment
=== PAUSE TestGetAllTransitGatewayVpcAttachment
=== CONT  TestGetAllTransitGatewayInstances
=== CONT  TestGetAllTransitGatewayVpcAttachment
=== CONT  TestGetAllTransitGatewayRouteTableInstances
INFO[2021-01-20T11:55:15-03:00] Random region chosen: ap-southeast-2
INFO[2021-01-20T11:55:16-03:00] Random region chosen: eu-west-2
INFO[2021-01-20T11:55:16-03:00] Random region chosen: us-east-2
INFO[2021-01-20T11:58:18-03:00] Deleting all Transit Gateways in region us-east-2
INFO[2021-01-20T11:58:18-03:00] Deleted Transit Gateway: tgw-0fae57502f44dae1e
INFO[2021-01-20T11:58:18-03:00] [OK] 1 Transit Gateway(s) deleted in us-east-2
--- PASS: TestGetAllTransitGatewayInstances (183.38s)
INFO[2021-01-20T12:01:20-03:00] Deleting all Transit Gateway Vpc Attachments in region eu-west-2
INFO[2021-01-20T12:01:20-03:00] Deleted Transit Gateway Vpc Attachment: tgw-attach-096806835d511d65a
INFO[2021-01-20T12:01:21-03:00] Deleting all Transit Gateways in region ap-southeast-2
INFO[2021-01-20T12:01:22-03:00] Deleted Transit Gateway: tgw-0a0c56f9d4a150bf0
INFO[2021-01-20T12:01:22-03:00] [OK] 1 Transit Gateway(s) deleted in ap-southeast-2
INFO[2021-01-20T12:01:22-03:00] Deleting all Transit Gateway Route Tables in region ap-southeast-2
INFO[2021-01-20T12:01:25-03:00] Deleted Transit Gateway Route Table: tgw-rtb-058121dc10a4c0046
INFO[2021-01-20T12:01:25-03:00] [OK] 1 Transit Gateway Route Table(s) deleted in ap-southeast-2
--- PASS: TestGetAllTransitGatewayRouteTableInstances (369.59s)
INFO[2021-01-20T12:04:20-03:00] [OK] 1 Transit Gateway Vpc Attachment(s) deleted in eu-west-2
INFO[2021-01-20T12:04:20-03:00] Deleting all Transit Gateways in region eu-west-2
INFO[2021-01-20T12:04:21-03:00] Deleted Transit Gateway: tgw-02c2a20b4c9acdac3
INFO[2021-01-20T12:04:21-03:00] [OK] 1 Transit Gateway(s) deleted in eu-west-2
--- PASS: TestGetAllTransitGatewayVpcAttachment (546.28s)
PASS
ok      github.com/gruntwork-io/cloud-nuke/aws  546.591s

Thank you for the PR! Apologies for the long delay. We are very overloaded at the moment. We'll try to get this reviewed as soon as we can!

Thank you for the PR! Apologies for the long delay. We are very overloaded at the moment. We'll try to get this reviewed as soon as we can!

Any update here?

Thanks for your review! I'll fix all of them this week.

LGTM! Can you just rebase from master and fix the conflict in go.sum? I'm kicking off tests, and if those pass we'll be ready to merge.

Reminder that we're ready to merge this once go.sum is caught up to the master branch!

Thanks for reviewing , I'll apply your suggestions this week.

@bwdejaeger, could you check again, please?
Thanks!

Released as https://github.com/gruntwork-io/cloud-nuke/releases/tag/v0.1.26.


Bug: repr method implementation error in CaseInsensitiveDict class

An error will be reported when printing the headers attribute of the response.
Traceback (most recent call last):
File "C:\work\App\test.py", line 5, in
print(resp.headers)
File "C:\work\App.env\lib\site-packages\niquests\structures.py", line 146, in repr
return str(dict(self.items()))
ValueError: dictionary update sequence element #7 has length 3; 2 is required
Deleting the items method it calls can print headers normally.
Version Information
{
"charset_normalizer": {
"version": "3.3.2"
},
"http1": {
"h11": "0.14.0"
},
"http2": {
"jh2": "5.0.3"
},
"http3": {
"enabled": true,
"qh3": "1.0.8"
},
"idna": {
"version": "3.4"
},
"implementation": {
"name": "CPython",
"version": "3.10.11"
},
"niquests": {
"version": "3.6.6"
},
"ocsp": {
"enabled": true
},
"platform": {
"release": "10",
"system": "Windows"
},
"system_ssl": {
"version": "1010114f"
},
"urllib3.future": {
"cohabitation_version": null,
"version": "2.7.914"
},
"wassima": {
"certifi_fallback": false,
"enabled": true,
"version": "1.1.1"
}
}

Indeed, this was a minor bug following a performance optimization.
It is fixed in latest, run pip install niquests -U.
regards,


Loop Function

Just a reminder to add loop ability when you have time.

Can you be more specific on what you want it to do? Just loop the queue? Right now When a song plays it deletes from the queue so I would have to code something specific for that.

The way ive like it to work is when /loop is activated it will keep repeating the current song. If possible, since your using the fancy / shtuff could you make a button next to pause next etc for loop, and maybe a step further is a cyclable loop where if you press it once  it loops infinitely, the next click is single loop and another is two loops? Idk if this is related but being able to go back 1 or two songs. Thought of it since looping might involve caching anyway, or I could be dum dum.

A lot of music players have buttons like that. Loop file, loop playlist, loop x times.
Could probably add something like that. Click a loop button to keep looping song till it's clicked again, and continues the queue.
Or use a command if you wanna loop the current song like 4 times. Maybe add a true/false to playlists/queues if you wanna loop them just like shuffle is. A command to disable current playlist/queue loop would be good too.
I also made a suggestion for a default playlist https://github.com/kalebbroo/plex_music_bot/issues/13 that would shuffle on loop if no playlist, ect is queued up.

This has been added in the rewrite of the bot.


[future] new artifactory image endpoint (secretshare)

Signed-off-by: YuChen Shen

/retest

/retest

/retest

@YCShen1010
Please check this PR to update the deprecated package

/test check-ibm-secretshare-operator

Hi @YCShen1010
Sorry that I forget to link the previous PR in the comment: https://github.com/IBM/ibm-secretshare-operator/pull/112/files
We do not need to introduce the new package. Please remove the new package go.uber.org and run go mod tidy


Add note to troubleshooting guide on just init step freezing

Description

Originally reported by @AetherUnbound

We need to add a troubleshooting section on occassions where the just init command or tests timeout due to the ingestion server halting after the cleaning step (https://github.com/WordPress/openverse-api/issues/562 and https://github.com/WordPress/openverse/issues/699).
Might be best to have a "what to do/try in case this happens" note.

Link: https://github.com/WordPress/openverse-api/blob/main/README.md#troubleshooting
Additional context

Implementation

[ ] 🙋 I would be interested in implementing this feature.

https://github.com/WordPress/openverse-api/pull/802 added some retries for this step, I'm going to go ahead and close this.


Link to kernel documentation of ioctl numbers is broken

The link to the Linux kernel list of ioctl numbers appears to have moved, at least as of the time this issue was created (latest kernel is 5.8.14).
Existing (broken) link from 0.18.0 documentation on docs.rs: https://elixir.bootlin.com/linux/latest/source/Documentation/ioctl/ioctl-number.rst
New value: https://elixir.bootlin.com/linux/latest/source/Documentation/userspace-api/ioctl/ioctl-number.rst

This is resolved - https://github.com/nix-rust/nix/commit/bcb7b4243537b0d98d2ce01e7277c8be4fa01072 .


[SMALLFIX] Update surefire version

This allows us to run our tests with multiple forked JVMs, giving a very significant speedup.
Running with -DforkCount=8, my integration test time went from 6:42 to 2:02.
@apc999 @calvinjia

alluxio-bot, check this please

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/12101/
Test PASSed.

Merged build finished. Test PASSed.

LGTM


Fixed reference to step count in Stepper

Short Description:
Bug Fix
Fixes #225
Changes:

Fixed reference to step count in Stepper

@OpenPoGo/maintainers

👍

:+1:


[P0] Matchmaking not working?

Summary
API / Worker appear to be failing to hand off to the Game server.
API logs:
MATCHMAKIN  \|<PHONE_NUMBER> ranked queue request for user: -NElrDRlM_WAgetNHrQi
--
GAME CREAT  \|<PHONE_NUMBER> No need to check matchmaking stack status since no CONSUL in environment.
UsersModul  \|<PHONE_NUMBER> isAllowedToUseDeck() -> valid deck because this environment allows all cards ALL_CARDS_AVAILABLE = true - -NElrDRlM_WAgetNHrQi.
MATCHMAKIN  \|<PHONE_NUMBER> -NElrDRlM_WAgetNHrQi battle map indexes: null
MATCHMAKIN  \|<PHONE_NUMBER> ranked request for user: -NElrDRlM_WAgetNHrQi : rank metric: 30 : eligible for bot: true : bot probability 1
MATCHMAKIN  \|<PHONE_NUMBER> creating token for -NElrDRlM_WAgetNHrQi:  <deck-omitted>
node_redis: Deprecated: The HMSET command contains a "null" argument.
This is converted to a "null" string now and will return an error from v.3.0 on.
Please handle this in your code to make sure everything works as you intended it to.
# Above warning repeats several times.
MATCHMAKIN  \|<PHONE_NUMBER> ranked queue pushed user -NElrDRlM_WAgetNHrQi, sending 200 with <token-id>, 60000
MATCHMAKIN  \|<PHONE_NUMBER> ranked queue request for user: -NF-n7EVan2x4t-iv9Ke
GAME CREAT  \|<PHONE_NUMBER> No need to check matchmaking stack status since no CONSUL in environment.
UsersModul  \|<PHONE_NUMBER> isAllowedToUseDeck() -> valid deck because this environment allows all cards ALL_CARDS_AVAILABLE = true - -NF-n7EVan2x4t-iv9Ke.
MATCHMAKIN  \|<PHONE_NUMBER> -NF-n7EVan2x4t-iv9Ke battle map indexes: null
MATCHMAKIN  \|<PHONE_NUMBER> ranked request for user: -NF-n7EVan2x4t-iv9Ke : rank metric: 30 : eligible for bot: true : bot probability 1
MATCHMAKIN  \|<PHONE_NUMBER> creating token for -NF-n7EVan2x4t-iv9Ke: <deck omitted>
node_redis: Deprecated: The HMSET command contains a "null" argument.
This is converted to a "null" string now and will return an error from v.3.0 on.
Please handle this in your code to make sure everything works as you intended it to.
# Above warning repeats several times.

Worker logs:
JOB         \| [J:210045] Update User (-NDUI-tP9wvwcBCBdytP) Seen On: 30.729ms
--
MATCHMAKIN  \|<PHONE_NUMBER> [J:210042] player (-NF-n7EVan2x4t-iv9Ke) is no longer queued (isQueued:null)
MATCHMAKIN  \|<PHONE_NUMBER> [J:210046] lock(-NDUI-tP9wvwcBCBdytP) acquired - matchmaking metric 29,0. Last opponent: -NDoC1g2WVDxk8R_ZCox.
MATCHMAKIN  \|<PHONE_NUMBER> found 0 potential matches within range
MATCHMAKIN  \|<PHONE_NUMBER> [210046] ranked - Search for Game (-NDUI-tP9wvwcBCBdytP) metric:29(29,0), attempt 2, delay 2000ms, searchRadius 1
MATCHMAKIN  \|<PHONE_NUMBER> [J:210047] lock(-NDUI-tP9wvwcBCBdytP) acquired - matchmaking metric 29,0. Last opponent: -NDoC1g2WVDxk8R_ZCox.
MATCHMAKIN  \|<PHONE_NUMBER> found 0 potential matches within range

Impacted services

[ ] The frontend app
[x] The game servers
[ ] Game builds or automation scripts
[ ] Tests or Github Actions
[ ] Infrastructure (Terraform)

Steps to reproduce

Try to queue for a Season Ladder game.
Game never begins.
Logs contain the above.

Environment information

Operating system: Mac
Browser: Firefox
Browser version: Latest

This issue is invalid. The actual problem here was caused by users queuing before they had completed a practice game, which was flagging them for bot matches: https://github.com/open-duelyst/duelyst/blob/main/server/routes/matchmaker.coffee#L198L210


Remove organization description from the right sidebar for logged out users

Showing the organization description in the right sidebar doesn't seem very helpful with how we currently do so -- it's unclear where that text comes from, and it doesn't look great visually.
We should remove this text; we can think more about how to onboard spectators to Zulip as a separate follow-up.

Hello please provide more on this issue and preferably a URL to where you're experiencing this

@zulipbot claim

@zulipbot abandon


Update readme with missing dependency

The current README doesn't include a missing dependency with is needed by use-query-param. This PR includes it to make it even simpler to use this package.
And thanks for it!

if only I had read it earlier.. +1


Add spaces around string in matching regex

Hello, this PR will allow for code style with spaces after and before braces:
__( 'Text' )
Thanks for considering it, Jakub

Thanks :)


No Video appearing on Android (also in demo)

Please see issue in demo app https://github.com/oney/RCTWebRTCDemo/issues/7
Also have issue when using react-native-webrtc core library in 2 other apps I tested.

+1 on this.  Still trying to find a solution, and debugging in Android Studio did not help pinpoint the problem.  FYI, I also tried another library for Cordova, phonertc which gave a similar result on Android.  Both phonertc and react-native-rtc appear to use the same WebRTC build scripts by pristine.io

I just update 0.3.0. Please try to see whether the problem is fixed. You can also try Demo project. It should work with RN 0.20.0 on iOS and Android.

please verify it on the latest version again.
feel free to reopen if the problem still occurs.


Refactor repo to use Jane Street standards

Use Jane street's SEXP and Expect tests instead of standard unit testss


[Question] HTTP Support

Hi,
I'd like to connect to a logstash running on HTTP. I cannot use plain TCP. I couldn't find a way to do it. Did I miss something ?
Thanks

Hi,
Currently there is no HTTP device for LogStashLogger. If you want to write one, I would accept a pull request.


Use warn instead of error for tests

This commit suggests using warn level messages instead of error to avoid
what looks like errors when running tests:
test test_blocking_ping ... ok
[2021-11-04T09:20:48Z ERROR client_test::tlsserver] plaintext read failed: Err(Custom { kind: ConnectionAborted, error: "CloseNotify alert received" })
test test_ping ... ok

With this change these messages will not be show for a normal test run
but can be seen if run with env RUST_LOG=warn.

LGTM, thanks! FWIW, the original code is a copy from rustls-mio example server


MARP-1308 Update name and change field type

Hi @ivy-fhe, could you please help me to check this PR? I just modify small stuffs such as refactoring the property name and its type. Thank you!

Hi @ivy-fhe , I just add a commit for handle conflict. Could you help me to check it again, thank you!


Version information of modules in contact mechanics download maybe wrong

The version information in the download of contact mechanics results only reflect the currently
installed versions of some modules. In order to be comparable, the versions used during each analysis should be
put in the ZIP archive.
These versions are available as they are also used in other analysis downloads.

I agree. The version information should reflect the version used for the calculation.


add support for debian bullseye

Add support for Debian bullseye, which doesn't have python3.8 (only 3.9).
Bumped ansible-role-postgresql version in molecule if we want at some point add debian in tests. This version comes with support for Debian-11.
Feel free to modify the code to adapt to your coding style.

I'm also adding some more variables to have tasks/upgrade.yml properly working with the changes I've introduced.

my local molecule fails at
TASK [geerlingguy.postgresql : Ensure PostgreSQL is started and enabled on boot.] ***
fatal: [instance]: FAILED! => {"changed": false, "cmd": "/bin/systemctl", "msg": "Failed to connect to bus: No such file or directory", "rc": 1, "stderr": "Failed to connect to bus: No such file or directory\n", "stderr_lines": ["Failed to connect to bus: No such file or directory"], "stdout": "", "stdout_lines": []}

do you use it for test or you moved to github actions fro testing?

my local molecule fails at
TASK [geerlingguy.postgresql : Ensure PostgreSQL is started and enabled on boot.] ***
fatal: [instance]: FAILED! => {"changed": false, "cmd": "/bin/systemctl", "msg": "Failed to connect to bus: No such file or directory", "rc": 1, "stderr": "Failed to connect to bus: No such file or directory\n", "stderr_lines": ["Failed to connect to bus: No such file or directory"], "stdout": "", "stdout_lines": []}

do you use it for test or you moved to github actions fro testing?

I also have had a lot of problems with geerlingguy.postgresql for local testing as well, at least on OSX. I'm curious if developing on Linux has the same issue considering the GitHub actions run fine.
I have been relying more on testing during the PR checks or manually with a test VM but I too wish I could rely on local molecule testing.

I'm sorry for this trial and error approach but without proper testing, i' just trying...

It's no problem at all! This is what PRs are for. Feel free to send as many commits as you need.

I moved my local molecule testing on a amd64 machine and I'm using molecule-vagrant.
I added boxes for all the OS flavors.
I still got some non-zero return codes during configure.py to sort out.
For example, debian 10 (on python 3.7) gets a warning from netbox 3.11 that will not be supported in the future. this is interpreted as a non zero by ansible and fails the task.


Audit workers AI getting started guide

Found two things that weren't quite as in the guide:

Output of response was a bit different due to default system prompt
Since you have to use wrangler dev --remote, you're already logged in, so that step was superflous (and results in an error)

closing in favor of #14086


compatibility all mode not adding polyfills anymore in EDGE and IE 11

I pulled down the new updated es-dev-server @LarsDenBakker and am not getting the import path url bug anymore. However, when running with compatibility all mode in EDGE 42 and IE 11 on a windows 10 machine, I get two different errors:

IE
a. The import is not being initated as a module (i.e. not pulling down the import statements inside the requested file as resources), which it was doing in earlier versions (1.6.6).

EDGE
a. Polyfill errors with customElements not being found. I believe both browsers are not getting the polyfill files anymore.

@lakshay35 I just tested and it works fine for regular projects.
I think in your case you are requesting your resource from another web server on another port, so the request is not handled by es-dev-server. We can't realistically do anything to handle that.


[#9] Python 3.6

Closes #9

Coverage remained the same at 90.53% when pulling 2cfc0ba5eefbf6ea5e8f0b48601f70aefdce46ae on feature/9-python36 into 2dd0650f0b062cc09695acbaa0924d8e9730d648 on master.

Coverage remained the same at 90.53% when pulling c9db28edc9d27488801e7be2ed8f90c98b228f3e on feature/9-python36 into 2dd0650f0b062cc09695acbaa0924d8e9730d648 on master.


As a content editor, I want to see an indicator if a person has an associated card so that I can distinguish library members with cards.

Notes for testing

Person browse list should now include a checkbox indicating whether they have a card (based on associated card citation, see #88 for more details)
Should be populated based on the card import
Test adding & removing a card on the account edit and see that the status is reflected on the person list

Notes for development
Use a footnote citation to associate the lending card with the account, so it is not reliant on borrowing events existing.

I tried deleting someone's card-record from the account and indeed, the person no longer shows up in the personography as "has card."!  This seems to be working.
@clmahoney make sure this works for you, but I think it's good!  Go to the personography and find someone who has a green checkmark in the "has account" column.  Then click on the person, and scroll down to where you can click on the link to their account (just above "subscriptions").  Change the "card" menu immediately below the name to "-----" and save, then go back to the personography and check the person again.  The green checkmark should be gone!


AttributeError while using SciBERT

``
import tensorflow as tf
from transformers import * #BertTokenizer, TFBertModel
tokenizer = AutoTokenizer.from_pretrained('allenai/scibert_scivocab_uncased')
model = AutoModel.from_pretrained('allenai/scibert_scivocab_uncased')
input_ids = tf.constant(tokenizer.encode("My dog is cute"))[None, :]  # Batch size 1
outputs = model(input_ids)
last_hidden_states = outputs[0]
print(last_hidden_states)
``
I'm getting following error:
input_shape = input_ids.size()
AttributeError: 'tensorflow.python.framework.ops.EagerTensor' object has no attribute 'size'

@Saichethan The TF weights supplied are only compatible with the Google BERT code, not huggingface's TF code.  Our huggingface compatible weights are only for PyTorch.

@kyleclo thanks for your response
Then how can I get sentence embeddings in TF??

Hmm.. I'd probably ask the folks on the HuggingFace repo.  We uploaded model weights according to their specification for PyTorch compatibility.  I'm unfamiliar with how they handle tensorflow compatibility; that's going to be something specific to their platform


gpio: remove unused GPIO_INT_CLOCK_SYNC flag

GPIO_INT_CLOCK_SYNC wasn't implemented by anything, so remove it.
Signed-off-by: Kumar Gala<EMAIL_ADDRESS>

Codecov Report

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

@@            Coverage Diff            @@
##             master   #10340   +/-   ##
=========================================
  Coverage          ?   53.09%
=========================================
  Files             ?      214
  Lines             ?    26229
  Branches          ?     5652
=========================================
  Hits              ?    13925
  Misses            ?    10029
  Partials          ?     2275

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 872719e...27c5c01. Read the comment docs.


Circular import error

Python Version
3.11
Django Version
5.1.1
Package Version
1.22.0
Description
When trying to run 1.22.0 it crashes:
Traceback (most recent call last):
  File "/home/nijel/weblate/weblate/.venv/bin/django-upgrade", line 5, in <module>
    from django_upgrade.main import main
  File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/django_upgrade/main.py", line 17, in <module>
    from django_upgrade.ast import ast_parse
  File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/django_upgrade/ast.py", line 10, in <module>
    from django_upgrade.data import State
  File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/django_upgrade/data.py", line 206, in <module>
    _import_fixers()
  File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/django_upgrade/data.py", line 203, in _import_fixers
    __import__(name, fromlist=["_trash"])
  File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/django_upgrade/fixers/admin_allow_tags.py", line 15, in <module>
    from django_upgrade.ast import ast_start_offset
ImportError: cannot import name 'ast_start_offset' from partially initialized module 'django_upgrade.ast' (most likely due to a circular import) (/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/django_upgrade/ast.py)

Thanks for the report. The test suite didn't catch this because of its own imports. I have added a new test and a fix in #505, released in 1.22.1.


Button animation

The buttons: I like how they get taller when the mouse enters, but personally, I would prefer them to stay large until mouse exits instead of going back to normal size immediately.

Buttons are now on their best behavior and have received some further improvements along the way.


Part of tooltip for "Upload files" in compose box hides behind left panel of stream names.

Steps to reproduce:

Click bottom message box to start typing a message.
Mouse over "Upload files" icon.
Check the tooltip.

Actual result:

Expected result:
"Upload files" tooltip should be visible clearly.

@zulipbot claim

@zulipbot claim

@srdeotarse which Zulip version and client are you using?
Latest main on Firefox and Electron seems to be just fine 🤔

@solymosi I have the exact same issue on main branch, FireFox 95.0.1 and Ubuntu 20.04 LTS

Hmm.. upon closer investigation it seems to be a dark theme only thing 🤔

It also occurs in light theme when u expand a stream to see the topics, the blue color highlighting the topics hides the tooltip

@srdeotarse which Zulip version and client are you using? Latest main on Firefox and Electron seems to be just fine 🤔

I am using Chrome Version 96.0.4664.110 (Official Build) (64-bit) and Windows 10 Version 21H1.


docs: update pull_request_template.md

Brief Information
This pull request is in the type of:

[ ] bug fixing
[ ] new feature
[x] docs

Related issues:

resolve #393

Details

Add more PR types and uncomment "related issues"
Checklist

[x] I have read the CONTRIBUTING doc
[x] I have signed the CLA

Others

N.A.

/approve


AMD cpu

it cannot finish the process and mentioned below:
return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)

RuntimeError
2023-11-04 12:58:46,661 - Inpaint Anything - ERROR -

The device appears to be incompatible.
In the Settings tab of the web UI, there is an option called "Run Segment Anything on CPU" under the Inpaint Anything section. If you check this, Segment Anything will run slower but it will be executed on the CPU.

thank you so much. problem fixed


Changing the versionCode?

Is there any way to change the version code via react-native javascript side?
If not, I think this would be a great feature request. A perfect use case is that when integrating with a CI system like circleci, travis, etc. we can set the versionCode via the CI build number. Looking at the docs this can be set on the low level xcode or android. Right now it automatically gets set to whatever the low level version code is. Would be great if the  versionCode could be set on the higher level javascript side and changed dynamically in a variable in a .env file via CI.

Thanks for the report, @larryranches. Unfortunately the versionCode property cannot be set at runtime, as its "baked in" when the native components are compiled. Perhaps you could change it during the CI build phase by being clever with environment variables and sed? Something like:
sed -i '' "s/versionCode .*/versionCode $TRAVIS_BUILD_NUMBER/" android/app/build.gradle

I tried it out and it seemed to work.

@kattrali Thank you for your reply! Is your above solution for xcode or android?


Add new mod: Stonesword.Campfire

Closes #920
https://github.com/el-piedras/Ash-Twin-Campfire

Deleting this since its been two weeks and you haven't fixed the issues outlined above. Please reopen an issue when you're able to fix this


Slowness seen using PiecewiseAffineTransform compared to scikit-image version

Describe the bug
The cucim.skimage.transform.PiecewiseAffineTransform seems to be several times slower than the scikit-image equivalent
Steps/Code to reproduce bug
When running the code below, I observe a 8x slowdown for the estimate and 2x slowdown for the warp operations using the PyTorch 24.01 container with cucim 23.12
Expected behavior
The code should execute at least as fast as the cpu version
Environment details (please complete the following information):
Docker on Ubuntu 22.04
PyTorch 24.01 container with scikit-image and cucim 23.12 pip installed
Additional context
`import matplotlib.pyplot as plt
from skimage.transform import PiecewiseAffineTransform, warp
from scipy.interpolate import LinearNDInterpolator
import numpy as np
from timeit import default_timer as timer
from cucim.skimage.transform import PiecewiseAffineTransform as cu_PAT
from cucim.skimage.transform import warp as cu_warp
import cupy as cp

# create some offsets and coordinates
vectors = np.array([[3.0,1.0],[-5.,-1.3],[-3.5,8.3],[0,0],[0,0],[0,0], [0,0]])
coords = np.array([[20,20],[180,50],[20, 180],[0,0],[0,255],[255,0], [255,255]])

# Create grid
step_size = 20
x = np.linspace(0, 255, num=step_size)
y = np.linspace(0, 255, num=step_size)
X, Y = np.meshgrid(x, y)

interpx = LinearNDInterpolator(list(coords), vectors[:,0])
Zxi = interpx(Y, X)

interpy = LinearNDInterpolator(list(coords), vectors[:,1])
Zyi = interpy(Y, X)

# create an array of coords
src = np.column_stack((X.reshape(-1), Y.reshape(-1)))

# add the interpolated offets
dst_rows = X + Zxi
dst_cols = Y + Zyi

dst = np.column_stack([dst_cols.reshape(-1), dst_rows.reshape(-1)])

# compute transforms
tform = PiecewiseAffineTransform()

start = timer()
tform.estimate(src, dst)
print("cpu estimate took {}s".format(timer()-start))

start = timer()
out = warp(imgrid, tform, output_shape=(255, 255))
print("cpu warp took {}s".format(timer()-start))

# repeat using cupy/cucim.skimage
cu_tform = cu_PAT()
start = timer()
cu_tform.estimate(cp.array(src), cp.array(dst))
print("gpu estimate took {}s".format(timer()-start))

start = timer()
out = cu_warp(cp.array(imgrid), cu_tform, output_shape=(255, 255))
print("gpu warp took {}s".format(timer()-start))
`

Thanks for the details @grlee77. In this case the image was 256 x 256 but I will try larger images and see what happens. Thanks for the tip on the timeit - you are quite right. Often there is some implicit mem synch operation involved anyhow, but I should be explicit about it.


Exception on python action plugin code

getting the below error when trying to use this plugin

version info
Application: Pcbnew
Version: 5.1.10-88a1d61d58~90~ubuntu20.04.1, release build
Libraries:
wxWidgets 3.0.4
libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Platform: Linux 5.4.0-80-generic x86_64, 64 bit, Little endian, wxGTK
Build Info:
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.71.0
OpenCASCADE Technology: 7.3.0
Curl: 7.68.0
Compiler: GCC 9.3.0 with C++ ABI 1013
Build settings:
USE_WX_GRAPHICS_CONTEXT=OFF
USE_WX_OVERLAY=ON
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=ON
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=ON
KICAD_SCRIPTING_ACTION_MENU=ON
BUILD_GITHUB_PLUGIN=ON
KICAD_USE_OCE=OFF
KICAD_USE_OCC=ON
KICAD_SPICE=ON

This is because you try to use it with a 5.1.10 Version.
I use the nighly builds myself an therefore developed the plugin to work with those versions.
There are quite a few python API changes between version 5 and version 5.99 (nighlty builds) and with a soon to be released vversion 6 I decided to not make it compatible with both versions, sorry 😐

One more remark:
I've just installed the 5.1.10 realease(2021-05-01T11:58:15.459Z ) as well as the 5.1.10 testing(2021-08-18T03:08:11.015Z ) version and the patched 5.1.10(2021-07-01T16:56:25.176Z) version on windows.
Neither of them comes with KICAD_SCRIPTING_PYTHON3=ON
So if there's no ready to download binary with python 3 support this ist toatally not worth it.
I guess most users will not build their KiCAD installation from source and set that build flag and I'm not willing to make this working with python 2  💀 for obvious reasons 😄


TypeScript support for props in the block function and the For component

Please describe the changes this PR makes and why it should be merged:
Status

[x] Code changes have been tested against prettier, or there are no code changes
[] I know how to update typings and have done so, or typings don't need updating

Semantic versioning classification:

[x] This PR changes the codebase

[ ] This PR includes breaking changes (methods removed or renamed, parameters moved or removed)
[x] This PR changes the internal workings with no modifications to the external API (bug fixes, performance improvements)

[ ] This PR only includes non-code changes, like changes to documentation, README, etc.

This PR addresses issues #382 and partially #368.
import React from 'react';
import { block, For } from "million/react";

type Props = {
  name: string;
};

const MyComponent: React.FC<Props> = ({ name }) => {
  return
Hello {name}
;
};

const MyBlock = block<Props>(MyComponent);

const Parent = () => {
  const names = ['John', 'Jane', 'Joe'];

  return (

      {/* Name will now be recognized as a string instead of any type, TypeScript will also know that MyBlock takes in a name prop */}
      <For each={names}>{(name) => <MyBlock name={name} />}</For>

  );
};

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 31.782%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
907

Relevant Lines:
3018

💛  - Coveralls

Shows Type 'BlockProps' does not satisfy the constraint 'MillionProps'.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 32.169%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
900

Relevant Lines:
2958

💛  - Coveralls


Math not formatting properly in linear_algebra.rst

Go to http://preview-lectures.quantecon.org.s3-website-ap-southeast-2.amazonaws.com/jl/tools_and_techniques/linear_algebra.html#3 and not the escaping is incorrect for inline math.

Trivial fix.


Figure out where to store images

https://www.npmjs.com/package/browser-image-compression
To save space, use this library to compress club cover images into 2 formats: thumbnail and compressed high quality image.
Also compress the exec images to a reasonable size.

https://www.npmjs.com/package/browser-image-compression
To save space, use this library to compress club cover images into 2 formats: thumbnail and compressed high quality image.
Also compress the exec images to a reasonable size.


[SPARK-39722] [SQL] getString API for Dataset

What changes were proposed in this pull request?

Add getString API for Dataset for usecases where string representation needs to be used other than stdout(println)
More details in the bug
Why are the changes needed?

But there are a lot of cases where we might need to get a String representation of the show output. For example
logging framework to which we need to push the representation of a df
send the string over a REST call from the driver
send the string to stderr instead of stdout
Does this PR introduce any user-facing change?

Yes
How was this patch tested?

Tested locally using spark-shell

@rxin @ScrapCodes @maropu  can you please review . thanks!

Hi @VindhyaG, this might be useful - may be we can benefit from the usecase you have for this. Is it just for logging?
Not sure what others think, it might be good to limit the API surface.

Do you think, a more interesting way can be returning a JSON representation?

I see this as developer facing API, So just having
def getString(numRows: Int, truncate: Int): String =
     getString(numRows, truncate, vertical = false)

would suffice.

my intention was to keep it consistent with show() where if numrows and truncate have default values

Do you think, a more interesting way can be returning a JSON representation?
For rest api yes JSON would make more sense but for logging i suppose string in tabular form is more useful? may be have a separate API for that ?

@ScrapCodes can you pls suggest further on this?
@jaceklaskowski  have updated the versions. can you pls review again.


🐛 [firebase_ui_auth] Crashed in iOS and Failed in Android

Bug report
Describe the bug
Cannot login in both iOS and Android. iOS will crashed and Android Failed with error.
Steps to reproduce
I followed the example on https://github.com/firebase/flutterfire/blob/master/packages/firebase_ui_auth/example/lib/main.dart
Steps to reproduce the behavior:

Load the repo I created: https://github.com/cupidchan/flutterfire_auth
Start the app in iOS/Android
Click the Sign in with Google Button
Errors as shown below.

Expected behavior
It should login without error
Sample project
https://github.com/cupidchan/flutterfire_auth

Additional context
I reported this to Firebase Support. The engineer reproduced this issue successfully and asked me to report the issue here.
Click To Expand Support Email Content
Hi Cupid,

Sorry for the delay in my reply. After some tests using the code that you kindly shared with me, I was not able to find the solution to the problem. Even the same problem with iOS and android is presented in the [example app](https://github.com/firebase/flutterfire/tree/master/packages/firebase_ui_auth/example) from the flutterfire code repository.

My suggestion is to report the issue in the repository, mentioning that the example code presents the problem with iOS and Android, I am sure that the problem that is affecting your app is the same that affects the example app. This is our best option to solve this problem since the problem will be taken care of by the team in charge of the development of the tool. You can report the problem [here](https://github.com/firebase/flutterfire/issues).

That should be all from my side. I'll go ahead and close this case, no reply necessary.

Please don't hesitate to reach out to our team again through our [support channel](https://firebase.google.com/support/) if you need assistance with Firebase in the future.

Regards,

Adrian

Flutter doctor
Click To Expand
 flutterfire_auth %>  flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.10.5, on macOS 13.4.1 22F82 darwin-arm64, locale en)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.2)
[✓] VS Code (version 1.80.0)
[✓] Connected device (2 available)
[✓] Network resources

• No issues found!

Flutter dependencies
Click To Expand
 flutterfire_auth %>  flutter pub deps -- --style=compact
Dart SDK 3.0.5
Flutter SDK 3.10.5
firebase_ui_auth_example 1.0.0+1

dependencies:
- cupertino_icons 1.0.5
- firebase_auth 4.6.3 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
- firebase_core 2.14.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_ui_auth 1.5.0 [email_validator firebase_auth firebase_core firebase_dynamic_links firebase_ui_localizations firebase_ui_oauth firebase_ui_shared flutter flutter_localizations]
- firebase_ui_localizations 1.5.0 [flutter flutter_localizations path]
- firebase_ui_oauth 1.4.4 [desktop_webview_auth firebase_auth firebase_ui_auth firebase_ui_shared flutter_svg flutter]
- firebase_ui_oauth_apple 1.2.4 [firebase_auth firebase_ui_oauth flutter]
- firebase_ui_oauth_facebook 1.2.4 [firebase_auth firebase_ui_oauth flutter flutter_facebook_auth]
- firebase_ui_oauth_google 1.2.4 [firebase_auth firebase_ui_oauth flutter google_sign_in]
- firebase_ui_oauth_twitter 1.2.4 [flutter firebase_auth firebase_ui_oauth twitter_login]
- flutter 0.0.0 [characters collection js material_color_utilities meta vector_math sky_engine]
- flutter_localizations 0.0.0 [flutter intl characters clock collection js material_color_utilities meta path vector_math]

dev dependencies:
- drive 1.0.0-1.0.nullsafety.5 [test_api flutter_test flutter_driver stack_trace flutter]
- firebase_ui_shared 1.3.0 [flutter]
- flutter_driver 0.0.0 [file flutter flutter_test fuchsia_remote_debug_protocol path meta vm_service webdriver async boolean_selector characters clock collection js matcher material_color_utilities platform process source_span stack_trace stream_channel string_scanner sync_http term_glyph test_api vector_math]
- flutter_facebook_auth 5.0.11 [flutter flutter_facebook_auth_platform_interface flutter_facebook_auth_web facebook_auth_desktop]
- flutter_lints 2.0.2 [lints]
- flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters collection js matcher material_color_utilities meta source_span stream_channel string_scanner term_glyph]
- google_sign_in 6.1.4 [flutter google_sign_in_android google_sign_in_ios google_sign_in_platform_interface google_sign_in_web]
- http 0.13.6 [async http_parser meta]
- integration_test 0.0.0 [flutter flutter_driver flutter_test path vm_service async boolean_selector characters clock collection fake_async file js matcher material_color_utilities meta source_span stack_trace stream_channel string_scanner sync_http term_glyph test_api vector_math webdriver]
- mockito 5.4.2 [analyzer build code_builder collection dart_style matcher meta path source_gen test_api]
- test 1.24.1 [analyzer async boolean_selector collection coverage http_multi_server io js node_preamble package_config path pool shelf shelf_packages_handler shelf_static shelf_web_socket source_span stack_trace stream_channel typed_data web_socket_channel webkit_inspection_protocol yaml test_api test_core matcher]
- twitter_login 4.4.0 [crypto flutter http]

transitive dependencies:
- _fe_analyzer_shared 61.0.0 [meta]
- _flutterfire_internals 1.3.3 [collection firebase_core firebase_core_platform_interface flutter meta]
- analyzer 5.13.0 [_fe_analyzer_shared collection convert crypto glob meta package_config path pub_semver source_span watcher yaml]
- args 2.4.2
- async 2.11.0 [collection meta]
- boolean_selector 2.1.1 [source_span string_scanner]
- build 2.4.1 [analyzer async convert crypto glob logging meta package_config path]
- built_collection 5.1.1
- built_value 8.6.1 [built_collection collection fixnum meta]
- characters 1.3.0
- clock 1.1.1
- code_builder 4.5.0 [built_collection built_value collection matcher meta]
- collection 1.17.1
- convert 3.1.1 [typed_data]
- coverage 1.6.3 [args logging package_config path source_maps stack_trace vm_service]
- crypto 3.0.3 [typed_data]
- dart_style 2.3.2 [analyzer args path pub_semver source_span]
- desktop_webview_auth 0.0.12 [crypto flutter http flutter_web_plugins plugin_platform_interface]
- email_validator 2.1.17
- facebook_auth_desktop 0.0.9 [flutter http flutter_secure_storage flutter_facebook_auth_platform_interface]
- fake_async 1.3.1 [clock collection]
- file 6.1.4 [meta path]
- firebase_auth_platform_interface 6.15.3 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
- firebase_auth_web 5.5.3 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser js meta]
- firebase_core_platform_interface 4.8.0 [collection flutter flutter_test meta plugin_platform_interface]
- firebase_core_web 2.6.0 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_dynamic_links 5.3.3 [firebase_core firebase_core_platform_interface firebase_dynamic_links_platform_interface flutter meta plugin_platform_interface]
- firebase_dynamic_links_platform_interface 0.2.6+3 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- fixnum 1.1.0
- flutter_facebook_auth_platform_interface 4.1.1 [flutter plugin_platform_interface]
- flutter_facebook_auth_web 4.1.1 [flutter flutter_web_plugins js flutter_facebook_auth_platform_interface]
- flutter_secure_storage 8.0.0 [flutter flutter_secure_storage_linux flutter_secure_storage_macos flutter_secure_storage_platform_interface flutter_secure_storage_web flutter_secure_storage_windows meta]
- flutter_secure_storage_linux 1.1.3 [flutter flutter_secure_storage_platform_interface]
- flutter_secure_storage_macos 3.0.0 [flutter flutter_secure_storage_platform_interface]
- flutter_secure_storage_platform_interface 1.0.1 [flutter plugin_platform_interface]
- flutter_secure_storage_web 1.1.1 [flutter flutter_secure_storage_platform_interface flutter_web_plugins js]
- flutter_secure_storage_windows 2.0.0 [flutter flutter_secure_storage_platform_interface]
- flutter_svg 2.0.7 [flutter vector_graphics vector_graphics_codec vector_graphics_compiler]
- flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta vector_math]
- frontend_server_client 3.2.0 [async path]
- fuchsia_remote_debug_protocol 0.0.0 [process vm_service file meta path platform]
- glob 2.1.2 [async collection file path string_scanner]
- google_identity_services_web 0.2.1 [js meta]
- google_sign_in_android 6.1.18 [flutter google_sign_in_platform_interface]
- google_sign_in_ios 5.6.2 [flutter google_sign_in_platform_interface]
- google_sign_in_platform_interface 2.4.1 [flutter plugin_platform_interface quiver]
- google_sign_in_web 0.12.0+2 [flutter flutter_web_plugins google_identity_services_web google_sign_in_platform_interface http js]
- http_multi_server 3.2.1 [async]
- http_parser 4.0.2 [collection source_span string_scanner typed_data]
- intl 0.18.0 [clock meta path]
- io 1.0.4 [meta path string_scanner]
- js 0.6.7 [meta]
- lints 2.1.1
- logging 1.2.0
- matcher 0.12.15 [async meta stack_trace term_glyph test_api]
- material_color_utilities 0.2.0
- meta 1.9.1
- mime 1.0.4
- node_preamble 2.0.2
- package_config 2.1.0 [path]
- path 1.8.3
- path_parsing 1.0.1 [vector_math meta]
- petitparser 5.4.0 [meta]
- platform 3.1.0
- plugin_platform_interface 2.1.4 [meta]
- pool 1.5.1 [async stack_trace]
- process 4.2.4 [file path platform]
- pub_semver 2.1.4 [collection meta]
- quiver 3.2.1 [matcher]
- shelf 1.4.1 [async collection http_parser path stack_trace stream_channel]
- shelf_packages_handler 3.0.2 [path shelf shelf_static]
- shelf_static 1.1.2 [convert http_parser mime path shelf]
- shelf_web_socket 1.0.4 [shelf stream_channel web_socket_channel]
- sky_engine 0.0.99
- source_gen 1.4.0 [analyzer async build dart_style glob path source_span yaml]
- source_map_stack_trace 2.1.1 [path source_maps stack_trace]
- source_maps 0.10.12 [source_span]
- source_span 1.9.1 [collection path term_glyph]
- stack_trace 1.11.0 [path]
- stream_channel 2.1.1 [async]
- string_scanner 1.2.0 [source_span]
- sync_http 0.3.1
- term_glyph 1.2.1
- test_api 0.5.1 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph matcher]
- test_core 0.5.1 [analyzer async args boolean_selector collection coverage frontend_server_client glob io meta package_config path pool source_map_stack_trace source_maps source_span stack_trace stream_channel vm_service yaml matcher test_api]
- typed_data 1.3.2 [collection]
- vector_graphics 1.1.7 [flutter vector_graphics_codec]
- vector_graphics_codec 1.1.7
- vector_graphics_compiler 1.1.7 [args meta path_parsing xml vector_graphics_codec]
- vector_math 2.1.4
- vm_service 11.3.0
- watcher 1.1.0 [async path]
- web_socket_channel 2.4.0 [async crypto stream_channel]
- webdriver 3.0.2 [matcher path stack_trace sync_http]
- webkit_inspection_protocol 1.2.0 [logging]
- xml 6.3.0 [collection meta petitparser]
- yaml 3.1.2 [collection source_span string_scanner]

Hi @cupidchan, I noticed you are using the auth emulator in your code sample. Do you have the authEmulator running at the time you attempt to sign in?
Do you still have this issue when you disable the auth emulator?

@danagbemava-nc yes, I tried both and still not working. And Firebase Support team also reproduced this issue on their end. But they told me to log an issue here.

Hi @cupidchan, in testing your app, I realized that something was missing. For instance, according to the google_sign_in package, you need to add the following to your Info.plist file for iOS.
<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>com.googleusercontent.apps.406099696497-134k3722m01rtrsklhf3b7k8sqa5r7in</string>
			</array>
		</dict>
	</array>

Kindly make sure that you follow the setup instructions for the gsi package for both android & ios.

Thanks @danagbemava-nc. Let me check and will get back to you.

@danagbemava-nc I retested and still got an error. You pointed out iOS, can you please check an Android build, since it requires less dependency. In my case, the UI shows An unknown error occurred and the Debug Console shows W/Parcel  (15447): Expecting binder but got null!. Do you get it run successfully?

@danagbemava-nc I further tested this following the exact steps to add the pre-requisite, but iOS build just crashed when I click the button. If you manage to make it works, can you please share? I doubt this is a real issue since it's so fundamental, but I really cannot make it works. Thanks!

Hi @cupidchan, I modified your initial repro a bit and the app doesn't crash on iOS. All I did was add the CFBundleUrl. On Android, I do get the unknown error but I suspect the setup may not be complete.
Could you update your initial repo with the code in https://github.com/firebase/flutterfire/issues/11278#issuecomment-1650411931 so that I can try to repro on my end?

Hi @danagbemava-nc where did you add the CFBundleUrl? Also, I have updated my repo with the 2 buttons I have in my previous comment. Can you please check? Also, it will be great if you can share some working repo so that I can just load and see what did I do wrong in the set up. But I just couldn't make it work by following the documentation.

Hi @cupidchan, the CFBundleUrlTypes (I shortened it to CFBundleUrl) is set in the Info.plist of the iOS app. This is step 8 of the setup process in the README for the google_sign_in plugin.
I set up a project from scratch using firebase_ui_auth and firebase_ui_oauth_google to handle the google sign in and it worked just fine on both android and iOS.
These are the steps I used

I created a new firebase project on the firebase console and enabled authentication
flutter create <project_name> && cd into project
flutter pub add firebase_core firebase_auth firebase_ui_auth firebase_ui_oauth_google
Enabled google sign in in the firebase project in the firebase console
Run flutterfire configure and selected the firebase project I had just created
Run ./gradlew signingReport in the android directory
Copied the SHA-1 of my debug key and pasted it in project settings of the firebase app for the android app
I then did the setup for the OAuth Consent screen on Google cloud
I used the code sample below and added the client Id from the various google services files.
I also added the CFBundleUrlTypes in the Info.plist as specified in step 8 of the setup for iOS on the README for the google_sign_in plugin

flutter sample
import 'dart:io';

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_oauth_google/firebase_ui_oauth_google.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

import 'firebase_options.dart';

void main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);

    FirebaseUIAuth.configureProviders([
        GoogleProvider(clientId: clientId),
    ]);

    runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    // final providers = [GoogleProvider(clientId: clientId, scopes: ['email'])];

    return MaterialApp(
      initialRoute: FirebaseAuth.instance.currentUser == null ? '/sign-in' : '/profile',
      routes: {
        '/sign-in': (context) {
          return SignInScreen(
            // providers: providers,
            actions: [
              AuthStateChangeAction<SignedIn>((context, state) {
                Navigator.pushReplacementNamed(context, '/profile');
              }),
            ],
          );
        },
        '/profile': (context) {
          return ProfileScreen(
            // providers: providers,
            actions: [
              SignedOutAction((context) {
                Navigator.pushReplacementNamed(context, '/sign-in');
              }),
            ],
          );
        },
      },
    );
  }
}

Please note that the steps I used above are the documented steps to set up google-sign-in although the docs are not centralized.

Thanks for your input @danagbemava-nc. I managed to make the Android working but here is my question. I found out that getting the user info (i.e. accessToken and idToken) and signing in to Firebase are 2 different steps. If I use google_sign_in package, I can divide these 2 steps and direct the logic to use either Google Server Auth server, or supply a fake user in case of Emulator.
However, if I user the OAuthProviderButton UI, there is no way for me to specify the fake user. Is there any way I can provide the fake user information for testing with the local emulator?
      ElevatedButton(
          onPressed: () async {
            // Trigger the authentication flow
            final GoogleSignInAccount? googleUser =
                await GoogleSignIn().signIn();
            // Obtain the auth details from the request
            final GoogleSignInAuthentication? googleAuth =
                await googleUser?.authentication;
            // Create a new credential
            final credential = GoogleAuthProvider.credential(
              accessToken: googleAuth?.accessToken,
              idToken: googleAuth?.idToken,
            );
            // Once signed in, return the UserCredential
            await FirebaseAuth.instance.signInWithCredential(credential);
          },
          child: const Text('Google Mobile')),
      const SizedBox(height: 20),
      ElevatedButton(
          onPressed: () async {
            FirebaseAuth.instance.signInWithCredential(
                GoogleAuthProvider.credential(
                    accessToken: '{true, true}',
                    idToken:
                        '{"sub": "abc123", "email"<EMAIL_ADDRESS>"email_verified": true}'));
          },
          child: const Text('Google Signin to Emulator')),
      const SizedBox(height: 20),
      AuthStateListener<OAuthController>(
        child: OAuthProviderButton(
          provider: GoogleProvider(clientId: googleClientId),
        ),
        listener: (oldState, newState, ctrl) {
          if (newState is SignedIn) {
            context.go("/");
          }
          return null;
        },
      )

However, if I user the OAuthProviderButton UI, there is no way for me to specify the fake user. Is there any way I can provide the fake user information for testing with the local emulator?

I am not aware of a way to do that but I just noticed there's an onCredentialReceived method in the PlatformSignInMixin which should be available for the various providers. Can you try that to see if it helps? I'm not entirely sure how you would use it

@danagbemava-nc It is tough to just trial and error to find out the correct way for the call. Can you please point me to the documentation so that I can experiment it without too much guess work?

I haven't found any documentation of that unfortunately, it doesn't seem like it's something we're supposed to call, not unless you extend one of the providers on your own.
That being said, I think it would be best to file a new issue specifically for being able to supply the fake data for the emulator so that it can be properly tracked. I'm afraid we've veered far from the original reason for this issue and continuing in this thread might make it a bit confusing for others to look at

I agree @danagbemava-nc. I will close this one and open another one for how the UI work with emulator.


DSEGOG-67 additional plot styling options

Description
This PR adds:

ability to toggle plot gridlines (for both axes)
ability to toggle axes labels (currently only displaying a label for x-axis, since we haven't finalised the y-axes and their respective labelling yet)
ability to add minimum and maximum limits for both x- and y-axes
ability to change line style between solid, dashed and dotted

The amount of options per data channel means there's now a lot of buttons clogging up the label space. I'm open to adding some sort of popup menu per data channel - the user clicks a button, which opens a popup showing the options for each channel, which they can edit there
Testing instructions
Try out the above features mixed with each other to make sure they behave independently

[ ] Review code
[ ] Check Actions build
[ ] Review changes to test coverage

Agile board tracking
Closes DSEGOG-67

Right I think this is finally ready for review. Snapshots have changed considerably so check them thoroughly before approving them. This includes plot jest snapshots so make doubly sure that the data and options passed to the canvas are correct.
Regarding Playwright, I have mostly managed to fully test all functionality but there are a couple of blockers due to tiny nitpicks some browsers have with particular elements. We may be able to fix these later if we discover a solution. I will add a comment on the PR for each one to highlight them

Also worth noting that the screenshots I generate on my end tend to be a few pixels in width different. Why this is, I don't know and hopefully it isn't a concern but at least the tests pass due to the overall difference being < 100 pixels

I have applied Louise's fix to a webkit test from https://github.com/ral-facilities/operationsgateway/pull/88/commits/4f1baaf4f3f0dcd455ddbeebbaf611e249704501 to ensure things also worked fine on this branch - it seems to!

@sam-glendenning I agree that the options per data channel are getting a little long - one space saver is that we only need line style options when it's a line graph as the options do nothing for scatter graphs ;)
@mattjSTFC There's a lot of options that CLF want in the requirements that aren't accounted for in the wireframes. Specifically, there's these "per-channel" options (e.g. line style, colour, visibility, removing a channel) that are starting to get a little cramped (especially since I have to add an extra option to select whether an option is on the left Y axis or on the right Y axis)

Any thoughts on a better UI for this? As Sam said - some sort of popup menu? Which is a little weird with the colour selector as that's then a popup within a popup!

@sam-glendenning Let me have a mull over the data channel options and get back to you. One thing for sure let's try and steer away from multiple popups 👍

I'm assuming this will pass fine but Github is apparently experiencing "dragged performance" on Actions, according to Github Status. I'll come back to this tomorrow

@sam-glendenning @louise-davies So rather than having all the options alongside a channel name we could replace with a vertical dot icon button:

https://balsamiq.cloud/sq9hezy/p37ch0t/r45FA
Then surface a menu on the screen with the available options to style the plot (line style, colour and x or y) with the remove option set last:

https://balsamiq.cloud/sq9hezy/p37ch0t/r9DF1
I wasn't sure whether to add the visibility option to the menu (so all options are together) or, as per the wires, keep it near the channel name. The ability to quickly show / hide a plot line feels like it could be a quick action so having it within the menu may be annoying. What do you think?
Pros

Frees up more space for the channel name
Allows more channel options to be added without any concerns for limited space

Cons

It may not be immediately obvious that there are more options by choosing the 3 dots icon. However if this pattern, of using the 3 dots to provide more option is applied elsewhere, then it should become clear to users. We also have a requirement for a Help section so ensuring this is as useful as possible will aid this way of working.
What if only one option is surfaced as it makes the 3 dot pattern to show more redundant - not sure this will happen though as I imagine you will always have colour, line style and remove.

Thanks @sam-glendenning Happy to update the wires (with the close option upfront), especially as you are closer to it than me. Let me do that know 👍

also, as a minor correction the axis is to choose between a left and right Y axis, not between the X and Y axis - but this shouldn't affect the design concept in any way. Also, we can potentially remove the line option style if a user is using a scatter graph (as obviously line style means nothing in that case) - so the "permanent" options are colour & axis, although there's potential for more configuration (e.g. point size)

How about this:

I'm personally a fan of it, although Louise should have the final input about the Y-axis radio buttons since she's working on it right now and it may not always be a binary choice (e.g. you can plot more than 3 channels but how this works in a plot with two y-axes I'm not entirely sure)

Ok, I'll leave as is for now until I hear otherwise 👍

Matt's design works well - re: Sam around the Y axis - you can have multiple channels on the same axis - the user just needs to be able to select which side. A radio button works fine for this

Thanks for the clarification!

Finally ready for another review again. Apologies, a lot has changed but it is mostly moving existing code into better places, plus a few extra snapshots where required. I've added the new popup options menu as Matt suggested and refactored all of the plot settings code to their own separate components to improve the maintenance of the code going forward. Also a lot of the commits were me fiddling around with playwright trying to get it working.


feat(#36): OnEntityLoaded hook enhancement

Codecov Report

Merging #37 (b524154) into develop (1414c55) will increase coverage by 0.17%.
The diff coverage is 89.56%.

@@             Coverage Diff             @@
##           develop      #37      +/-   ##
===========================================
+ Coverage    79.13%   79.31%   +0.17%
===========================================
  Files          256      257       +1
  Lines        16059    16226     +167
  Branches      1332     1344      +12
===========================================
+ Hits         12708    12869     +161
- Misses        2857     2865       +8
+ Partials       494      492       -2

Impacted Files
Coverage Δ

...ration/Implementations/Fields/Helpers/Resolvers.cs
98.80% <ø> (+6.89%)
:arrow_up:

...nfrastructure/SchemaServiceCollectionExtensions.cs
50.00% <ø> (ø)

src/Epam.GraphQL/Helpers/Guards.cs
40.00% <40.00%> (ø)

...ders/Loader/Implementations/InlineObjectBuilder.cs
55.83% <66.66%> (+0.17%)
:arrow_up:

...nfiguration/Implementations/LoaderHooksExecuter.cs
84.21% <66.66%> (-10.24%)
:arrow_down:

src/Epam.GraphQL/Extensions/QueryableExtensions.cs
86.98% <68.42%> (-7.14%)
:arrow_down:

...lementations/FieldResolvers/ProxiedFuncResolver.cs
72.72% <84.61%> (+26.57%)
:arrow_up:

...mentations/FieldResolvers/QueryableFuncResolver.cs
86.45% <94.64%> (+3.27%)
:arrow_up:

...QL/Configuration/Implementations/LoadEntityHook.cs
98.83% <98.63%> (+3.38%)
:arrow_up:

...Implementations/BaseObjectGraphTypeConfigurator.cs
78.26% <100.00%> (+0.25%)
:arrow_up:

... and 10 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1414c55...b524154. Read the comment docs.


services.mysqlBackup don't work

Issue description
the backup files get created but are empty.
Steps to reproduce

configure mysqlBackup

  services.mysqlBackup = {
    enable = true;
    databases = [ "mysql" "piwik" "satzgenerator" ];
    location = "/var/backup/mysql";
    period = "0 4 * * *";
    singleTransaction = true;
  };

wait one day
see created archives

[root@atomic:~]# ll /var/backup/mysql/
insgesamt 12
-rw-r--r-- 1 mysql mysql 20  7. Apr 04:00 mysql.gz
-rw-r--r-- 1 mysql mysql 20  7. Apr 04:00 piwik.gz
-rw-r--r-- 1 mysql mysql 20  7. Apr 04:00 satzgenerator.gz

display content: zcat /var/backup/mysql/mysql.gz (nothing)

running the cron command manually (as root) works.
/nix/store/d2bkgmfk8q1ak2iz17bw5bk08gq8k44v-mariadb-10.1.21/bin/mysqldump --single-transaction mysql | /nix/store/w1vlvxlavmz39by5xpnhva36q2lbi9hf-gzip-1.8/bin/gzip -c > test.gz
i can't log in as user mysql, so maybe that is the problem?
[root@atomic:~]# su - mysql
This account is currently not available.

/cc @rbvermaa (creator of module)
Technical details

System: NixOS 17.03.902.536d3cac2e (Gorilla)
Nix version: nix-env (Nix) 1.11.8
Nixpkgs version: 17.03.902.536d3cac2e
MySQL is actually MariaDB 10.1.21

OK, this is something:
mysqldump: Got error: 1045: "Access denied for user 'mysql'@'localhost' (using password: NO)" when trying to connect

The code is from 2009 and I do not see, where a password is set. It also uses cron instead of systemd timer. I suppose it needs a major overhaul.

The mysql user has no home directory, so i can't place a .my.cnf there.
So i just changed the user = "root";
@Mic92 is there a practical reason to use systemd timers over cronjobs? Or just to migrate every aspect of the system to systemd?

timer have the following advantages:

no extra daemon
systemctl list-timer shows you when timer will be started the next time/when they were triggered
you can easily inspect the log output and the exit status of the last run of the service using systemctl status <service>
you do not have to care about what your command write to stdout/stderr, because systemd won't send you an email
you can also trigger jobs manually for testing
way more option how the service should be executed (ressource-control, permissions etc)
for machines, which are not always on there is an option to run the service after boot if a run was missed.
(the cronjob timespec is hard to remember)

It works now after my change yesterday.
@Mic92 that are some nice to have features, thanks!

systemd won't send you an email

i like to get notified when something goes wrong.
So to resolve this issue:

the module needs to get rewritten with systemd timers
it should work out of the box (or tell how mysql permissions need to be set)

You can still get emails as described here. The defaults here are also saner, since no email is send, if the program has any output to stdout,

A nice way to solve the user login problem would be to use unix socket authentication, I think, which would not need a password or a my.cnf file then.
One could have a special backup unix user, that is authenticated via socket authentication, and then allowed to read all databases for dumping them, with SQL commands like this:
INSTALL PLUGIN unix_socket SONAME 'auth_socket';

CREATE USER 'backup'@'localhost' IDENTIFIED VIA unix_socket;
GRANT  SELECT, LOCK TABLES ON *.* TO 'backup'@'localhost';

Maybe I'll find the time some day to create a proper fix for this.