Add support for Kerberized Jupyter servers

Made necessary changes to add support for authenticating with a Kerberized Jupyter Server.
In the sake of fairness, I'd also like to provide a gist by @mlucool showing how to make the necessary changes to the server-side code to support Kerberos Authentication.
After considering a lot of alternatives for making VSCode work with a Kerberized Jupyter Server, augmenting the extension to support this directly seemed to be the simplest, cleanest way of doing it without breaking any of the existing features.
Having said that, I realize that adding a native dependency (kerberos) to the project might not be ideal / desirable. I'm more than happy to take suggestions for what would be an acceptable way of doing things from the extension.
A couple of ideas are:

Finding a way to use VSCode's ability to negotiate using Kerberos from our extension. However, there seems to be an open issue since 2016 asking to expose this functionality to extensions via an API.
I believe it would be a fair assumption to say that if someone wants to use Kerberos, then they would already have the binaries for interacting with GSSAPI or SSPI on their machines, so maybe it would be possible to add an extra .js file that would detect the OS used, locate those binaries and call them. Since we only need to (1) get the credentials, (2) initialize the security context and step once, and (3) delete the context, this wouldn't result in a lot of added code while at the same time enabling us to get rid of the kerberos dependency that can do a lot more things that we don't need.

List of commits:

Added Kerberos authentication support
Changed telemetry constants for Kerb and Pass auth
Added kerberos+types dependencies and reinstalled
Added news entry

Fixes #

[x] Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
[x] Title summarizes what is changing.
[x] Has a news entry file (remember to thank yourself!).
[x] Appropriate comments and documentation strings in the code.
[x] ~Has sufficient logging.~
[x] Has telemetry for feature-requests.
[x] ~Unit tests & system/integration tests are added/updated.~
[x] ~Test plan is updated as appropriate.~
[x] package-lock.json has been regenerated by running npm install (if dependencies have changed).

@DonJayamanne any thoughts / next steps on this?

Thanks for the contribution. Apologies for not getting back, was unable to check this out during the weekend.
I'll have a look at this during the course of the week, I believe we can get this done via a contribution from a separate extension.
Thanks again.

No need to apologize! I'll be eagerly waiting for any comments; appreciate you taking the time to review this. By the way, could you point me to the 'contribution from a separate extension' so I could take a look?
On an unrelated note, I couldn't find any mention of the CLA before putting up the PR. I might have missed it, but I think it'd be good to add this in CONTRIBUTING.md; let me know if you'd like me to open an issue for this.

ouldn't find any mention of the CLA before putting up the PR. I might

Thats an automated check, added for all Msft repos. Not sure adding the guidelines would help, as the links are generated based on a PR

the links are generated based on a PR

Seems like https://cla.opensource.microsoft.com/ is a static link. I believe it would be useful for some contributors to know about this beforehand; a CLA might be something that's subject to contract review, and learning about it only after contributing could be inconvenient.

I'll have a look at this during the course of the week, I believe we can get this done via a contribution from a separate extension.

Hey @DonJayamanne, did you get a chance to look at this?

Hi @DonJayamanne , the PR itself is a bit outdated now. However, could you please add your thoughts on integrating Kerberos authentication in the extension?

@pangav2001
I've looked at this PR and have a few suggestions:

