Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException IDX21323

Certain users experience an auth loop, going back and forth between Azure and the client app, this loop happens until the browser crashes or the user is taken to a 500 error page from the web server hosting the client app. I have a reliable way to reproduce this if you need more info, the one user that experiences this issue does not have access to the application via AD Groups, but instead of being taken to the not-authorized page (this page does not require authorization/authentication), the loop happens.
Below is what's recorded in the logs. I was able to reproduce this in a regular browser tab and incognito.
Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolInvalidNonceException: IDX21323: RequireNonce is '[PII is hidden]'. OpenIdConnectProtocolValidationContext.Nonce was null, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce was not null. The nonce cannot be validated. If you don't need to check the nonce, set OpenIdConnectProtocolValidator.RequireNonce to 'false'. Note if a 'nonce' is found it will be evaluated.
at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidator.ValidateNonce(OpenIdConnectProtocolValidationContext validationContext)
at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolValidator.ValidateAuthenticationResponse(OpenIdConnectProtocolValidationContext validationContext)
at Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationHandler.d__1a.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthenticationHandler.d__1a.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Security.Infrastructure.AuthenticationHandler.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware1.<Invoke>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.<RunApp>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Microsoft.Owin.Security.Infrastructure.AuthenticationMiddleware1.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar)
at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

@brentschmaltz I'll get you a fiddler session, I'm just waiting for a test account.
Hey but even though it is a test account, is there a way I can send you the file somewhat privately?

@elgatorico Closing this issue, please reopen if you're still experiencing issues.

It encountered with me as well. I think it's bug called "Katana bug #197".
The workaround for this is a nuget package called Kentor.OwinCookieSaver.
After installing the nuget package add
app.UseKentorOwinCookieSaver(); if not already there, before
app.UseCookieAuthentication(cookieOptions);.
For more info, follow the Kentor.OwinCookieSaver repo on GitHub.
It resolved my issue.


As a developer, I want to limit my build pod/result number existing on system, so that I can balance build history and resource consumed

We can provide a build spec setting to configure, such as FailedBuildHistoryLimit and SuccessBuildHistoryLimit, we also need to provide a default values, such as 10 or 50.
So our controller won't keep all pods and history without limitation, and if reach the limitation, the controller will help to delete the oldest histories/pods automatically:
spec:
  failedBuildHistoryLimit: 5 # Optional, if not present defaults to 10
  successBuildHistoryLimit: 5 # Optional, if not present defaults to 10

This requirement comes from our tenant env, because we limit the tenant user can only create 250 pods in a namespace, if it is full, we cannot execute the build anymore.
Hi all, any comment is welcome!
Thanks!

@zhangtbj thanks. I would like to avoid having default limitations for the amount of builds you can create on the cluster. This should be more like an optional parameter for cases like the "tenat" setup. How will you keep a count on the builds?

This would apply to any workload in a tenant namespace.
Should this be handled differently -

Monitoring and alerting to users?
Something that would suggest users that you have build pods lying around.

Semi related: you would have to use some kind of log forwarding mechanism before you remove the build pods.

Hi Shoubhik,
I also see this kind of config in the OpenShift build v1 BuildConfig:
  successfulBuildsHistoryLimit: 10
  failedBuildsHistoryLimit: 10

So I think it is not just for the tenant namespace, maybe in my local cluster, I also don't like to keep lots of all builds :)
In our PoC, we just auto delete the oldest build ONE, if the limit is reach.
We can have a log in controller, but I don't have a good idea how to tell end-user that we delete a build which follow the HistoryLimit config. But we can have some dicussion here. :)

Thanks for pointing out, I'll hunt deeper into the design for that in build v1!

Aha, let me show my openshift result here, it is also useful for our future implementation:

kind: BuildConfig
apiVersion: build.openshift.io/v1
metadata:
  name: cf-sample-app-go-git
  namespace: default
  selfLink: >-
    /apis/build.openshift.io/v1/namespaces/default/buildconfigs/cf-sample-app-go-git
  uid: b8abaa7e-c14a-4a40-8fd7-f34e06601171
  resourceVersion: '65293379'
  creationTimestamp: '2020-02-27T07:12:36Z'
  labels:
    app: cf-sample-app-go-git
    app.kubernetes.io/component: cf-sample-app-go-git
    app.kubernetes.io/instance: cf-sample-app-go-git
    app.kubernetes.io/name: golang
    app.kubernetes.io/part-of: cf-sample-app-go-git
    app.openshift.io/runtime: golang
    app.openshift.io/runtime-version: 1.11.5
  annotations:
    app.openshift.io/vcs-ref: master
    app.openshift.io/vcs-uri: 'https://github.com/zhangtbj/cf-sample-app-go.git'
spec:
  nodeSelector: null
  output:
    to:
      kind: ImageStreamTag
      name: 'cf-sample-app-go-git:latest'
  resources: {}
  successfulBuildsHistoryLimit: 10
  failedBuildsHistoryLimit: 10
  strategy:
    type: Source
    sourceStrategy:
      from:
        kind: ImageStreamTag
        namespace: openshift
        name: 'golang:1.11.5'
  postCommit: {}
  source:
    type: Git
    git:
      uri: 'https://github.com/zhangtbj/cf-sample-app-go.git'
    contextDir: /
  triggers:
    - type: Generic
      generic:
        secretReference:
          name: cf-sample-app-go-git-generic-webhook-secret
    - type: GitHub
      github:
        secretReference:
          name: cf-sample-app-go-git-github-webhook-secret
    - type: ImageChange
      imageChange:
        lastTriggeredImageID: >-
          image-registry.openshift-image-registry.svc:5000/openshift/golang@sha256:ebfed97ee40d3e38794a12c10587082173e90546d2cb97514d7e42457ec156b7
    - type: ConfigChange
  runPolicy: Serial
status:
  lastVersion: 1

This is good, but can successfulBuildsHistoryLimit and failedBuildsHistoryLimit be optional, basically if you do not define them , there is no limit, or what do you think on this @zhangtbj  ?

Yes, sure thing. it is the optional parameters.
It is ok if we have the capability and we can define in our side for special settings.

So for opensource side, should be no limit by default
In our side, we can have the dedicated value for each build by default


Rohitnarula7176/issue 58

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


best out of the box yet

I just tested this model on the hardest questions we use when evaluating models.  It got 85% right, beating larger models at these questions.   This is the first time I have ever seen this.
And we have tested everything.
If it can be easily fine tuned, this would be perfect.

We have a discord channel dedicated to fine-tuning! https://discord.com/channels/1144547040454508606/1156994197287612508


Login error

in version 1.4.1 after running publish function:
{"errorType":"TypeError","errorMessage":"(intermediate value)(intermediate value).replaceAll is not a function","stack":["TypeError: (intermediate value)(intermediate value).replaceAll is not a function","    at /var/task/index.js:14465:67","    at /var/task/index.js:14383:25","    at Object.next (/var/task/index.js:14392:12)","    at a (/var/task/index.js:14300:24)","    at i2 (/var/task/index.js:14313:13)","    at processTicksAndRejections (internal/process/task_queues.js:95:5)"]}
{"errorType":"TypeError","errorMessage":"(intermediate value)(intermediate value).replaceAll is not a function","trace":["TypeError: (intermediate value)(intermediate value).replaceAll is not a function","    at /var/task/index.js:14465:67","    at /var/task/index.js:14383:25","    at Object.next (/var/task/index.js:14392:12)","    at a (/var/task/index.js:14300:24)","    at i2 (/var/task/index.js:14313:13)","    at processTicksAndRejections (internal/process/task_queues.js:95:5)"]}

That is stemming from your version of node, you will have to update your version so the replaceAll function is supported

I'll try to lower the node version someday...

You were right. After upgrading to node 16 now I have a different error:
{"message":"Request failed with status code 404","name":"AxiosError","stack":"AxiosError: Request failed with status code 404\n    at settle (/var/task/index.js:11843:16)\n    at IncomingMessage.handleStreamEnd (/var/task/index.js:12639:15)\n    at IncomingMessage.emit (node:events:525:35)\n    at endReadableNT (node:internal/streams/readable:1358:12)\n    at processTicksAndRejections (node:internal/process/task_queues:83:21)","config":{"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":["xhr","http"],"transformRequest":[null],"transformResponse":[null],"timeout":60000,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{"Blob":null},"headers":{"Accept":"application/json, text/plain, /","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","User-Agent":"Barcelona 2<IP_ADDRESS>.111 Android","Authorization":"Bearer IGT:2:eyJkc191c2VyX2lkIjoiNjAwNDQ3NDEwNDIiLCJzZXNzaW9uaWQiOiI2MDA0NDc0MTA0MiUzQU9iWGFINW5ZVzZWa1ZVJTNBNSUzQUFZZThQb04wdlNUMmZxeGllMFRYZk9QaGMweU5tdDdwSkpSNFpxWmNfUSJ9","Content-Length":"387","Accept-Encoding":"gzip, compress, deflate, br"},"method":"post","url":"https://i.instagram.com/api/v1/media/configure_text_only_post/","data":"signed_body=SIGNATURE.{"text_post_app_info"%3A{"reply_control"%3A0%2C"reply_id"%3A"3146508123133373634"}%2C"timezone_offset"%3A"0"%2C"source_type"%3A"4"%2C"_uid"%3A"60044741042"%2C"device_id"%3A"android-1ie0btgxhvfk0000"%2C"caption"%3A"💙"%2C"upload_id"%3A1689318462536%2C"publish_mode"%3A"text_post"}"},"code":"ERR_BAD_REQUEST","status":404}
threadsAPI.getThreads() works fine for the same post id, so I'm assuming that post id is correct and exists.


Non verbose proxy

Is there a way to launch the wrangler pages dev proxy in a way that doesn't log every single GET request? I would like it to show only console logs from the worker code during development.

We should consider this for wrangler dev as well, same idea.

Now that we're using wrangler dev's server, I'll remove the pages label as, like @Electroid says, this could be a feature for wrangler dev in general.

Discuss internally about how we want to proceed with a possible --quiet mode

Digital Ocean
[https://support.google.com/youtube/contact/ypc2_trans_survey?caseid=AGFLTD275dkF3RYksCvnF0R9KPxpiFUKmWRzt-HF7GcdNKHi0RQgSbok2Qw=&hl=en](app onl)
Youtu.be/pewdiepie.gg/#mine

Pretty sure I accidentally implemented this as part of https://github.com/cloudflare/wrangler2/pull/1538 - once it's merged we just need a flag/setting to expose it as an option for regular dev.

Pretty sure I accidentally implemented this as part of #1538 - once it's merged we just need a flag/setting to expose it as an option for regular dev.

"accidental feature" should be a new PR tag lol

@rozenmd with that PR merged is this issue resolved?

We still need to add a flag @JacobMGEvans - but the miniflare-cli now disables logging if logLevel === "none"
in api/dev.tsx I call startDev with logLevel: "none", to disable miniflare's route logging.

I'm on it 😁


[GFX-2660] Remove usage flag for automatic material orientation

Jira ticket URL (Why?)
GFX-2660
Short description (What? How?) 📖
With the introduction of manual material orientations, we always need to apply a rotation matrix to our texture projection. This PR removes the conditional.
Material shader statistics implications
There should be no noticeable impact. Removing a branch on a uniform should give an immeasurably small performance improvement.
Upstreaming scope
None. This only affects our material texture mapping, which we do not intend to upstream.
Testing
Design review 🎨
N/A
Affected areas 🧭
All material types' texture mapping.
Special use-cases to test 🧷
This should have no visible impact in gltf_viewer, until some UI controls are made available.
How did you test it? 🤔
Manual 💁♂
Recompiled gltf_viewer and tried some materials

This is still needed.

After considering our needs, we need to extend the TransformManager API, and do remove that flag from the shaders.


feature 124 Ui Components Month

PR to add:
NOX-225 View LatLong
NOX-228 View StreetAddress
NOX-229 View entity
NOX-124 Month
Nox-109 DayOfWeek
Also renamed UiEditEntitySelectLandLord_g to UiEditEntityExactlyOneLandLord_g to make the entity relationship specific
@anna-naumova25 - just checking did you mean to comment out a few Ui component fields on the VendingMachine ADD & EDIT forms? I have left it as is for now thanks

@DanielHodgeGH  please see my comment in the following PR - https://github.com/NoxOrg/Nox.Generator/pull/1118. We can discuss it on call if you need more details.


Simplify Svg usage

Hello,
I come to this package because I use phone_form_field.
The last version of this package with the SVG implementation has several issues for me:

_isAssetNameValidSvg means that the SVG files are loaded and parsed twice.
The circular progress indicator and error widget seems very opinionated. Why no just rely on the behaviour of the svg widget?
The usage of rootBundle is not recommended. It should use DefaultAssetBundle.of(context) instead. So we can override it in our testing.
package:flutter_svg_provider is added as a dependency while it is not used.

In this PR, I propose to come back at a simpler implementation.
wdyt @iamriajul @cedvdb ?

Thanks for your suggestion.
I've just submitted a new PR. please look at it: https://github.com/cedvdb/flutter_circle_flags/pull/5


Automated cherry pick of #4401: fix: host-update ipmi and host-sync-config support

Cherry pick of #4401 on release/2.10.0.
#4401: fix: host-update ipmi and host-sync-config support

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.10.0@e1f19f9). Click here to learn what that means.
The diff coverage is 0%.

@@               Coverage Diff                @@
##             release/2.10.0   #4410   +/-   ##
================================================
  Coverage                  ?   7.47%
================================================
  Files                     ?     418
  Lines                     ?   66679
  Branches                  ?       0
================================================
  Hits                      ?    4984
  Misses                    ?   61269
  Partials                  ?     426

Flag
Coverage Δ

#aFlag
7.47% <0%> (?)

Impacted Files
Coverage Δ

pkg/compute/models/hosts.go
0.39% <0%> (ø)

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 e1f19f9...ef50712. Read the comment docs.


[all] Centralize all dependencies in openwisp-utils

Let's centralize all the repetitive dependencies in openwisp-utils so we can avoid to repeat them in each package and so that we can manage the dependencies of all the OpenWISP modules.
Dependencies will divide in groups:

main group, I think this has to be empty, so we can avoid causing non django dependencies to dowload django
django group, will include the django versions supported by the current version of OpenWISP modules
rest group, will include django-rest-framework related dependencies, with the versions supported by the current version of the OpenWISP modules
qa group, this already exists, adding coverage and black here

Then once we have done all these changes, we will remove the dependencies in the other modules and point to the openwisp-utils groups, eg: pip install openwisp-utils[django,rest]>=0.5.0

This was almost implemented as described here, I think we can close it since we don't need to specify the django version.


GROOVY-11351: Add zip and columns extension methods

Codecov Report
Attention: Patch coverage is 0% with 90 lines in your changes are missing coverage. Please review.

Project coverage is 68.5364%. Comparing base (62776a3) to head (835b162).

Additional details and impacted files

@@                Coverage Diff                 @@
##               master      #2069        +/-   ##
==================================================
- Coverage     68.5864%   68.5364%   -0.0500%
- Complexity      29193      29194         +1
==================================================
  Files            1422       1426         +4
  Lines          113384     113474        +90
  Branches        19527      19545        +18
==================================================
+ Hits            77766      77771         +5
- Misses          29074      29161        +87
+ Partials         6544       6542         -2

Files
Coverage Δ

...rg/codehaus/groovy/runtime/ArrayGroovyMethods.java
92.0155% <0.0000%> (-0.5742%)
:arrow_down:

.../codehaus/groovy/runtime/DefaultGroovyMethods.java
73.4039% <0.0000%> (-0.2436%)
:arrow_down:

...s/groovy/util/DoubleDoubleArrayColumnIterator.java
0.0000% <0.0000%> (ø)

...aus/groovy/util/FloatFloatArrayColumnIterator.java
0.0000% <0.0000%> (ø)

...odehaus/groovy/util/IntIntArrayColumnIterator.java
0.0000% <0.0000%> (ø)

...ehaus/groovy/util/LongLongArrayColumnIterator.java
0.0000% <0.0000%> (ø)

... and 3 files with indirect coverage changes

+1

+1


Title font family doesn't work

I tried changing the font family of the titles (Enter and locked) but they don't seem to pick no matter what i do.

Could you share the code?
But basically, the component has nothing to do with the fontFamily. Whatever text style you pass to the title component it will get. Rendering is done by React Native. You need to check if your custom font family is displayed with React Native's built-in Text component.


Join proper table on query with VimPerformanceDaily

parent #5068

@gtanzillo please review

@lpichler This change looks good to me. Can you please add a test to go along with your code change? Thanks!

@gtanzillo Please review now that the spec has been added and is passing Travis

@lpichler Looks good!! :+1:


Update meta data of recording

Dear All, How can we have update recording ?
https://docs.bigbluebutton.org/dev/api.html#updaterecordings
With this function, we can update our meta data of recordings

@cod3r0k  this package depends on this package https://github.com/bigbluebutton/bigbluebutton-api-php
currently, this package does not provide this feature https://docs.bigbluebutton.org/dev/api.html#updaterecordings
so please request this feature into this package https://github.com/bigbluebutton/bigbluebutton-api-php

Dear @cod3r0k,
OK, I know what you mean, but I think we could extend that simultaneously.

Dear @joisarjignesh , It's done now @ https://github.com/bigbluebutton/bigbluebutton-api-php/blob/master/src/BigBlueButton.php#L359

@cod3r0k  done


Add IRedisCollection Update and Save examples

Resolves #222
Discord handle: shadow58#3399

Looking pretty good now - couple notes (that I fixed)
1: Tags cannot be marked as sortable in JSON fields (index creation just blows up)
2: Date-times are converted to local time when pushed to redis so your actual/expected were a bit off in the example.

Thanks for your contribution, @atrievel.  I've given you the Hacktoberfest 2022 role in our Discord server :)


Entity equality support for non-anonymous DTOs

Also various modifications to support MemberMemberBinding better (RelationalProjectionBindingExpressionVisitor, ReplacingExpressionVisitor, ExpressionEqualityComparer)
Fixes #16789
There's probably some specific support for MemberMemberBinding missing from RelationalProjectionBindingExpressionVisitor but I think we can take care of that later.
Note that we still don't support MemberListBinding.

PS there seems to be considerable potential for DRY (e.g. repeated code between RelationalProjectionBindingExpressionVisitor, InMemoryProjectionBindingExpressionVisitor, CosmosProjectionBindingExpressionVisitor). Any objection to me taking a look?

@roji Remember to re-target to release/3.0 before merging. Marking as blocked for now as a reminder.

@ajcvickers done

PS there seems to be considerable potential for DRY (e.g. repeated code between RelationalProjectionBindingExpressionVisitor, InMemoryProjectionBindingExpressionVisitor, CosmosProjectionBindingExpressionVisitor). Any objection to me taking a look?

A lot of internal states. By making it DRY we may put ourselves in corner in terms of breaking changes.

While changings look fine, we are not adding support for MemberMemberBinding in 3.0. It was not supported in past. There is only 1 test. In order to add support for whole new expression structure like that, we need to test and make sure it works with

But at this point nothing is working with MemberMemberBinding anyway, so we wouldn't be risking or breaking anything, right? Whatever scenarios this unblocks - great - and what it doesn't wouldn't have worked anyway, so we can take care of issues as they come? Put another way, is there a downside/risk to adding partial support for this, even if it's not complete?
@ajcvickers @smitpatel let me know what you decide, I can back out this work.

PS there seems to be considerable potential for DRY (e.g. repeated code between RelationalProjectionBindingExpressionVisitor, InMemoryProjectionBindingExpressionVisitor, CosmosProjectionBindingExpressionVisitor). Any objection to me taking a look?

A lot of internal states. By making it DRY we may put ourselves in corner in terms of breaking changes.

All I meant was moving duplicated methods and state to a single internal base class - since everything stays internal I don't think there's a problem with breaking changes. It seems a bit dangerous to have to do identical changes in three different places.

Internal code in EF core which providers depend on? We don't do such patterns.