Please could you create an issue to track this work (as you can see there's a new entry in this PR but no corresponding issue that it fixes)

Finding a way to use VSCode's ability to negotiate using Kerberos from our extension.
What's the extension you are referring to as our here. Is it Jupyter extension or another

adding a native dependency (kerberos) to the project might not be ideal / desirable
I agree, we only have one native dependency in this extension for ZMQ and have enough issues with that as it is. I'd prefer to limit this to just zmq.
s to add support for authenticating with a Kerberized Jupyter Server.
Can you provide more information about this. Is this just for your self or is this for some other product or server.
Basically trying to understand how many users would end up using this feature.
Generally we have issues in the repo that track such work, and from the engagement (upvotes/comments) we can determine the interest/number of users who'd end up using this and evaluate the impact.
However without that I can only assume that you are the only one who'd end up using this feature.

Alternative solution

Create your own extension that contributes a Jupyter server to the extension via the API defined here registerRemoteServerProvider
Here's an excerpt of the API
Basically you can provide the Uri of the Jupyter server to the extension
& if and when the user chooses to connect to that we'll ask for the server info via IJupyterServerUri which would then contain all of the auth information such as the authorizationHeader and the like.
& if that's still not sufficient, we can make the necessary changes to this to ensure it meets your needs.

I think this would be a better approach as:

You could create an extension that says Jupyter Server with Kerberos Auth or the like in the marketplace place
Its a completely different and stand alone extension with its own dependencies, what ever they may be.

export interface IJupyterServerUri {
    baseUrl: string;
    token: string;
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    authorizationHeader: any; // JSON object for authorization header.
    expiration?: Date; // Date/time when header expires and should be refreshed.
    displayName: string;
}

export type JupyterServerUriHandle = string;

export interface IJupyterUriProvider {
    /**
     * Should be a unique string (like a guid)
     */
    readonly id: string;
    onDidChangeHandles?: Event<void>;
    getQuickPickEntryItems?(): QuickPickItem[];
    handleQuickPick?(item: QuickPickItem, backEnabled: boolean): Promise<JupyterServerUriHandle | 'back' | undefined>;
    /**
     * Given the handle, returns the Jupyter Server information.
     */
    getServerUri(handle: JupyterServerUriHandle): Promise<IJupyterServerUri>;
    /**
     * Gets a list of all valid Jupyter Server handles that can be passed into the `getServerUri` method.
     */
    getHandles?(): Promise<JupyterServerUriHandle[]>;
}

Hi, thanks for providing your thoughts!

Please could you create an issue to track this work (as you can see there's a new entry in this PR but no corresponding issue that it fixes)
I could only create a bug report issue, so instead, I've opted for starting a new discussion.

Finding a way to use VSCode's ability to negotiate using Kerberos from our extension.
What's the extension you are referring to as our here. Is it Jupyter extension or another
our was a mistype, I meant the vscode-jupyter extension.

adding a native dependency (kerberos) to the project might not be ideal / desirable
Agreed
I agree, we only have one native dependency in this extension for ZMQ and have enough issues with that as it is. I'd prefer to limit this to just zmq.
s to add support for authenticating with a Kerberized Jupyter Server.
Can you provide more information about this. Is this just for your self or is this for some other product or server.
Basically trying to understand how many users would end up using this feature.
Generally we have issues in the repo that track such work, and from the engagement (upvotes/comments) we can determine the interest/number of users who'd end up using this and evaluate the impact.
However without that I can only assume that you are the only one who'd end up using this feature.
I am explaining the motivation behind this in the discussion.

Alternative solution

Create your own extension that contributes a Jupyter server to the extension via the API defined here registerRemoteServerProvider
Here's an excerpt of the API
Basically you can provide the Uri of the Jupyter server to the extension
& if and when the user chooses to connect to that we'll ask for the server info via IJupyterServerUri which would then contain all of the auth information such as the authorizationHeader and the like.
& if that's still not sufficient, we can make the necessary changes to this to ensure it meets your needs.

I think this would be a better approach as:

You could create an extension that says Jupyter Server with Kerberos Auth or the like in the marketplace place
Its a completely different and stand alone extension with its own dependencies, what ever they may be.

export interface IJupyterServerUri {
    baseUrl: string;
    token: string;
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    authorizationHeader: any; // JSON object for authorization header.
    expiration?: Date; // Date/time when header expires and should be refreshed.
    displayName: string;
}

export type JupyterServerUriHandle = string;

export interface IJupyterUriProvider {
    /**
     * Should be a unique string (like a guid)
     */
    readonly id: string;
    onDidChangeHandles?: Event<void>;
    getQuickPickEntryItems?(): QuickPickItem[];
    handleQuickPick?(item: QuickPickItem, backEnabled: boolean): Promise<JupyterServerUriHandle | 'back' | undefined>;
    /**
     * Given the handle, returns the Jupyter Server information.
     */
    getServerUri(handle: JupyterServerUriHandle): Promise<IJupyterServerUri>;
    /**
     * Gets a list of all valid Jupyter Server handles that can be passed into the `getServerUri` method.
     */
    getHandles?(): Promise<JupyterServerUriHandle[]>;
}

Thanks a lot for providing this alternative approach! I am not quite sure if this would fit the purpose, I'll need to look more into it and get back to you.

@pangav2001 I've created an issue for you here https://github.com/microsoft/vscode-jupyter/issues/11518


Improvement: handle a string where a number is expected

Right now the parser cannot handle something like "nan" where an integer or double is expected. It would be nice to be able to pass a flag telling the parser to do something other than throw on exception in this case.

Hi Ben,
It could be the default value for the type (0), or the max value for the type, depending on the flag value.
Thank you,
Cristian Cocheci

Hi,
just so that I understand you correctly: You suggest that, if someone writes the value of sqrt(-1.0) to a file and then reads it back in as int the obtained value should be silently 0? That sounds like a recipe for disaster. If this really is the behavior that you want, I highly recommend making it explicit in your code and read the field as char* and use atof combined with an if-then-else.
What I actually was referring to, was that there is not just one nan value. A 32-bit IEEE floating point has 16777215 nan states. Which one should the string "nan" decode to? IEEE floating points nans contain an error that encodes the reason why something is nan. For example, 1/0.0 has a different bit pattern than sqrt(-1.0).
Best Regards
Ben Strasser
On 04/25/2018 06:27 PM, Cristian Cocheci wrote:

Hi Ben,
It could be the default value for the type (0), or the max value for the type, depending on the flag value.
Thank you,
Cristian Cocheci
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/ben-strasser/fast-cpp-csv-parser/issues/65#issuecomment-384349018, or mute the thread https://github.com/notifications/unsubscribe-auth/ALaAj6EFgztdP0rnzY2S9JX3NKmRQx6Sks5tsKQCgaJpZM4Th7mU.

Why not use
char*str_val;
while(read_row(str_val)){
  double val;
  if(strcmp(str_val, "nan"))
    val = atof(str_val);
  else
    val = 42;
}
I do not think that you can make the code any clearer than that. The
buildin decoder is also not really faster than that because the char*
goes directly into the file buffer.
Best Regards
Ben Strasser
On 04/26/2018 04:47 PM, Cristian Cocheci wrote:

I was thinking that whatever nan decodes to would be the user's choice
(depending on the value of the passed in flag). For example you could have
a "nan_policy" with the values throw_on_nan (which would be the default
policy), default_type_value_on_nan (which would translate nan to 0.0
or 0),
set_to_max_on_nan, and maybe some others.
Thanks,
Cristian
On Wed, Apr 25, 2018 at 3:37 PM, ben-strasser<EMAIL_ADDRESS>wrote:

Hi,
just so that I understand you correctly: You suggest that, if someone
writes the value of sqrt(-1.0) to a file and then reads it back in
as int
the obtained value should be silently 0? That sounds like a recipe for
disaster. If this really is the behavior that you want, I highly
recommend
making it explicit in your code and read the field as char* and use atof
combined with an if-then-else.
What I actually was referring to, was that there is not just one nan
value. A 32-bit IEEE floating point has 16777215 nan states. Which one
should the string "nan" decode to? IEEE floating points nans contain an
error that encodes the reason why something is nan. For example,
1/0.0 has
a different bit pattern than sqrt(-1.0).
Best Regards
Ben Strasser
On 04/25/2018 06:27 PM, Cristian Cocheci wrote:

Hi Ben,
It could be the default value for the type (0), or the max value
for the
type, depending on the flag value.
Thank you,
Cristian Cocheci
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<https://github.com/ben-
strasser/fast-cpp-csv-parser/issues/65#issuecomment-384349018>, or mute
the thread <https://github.com/notifications/unsubscribe-auth/
ALaAj6EFgztdP0rnzY2S9JX3NKmRQx6Sks5tsKQCgaJpZM4Th7mU>.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub

https://github.com/ben-strasser/fast-cpp-csv-parser/issues/65#issuecomment-384408628,

or mute the thread

https://github.com/notifications/unsubscribe-auth/AB4ZwReOXbxQd1iEliUJCsiMIhScVlxEks5tsNBlgaJpZM4Th7mU

.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ben-strasser/fast-cpp-csv-parser/issues/65#issuecomment-384667822,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ALaAj4S968B5nO1PHrShvByjNifpwVf0ks5tsd3vgaJpZM4Th7mU.

Sure, I can do this, of course. Indeed nan is too particular of a case, no reason to include it in the general options.
Thank you.
Cristian


ENH: Wrap reorder projections filter for vector and CUDA images

This is needed to reproduce in Python the behavior of the rtkspectralonestep application when subsets are used.

There are a few warnings when loading the new packages:
Template rtk::ReorderProjectionsImageFilter<itk::Image<itk::Vector<float,2>,3>,itk::Image<itk::Vector<float,2>,3>>
 already defined as <class 'itk.rtkReorderProjectionsImageFilterPython.rtkReorderProjectionsImageFilterIVF23IVF23'>
 is redefined as <class 'itk.rtkReorderProjectionsImageFilterPython.rtkReorderProjectionsImageFilterIVF23IVF23'>
Warning: template already defined 'rtk::ReorderProjectionsImageFilter<itk::Image<itk::Vector<float,2>,3>,itk::Image<itk::Vector<float,2>,3>>'
Template rtk::ReorderProjectionsImageFilter<itk::Image<itk::Vector<float,3>,3>,itk::Image<itk::Vector<float,3>,3>>
 already defined as <class 'itk.rtkReorderProjectionsImageFilterPython.rtkReorderProjectionsImageFilterIVF33IVF33'>
 is redefined as <class 'itk.rtkReorderProjectionsImageFilterPython.rtkReorderProjectionsImageFilterIVF33IVF33'>
Warning: template already defined 'rtk::ReorderProjectionsImageFilter<itk::Image<itk::Vector<float,3>,3>,itk::Image<itk::Vector<float,3>,3>>'
Template rtk::ReorderProjectionsImageFilter<itk::Image<itk::Vector<float,4>,3>,itk::Image<itk::Vector<float,4>,3>>
 already defined as <class 'itk.rtkReorderProjectionsImageFilterPython.rtkReorderProjectionsImageFilterIVF43IVF43'>
 is redefined as <class 'itk.rtkReorderProjectionsImageFilterPython.rtkReorderProjectionsImageFilterIVF43IVF43'>
Warning: template already defined 'rtk::ReorderProjectionsImageFilter<itk::Image<itk::Vector<float,4>,3>,itk::Image<itk::Vector<float,4>,3>>'

Can you address them or should I?

I replaced WRAP_ITK_ALL_TYPES (which already include ITK_VECTOR) by WRAP_ITK_REAL. I hope it will solve the warnings otherwise I'm not sure to be able to fix them.

It seems to have worked, thanks a lot!


Create dataset loader for TICO-19

Dataloader name: tico_19/tico_19.py
DataCatalogue: http://seacrowd.github.io/seacrowd-catalogue/card.html?tico_19

Dataset
tico_19

Description
Translation Initiative for Covid-19 (TICO-19) have made data available to AI and MT researchers in 38 different languages in order to foster the development of tools and resources for improving access to information about Covid-19 in these languages. The benchmark includes 30 documents (3071 sentences, 69.7k words) translated from English into 37 languages, including 6 languages spoken in Southeast Asian regions: Indonesian, Khmer (Central), Malay, Myanmar, Tagalog, Tamil.

Subsets
TICO-19 id, TICO-19 km, TICO-19 ms, TICO-19 my, TICO-19 tl, TICO-19 ta

Languages
ind, khm, zlm, mya, tgl, tam

Tasks
Machine Translation

License
Creative Commons Zero v1.0 Universal (cc0-1.0)

Homepage
https://tico-19.github.io/testset.html

HF URL
-

Paper URL
https://aclanthology.org/2020.nlpcovid19-2.5/

#self-assign

Hi @faridlazuarda, may I know the current status of this dataloader creation? Feel free to discuss here if you have any difficulties. Thanks!

Hi @faridlazuarda, may I know the progress on this? If there's no update from your end or comments on this issue (including a request for additional time to work on this) from you in the next 48hrs, we might consider removing this assignment from you so other contributors can work on this issue.
Again, if you find any difficulties in implementing this, pls let us know so we can help you in any way possible. Thanks!

Apologies for this, @faridlazuarda. Since there's been no reply in the past 48 hours, I'll free this issue up. Please re-assign this again along with the new Completion ETA this time around if you'd like to re-take this issue again.
cc @SamuelCahyawijaya @holylovenia

Apologies for confusion, @faridlazuarda. You did mention that you're working on all issues assigned to you in this reply, but since you aren't replying on all issues assigned to you, we weren't able to track it. Therefore, I'm reassigning this to you.
cc @SamuelCahyawijaya @holylovenia

#self-assign

Still trying to do something this weekend. Will notify further later!

I don't think I could work on this eventually, sorry, I think I'll unassign myself for now.

#self-assign


Optional local auth [refactor & rebase]

@akoshelev changed this enough that I figured it might be work a different PR (I also rebased it.)

this is a rebase of #32 (approved), so I'm merging this one and closing that one.


new version of wkhtmltpdf (0.10.2)

Hi guys! PDFKit is a great way to deal with generating pdf reports, however it has been a while since wkhtmltopdf moved ahead to version 0.10.2 - it is the lowest version i can compile from source with latest webkit.
Unfortunatelly wkhtmltopdf changed the way arguments are passed into it. For example cover in now passed like this
wkhtmltopdf cover 'http://google.com' and not like it was before wkhtmltopdf -cover 'http://google.com'  therefore rails fails to generate pdf with cover option mentioned.
Could you please guide me through!!! What can i do to make it work, or maybe there is a patch or separate branch?

@prikha I'm sorry this issue sat so long without a response. I believe #296 fixed this issue and those changes will go out in version 0.7.1.
In the meantime, the changes are on the master branch if you would like to use that.


[semver:minor] Adding ability to override deploy branch

Closing this as this was not actually a problem!


fix: fix error in TA Analyze schema

Summary
Fixing issue in #1452

/azp run

Codecov Report

Merging #1453 (104e863) into master (f256913) will decrease coverage by 0.97%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1453      +/-   ##
==========================================
- Coverage   82.53%   81.56%   -0.98%
==========================================
  Files         291      284       -7
  Lines       14530    14395     -135
  Branches      710      710
==========================================
- Hits        11993    11741     -252
- Misses       2537     2654     +117

Impacted Files
Coverage Δ

...pse/ml/cognitive/TextAnalyticsAnalyzeSchemas.scala
0.00% <ø> (ø)

...azure/synapse/ml/vw/featurizer/MapFeaturizer.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...azure/synapse/ml/vw/featurizer/SeqFeaturizer.scala
0.00% <0.00%> (-100.00%)
:arrow_down:

...re/synapse/ml/vw/featurizer/VectorFeaturizer.scala
0.00% <0.00%> (-90.00%)
:arrow_down:

...soft/azure/synapse/ml/cognitive/AudioStreams.scala
0.00% <0.00%> (-87.88%)
:arrow_down:

...e/synapse/ml/vw/featurizer/NumericFeaturizer.scala
12.50% <0.00%> (-87.50%)
:arrow_down:

...azure/synapse/ml/vw/VowpalWabbitInteractions.scala
5.71% <0.00%> (-85.72%)
:arrow_down:

...rosoft/azure/synapse/ml/core/utils/StopWatch.scala
0.00% <0.00%> (-77.78%)
:arrow_down:

...t/azure/synapse/ml/cognitive/SpeechToTextSDK.scala
16.47% <0.00%> (-74.12%)
:arrow_down:

...crosoft/azure/synapse/ml/cognitive/SpeechAPI.scala
0.00% <0.00%> (-70.00%)
:arrow_down:

... and 45 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f256913...104e863.


Enable auth to Cloudflare DNS via API Tokens

Enable auth to Cloudflare DNS via API Tokens
Description
This pull request adds support to the Cloudflare DNS driver to authenticate via API Tokens (see docs) in addition to the previous Global API Key authentication mechanism.
Status

done, ready for review

Checklist

[x] Code linting
[x] Documentation
[x] Tests
[x] ICLA

@Kami "Generate Code Coverage" failure in this pull request seems unrelated to the changes:

Codecov Report

Merging #1564 (1d209ed) into trunk (6bac710) will decrease coverage by 0.00%.
The diff coverage is 85.00%.

@@            Coverage Diff             @@
##            trunk    #1564      +/-   ##
==========================================
- Coverage   83.00%   83.00%   -0.01%
==========================================
  Files         394      394
  Lines       84943    84959      +16
  Branches     9036     9037       +1
==========================================
+ Hits        70508    70521      +13
- Misses      11369    11372       +3
  Partials     3066     3066

Impacted Files
Coverage Δ

libcloud/dns/drivers/cloudflare.py
91.18% <78.57%> (-0.98%)
:arrow_down:

libcloud/test/dns/test_cloudflare.py
100.00% <100.00%> (ø)

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 6bac710...1d209ed. Read the comment docs.


[W.I.P.] setup.py: Unlock use with jsondiff >1.1.2

Coverage increased (+0.1%) to 94.161% when pulling 6dac06ed7c8994719a5ac485d471d2c22045a05d on moseb:losen-jsondiff-dependency into d596560971ae289f102b9aecb9939b3c49a56ac5 on spulec:master.


Debug step tenon/mortise viz

Bug fix for the visualization of the tenon and mortise in the StepJoint and StepJointNotch.
What type of change is this?

[X] Bug fix in a backwards-compatible manner.
[ ] New feature in a backwards-compatible manner.
[ ] Breaking change: bug fix or new feature that involve incompatible API changes.
[ ] Other (e.g. doc update, configuration, etc)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[X] I added a line to the CHANGELOG.md file in the Unreleased section under the most fitting heading (e.g. Added, Changed, Removed).
[X] I ran all tests on my computer and it's all green (i.e. invoke test).
[X] I ran lint on my computer and there are no errors (i.e. invoke lint).
[ ] I added new functions/classes and made them available on a second-level import, e.g. compas_timber.datastructures.Beam.
[ ] I have added tests that prove my fix is effective or that my feature works.
[ ] I have added necessary documentation (if appropriate)

@papachap as we discussed

raise BeamJoiningError inside TStepJoint when the two beams meet in a topology that results in an erroneous step joint.
regarding extension, I don't have a strong opinion. up to you.


Adding of tools fails intermittently with "Tool already added" error

Electron build - 0d607f99754
Steps to reproduce the problem:
There is not reproducible steps to hit this issue.
But if you keep trying to add multiple tools to a thread ( i have tried with  notion, slack , outlook mail, calendar), you will see the tool fails to get added and you will see " Tool already added" error in the logs.
In this recording you will see outlook mail and calendar tool fail to get added. I have seen notion and slack tools fail tool. Failure to add a tool happens sometimes even to the first tool added to the thread.
https://github.com/user-attachments/assets/3448c793-bf35-48c5-b412-92f7bb4a5691
Following error seen in logs:
"2024-09-05T00:34:04.056Z [client] [ERROR] Error: Tool already added"

I have reproducible steps for this issue:

Start a new chat with Tildy
Add any tool - say slack
Do not have any conversation in this thread
Start an other new chat with Tildy
Add the same tool as in step 2 - slack in my case

This will fail to add with Error: Tool already added error.

Ah, thats a fun one. I can repro with your steps as well

Tested with build from 9d3d776c3
This issue is not seen anymore.


Switch keyplane failed when the responder is a UITextField with secureTextEntry enabled and the language setting is non-English.

The switch keyplane key's accessibilityLabel on Software keyboard triggered by normal UITextField is "more, numbers" or "more, letters" in any language setting.
But with secureTextEntry enabled,  the accessibilityLabel of the key will be localized, which failed every test related to this.
Currently I'm using KIF's mechanism  to bypass this, which directly calls the first responder view's "setText:" method.
Great solution for UITesting，thx:)

Thanks for reporting this @NSFish
The bug you reported seems very similar to an existing one: https://github.com/google/EarlGrey/issues/31 . Would you say there's any other additonal information that should be added there?

Nope. @khandpur

Marking this as a duplicate of #31


[RELAY][DOCS] Core Operator docs

As per discussion in #1799, we want to directly make sure the documentations are as clear and self-contained. I have also taken actions to amend my previous miss on not documenting conv2d clearly and have expanded the document.

@junrushao1994 @srkreddy1238 please review, we also possibly need to merge this in first so the followup PRs can update the doc directly

cc @jroesch

@junrushao1994 I have updated according to your comment, please take a look again


⚠ Bofrost.com has degraded performance

In bb1f9d8, Bofrost.com (https://www.bofrost.com) experienced degraded performance:

HTTP code: 200
Response time: 1337 ms

Resolved: Bofrost.com performance has improved in 5c7071e.


chore: lint the incentives module

What is the purpose of the change
This PR lints the incentives module in osmosis.
Testing and Verifying
This change is a trivial rework / code cleanup without any test coverage.
Documentation and Release Note

[ ] Does this pull request introduce a new feature or user-facing behavior changes? no
[ ] Changelog entry added to Unreleased section of CHANGELOG.md? no

Where is the change documented?

[ ] Specification (x/{module}/README.md)
[ ] Osmosis documentation site
[ ] Code comments?
[x] N/A

closing


Omniauth Strange case when re-authenticaticating the user

I'm developing a Facebook app, and I'm having the following scenario:

User A is using the app and logged in.
User A logs out of Facebook.
User B logs in Facebook using the same machine/browser the user A was using.
User B tries to use the app, but the current session is still for user A.
The app detects this and tries to re-authenticate the User B by redirecting him to user_omniauth_authorize_path(:facebook).
User B gets a new session but for the User A!!!

I have investigated this, and the request.env['omniauth.auth'] keeps showing the information of the user A. I have also cleared the user session before re-authenticating, and still the same case happens. What to do in this case, to make sure the user B is logged in via the proper session?

That is expected as the user A is still signed in. For example, if user B creates a post, it will be created under the user A account. You need A to sign out. There is no way you can know that the facebook account for User B actually belongs to another user.

And please send questions to the mailing list. :)

Actually, there is a way for you to detect if the current Facebook user doesn't match with the current session:
def require_login!
   #..... and here is the case. uid is facebook id
    if current_user and params[:signed_request] and (current_user.uid != parse_data["user_id"])
      reset_session
      redirect_to user_omniauth_authorize_path(:facebook)
      #redirect_to destroy_user_session_url
    end
  end

def parse_data
    # If we have the signed_request parameters, stash them away
    encoded_user_data = params[:signed_request]
    if encoded_user_data.nil?
      return {}
    else
      # We only care about the data after the '.'
      payload = encoded_user_data.split(".")[1]
      # Facebook gives us a base64URL encoded string. Ruby only supports base64 out of the box, so we have to add padding to make it work
      payload += '=' * (4 - payload.length.modulo(4))
      decoded_json = Base64.decode64(payload)
      return JSON.parse(decoded_json)
    end
  end

But this isn't my problem here. The problem is that the users/auth/facebook path should redirect the user to Facebook which in turn redirect the user back to /users/auth/facebook/callback?code=....., I can't understand what's wrong that Facebook is returning data that belongs to a user that signed out in Facebook in the first place.


Create a Homebrew recipe to install pgroll

We can leverage Homebrew in order to make pgroll easier to install. Right now the only options are manually downloading the binary or installing from source.

One option could be to integrate https://goreleaser.com/ and do releases with it. It could cover Homebrew, but also cross compiling or docker images

I would like to work on this #hacktoberfest 🚀

awesome! go for it!

PR: https://github.com/xataio/pgroll/pull/180