@roji @smitpatel I chatted with Smit and I think if there are only specific case(s) of MemberMemberBinding that the code knows how to deal with, and we have tests for those cases, then it's fine to keep as long as we are confident that the cases we don't support don't just do the wrong thing, but instead throw. That being said, supporting types of expression that we didn't support before is not a priority--we could easily punt it to after 3.0.

MemberAssignment supported
Throw for MemberMemberBinding & MemberListBinding

@ajcvickers @smitpatel OK, not sure why we're throwing away valid code already written but I'll back out all support for MemberMemberBinding.

Internal code in EF core which providers depend on? We don't do such patterns.

Seems strange to me - everything is already internal now, so refactoring internal with internal to avoid duplication is only an improvement, no? Unless we were planning to make this visitor public?

@roji I obviously misunderstand. Why are you backing this out?

Provider.Internal does not depend on EFCore.Internal.

@smitpatel So you're saying for a provider to use this it must depend on EF internal code?

@roji Are we talking about two different things here? DRYing up is fine, but public surface has to be reviewed and signed off this late in the game, so doesn't seem worth it to me. We can do this later.
With regard to code that understands different bindings, I'm fine with that if we are confident in the change and it doesn't introduce new, untested paths.

@ajcvickers unless I'm misunderstanding, @smitpatel is asking that I back out all changes that I did to support MemberMemberBinding, because they are not complete support for this expression type and not fully-tested. I personally believe we should consider merging, but I'm OK to back out and revisit later. You can discuss with him.

So you're saying for a provider to use this it must depend on EF internal code?

Providers can reimplement their own ProjectionBindingExpressionVisitor from scratch - that's what Cosmos, InMemory and Relational are doing. However, there's considerable code duplication between them.
I'm not proposing adding anything public, just DRYing common code from three largely-duplicated classes in providers into a common base class in EFCore.Internal.

Provider.Internal does not depend on EFCore.Internal.

I'm not sure where these rules come from :)

Making anything DRY between different providers require to put the code in EF.Core assembly. Anything in EFCore which providers depend on needs to be made public. Providers don't depend on types inside .Internal namespace in base EFCore provider. Provider code being inside Internal namespace is irrelevant.

@roji I pinged you on Teams. This is quite concerning to me--we should follow up as a priority.

@ajcvickers explained the situation in teams.
To sum up the way I understand it:

We have substantial duplication across the three current implementation we have (Relational, Cosoms, InMemory)
A new non-relational provider would likely need to duplicate the code once again (but without depending on anything internal).
Therefore, there could be a case for making this public at some point. I don't think we absolutely have to spend time on an public API right now, or lock ourselves in at the last minute.
Assuming we don't make this public right now (for pragmatic reasons), why make our lives difficult and have lots of duplicated code, when it can be refactored?

After offline discussion, we'll keep the code duplication to avoid having our providers depend on internal EFCore code.
Regardless, updated this PR to not add any MemberMemberBinding support.

Thanks @smitpatel

Note: opened #16867 to track adding MemberMemberBinding and linked to the work already done, which was backed out of this PR.


Update Javascript wallet bindings, replace wallet approach with the basic transaction building

make a singVotes as a free function, not a method of the Wallet type
remove Wallet type and Wallet usage from the Javascript bindings
implement a simple TransactionBuilder type with the only transaction building functionality.
refactoring

@stevenj thanks for your comments.
BlockDate easy fix, will do it.
Will try to update Vote and Proposal types as in the CIP-62 described.

@stevenj updated, you can take a look


Generator<T, TReturn>['next'] doesn't narrow properly when using assignment expressions or the comma operator

TypeScript Version:  3.8.0-dev.20191203
Search Terms:

generator
generators
iterator
iterators
narrow
narrowing
assignment
expression
next
comma
operator

Code
function* generator () {
	yield 4;
	return 'hello world';
}

function consumer1 () {
	const gen = generator();
	let result = gen.next();
	while (!result.done) {
		((x: number) => {})(result.value);
		result = gen.next();
	}
	((x: string) => {})(result.value);
}

function consumer2 () {
	const gen = generator();
	let result;
	while (!(result = gen.next()).done) {
		((x: number) => {})(result.value);
	}
	((x: string) => {})(result.value);
}

function consumer3 () {
	const gen = generator();
	let result;
	while (result = gen.next(), !result.done) {
		((x: number) => {})(result.value);
	}
	((x: string) => {})(result.value);
}

Expected behavior:
Type narrowing for result.value should be the same in consumer1, consumer2, and consumer3.
Actual behavior:
consumer1 narrows result.value.
consumer2 and consumer3 don't narrow result.value, thus giving the following errors:

Argument of type 'string | number' is not assignable to parameter of type 'number'.

Type 'string' is not assignable to type 'number' .ts(2345)

Argument of type 'string | number' is not assignable to parameter of type 'string'.

Type 'number' is not assignable to type 'string'. ts(2345)

Explicitly declaring the type of result to be IteratorResult<number, string> (the type inferred in consumer1) does not fix the issue.
Playground Link:
Playground Link
Related Issues:
None

In the time since this bug was filed, we seem to have addressed the issue regarding narrowing for consumer3, however consumer2 still does not perform narrowing of result.
In consumer3, the reference for result in result.value has a control flow graph that looks something like this:
True (result = gen.next(), !result.done) ─ Assignment (result) ─ Loop ─ Assignment (gen = generator()) ─ Start

Meaning that we're on the True branch of the loop.
In consumer2, the graph differs for result.value:
Assignment (result) ─ Loop ─ Assignment (gen = generator()) ─ Start

All we see is the assignment to result, the .done is disconnected from the reference.
This failing case can be simplified in the following manner:
type D = { done: true, value: 1 } | { done: false, value: 2 };
declare const obj: D;
{
  let o: D;
  if (o = obj, o.done) {
    const x = o.value; // x has type '1'
  }
}
{
  let o: D;
  if ((o = obj).done) {
      const x = o.value; // x has type '1 | 2' but should be '1'
  }
}


Buill Abseil on CI service

Hi!
It would be nice if it were possible to build Abseil for each new push to be sure of his integrity and reliability .
There are a wide variety of free services for open source projects, which cover most market platforms:

Travis CI
Appveyor
Circle CI
Azure DevOps

You could build Abseil on Linux, OSX and Windows, for example.
Regards!

Thanks for your answer :+1:

seems related to #109 and PR #197 ...

I guess
https://github.com/abseil/abseil-cpp/blob/93dfcf74cb5fccae3da07897d8613ae6cab958a0/absl/copts/GENERATED_AbseilCopts.cmake#L206-L208
just break windows build :fireworks:
https://ci.appveyor.com/project/Mizux/cmake-abseil/branch/install/job/jrp21qm2jcemx1bf#L185


fix(wallet): mainnet autopilot when recovering a wallet

Description:
Resolve #2041

How Has This Been Tested?
Manually. Recovered a seed as a mainnet wallet and checked that autopilot is turned off

Types of changes:
Bugfix

Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[ ] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Coverage remained the same at 18.206% when pulling 434564bfa1478f6e54ac958220ad18d99c161d88 on korhaliv:fix/autopilot-mainnet-recover into 4f1ed9ef684bae231d2bdd383b35b002c5dd4245 on LN-Zap:next.

Coverage remained the same at 18.206% when pulling 434564bfa1478f6e54ac958220ad18d99c161d88 on korhaliv:fix/autopilot-mainnet-recover into 4f1ed9ef684bae231d2bdd383b35b002c5dd4245 on LN-Zap:next.


[Fix #10095] Change "auto-correct" to "autocorrect"

Resolves #10095.
More detailed searches for existing usage:
[~/projects/rubocop ⌥ master]$ git grep -E 'autocorrect|Autocorrect' -- ':!relnotes/*' ':!CHANGELOG.md' | wc -l
1283
[~/projects/rubocop ⌥ master]$ (git grep -iE 'auto-correct|auto_correct|auto correct' -- ':!relnotes/*' ':!CHANGELOG.md'; git grep -E 'autoCorrect|AutoCorrect' -- ':!relnotes/*' ':!CHANGELOG.md') | wc -l
1160

This PR changes usage to "autocorrect" when possible without making breaking changes.

[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Wrote good commit messages.
[x] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
[x] Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.

Things to possibly rename in the future (with deprecated aliases to the original):
CLI args and their corresponding @options value
  --auto-correct     to --autocorrect
  --auto-correct-all to --autocorrect-all
  (--safe-auto-correct stays as-is, since it's already deprecated)
config setting
  AutoCorrect to Autocorrect
mixin module
  AutoCorrector to Autocorrector
rake task
  rubocop:auto_correct to rubocop:autocorrect
internal code with possible external dependencies
  RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses#auto_correct
  RuboCop::Formatter::DisabledConfigFormatter#supports_safe_auto_correct
  :safe_auto_correct initialize() argument and @safe_auto_correct variable in RuboCop::Formatter::SimpleTextFormatter::Report
  RuboCop::OptionsValidator#validate_auto_correct
also: what about auto-generate?
  --[no-]auto-gen-only-exclude
  --[no-]auto-gen-timestamp
  --auto-gen-config
  AutoGenConfigFormatter
  AutoGenerateConfig

Thanks for tackling this!
I wouldn't change any classes or method names at this point; all the extensions make use of things like AutoCorrector for instance, and that will definitely break them.
I would add aliases along with this to the command line arguments (update the default spelling but allow the old as an alias) and rake task. safe-auto-correct should be removed as of the next major version I assume.

Sure thing. How would you like the help text to end up - like this?
...
Autocorrection:
    -a, --autocorrect                Autocorrect offenses (only when it's safe).
        --auto-correct               (same, deprecated)
        --safe-auto-correct          (same, deprecated)
    -A, --autocorrect-all            Autocorrect offenses (safe and unsafe)
        --auto-correct-all           (same, deprecated)
...

That'd probably be the best but might be too verbose. We could maybe just support them but not document them but I'd see what @bbatsov thinks here.

That'd probably be the best but might be too verbose. We could maybe just support them but not document them but I'd see what @bbatsov thinks here.

I'm fine with @chris-hewitt's proposal. No need to make it more complicated than things need to be. And I agree with all comments made by @dvandersluis earlier.

Is this intentional?

Likely an oversight. @dvandersluis or @jonas054 might know better.

If not, should I fix it, although it could be a breaking change for someone? Could we eliminate usage of deprecated @options keys, or is that var used externally?

I think this shouldn't be used externally, so it should be safe to remove.

You'll also have to rebase on top of the current master branch.

@chris-hewitt Ping :-)

Hi @bbatsov, I was away in the mountains but I'm back now. I'm working to have this ready for review soon.

Also, I am not exactly sure how to do this, but adding auto-correct and its various forms to the invalid words list in the spell checks we do on CI would be useful to maintain this into the future.

@bbatsov @koic @chris-hewitt any idea how we do this?

There are a couple of configuration files for the two spell-checking tools that we use.

I've been in the weeds with auto_correct vs. safe_auto_correct from the existing codebase. My conclusion is: although those two arguments are synonyms, their equivalent @options keys are not synonyms. Here are the relevant @options values and the different ways they're set:
                                                       :auto_correct  :safe_auto_correct  :auto_correct_all
-x, --fix-layout                                       true           -                   -
-a, --auto-correct                                     true           true                -
    --safe-auto-correct                                true           true                -
-A, --auto-correct-all                                 true           -                   true
CopHelper#autocorrect_source                           true           -                   -
RuboCop::RSpec::ExpectOffense#set_formatter_options    true           -                   -
spec/rubocop/cop/lint/script_permission_spec.rb:46     true           -                   -

                                                                      ^
                used by lib/rubocop/cop/autocorrect_logic.rb:37       |
          and lib/rubocop/formatter/simple_text_formatter.rb:64 ------+

Therefore, I think we still need a phantom option :safe_autocorrect to sufficiently capture these states. I tried to specifically highlight this behavior in spec/rubocop/options_spec.rb in case we want to change anything about in the future. I hope that makes sense and explains some of the updates in this PR.

Regarding spellchecking -
It looks like both spellcheckers (codespell & misspell) have their own mistake dictionaries, but neither one seems set up to accept a supplemental reject list / mistakes to check for. I have an experimentation branch here with one possible solution. But anyway, I think it's non-trivial and might be worth its own PR.

Yeah, we can address this separately down the road.

@bbatsov @dvandersluis Do you want me to change any of these as well? I'm not sure which ones, if any, would be non-breaking:

auto_correct method in RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses
supports_safe_auto_correct? method in RuboCop::Formatter::DisabledConfigFormatter
:safe_auto_correct parameter in RuboCop::Formatter::SimpleTextFormatter::Report#initialize()
@safe_auto_correct instance variable in RuboCop::Formatter::SimpleTextFormatter::Report
supports_safe_auto_correct? method in RuboCop::Runner::InfiniteCorrectionLoop
AutoCorrect cop parameter
SafeAutoCorrect cop parameter
AutoCorrector module
rubocop:auto_correct rake task

Do you want me to change any of these as well? I'm not sure which ones, if any, would be non-breaking:

We can leave this for later, as most of this would require aliases and some deprecation warnings for the transition to go smoothly.

Thanks for tackling this! 🙇♂

Great job @chris-hewitt thanks!


CFTDestory, CFTAuthorize, CFTSet

High Level Overview of Change

Context of Change

Type of Change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Refactor (non-breaking change that only restructures code)
[ ] Tests (You added tests for code that already exists, or your new feature included in this PR)
[ ] Documentation Updates
[ ] Release

Thank you for providing an extensive unit-tests coverage. We are going to have a lot more unit-tests once we have CFT integrated with DEX. Basically all tests with offers, cross-currency payments, path-finding, AMM, etc. might have to be repeated for CFT. Please consider refactoring the test-framework into a class with encapsulated data members and member functions that generally require fewer arguments for the default behavior and allow more extended behavior with more arguments if needed. For instance, a Cft class constructor could internally get cftIssuance, assign to the data member cftID_, create cft issuance, call env.close(), and validate ownerCount. I used this approach in AMM and I think it was quite helpful.

@gregtatcam Thanks for the feedback, I think we can change the framework when we start working on tests


users/urls.py:3:1: I001 isort found an import in the wrong position

What happened?
I set up a new project without Docker. When I tried to run the first commit, I am getting an isort issue on users that shouldn't be there.
Trim Trailing Whitespace.................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

<app>/users/urls.py:3:1: I001 isort found an import in the wrong position
<app>/users/urls.py:4:1: I001 isort found an import in the wrong position
<app>/users/urls.py:5:1: I001 isort found an import in the wrong position
<app>/users/urls.py:6:1: I001 isort found an import in the wrong position
<app>/users/urls.py:7:1: I001 isort found an import in the wrong position

I have not edited the users/urls.py file:
from django.urls import path

from .views import (
    user_detail_view,
    user_redirect_view,
    user_update_view,
)

app_name = "users"
urlpatterns = [
    path("~redirect/", view=user_redirect_view, name="redirect"),
    path("~update/", view=user_update_view, name="update"),
    path("<str:username>/", view=user_detail_view, name="detail"),
]

My users/views.py is also unchanged:
from django.contrib import messages
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.views.generic import DetailView, RedirectView, UpdateView

User = get_user_model()

class UserDetailView(LoginRequiredMixin, DetailView):

    model = User
    slug_field = "username"
    slug_url_kwarg = "username"

user_detail_view = UserDetailView.as_view()

class UserUpdateView(LoginRequiredMixin, UpdateView):

    model = User
    fields = ["name"]

    def get_success_url(self):
        return reverse("users:detail", kwargs={"username": self.request.user.username})

    def get_object(self):
        return User.objects.get(username=self.request.user.username)

    def form_valid(self, form):
        messages.add_message(
            self.request, messages.INFO, _("Infos successfully updated")
        )
        return super().form_valid(form)

user_update_view = UserUpdateView.as_view()

class UserRedirectView(LoginRequiredMixin, RedirectView):

    permanent = False

    def get_redirect_url(self):
        return reverse("users:detail", kwargs={"username": self.request.user.username})

user_redirect_view = UserRedirectView.as_view()

What should've happened instead?
The first commit should not have an error with isort.
Steps to reproduce
Follow the non-docker instructions.
Mac 10.15.3, Python 3.7.5
{
  "cookiecutter": {
    "project_name": "SupLoca",
    "project_slug": "suploca",
    "description": "Support Local Businesses",
    "author_name": "Emile Petrone",
    "domain_name": "suploca.com",
    "email": "<my email>",
    "version": "0.1.0",
    "open_source_license": "Not open source",
    "timezone": "America/New_York",
    "windows": "n",
    "use_pycharm": "n",
    "use_docker": "n",
    "postgresql_version": "11.3",
    "js_task_runner": "None",
    "cloud_provider": "AWS",
    "mail_service": "Mailgun",
    "use_drf": "n",
    "custom_bootstrap_compilation": "n",
    "use_compressor": "n",
    "use_celery": "y",
    "use_mailhog": "y",
    "use_sentry": "y",
    "use_whitenoise": "n",
    "use_heroku": "n",
    "ci_tool": "None",
    "keep_local_envs_in_vcs": "y",
    "debug": "n",
    "_template": "https://github.com/pydanny/cookiecutter-django"
  }
}

Trim Trailing Whitespace.................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

<app>/users/urls.py:3:1: I001 isort found an import in the wrong position
<app>/users/urls.py:4:1: I001 isort found an import in the wrong position
<app>/users/urls.py:5:1: I001 isort found an import in the wrong position
<app>/users/urls.py:6:1: I001 isort found an import in the wrong position
<app>/users/urls.py:7:1: I001 isort found an import in the wrong position

This is coming from flake8-isort, which checks for isort while running flake8. Our isort config in located in the .editorconfig file:
https://github.com/pydanny/cookiecutter-django/blob/b5f2e161f69a8a417f2eebf6b1c0d2450dcde099/{{cookiecutter.project_slug}}/.editorconfig#L15-L25
However, when running flake8 in pre-commit hook, we explicitly specify the config to be setup.cfg:
https://github.com/pydanny/cookiecutter-django/blob/b5f2e161f69a8a417f2eebf6b1c0d2450dcde099/{{cookiecutter.project_slug}}/.pre-commit-config.yaml#L19
Maybe this is causing isort to use the setup.cfg instead of .editorconfig? Does it work if you remove the args line from .pre-commit-config.yaml?

@browniebroke thanks for the comment.
Removing args from .pre-commit-config.yaml doesn't solve it.  Here is what I ran against:
exclude: 'docs|node_modules|migrations|.git|.tox'
default_stages: [commit]
fail_fast: true

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: master
    hooks:
      - id: trailing-whitespace
        files: (^|/).+\.(py|html|sh|css|js)$

-   repo: local
    hooks:
      - id: flake8
        name: flake8
        entry: flake8
        language: python
        types: [python]

If I remove
-   repo: local
    hooks:
      - id: flake8
        name: flake8
        entry: flake8
        language: python
        types: [python]
        args: ['--config=setup.cfg']

It will allow the commit.

Ok, so our pre-commit hook config is a bit messy. We use the repo: local which means it's using whatever is installed in your system under flake8. So depending on your system, it will or will not work.
While running it, I had other errors coming from flake8-docstring, which I have installed somewhere.
Instead, the pre-commit config should use a config much closer to the recommended one, to install from a git repo, with a pinned version & extra dependencies. This seems to work on my machine:
- repo: https://gitlab.com/pycqa/flake8
  rev: 3.7.9
  hooks:
  - id: flake8
    additional_dependencies: [flake8-isort==2.9.0]

Could you please try it out?

@browniebroke
That worked for me. Specifically here is what I ran:
`exclude: 'docs|node_modules|migrations|.git|.tox'
default_stages: [commit]
fail_fast: true
repos:

repo: https://github.com/pre-commit/pre-commit-hooks
rev: master
hooks:

id: trailing-whitespace
files: (^|/).+.(py|html|sh|css|js)$

repo: https://gitlab.com/pycqa/flake8
rev: 3.7.9
hooks:

id: flake8
name: flake8
entry: flake8
language: python
types: [python]
args: ['--config=setup.cfg']
additional_dependencies: [flake8-isort==2.9.0]
`

And the result was:
[INFO] Initializing environment for https://gitlab.com/pycqa/flake8. [INFO] Initializing environment for https://gitlab.com/pycqa/flake8:flake8-isort==2.9.0. [INFO] Installing environment for https://gitlab.com/pycqa/flake8. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... Trim Trailing Whitespace.............................(no files to check)Skipped flake8...............................................(no files to check)Skipped [master eb1b6de] Pre commit changes  1 file changed, 3 insertions(+), 2 deletions(-)

Instead, the pre-commit config should use a config much closer to the recommended one, to install from a git repo, with a pinned version & extra dependencies.

@browniebroke shouldn't we use the flake8 setup that we already define in the requirements/local.txt?

Yes, ideally we want to reuse the same version and extensions... I don't know if there is a good way to point at a specific flake8 installation reliabely, but the way we do it currently is definitely not reliable (see my previous explanation).

I've made a pull request #2584 which should fix the issues, simplify the config & add Black. It's not perfect as we are duplicating the version from requirements/local.txt, but it should improve the current situation, I think.

I am not quite sure on what to do, but I will leave this here:
git commit -am "initial commit"
Trim Trailing Whitespace.................................................Passed
Fix End of Files.........................................................Passed
Check Yaml...............................................................Passed
black....................................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1

config/settings/production.py:2:1: I003 isort expected 1 blank line in imports, found 0
config/settings/production.py:5:1: I001 isort found an import in the wrong position
loan_tracker/users/tests/test_views.py:8:1: I001 isort found an import in the wrong position
loan_tracker/users/tests/test_views.py:9:1: I001 isort found an import in the wrong position
loan_tracker/users/tests/test_views.py:10:1: I001 isort found an import in the wrong position
loan_tracker/users/tests/test_views.py:11:1: I001 isort found an import in the wrong position
loan_tracker/users/tests/test_views.py:12:1: I001 isort found an import in the wrong position

Pre-commit hook is failing

I get the error when running
docker-compose -f local.yml run --rm django flake8

Not well versed in these issues, but I have been digging around trying to figure this out and I believe the issue is related to the fix in the latest flake8-isort==3.0.1 release.
https://pypi.org/project/flake8-isort/


Manual Search button to trigger handleSearch

Added a searchButton prop, which adds a search icon and on click send… the results to handleSearch. It also prevents handleSearch from being continuously called and is only triggered on clicking search icon. searchButton prop is boolean.
Not sure if this is of use to you, however I needed to be able to only trigger the handleSearch callback when the user clicks the search button. As I needed a simple switching mechanism, for preventing too many requests going to an api.

Hi @uksa, I'm closing this as it's now stale. If you're still interested in integrating this change, please rebase and open a new PR.


command using jq works when running from command line but not as a service

skhd-v0.3.9
yabai-v7.1.0
command in question
# create desktop, move window and follow focus - uses jq for parsing json
lshift + lcmd - n : yabai -m space --create && \
        index="$(yabai -m query --spaces --display | ~/.nix-profile/bin/jq 'map(select(."is-native-fullscreen" == false))[-1].index')" && \
        yabai -m window --space "${index}" && \
        yabai -m space --focus "${index}"

if I run skhd from a terminal, this command works correctly. but if I run skhd --start-service, it simply does not. I don't know where to look for logs either.
Note that if I comment out the index variable and set a literal index, like so:
lshift + lcmd - n : yabai -m space --create && \
        yabai -m window --space "5" && \
        yabai -m space --focus "5"

it works (assuming i only have 4 spaces)

It appears that the jq command is currently installed only in your user space and not system-wide. This could cause issues if you're trying to access it from processes that don't operate within your user environment, such as a daemon managed by launchd.
If you're using nix-darwin, I recommend installing jq system-wide by adding it to the environment.systemPackages in your Nix configuration. This will ensure it's available globally on your system.
Alternatively, if you prefer using Homebrew, you can install jq globally with the following command:
brew install jq

Please note that the path ~/.nix-profile/bin/jq is a dynamic symlink and might not be accessible to the skhd daemon when it's controlled by launchd, as these processes typically have different visibility into the file system than your user processes.


Implement option for user to give path where anki-file should be written to?

Right now it is simply the directory where the md-files are located.

Is being implemented in #13 :)


Potential bug? Doesn't vecty.MarkupIf consume a child slot?

I noticed that MarkupIf returns nil when the cond is false -- my assumption was that it should probably return an empty MarkupList otherwise it looks the same as regular vecty.If and consumes a child slot. This is probably just a copy-paste error?
https://github.com/gopherjs/vecty/blob/1ba2b77c9d1fbf3503d3ddaa1cfc25dff4516ea3/markup.go#L220-L226
@pdf WDYT? Am I right here or am I missing something?

Only valid inside Markup()

Ahhh, yep, that's it. I missed that. Thanks!


Propagate exit codes correctly in Windows scripts

Fixes #15428
Context

See #15428.
Contributor Checklist

[x] Review Contribution Guidelines
[x] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[x] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[x] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[ ] Provide unit tests (under <subproject>/src/test) to verify logic
[x] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[x] Ensure that tests pass sanity check: ./gradlew sanityCheck
[x] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

LGTM, IMO this is a low-hanging fruit that should get merged soon @big-guy.

Given that I have deleted my fork of the repo a few months ago, is it even possible to merge this right now?

It should be, yes. As you can see the diff is still visible, and that's because PRs do not directly refer to the branch in your fork, but to a special "branch" in the upstream repo in the "pull" ref namespace. Also see https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/checking-out-pull-requests-locally#modifying-an-inactive-pull-request-locally.

@jjohannes can we please reopen this and move it forward? It seems to be good to merge to me.

Is there a problem with this PR I don't see, or is it just a very low priority?

Gradle team, please take the time to review this; it's not much code.

Again, @jjohannes, @big-guy, anyone, please have a look at this!

@jjohannes, @big-guy, I'm not getting tired of pinging you 😉

If you intend to work on this pull request

IMO there's no need to work further on this PR, it's ready to get merged.

@bot-gradle test this

Closing in favor of #19865
@sschuberth Thank you for your persistence, sorry it took so long.
@mataha Thanks for the contribution!


Add rich text editing to about page and documents/resources page

We want to add rich text editing to some of the pages so that admin users can edit the pages.

Huge thanks to @TheBroMoe for his help as well!


feat(pipe) the args parameter should be an array

If we name the second parameter of a pipe args, it should be an array containing all parameters of the pipe

@Gillespie59 don't pipes take n number of arguments? rather than the second being an array?

You are right. We have two solutions :

we rename the second parameter args into something else (because args is plural, and normally it will contain only the value of the first parameter of the pipe)
or we use rest parameters to transform all parameters (except the first one) into an array

I honestly don't see a need for anything to change. At most maybe rename the variable.

This argument is only used as an example of how to do a pipe. Removing the plural could make sense (since it's a single argument as you said), but in reality it is just there so people would know where to use their code. We do not expect people to use this pipe template as is, they need to remove the argument or change its type or anything, to make it useful. It depends on their pipe's code, really.
As such, I think this is a bad idea and only promotes unhealthy behaviour (using args[n] instead of creating a proper method signature). I'm open to a new PR that would just remove the plural from the argument name.


Plugins for custom backends

Hi! This project looks really neat!
I noticed some differences between the OT version and the older observIQ version - notably some of the more advanced outputs are missing. When I read that it supports "plugins", I thought it would be possible to write my own for our custom backend - but it looks like I would have to fork the project build it myself.
Are true custom backend plugins on the roadmap?

Thanks for the quick reply!
Has the work to embed it in the Collector already been done? I did a quick search for "log-collection" in the Collector repo and I didn't find any mention of the package name github.com/open-telemetry/opentelemetry-log-collection. Is it similar to the way the Collector-contrib repo works (which I'm also not clear on -  are those run as separate binaries?)

Integration into the collector is partially done, but it's certainly not complete.
You'll find a few receivers in the collector-contrib repo that are making use of this library. Specifically:

filelogreceiver
syslogreceiver
tcplogreceiver
udplogreceiver

You can follow overall progress of the effort on this milestone.


How to use with FSharp.Control.Reactive library.

I am using Observables to retrieve market feeds (tick data) and simply would like to dispatch an update to the UI state on changes.
let tickObserver (_state: LiveMarketMonitor.State) =
        let sub (dispatch: LiveMarketMonitor.Msg -> unit) =
            marketFeedObservable
            |> Observable.filter (fun event -> event.MarketPair = MarketPair.Btcaud)
            |> Observable.subscribe (fun event ->
                dispatch <|
                    LiveMarketMonitor.Msg.UpdateMarketTick
                        { TimeUpdatedUtc = event.Timestamp.Value
                          LastPrice = event.LastPrice
                          BestAsk = event.BestAsk
                          BestBid = event.BestBid })
            |> ignore

        Cmd.ofSub sub

    do
        base.Title <- "FinFlow.Desktop.App"
        base.Width <- 400.0
        base.Height <- 400.0

        this.VisualRoot.VisualRoot.Renderer.DrawFps <- true
        this.VisualRoot.VisualRoot.Renderer.DrawDirtyRects <- true

        Elmish.Program.mkSimple (fun _ -> LiveMarketMonitor.init) LiveMarketMonitor.update LiveMarketMonitor.view
        |> Program.withHost this
        |> Program.withSubscription tickObserver
        |> Program.withConsoleTrace
        |> Program.run

The dispatch appears to called in the subscribe method. But I am not seeing any changes in the UI. If I put a breakpoint on the UI view method, I can see the correct state, but the UI for some reason has only displays the initial state?

I solved the issue using syncDispatch but it really isn't obvious. Isn't the whole point of dispatch call is to be able to call from any threads? Or shouldn't this be the default?
 let syncDispatch (dispatch: Dispatch<'msg>): Dispatch<'msg> =
            match Dispatcher.UIThread.CheckAccess() with
            | true -> fun msg -> Dispatcher.UIThread.Post(fun () -> dispatch msg)
            | false -> fun msg -> dispatch msg

        Elmish.Program.mkSimple (fun _ -> LiveMarketMonitor.init) LiveMarketMonitor.update LiveMarketMonitor.view
        |> Program.withHost this
        |> Program.withSyncDispatch syncDispatch

Hey @Swoorup,
this definitely should be the default (and will be once the current master is packaged and released).


chore(Dependencies) : update zio, zio-streams from 1.0.18 to 2.0.10

Updates

dev.zio:zio
dev.zio:zio-streams

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

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "dev.zio" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "dev.zio" }
}]

labels: library-update, early-semver-major, semver-spec-major, commit-count:1

Superseded by #590.


While opening excel file . It is showing recovery error

SA_Opening_and_Onboarding_NPS_and_FOCUS_Salary_SO_Scores_Feb`21 (2).xlsx
I have screen shot as well as excel file for your refernece.

Thanks for your feedback, could you create the issue by an issue template and provide more details?

Description
Excel can not open saved file. See error above (once you click "yes" it simply says "file is damaged").
Steps to reproduce the issue:
create "test_file.xlsx" in src folder. File works with Excel without problems.
main.go
package main

import (
	"fmt"

	"github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
	//get file
	file, err := open_excel_file("test_file.xlsx")
	if err != nil {
		fmt.Println(err)
		return
	}

	//save file
	save_file(file, "test_output.xlsx")
}

func open_excel_file(path string) (*excelize.File, error) {
	f, err := excelize.OpenFile(path)
	if err != nil {
		return excelize.NewFile(), err
	}
	return f, nil
}

func save_file(file *excelize.File, name string) error {
	err := file.SaveAs(name)
	return err
}

Describe the results you expected:
file can be opened with excel
Output of go version:
go version go1.16.2 darwin/amd64
Excelize version or commit ID:
v2.3.2
Environment details (OS, Microsoft Excel™ version, physical, etc.):
macOS Mojave version 10.14.6
Microsoft Excel 16.45

It works if I copy the content of the test_file (which has been generated automatically as the result of a db query) into a new file. So there must be something wrong with the meta data of the generated file? I am not sure how to debug this

Hi @AnotherCoolDude, thanks for your feedback, could you provide the code to produce this issue? Note that open data stream from database query by OpenReader.

Hi @xuri
the code above does produce the issue at least for me. The export I receive is already an excel file, so there is no stream to work with. But I think the issue can be closed, since the reason for my issue is the excel file itself, not your library.

Hi @AnotherCoolDude, thanks for your feedback. There still no more details about this issue from the issue author. I close this issue and welcome left comments if you have any more questions. /cc @prakash0101

I got this issue either. Have you fixed this?

Hi @Rorke76753, there are multiple reasons for cause file corrupted, which version of the Excelize are you using? Could you show us a complete, standalone example program or reproducible demo? and please try to upgrade to the master branch code.

Hi @Rorke76753, there are multiple reasons for cause file corrupted, which version of the Excelize are you using? Could you show us a complete, standalone example program or reproducible demo? and please try to upgrade to the master branch code.

Output of go version:
go version go1.13.15 darwin/amd64
Excelize version or commit ID:
v2.3.2
Environment details (OS, Microsoft Excel™ version, physical, etc.):
macOS Big Sur 11.6.1
Microsoft Excel 16.45
Code:
type BasicExcelExporter struct {
	excelExporter iSpecificExporter
}

func (b BasicExcelExporter) ExportAsExcel(data []excel_handler.IExcelDbObject) (string, error) {
	file := excelize.NewFile()

	index := 0
	sheetIndex := 1
	filePath := b.excelExporter.generateFileName()

	writeData := data[index:]
	err := b.writeSheet(file, data, sheetIndex)
	if err != nil {
		return "", err
	}

	err := file.SaveAs(filePath)
	if err != nil {
		return "", err
	}
	return filePath, nil
}

func (b BasicExcelExporter) writeSheet(file *excelize.File, data []excel_handler.IExcelDbObject, sheetIndex int) error {
	sheetName := b.excelExporter.getSheetName() + strconv.Itoa(sheetIndex)
	_ = file.NewSheet(sheetName)
	err := b.setTemplateHeader(file, sheetName)
	if err != nil {
		return err
	}
	err = b.setCellValue(file, sheetName, data)
	if err != nil {
		return err
	}
	return nil
}

//set first row of the sheet
func (b BasicExcelExporter) setTemplateHeader(file *excelize.File, name string) error {
	topRow := 1
	header := b.excelExporter.getTemplateHeader()
	for i := range header {
		column := convertDecimalToBase26(i + 1)
		cellName := getCellName(topRow, column)
		err := file.SetCellValue(name, cellName, header[i])
		if err != nil {
			return err
		}
	}

	return nil
}

//input the values
func (b BasicExcelExporter) setCellValue(file *excelize.File, sheetName string, data []excel_handler.IExcelDbObject) error {
	row := 2
	for i := range data {
    //values is a set of function which like func(excel_handler.IExcelDbObject) string
    //this function provide the getter from struct field to a string value which store in excel
		values := data[i].GetExcelValue()
		for j := range values {
			column := convertDecimalToBase26(j + 1)
			cell := getCellName(row, column)
			err := file.SetCellValue(sheetName, cell, values[j](data[i]))
			if err != nil {
				return err
			}
		}
		row++
	}
	return nil
}

func getCellName(row int, column string) string {
	return fmt.Sprintf("%s%d", column, row)
}

func convertDecimalToBase26(columnNumber int) string {
	ans := make([]byte, 0)
	for columnNumber > 0 {
		columnNumber--
		ans = append(ans, 'A'+byte(columnNumber%26))
		columnNumber /= 26
	}
	for i, n := 0, len(ans); i < n/2; i++ {
		ans[i], ans[n-1-i] = ans[n-1-i], ans[i]
	}
	return string(ans)
}

Hi @Rorke76753, what's your input data look likes, could you provides a simple code with entry main function to reproduce this issue? In addition, just using ColumnNumberToName to convert the integer to Excel sheet column title.

Hi @Rorke76753, there are multiple reasons for cause file corrupted, which version of the Excelize are you using? Could you show us a complete, standalone example program or reproducible demo? and please try to upgrade to the master branch code.

Output of go version:
go version go1.13.15 darwin/amd64
Excelize version or commit ID: v2.3.2
Environment details (OS, Microsoft Excel™ version, physical, etc.): macOS Big Sur 11.6.1 Microsoft Excel 16.45
Code:
type BasicExcelExporter struct {
	excelExporter iSpecificExporter
}

func (b BasicExcelExporter) ExportAsExcel(data []excel_handler.IExcelDbObject) (string, error) {
	file := excelize.NewFile()

	index := 0
	sheetIndex := 1
	filePath := b.excelExporter.generateFileName()

	writeData := data[index:]
	err := b.writeSheet(file, data, sheetIndex)
	if err != nil {
		return "", err
	}

	err := file.SaveAs(filePath)
	if err != nil {
		return "", err
	}
	return filePath, nil
}

func (b BasicExcelExporter) writeSheet(file *excelize.File, data []excel_handler.IExcelDbObject, sheetIndex int) error {
	sheetName := b.excelExporter.getSheetName() + strconv.Itoa(sheetIndex)
	_ = file.NewSheet(sheetName)
	err := b.setTemplateHeader(file, sheetName)
	if err != nil {
		return err
	}
	err = b.setCellValue(file, sheetName, data)
	if err != nil {
		return err
	}
	return nil
}

//set first row of the sheet
func (b BasicExcelExporter) setTemplateHeader(file *excelize.File, name string) error {
	topRow := 1
	header := b.excelExporter.getTemplateHeader()
	for i := range header {
		column := convertDecimalToBase26(i + 1)
		cellName := getCellName(topRow, column)
		err := file.SetCellValue(name, cellName, header[i])
		if err != nil {
			return err
		}
	}

	return nil
}

//input the values
func (b BasicExcelExporter) setCellValue(file *excelize.File, sheetName string, data []excel_handler.IExcelDbObject) error {
	row := 2
	for i := range data {
    //values is a set of function which like func(excel_handler.IExcelDbObject) string
    //this function provide the getter from struct field to a string value which store in excel
		values := data[i].GetExcelValue()
		for j := range values {
			column := convertDecimalToBase26(j + 1)
			cell := getCellName(row, column)
			err := file.SetCellValue(sheetName, cell, values[j](data[i]))
			if err != nil {
				return err
			}
		}
		row++
	}
	return nil
}

func getCellName(row int, column string) string {
	return fmt.Sprintf("%s%d", column, row)
}

func convertDecimalToBase26(columnNumber int) string {
	ans := make([]byte, 0)
	for columnNumber > 0 {
		columnNumber--
		ans = append(ans, 'A'+byte(columnNumber%26))
		columnNumber /= 26
	}
	for i, n := 0, len(ans); i < n/2; i++ {
		ans[i], ans[n-1-i] = ans[n-1-i], ans[i]
	}
	return string(ans)
}

func TestExport(t *testing.T) {
	exporter := GenerateTestExporter()
	_, err := exporter.ExportAsExcel([]excel_handler.IExcelDbObject{testStruct{a: "a"}, testStruct{a: "b"}})
	if err != nil {
		panic(err.Error())
	}
}

func GenerateTestExporter() BasicExcelExporter {
	return BasicExcelExporter{excelExporter: testExporter{}}
}

type testStruct struct {
	a string
}

func (t testStruct) SetTime(time uint32) {
}

func (t testStruct) GetExcelValue() []func(object excel_handler.IExcelDbObject) string {
	return getters
}
func getA(object excel_handler.IExcelDbObject) string {
	tmp := object.(testStruct)
	return tmp.a
}

var getters = []func(object excel_handler.IExcelDbObject) string{getA}

type testExporter struct {
}

func (t testExporter) getSheetName() string {
	return "sheet"
}

func (t testExporter) generateFileName() string {
	return t.getFilePath() + "test.xlsx"
}

func (t testExporter) getFilePath() string {
	//temp, project relative path
  return ""
}

func (t testExporter) getTemplateHeader() excel_handler.ExcelTplRow {
	return excel_handler.ExcelTplRow{"test"}
}

this is my test method, and how can i send my export file to you to figure the problem

@xuri I fix this problem now. It was caused by my create sheet name "Sheet1" conflict with the default sheet.Thank.

I'm using the most recent package version, but when I try to open the exported file in Microsoft Excel, I get this error popping up.
The issue is that this file with the extension opens and displays correctly in the VS Code environment, but it doesn't open properly in Microsoft Excel!

Hi @jamalkaksouri, which version of Go are you using? There are some incompatible changes in the Go 1.21.0 encoding/xml library, which will cause generate corrupted workbook, please try to using Go 1.20 or previous Go version, also reference the issue #1465, #1595, #1603 and and golang/go#61881.

I appreciate your quick reply.
Yes, I'm using Go version 1.21.0. In the previous version, 1.20, and lower, there is no issue.

I bumped into this today. I can confirm that downgrading GO fixes the issue. If it might help: GO 1.20.7 didn't work either for me, but after downgrading to go1.19.12 everything is working again (using exelize v2.8.0. Thank you.

Hi @xuri  , I 'm also got issue when export excel . Here is my code : https://go.dev/play/p/LMVODrwBVS1

When I opened file , it showed this result

The code is sample of my issue


Show snackbar when permission is denied

Expected behavior
Should show a message (snackbar or anything else) when one or multiple permissions are denied.
Actual behavior
This feature is available for single permission only.
Steps to reproduce
Version of the library
latest one

@jay-ph this is something you'll have to implement by yourself. Dexter only provides code needed to handle the approved or denied permissions. The code to show feedback to the user is up to you and your implementation details 😃


Release v0.2.0 seems to be missing the MUSL binary

This is breaking my build.
https://travis-ci.org/Byron/dua-cli/jobs/653944394#L465
Do you think it's possible to force an older version for the time being?
Thanks for your advise, it's much appreciated.

It's definitely available from the releases page now: https://github.com/rust-embedded/cross/releases/tag/v0.2.0

Thanks!
Indeed, it's there now and retriggering the pipeline was all it took.
What confused me is that the commit creating the release apparently was 6 hours old, which was about the time when my pipeline failed.
Is there any learning from this, @reitermarkus? Or is there anything I should consider to do or not do in future to prevent this from happening again? Thank you.

I think the problem is that the tag/release is created before the artifacts are uploaded. Not sure what the best workflow would be so that doesn't happen.


I can't setup on wordpress

Hello,
Thanks for makes this awesome media player, it is working on html page very good but when I tried to install and use on wordpress I got few problems.
I coped necessary files into wordpress directory, then added necessary codes on header.php and footer.php,
I added a sample video, it is showed up but complicated. Here is the screenshot: http://prntscr.com/dz05ys
No captions showing, boxes over durations, duration bar duplicated etc. as shown below.
I added video using this code, same code is already working good on single html page, but not on owrdpress.
               <video id="player15" width="800" height="360"" preload="none">
                <source src="http://m5d05.win//video.mp4" type="video/mp4">
		<track srclang="en" kind="subtitles" src="sub.vtt">

What should I do for fixing it, or is there any other way to use mediaplayer v3 on wordpress?  I don't want to use default wordpress player because I need to multiple caption/subtitle function.
Regards.

Thanks for pointing this. If you have a URL I can check I'd appreciate it. This seems to be a matter of the classPrefix and style sheet since now the player uses BEM naming convention but we provided a "legacy" style sheet for it

It was installed on my localhost, then I setup on my blog to show you, but now nothing shows, even complex one. Here is the URL: http://msdos.org/test/

Perfect let me take a look and let you know my findings. Thanks

@OFarukCaki You are getting an error initially because you need to wrap the call of mediaelementplayer from demo.js inside a $(document).ready() call to ensure that once everything was loaded you will access the MEJS plugin. Start with that and let me know

Sory I don't understand what should I do, I doN't know much about php/js coding.  Can you explain a little bit more please?

Basically you have to modify the demo.js file by adding this before the mediaelementplayer call:
$(document).ready(function() {
     $('video, audio').mediaelementplayer({
          // All the config you had before
     });
});

Seems that you copied all the example, and I don't know if that's 100% correct inside Wordpress. Keep me posted about this one

I added these codes before mediaelementplayer call, but nothing changed. Maybe problem caused by WordPress :(  As I know Wordpress is using  mediaelement.js player, but I couldn't find anything to add subtitles/captions on a video.
Thank you for your help.

Can you list the steps so I can install Wordpress and the plugin on my local machine and that way try to debug this, please?

I did steps like this:

I installed wordpress on localhost
I copied build folder on main directory of wordpress.
I also moved demo.js into this build folder( I found it from demo folder on this repository, I tried and didn't wordked without it, because of that I also copied it)
Then I added necessary codes between  and  tags using wordpress footer and header file ( header for codes should between , footer for code which include demo.js between .
Then I insert php code via wordpress -> pages -> new page -> text editor(not visual one)

Ok let me take a look and keep you posted. Thanks

I'll encourage you to submit a ticket for Wordpress so they do the necessary adjustments. I've seen that there are some things they need to modify in their end to make the latest version to work

I appreciated your help. Thank you very much :)

You are welcome. I'll close this ticket but let me know if you receive any feedback from them

The problem is the jQuery version provided by WordPress. I tested with jQuery 1.9.1 and works, but if I use the default jQuery version the media-element produce the error.

@Bluxart Do you know what's the difference between jQuery standalone and the one provided by Wordpress?

I think WordPress used a version of jQuery < 1.9.1
This is a list of the jQuery files included into last version 4.7: http://core.svn.wordpress.org/tags/4.7/wp-includes/js/jquery/
If i used your script mediaelemen-and-player.js the error is in this string:
t.$media = t.$node = $(node);

@OFarukCaki and @Bluxart please download the latest version of the package. Seems that it was missing some variables inside the package bc another user reported the same with Drupal. So I tested this with Drupal and now it works.

I tried again with new files. Now player appears as black screen only, no playing or any buttons, just black screen. Here is the demo url: http://msdos.org/deneme/

I see the same error that was stated above. I may need to install Wordpress again and test it on my side. I'll keep you posted but definitely it should work now. Drupal users are now fine. And they had the same issue that you are seeing

OK. I tested it on my local environment and it worked. Things I modified on Wordpress (not framework) to test this:

Copied all the build files inside wp-includes/js/mediaelement folder
On wp-includes/js/mediaelement/wp-mediaelement.js I commented the lines related to silverlight and changed the line if ('flash' === mejs.pluginType) to if ( mejs.rendererName.match(/flash/gi) !== null )
Minified wp-includes/js/mediaelement/wp-mediaelement.js and replaced wp-includes/js/mediaelement/wp-mediaelement.min.js with it
Modified wp-includes/script-loader.php to update the reference to MediaElementJS changing line $scripts->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelement-and-player.min.js", array('jquery'), '3.0.1', 1 );

These are the result I got:

It is now worked, thank you very much.

You are welcome


I'm getting an error when coloring

It starts painting from 0% 99% and then after that it just says error 100% and there are no changes in the image.

A large picture(length>2000 or width>2000) may cause the error.Try to shrink it.


landing page: search link for contributors is wrong

Package version (if known): v9-v12b2
Describe the bug
The link text for contributors on the landing page goes to /search?q=metadata.creators.person_or_org.name, when it should search the contributors field.
Steps to Reproduce

Go to a record with contributors
Click on a contributor name
You'll get no results, unless that person is also listed as a creator.

Expected behavior
The link should ideally be metadata.contributors.person_or_org.name:"family,given"+metadata.contributors.role.id:"role" to search by both the contributor and their role.
Screenshots (if applicable)
Additional context

I can confirm this is still an issue in v12rc2. I didn't change the status in case you're doing other testing.


add a github action to build and push docker image

Relates to https://github.com/GoldenGateGGX/planning/issues/112
This action is not changing argocd manifests yet, I'll continue implementing changing manifests automatically next.
manifests that use this image are here: https://github.com/GoldenGateGGX/ggx-argocd-apps/blob/main/manifests/explorer-staging/deployment.yaml#L18
staging branch needs to be created after merging this.

@humfecki Seems like some checks didn't pass. Can you take a look please?


iOS - initialization error callback is called before user takes action on location auth request

Hi,
we have a problem on iOS. Whenever we launch the initialization method, the app asks the user for localization permissions, but it fires the error callback BEFORE the user takes any action.
In the error callback we have the message "Warning: Location always permissions not granted".
If the user says "yes" to the authorization dialog, the next time the initialization is launched normally enters the success callback, as it should. Android works fine.
It is worth saying that, in order to be able to add the plugin to the iOS project, we followed what is said in https://github.com/cowbell/cordova-plugin-geofence/issues/215 issue, manually adding the three files from [https://github.com/ypelud/cordova-plugin-geofence/tree/d2e1f22340ac2cd07559598fd290df462e75055d/src/ios] this repository, because we were not able to build it with 8.3. We don't know if this could be the problem.
Plugin version is 0.7.0
What could be breaking the correct behaviour?
Thanks.

I'm having this same issue after following those steps.


Improve F-Droid entry

The metadata for F-Droid you have added don't show up in the F-Droid client. Can you investigate this?

Fixed by #1


Change README.md

Currently the README is the default one from Gatsby.js.
We want a README that explains how the code works, and how to build/deploy the website.
It should have the following sections:

Install (setting up the environment)
Usage (how to build/deploy)

Adding new pages

Code structure

Resolved in #2


Prometheus Deployment Not Working on PKS

The Prometheus deployment authored by @pdaigle isn't working on PKS.
Everything works up until the deployment of Prometheus
helm install stable/prometheus-operator --name prometheus --namespace monitoring -f custom.yaml

When performing this command it has varied results. Sometimes errors appear about CRDs that are currently in process of being deleted. After deleting the CRDs following the prometheus helm deployment deletion instructions and retrying, the installation may work. It usually takes a few tries. I have not tried installing the CRDs first and then performing the HELM deployment.
Helm deployment is not working because all pods are not coming up.
root@PKS-client-DEMO:~# kubectl get pods -n monitoring
NAME                                                   READY   STATUS              RESTARTS   AGE
prometheus-grafana-f9dd85d7b-5gvbg                     0/2     Init:0/2            0          64m
prometheus-kube-state-metrics-746bd49df8-ljjnr         0/1     ContainerCreating   0          64m
prometheus-prometheus-node-exporter-2bnkw              1/1     Running             0          64m
prometheus-prometheus-node-exporter-gspg4              1/1     Running             0          64m
prometheus-prometheus-node-exporter-hgk4j              1/1     Running             0          64m
prometheus-prometheus-oper-operator-7d47cdf47f-4l277   0/1     ContainerCreating   0          64m

Getting errors that the pod sandbox changed for pods that aren't coming up. From my google-fu, this looks to be a CNI or DNS issue (example1, example2, example3)
root@PKS-client-DEMO:~# kubectl describe pod prometheus-prometheus-oper-operator-7d47cdf47f-4l277 -n monitoring
Name:               prometheus-prometheus-oper-operator-7d47cdf47f-4l277
Namespace:          monitoring
Priority:           0
PriorityClassName:  <none>
Node:               17ee183b-fee0-48c7-8b08-0d05050f2c05/<IP_ADDRESS>
Start Time:         Tue, 30 Apr 2019 10:32:07 -0700
Labels:             app=prometheus-operator-operator
                    chart=prometheus-operator-5.5.0
                    heritage=Tiller
                    pod-template-hash=7d47cdf47f
                    release=prometheus
Annotations:        <none>
Status:             Pending
IP:
Controlled By:      ReplicaSet/prometheus-prometheus-oper-operator-7d47cdf47f
Containers:
  prometheus-operator:
    Container ID:
    Image:         quay.io/coreos/prometheus-operator:v0.29.0
    Image ID:
    Port:          8080/TCP
    Host Port:     0/TCP
    Args:
      --kubelet-service=kube-system/prometheus-prometheus-oper-kubelet
      --logtostderr=true
      --crd-apigroup=monitoring.coreos.com
      --localhost=<IP_ADDRESS>
      --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.29.0
      --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from prometheus-prometheus-oper-operator-token-p2pxz (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  prometheus-prometheus-oper-operator-token-p2pxz:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  prometheus-prometheus-oper-operator-token-p2pxz
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason                  Age                 From                                           Message
  ----     ------                  ----                ----                                           -------
  Warning  FailedCreatePodSandBox  49s (x16 over 60m)  kubelet, 17ee183b-fee0-48c7-8b08-0d05050f2c05  Failed create pod sandbox: rpc error: code = DeadlineExceeded desc = context deadline exceeded
  Normal   SandboxChanged          48s (x16 over 60m)  kubelet, 17ee183b-fee0-48c7-8b08-0d05050f2c05  Pod sandbox changed, it will be killed and re-created.

persistent volumes are being created and bound as expected:
root@PKS-client-DEMO:~# kubectl get pvc -n monitoring
NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
prometheus-grafana   Bound    pvc-e024f1fc-6b6d-11e9-9bfe-005056801138   1Gi        RWO            default        76m

The directions also call for using NGNIX as our Ingress controller. Is there a reason we aren't using Contour? Or perhaps a second example showing a NSX-T Load Balancer?
I'm not 100% sure this is correct, but is the NGINX Ingress Controller automatically creating the LoadBalancer in NSX-T? The only reason I can potentially get there is from the findings below:
I have also tried all these directions on a standard vSphere cluster created by kubeadm without NSX-T and I'm able to finish the deployment. I'm only able to get to the Grafana dashboard by exposing the service as NodePort as well.
When looking at the default services after deploying on my non-PKS cluster, I see that NGINX is creating a type LoadBalancer which won't happen. Assuming this is where NSX-T should come in:
[kcoleman@k8s-01-master01 ~]$ kubectl get svc
NAME                                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
kubernetes                                 ClusterIP      <IP_ADDRESS>       <none>        443/TCP                      61m
quickstart-nginx-ingress-controller        LoadBalancer   <IP_ADDRESS>   <pending>     80:30582/TCP,443:32069/TCP   55m
quickstart-nginx-ingress-default-backend   ClusterIP      <IP_ADDRESS>   <none>        80/TCP                       55m

/assign @pdaigle

Just tried again in the vRA Lab and cannot get the deployments to create their replica sets.
ubuntu@ubuntu:~/prometheus$ kubectl get pods -n monitoring
No resources found.

When looking at the deployment:
ubuntu@ubuntu:~/prometheus$ kubectl describe deployment prometheus-prometheus-oper-operator -n monitoring
Name:                   prometheus-prometheus-oper-operator
Namespace:              monitoring
CreationTimestamp:      Tue, 30 Apr 2019 13:46:06 -0700
Labels:                 app=prometheus-operator-operator
                        chart=prometheus-operator-5.5.0
                        heritage=Tiller
                        release=prometheus
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=prometheus-operator-operator,release=prometheus
Replicas:               1 desired | 0 updated | 0 total | 0 available | 1 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:           app=prometheus-operator-operator
                    chart=prometheus-operator-5.5.0
                    heritage=Tiller
                    release=prometheus
  Service Account:  prometheus-prometheus-oper-operator
  Containers:
   prometheus-operator:
    Image:      quay.io/coreos/prometheus-operator:v0.29.0
    Port:       8080/TCP
    Host Port:  0/TCP
    Args:
      --kubelet-service=kube-system/prometheus-prometheus-oper-kubelet
      --logtostderr=true
      --crd-apigroup=monitoring.coreos.com
      --localhost=<IP_ADDRESS>
      --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.29.0
      --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type             Status  Reason
  ----             ------  ------
  Progressing      True    NewReplicaSetCreated
  Available        False   MinimumReplicasUnavailable
  ReplicaFailure   True    FailedCreate
OldReplicaSets:    <none>
NewReplicaSet:     prometheus-prometheus-oper-operator-7d47cdf47f (0/1 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  3m24s  deployment-controller  Scaled up replica set prometheus-prometheus-oper-operator-7d47cdf47f to 1

Same thing happens with the Deployment of NGINX:
ubuntu@ubuntu:~/prometheus$ kubectl describe deployment quickstart-nginx-ingress-controller
Name:                   quickstart-nginx-ingress-controller
Namespace:              default
CreationTimestamp:      Tue, 30 Apr 2019 13:45:03 -0700
Labels:                 app=nginx-ingress
                        chart=nginx-ingress-1.6.0
                        component=controller
                        heritage=Tiller
                        release=quickstart
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx-ingress,component=controller,release=quickstart
Replicas:               1 desired | 0 updated | 0 total | 0 available | 1 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  1 max unavailable, 1 max surge
Pod Template:
  Labels:           app=nginx-ingress
                    component=controller
                    release=quickstart
  Service Account:  quickstart-nginx-ingress
  Containers:
   nginx-ingress-controller:
    Image:       quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.24.1
    Ports:       80/TCP, 443/TCP
    Host Ports:  0/TCP, 0/TCP
    Args:
      /nginx-ingress-controller
      --default-backend-service=default/quickstart-nginx-ingress-default-backend
      --election-id=ingress-controller-leader
      --ingress-class=nginx
      --configmap=default/quickstart-nginx-ingress-controller
    Liveness:   http-get http://:10254/healthz delay=10s timeout=1s period=10s #success=1 #failure=3
    Readiness:  http-get http://:10254/healthz delay=10s timeout=1s period=10s #success=1 #failure=3
    Environment:
      POD_NAME:        (v1:metadata.name)
      POD_NAMESPACE:   (v1:metadata.namespace)
    Mounts:           <none>
  Volumes:            <none>
Conditions:
  Type             Status  Reason
  ----             ------  ------
  Available        True    MinimumReplicasAvailable
  ReplicaFailure   True    FailedCreate
OldReplicaSets:    <none>
NewReplicaSet:     quickstart-nginx-ingress-controller-6445784d55 (0/1 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  11m   deployment-controller  Scaled up replica set quickstart-nginx-ingress-controller-6445784d55 to 1

After Francis updated the PKS lab to 1.4 I was able to install prometheus following the directions, but had issues on getting the initial installation.
When installing prometheus, the helm chart exports this issue.
root@PKS-client-DEMO:~/kenny-prom# helm install stable/prometheus-operator --name prometheus --namespace monitoring -f custom.yaml
Error: validation failed: [unable to recognize "": no matches for kind "Alertmanager" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "Prometheus" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "PrometheusRule" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1", unable to recognize "": no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"]

I've seen this before when using Istio. It's a CRD issue but it's not always apparent. I had to delete the CRDs and re-run the installation and it installed just fine. A simple work around will be installing the CRDs first and then running the helm installation but it will need to be tested.

This has been solved with #13


Audio cuts out a few seconds after the game is launched on MBP port

The title is pretty much self explanatory. This only happens on the native Windows and macOS ports.
https://github.com/RandomityGuy/MBHaxe/assets/74517821/a8aaa108-d880-4858-8a70-31fbb98cd226

Strangely enough I can't seem to reproduce this on windows? (I tested the release zip thats on Github Releases)

Strangely enough I can't seem to reproduce this on windows? (I tested the release zip thats on Github Releases)
Although I did encounter this issue earlier, might be releated:
https://github.com/HeapsIO/heaps/issues/1068
https://github.com/HaxeFoundation/haxe/issues/10682

Turns out I had to update haxe https://github.com/RandomityGuy/MBHaxe/commit/7f87db5757df4f13cb40e6f85d95afc616132dea
The binaries for MBP 1.5.4 have been updated on the Releases page


[#2736] feat(spark-connector) support hive external table

What changes were proposed in this pull request?
support hive external table format
CREATE EXTERNAL TABLE family (id INT, name STRING)
Why are the changes needed?
Fix: #2736
Does this PR introduce any user-facing change?
No
How was this patch tested?
UT and IT

Updated.  Please help to review this PR again, thanks! @FANNG1

Updated. Please help to review this PR again, thanks! @FANNG1

LGTM

@charliecheng630  merged to main, thanks for your work!