TwicImg doesn't render inside Ionic

Create standard Ionic (Ionic) /Angular application (Ionic v6, Angular v13)
Install TwicPics as per instructions (note: import TwicPicsComponentModule in the generated src/app/home/home.module.ts). Use TwicPics domain 'https://demo.twic.pics'
You can set   encapsulation: ViewEncapsulation.None in the home.page.ts component, or not - this doesn't make a difference.
Modify src/app/home/home.page.html for a simple test:

<ion-content>

  <TwicImg src="components/cat.jpg"></TwicImg>

  <ion-item>
    <TwicImg src="components/puppy.jpg"></TwicImg>
  </ion-item>
</ion-content>

ionic serve and open the browser (localhost:8100/home, by default) You see cat, but don't see puppy; dev tools shows no console messages, and there is no network request issued for the puppy.jpg

NOTE: workaround to stay inside the ion-item is to install TwicPics as before (that seems to get the script installed) but use an  tag rather than TwicImg, e.g.,
  <ion-item>

  </ion-item>

Hi @wstidolph and thanks for using TwicPics Components.
I confirm to reproduce your problem.
I have created a small repo for this purpose:
git clone https://github.com/mbgspcii/my-first-angular-ionic-app.git
cd my-first-angular-ionic-app/
npm install && npm ionic serve
As you can see, in the "Ion Grid" page the component integration works correctly.
In the "Ion Item" page, the first item reproduces your case.
The other cases on this page seem to work adequately.
What is happening there?
TwicPics components adapt in width to the size of their containers.
Their height is then calculated according to this width and any value passed as ratio property (1 by default).
In the cases that work on this page, we have :

either added a container with a specified width to the TwicImg component ("ion-item + ion-thumbnail as container", "ion-item + custom div as container", "ion-item + div as container + TwicImg focus and ratio")
or specified the width of the TwicPics Component ("Twic image right under the Ion Item but with specified width").

However, it seems that a width:100% is missing for the twicimg element that persists in dom (in angular version) and that this forces the user to set the width of the container in your case: we will look at this problem more closely.
Kind regards.

Ah, I kind of knew it was a 'width' issue, but I didn't think to just set the width as easily as you did, with ion-thumbnail or class="sm" - much nicer than my workaround (for being able to use CSS selectors) - thanks!

BTW, the same thing happens with using TwicImg to supply the image for Swiper.js swiperSlides ... if I don't set the width of the TwicImg then it chooses a size of 0x0, but setting the width directly on the TwicImg will get the image rendered (and sized to the enclosing div.swiper-slide:
 <swiper #swiper [config]="config">
    <ng-template swiperSlide
      *ngFor="let pd of pdArray; let i=index ">
        <TwicImg style="width:100%"
          [src]="pd?.img_basename"
        ></TwicImg>
    </ng-template>
  </swiper>

(pdArray is just the objects I'm handling, each with a img_basename property)

Oops - sorry ... you should be skeptical of my claim that wrapping the TwicImg in an  is what caused the width to go back to 0; it looks to me like I had mixed in the swiper styles and  the ::ng-deep styles from the TwicImg demo.
Here's what I'm doing in which the -wrapped TwicImg is rendering nicely, without hard-coding the width in the template at all:
From the template:
 <swiper #swiper [config]="config">

    <ng-template swiperSlide class="twic-life-cycle"
      *ngFor="let pd of pdArray; let i=index ">

          <TwicImg
            [src]="pd?.img_basename"
            [focus]="pd?.twicFocus"
            transition="fade+zoom"
            ratio="4/3"
            mode="cover"
          ></TwicImg>

      <ion-label >({{i}}) {{pd.img_basename}}</ion-label>
    </ng-template>
  </swiper>

From the page's .scss:
.display-block-pointer {
  cursor: pointer;
  display: block;
  width: 100%;
  height: 100%;
}

.twic-life-cycle {
  twicimg {
      @extend .display-block-pointer;

      & ::ng-deep img {
          @extend .display-block-pointer;
      }
  }
}

// swiper styling from swiper demo
// https://codesandbox.io/s/fw3wws?file=/src/app/app.components.scss
.swiper {
  width: 100%;
  height: 100%;
  margin-left: auto;
  margin-right: auto;
}

.swiper-slide {
  text-align: center;
  font-size: 18px;
  background: #fff;
  // still need to reduce height for non-overlap with the ion-label
  // or maybe split the slide into two parts using grid
  // this calc shouldn't depend on the hardcoded divisor, it should adapt
  // to screen size and number of rows
  height: calc((100% - 30px) /4) !important;
}

From the component:
config: SwiperOptions = {

    slidesPerView: 2,
    grid: {
       rows: 3,
    },
    spaceBetween: 20,
    pagination: {
      clickable: true,
      renderBullet: function (index, className) {
        return '' + (index + 1) + "";
      }
    }
  }

I'm kind of hacking around here, I'm not good with CSS (yet!) ... it would be nice to see an expert's demo on putting TwicImg properly inside a swiper.js grid :)

Hi @wstidolph.
Version 0.8.1 of the TwicPics Components should fix the problem initially reported (width issue).
I take note of your question about the implementation in swipe.js.
I will come back to you soon with an example.
Thank you for the issue.
Best regards.


Calcium dynamics

As many of you know I have spent the last year or so changing the model L5 pyramidal cells so that the simulated voltage traces in the dendrites look more similar to electrophysiological data recorded from pyramidal neuron dendrites, especially during calcium spikes/bursts. To do this, I changed the L5_pyramidal.py so that the dendritic Na, Kv, and Ca (L-type) conductances are distributed as functions of the distance from the soma, rather than setting the whole dendrite equal to one value. Here is the modified file for anyone who wants to look at or use these (saved as .txt because github didn't allow attaching .py files): L5_pyramidal.txt
For anyone using it
Important: I believe that if you are only changing this file out for the existing L5_pyramidal.py file you will run into an error with __create_all_IClamp() that will stop the code from working. I will get around to fixing this soon but in the meantime just copy the version of this function that's in the original code and replace this function. The reason is that I added functionality to inject current into the dendrite for some of my simulations but that involved changing other files as well. Sorry about this!
Within the file I have included a way to switch back and forth from these distributions ("updated_HNN_dends") to the regular HNN distributions ("classic_HNN_dends") which are constant values for everything except HCN channels. Just comment one or the other out under the _biophys_dends function like so

def __biophys_dends(self):
# self.classic_HNN_dends()
self.updated_HNN_dends()

You have to save the file, then quit HNN and restart it in order for this to do anything because this code gets run right when it is launched.
Right now the dendritic and somatic conductances are still adjustable from the GUI or the param files. The parameters I've been using for these three channels (Cell Parameters > L5 Pyr Biophysics) are:

L5Pyr_soma_gkbar_hh2: 0.06
L5Pyr_soma_gnabar_hh2: 0.32
L5Pyr_soma_gbar_ca: 10.0
L5Pyr_dend_gkbar_hh2: 0.0001
L5Pyr_dend_gnabar_hh2: 0.0028
L5Pyr_dend_gbar_ca: 40.0

The dendritic conductances are now functions of these values. Some of these changes are pretty drastic. With these values, the channel density distribution will now look like this (dotted lines are "classic" conductances).

Files
I have roughly hand-tuned the evoked input parameters for the threshold and suprathreshold ERP parameter files so that, with these changes to the L5 pyramidal cells, the output provides a good fit to the data. These need to be improved/optimized more. Once again I had to upload as .txt but they should be .param files.

ERP_yes.txt

ERP_suprathreshold.txt
For HNN development
I am sure there is a much better way for this code to be written and organized! Not to mention that hnn-core gets rid of the L5_pyramidal.py file. Some things to think about include

whether there would be a way for users to easily switch back and forth from the "classic" and "updated" distributions from the GUI, rather than the bad solution I have of changing the source code and relaunching
whether the parameters I have characterizing the distributions (e.g. the distance where the calcium conductance levels off) ought to be hard-coded as they are now or adjustable by the user.

Also, I changed and added a lot more files in order to be able to record and plot voltage traces, calcium currents, and calcium conductances in individual compartments of the L5 pyramidal neurons. I think some of these plots could be useful to include in the new versions of HNN. I've just created a public repository SMPugliese/hnn_calcium (https://github.com/SMPugliese/hnn_calcium) with the most up to date files I have on my computer. Let me know if there is another place you would prefer me to put these files.

@SMPugliese thanks for opening the issue! Did you close it intentionally? I'm reopening it to discuss further. Can you edit your comment above to add a link to your repository?
I had created a pull request with the files that Carmen sent me here. Obviously this is not everything you have done. In general, I think it's a good idea to contribute back to the HNN repository. That way, you can have your changes up to date with everything else in HNN and you are not working off an older version. It's also a good opportunity to test whatever you change.
One obvious way I see to incorporate your change is to allow a L5pyr argument in the Network class that is None by default. This way you can override the default L5Pyr class with one you provide. Something like:
from hnn_core.pyramidal import L5Pyr

class L5PyrCustom(L5Pyr):

    def __init__(self, gid, pos, p):
        L5Pyr.__init__(gid, pos, p)

    def _biophys_dends(self):
        # your modified code here

net = Network(...., L5Pyr=L5PyrCustom)
dpl = simulate_dipole(net)

Thanks! I've edited to include the link. I can submit a pull request to this repository later as well.

sounds good, start something and we'll help you if you get stuck!

closed by #333


vLLM port ignored and set to "" in run_simple.sh

Hi,
I was getting a connection error with vLLM because the port used was "" even though it is "8000" in the script.
Below is a quick fix to at least use the default port if an empty port is provided. A better fix would be to keep the port parameter for all strategies. I am happy to send a pull request if that is of interest.
Thanks.
diff --git a/programming/generators/model.py b/programming/generators/model.py
index 0ebad62..f58fe83 100644
--- a/programming/generators/model.py
+++ b/programming/generators/model.py
@@ -168,8 +168,9 @@ class VLLMModelBase(ModelBase):
     Base for huggingface chat models
     """

-    def __init__(self, model, port="8000"):
+    def __init__(self, model, port=""):
         super().__init__(model)
+        port = port or "8000"
         self.model = model
         self.vllm_client = OpenAI(api_key="EMPTY", base_url=f"http://localhost:{port}/v1")
         self.tokenizer = AutoTokenizer.from_pretrained(model)

Hi, Nada! Thank you for your suggestion. Feel free to create a pull request!


[vm/ffi] Handle unaligned reads and writes

Most likely Pointer.load/Pointer.store cannot handle unaligned reads or writes.

We discussed adding documentation to load and store that they do not support unaligned reads and writes, and adding loadUnaligned and storeUnaligned.

Do we want to support this for MVP, or just add documentation that it's not support for MVP?

That would mean that hot loops with offsetBy would need to check every iteration. (For elementAt we could skip the check as it stays aligned.)
I think adding loadUnaligned and storeUnaligned to avoid any runtime overhead for the aligned ones is the cleaner solution.

If the offset for offsetBy is a constant, then we don't need to check.
If it's variable, then yes, but is that a common situation?

Martin and I agreed that the current state is acceptable:

We don't check or enforce alignment anywhere.
We assume Pointers are aligned to their pointed-to type's size when performing optimizations, for example in the choice of memory access instructions.


[ADD]: Pull Request Template

As a sub-task of the related issue, please create a pull request template according to the github documentation:

https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository
https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates

I would like to work on this issue

Heyy @vaibhavTekk ! Welcome to the Annual-Yearbook project ! Welcome to the community

This issue was fixed as of PR #16. Closing this for now.


Zango - New Python Web framework for building enterprise-ready custom business applications

Title of the talk
Zango - New Python Web framework for building enterprise-ready custom business applications
Description
Zango, built on top of Django, is further opinionated towards building enterprise-ready custom business apps. Includes additional batteries for out-of-the-box enterprise readiness and rapid app development. Growing ecosystem of packages that serve as building blocks of apps.
Zango also enables multi-tenancy where each tenant, representing an app, can be deployed independently on the same underlying monolith. Tenants have logically seperated db, codebase as well as deployment. This significantly cuts down per app hosting cost.
Github repo:  https://github.com/Healthlane-Technologies/Zango
Docs: https://www.zango.dev/docs
I am one of the maintainers of Zango and would like to present the strengths and get the community's feedback on the Zango framework to the community.
What format do you have in mind for your talk?
Talk
Table of contents

What are Custom Business Applications?
Introduction to the Zango Framework
Deep Dive into Zango Architecture
Demo of App Development

What domain would you say your talk falls under?
Core Python
Duration in minutes (including Q&A)
30
Prerequisites
Basic Knowledge of Django and the overall idea of application development
Speaker bio
I am a Software Engineer at Zelthy with a background in backend development and a passion for problem-solving. As one of the maintainers of the Zango framework, I am eager to showcase its strengths to the community.
LinkedIn: https://www.linkedin.com/in/shahharsh176/
The talk/workshop speaker agrees to

[X] Share the slides, code snippets and other material used during the talk

[X] If the talk is recorded, you grant the permission to release
the video on BangPyper's YouTube
channel
under CC-BY-4.0
license

[X] Not do any hiring pitches during the talk and follow the Code
of
Conduct

@shahharsh176 It's kinda short notice but we've 1 slot in June meetup. You want to present this Saturday?

@anistark Yes, I am available on this Saturday.

Great. Confirming your talk then. See you tomorrow.


[RRIO] Create test Caller and SetupTeardown interfaces

This PR addresses #28710 by creating interfaces for user custom code, namely the Caller and SetupTeardown interfaces. Deploying the mock API per #28859 will allow for creation of Caller and SetupTeardown implementations that are based on the mock API request and response types.

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

[x] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

assign to next reviewer

assign to next reviewer


Tests execution hags with the latest version of  Test Execution Command Line Tool Version (16.1.0)

Description
Tests execution hags with the latest version of  Test Execution Command Line Tool Version (16.1.0) dotnet sdk 2.1.700
Previous version (16.0.1 dotnet sdk 2.1.604) with the same arguments works fine
Steps to reproduce
command line dotnet test --logger "trx;LogFileName=TestResults.trx" UnitTests.csproj
Docker Engine Version: 18.09.1
Kernel Version: Linux b8b2a23dda36 4.15.0-1035-aws #37-Ubuntu SMP Mon Mar 18 16:15:14 UTC 2019 x86_64 Linux
dotnet core container mcr.microsoft.com/dotnet/core/sdk:2.1.700
Expected behavior

Test not hang and run succesfully

Actual behavior

Tests hang for 22 min, print repeating message "Test run in progress.Test run in progress.Test run in progress.Test run in progress...." and after that tests successfully finish

I've been getting the same thing. However i'm getting it when running dotnet test --filter Category=Integration and it seems to be ignoring the filter altogether as well when on linux

Downgrading to 16.0.1 fixed both the hanging and the filtering issues for me. It wasn't obvious how to downgrade. As i'm only seeing the issue on my CI i just pinned the version of the container i was using to mcr.microsoft.com/dotnet/core/sdk@sha256:d0a71e1312be2618f320a7b7cc6d7423af3810542b3ffd35438108800ecfb958 to solve the problem for now.

Yes, exactly, downgrading to ‘2.1.604’ tag fixed the problem, but this just underlines the problem with the current version

This may be same issue as:
https://github.com/dotnet/core/issues/2775
There is an insightful comment by @JSkimming in the conversation:
https://github.com/dotnet/core/issues/2775#issuecomment-495083631
He's also created a PR to potentially fix this issue:
https://github.com/microsoft/vstest/pull/2024

@tcoreal @mgkeen : We have released 16.1.1 version of nuget package with the fix #2024 . Please try that out and let us know if you are still hitting the issue.

How do we try it out?
Here's the build with the updated package and it still takes ages, also dotnet test still reports the following as still using 16.1.0.
Test run for /root/project/test/Abioc.Tests.Internal/bin/Release/netcoreapp2.1/Abioc.Tests.Internal.dll(.NETCoreApp,Version=v2.1)
Microsoft (R) Test Execution Command Line Tool Version 16.1.0
Copyright (c) Microsoft Corporation.  All rights reserved.

@JSkimming : The fix is in process of getting inserted in dotnet sdk. Meanwhile, you can try running the tests in IDE with your test projects pointing to 16.1.1 and test.

@jayaranigarg My original issue dotnet/core#2775 occurred in the CLI and only then in two hosted CI systems CircleCI and Travis.
Do you know when updated SDKs will be released?

I can confirm that the issue is resolved with the newest sdk 2.1.701 and Command Line Tool Version (16.1.1)


fix: remove added analytics event from e2e test

Checklist

[ ] JIRA - <link>
[ ] Proper tests implemented
[ ] Screenshots added.

Proposed solution
Explain how does this PR solves the problem stated in JIRA ticket.
You can also enumerate different alternatives considered while approaching this task.
Testing
Describe here, how the new implementation can be tested.
Provide link or briefly describe User Acceptance Criteria/Tests that need to be met
Screenshots
Attach screenshots here if implementation involves some UI changes

Allure Report
allure-report-publisher generated test report!

processReports: ✅ test report for c31666ec

passed
failed
skipped
flaky
total
result

Total
33
0
4
0
37
✅


UnsatisfiableError during installation of RosettaFold

Dear Authors and users,
When I create the conda environment by
conda env create -f RoseTTAFold-linux.yml
I got the following error:
UnsatisfiableError: The following specifications were found to be in conflict:
  - _libgcc_mutex==0.1=main
  - markupsafe==2.0.1=py38h497a2fe_0 -> libgcc-ng[version='>=9.3.0'] -> _libgcc_mutex==0.1=conda_forge

Could you tell me how to sold this problem? Thank you in advance!

Best regards
Please contact me through<EMAIL_ADDRESS>

@minkbaek I'd suggest that when creating YAML files from a Conda environment, it is better practice to export both a full version (for record keeping) and a minimal version (for reuse). That is, something like:
conda env export > RoseTTAFold-linux.full.yml
conda env export --from-history > RoseTTAFold-linux.min.yml

Users should then be encouraged to use the *.min.yml version for reuse. This should help reduce issues such as that reported here.

I'm getting the same error when going through the installation steps

I'm getting the same error when going through the installation steps


Add doctests

Codecov Report

Merging #77 (9adb239) into master (b2e7ef2) will decrease coverage by 0.20%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #77      +/-   ##
==========================================
- Coverage   92.78%   92.58%   -0.21%
==========================================
  Files           5        5
  Lines         499      499
==========================================
- Hits          463      462       -1
- Misses         36       37       +1

Impacted Files
Coverage Δ

riot/riot.py
86.77% <ø> (-0.42%)
:arrow_down:

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 b2e7ef2...9adb239. Read the comment docs.


Popup has visual glitches with hidpi screens

Firefox 55 on Windows 10 with multi monitor setup, one with scaling 100%, the other with 125%.

Likely an upstream bug, can't be reproduced with Firefox 62.


Alpine: re-add openssh-client

Due to changes in 8a107f76ec74e1fa4e763a2660f3482d2692ff79 the
openssh-client which provides ssh-agent, ssh-add, ... was removed.
Since the image must work with SSH connections, this is a requirement.

@edbizarro I think that was an mistake? (at least I hope. I use the image also for deploying to servers with different deployment tools to speed up the GitLab CI process)

@edbizarro I think that was an mistake? (at least I hope. I use the image also for deploying to servers with different deployment tools to speed up the GitLab CI process)

We use this for the exact same reason. As a hotfix, I've added sudo apk add openssh-client to my before_script.

Done! sry gyus


Network fluctuations？

I often encounter the problem shown in the above picture. Is it caused by network fluctuations?

Make sure the network can access Huggingface


passes the base_units from field to widget #4

I found a bug in the code, I will fix it  and I will make another pull request


Learning Pathways Lookbook install does not recognise global admin

I am Trying to install Learning Pathways logged in with Global admin account. On running pre-requisiites from lookbook page

Details (please complete the following information):
Reference Template: https://lookbook.microsoft.com/details/3df8bd55-b872-4c9d-88e3-6b2f05344239

Primary language of the target tenant: [Language Not Set for Installing user]
Are you using a Tenant Global Admin account to provision the template: [Yes/]

Additional context
Can install other lookbooks. Tested on two tenants with same results
Any help greatly appreciated!!

Hi,
Thanks for using the Look Book site. I guess you are in the same scenario described in issue  #377 . We're investigating the problem. If your "Company Administrator" is called "Global Administrator" when queried via Microsoft Graph, please close this issue and just follow instructions that will come in the upcoming days for #377 . Thanks.

Hi,
Thanks for using the Look Book site. I guess you are in the same scenario described in issue  #377 . We're investigating the problem. If your "Company Administrator" is called "Global Administrator" when queried via Microsoft Graph, please close this issue and just follow instructions that will come in the upcoming days for #377 . Thanks.

Thanks Paolo,
Yes looks identical to #377. Searched for ages and couldn't find it. I'll close mine
Thanks again

From: Paolo Pialorsi<EMAIL_ADDRESS>Sent: 26 January 2021 15:58
To: SharePoint/sp-provisioning-service<EMAIL_ADDRESS>Cc: Luke Hardman<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [SharePoint/sp-provisioning-service] Learning Pathways Lookbook install does not recognise global admin (#384)
Hi,
Thanks for using the Look Book site. I guess you are in the same scenario described in issue #377https://github.com/SharePoint/sp-provisioning-service/issues/377 . We're investigating the problem. If your "Company Administrator" is called "Global Administrator" when queried via Microsoft Graph, please close this issue and just follow instructions that will come in the upcoming days for #377https://github.com/SharePoint/sp-provisioning-service/issues/377 . Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/SharePoint/sp-provisioning-service/issues/384#issuecomment-767640971, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AJKYAMOGM35AWVZRZKXNBFDS33RARANCNFSM4WTVPDQA.

Thanks Paolo,
Yes looks identical to #377. Searched for ages and couldn't find it. I'll close mine
Thanks again

From: Paolo Pialorsi<EMAIL_ADDRESS>Sent: 26 January 2021 15:58
To: SharePoint/sp-provisioning-service<EMAIL_ADDRESS>Cc: Luke Hardman<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [SharePoint/sp-provisioning-service] Learning Pathways Lookbook install does not recognise global admin (#384)
Hi,
Thanks for using the Look Book site. I guess you are in the same scenario described in issue #377https://github.com/SharePoint/sp-provisioning-service/issues/377 . We're investigating the problem. If your "Company Administrator" is called "Global Administrator" when queried via Microsoft Graph, please close this issue and just follow instructions that will come in the upcoming days for #377https://github.com/SharePoint/sp-provisioning-service/issues/377 . Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/SharePoint/sp-provisioning-service/issues/384#issuecomment-767640971, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AJKYAMOGM35AWVZRZKXNBFDS33RARANCNFSM4WTVPDQA.

As instructed #377

As instructed #377


Add python3.8 version checker

Issue #, if available:
Description of changes:

Add python3.8 version checker
Removed old contents under greengrass-dependency-checker-GGCv1.11.x/

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Where are the updated files?

Where are the updated files?

Closing in favor of #36

Closing in favor of #36


Target Mapping/Tile Restriction based on User Roles

Hi SuSaaS Team,
I am getting this dialog when accessing the Manage Users Tile

I understood the reason, this is because the user is not Admin, just has the Member role, despite he can see the Admin Group/Manage Users tile.
Can we restrict the visibility of tiles/groups/target mappings based on the Role Collections we defined to avoid user confusion ?
We have the fioriSandboxConfig.json/js files. Can we make the launchpad config dynamic using the js script (we have a user api call already ) or use a binding in the json file like this

and call to an API during UI5 bootstrapping and setting the ui5 model with visibility configurations ?
Would it be actually acceptable such for production scenario, or we have to expose the encapsulated applications differently to a launchpad service/ work zone in production cases ?
Is actually possible for example to create the frontends in separate projects for SaaS solutions and manage the tile visibility by launchpad service / work zone  authorizations ?
Thank You,
Best regards
Attila

Hi @attilaberencsi,
haha nice idea actually! You're keeping us busy :) Actually we didn't want to blow up this mock launchpad thing even more than we already did... Still, if you are willing to go down that rabbit hole, feel free to give it a try and shoot over a pull request! :) Then we can add it to the repository! Otherwise, we can put it on our nice-to-have list, which comes after a veeerrryyy long must-have list!
And yes, as correctly noticed, the correct way would be using Work Zone / Launchpad, still as the respective multitenancy support is not officially released, for now I suggest to setup a custom home-page for productive scenarios! The sandbox is probably not a comparable replacement for a real Work Zone / Launchpad in this case.
Appreciate!
Martin

Hi Martin!
I hope I can figure out something elegant as this repo to fit in :), thank You !
Best regards,Attila


Update README.md

@tarosler, appreciate if you can review. Thanks!
BTW - there will be another one with correction to the folders names


fix: loaders import

A small fix for tanstack-react-router integration.

Thanks @ka2n!

Released at v1.16.1


Delete cards from code mode

This PR introduces a delete button from code mode.
@tintinthong note that as part of this i removed all the speculative code around how we pass actions into the definition container and hiding/showing buttons (since there is only one actual button with real functionality). Add that implementation when we have real functionality behind it--otherwise it's hard to refactor and just deal with in general when there is nothing backing it functionality or from a test perspective.
Here is a screen capture when there are not recent files and we perform a delete. Note that we show the empty code mode, and when you go back to interact mode the stack item has been removed.

Here is a screen capture when there is a recent file and we perform a delete. in this case we show the previously opened file from code mode after the delete, and when you go back to interact mode the stack item has been removed.

👍🏻
maybe this addresses issue 5910?

it should, recent files now consumes the whole URL


std.random.unpredictableSeed can work in betterC

n8sh.secondary reported this on 2020-02-27T11:29:38Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=20618
Description
std.random.unpredictableSeed currently depends on the D runtime for thread ID and timestamp but it doesn't need to.

dlang-bot commented on 2020-02-27T12:26:30Z
@n8sh created dlang/phobos pull request #7408 "Fix Issue 20618 - std.random.unpredictableSeed can work in betterC" fixing this issue:

- Fix Issue 20618 - std.random.unpredictableSeed can work in betterC

https://github.com/dlang/phobos/pull/7408


Made changes for vue3sfcloader compatibility k-info-panel

Closes #239
Summary
A variables was properly declared using let.
Local Tests
After applying the changes I no longer got an error for declaring a variable without let, var, or const.

@rmotitsuki I just finished this PR, and it's ready for review.


Unable to install Cedalo management center in Azure VM

After running sh start.sh , the docker containers are up but i am not able to connect to broker from Management console. I am getting below error.

Any help is highly appreciated.

Can you please attach the log output?

Also:

Are you sure you are using the correct credentials when connecting the Management Center to your Mosquitto instance?
And how did you install everything? Using the Cedalo installer?

@ramesh-sonasoft Closing due to inactivity. If the problems remain, please reopen or create another issue.


Bring triangulation-plots on par with heatmap-plots

All of the following features already work for the heatmap approach:

[x] Interpolating in each element according to given "nndoes"
[x] Plotting the mesh
[x] Picking single variables to plot
[x] Ploting multiple variables side to side
[ ] Slicing 3D solutions along planes to create a 2D plot
[x] Slicing 3D solutions along axes/curves to create a 1D plot
[x] Slicing 2D solutions  along axes to create a 1D plot
[x] Slicing 2D solutions along curves to create a 1D plot

I think we have the side by side variables for triangulated data. Isn't that what plot(sol) does by default now?

The open point

Slicing 3D solutions along planes to create a 2D plot

came up today in my class. If anybody has some spare time, it would be great to get this feature.

Ah, I forgot this PR. Yeah, it would be nice to get the ability for slicing 3D solutions, but we can move it to a new package.

I might try to revive it and implement the slicing in Trixi first. IMO it'd be easier to move it to a new package after it's working...

Sounds good to me :+1:


[Add] New Logout Button

Details
Add an logout animated button .When a user hovers over the button, an interactive animation is triggered. The gate icon on the right side of the button opens slowly, and the man figure starts to jump up and down. The gate gradually closes behind the jumping man. This animation creates a dynamic and engaging effect that adds a sense of delight and interactivity to the logout process.
Once the animation completes, the button automatically returns to its original position with the gate icon closed and the text "Logout" on the left side. The entire animation takes approximately one second to complete.
Screenshots

Type of Contribution

[ ] Update to an existing Animated Button
[X] Adding a new Button
[ ] Resolving a bug
[X] Proposal to the Repository
[ ] Changes related to documentation or README.md
[ ] Other Changes

Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue
[X] I am a GSSoC'23 contributor

Please assign this issue to me under GSSoC'23.Thank you.


Release v0.8.1

filed https://github.com/cilium/cilium-cli/issues/344 to track https://github.com/cilium/cilium-cli/pull/343/checks?check_run_id=2861768000

@michi-covalent and I have triaged the GKE issue, Michi will follow up with the details. Seems like we need better robustness in the CLI handling of nodeport service initialization.
GKE failure is not new, master is failing regularly with about 40% probability:
https://github.com/cilium/cilium-cli/actions/workflows/gke.yaml?query=branch%3Amaster
New CI approach says that CI failures should block merging so that we can create pressure to coordinate and address the issue. However, at the same time the release manager cannot be responsible to fix every single flake, so whether a release PR gets blocked by CI failures becomes a value judgement. If it's important to get the release out, and we have assurance that we are not observing obvious regressions, then it may be better to get the release out to fix the known issues. In this case, minikube install with v0.8.0 is completely broken so we need a new release to fix that.
@michi-covalent and I decided that in this case, we should give until late Monday PT to investigate and mitigate the issue, and if we cannot fix it by then, we will bypass this CI failure to merge & release v0.8.1 to address the outstanding issue.

@michi-covalent and I decided that in this case, we should give until late Monday PT to investigate and mitigate the issue, and if we cannot fix it by then, we will bypass this CI failure to merge & release v0.8.1 to address the outstanding issue.

@michi-covalent and I discussed this out-of-band this morning CEST and reasoned that #346 should be sufficient to mitigate the flake. Given that that PR was merge and this PR was rebased and now also passed, we should be good to go for the release.


Use the originating handlers for handling package published messages in the github webhook

Summary
More bespoke code removal!
This time it comes with a caveat. Because we can't pass along the
version of the artifact, the artifact evaluator is going to evaluate all
artifacts. But I don't see any other way at the moment.
Fixes: #4667
Change Type

[ ] Bug fix (resolves an issue without affecting existing features)
[ ] Feature (adds new functionality without breaking changes)
[ ] Breaking change (may impact existing functionalities or require documentation updates)
[ ] Documentation (updates or additions to documentation)
[x] Refactoring or test improvements (no bug fixes or new functionality)

Testing
manual + unit tests + I ran these two smoke tests

artifact_signature
artifact_attestation_slsa

Review Checklist:

[x] Reviewed my own code for quality and clarity.
[ ] Added comments to complex or tricky code sections.
[ ] Updated any affected documentation.
[x] Included tests that validate the fix or feature.
[ ] Checked that related changes are merged.

coverage: 53.135% (-0.09%) from 53.222%
when pulling 9dc28b219f7f05d1c1a1428951cab5697c7007c2 on jhrozek:webhook_artifacts_new_pr_handler
into f4cb7b52bb24267262e4cd6481b7fcab4533636b on stacklok:main.


how to define a rule dag

my scenario is to have a rule set where each rule can be considered as an operator, and to combine these rules with a DAG.
each rule has inputs and outputs, and DAG associates the inputs and outputs of these rules to obtain the final calculation result.

please give me any DAG rule demo for golang.

my scenario is to have a rule set where each rule can be considered as an operator, and to combine these rules with a DAG. each rule has inputs and outputs, and DAG associates the inputs and outputs of these rules to obtain the final calculation result.

你的意思是想要自定义每条规则的优先级然后组合运算他们吗？

确实需要编排规则，目前好像没有看到代码中有类似的接口

确实需要编排规则，目前好像没有看到代码中有类似的接口

目前arishem不支持DAG模式，但是支持自定义规则的优先级，可以自己实现RuleTarget接口看看能不能满足目前的业务场景呢，参考自定义规则优先级部分：https://github.com/bytedance/arishem/blob/main/doc/zh/RULE_zh.md

cause there's no latest reply, i'll close this issue.


Add stylelint-config-rational-order.

Stylelint is awesome.
Having a predetermined order for CSS rules is fairly useful as well for teams who want that, because linting is the only way to ensure this happens. Stylelint-config-rational-order provides a good default order for CSS declarations, saving you from configuring it yourself. For this reason, I thought I would add it to the list.
Please let me know your thoughts.

Thanks @sargalias 👍

@ntwb Pleasure :)


Make recipe editable.

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 59.45%. Comparing base (370c772) to head (da8945d).
Report is 15 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #246      +/-   ##
==========================================
- Coverage   64.29%   59.45%   -4.85%
==========================================
  Files          72       74       +2
  Lines        4406     4733     +327
  Branches      555      634      +79
==========================================
- Hits         2833     2814      -19
- Misses       1327     1672     +345
- Partials      246      247       +1

Components
Coverage Δ

AuthManager
77.77% <ø> (ø)

Cache
25.98% <ø> (-3.96%)
:arrow_down:

FDS
70.92% <ø> (-0.20%)
:arrow_down:

FileWatcher
56.25% <ø> (ø)

Flip
65.34% <ø> (ø)

gRPC
77.30% <90.00%> (+0.25%)
:arrow_up:

Logging
15.46% <3.69%> (-14.72%)
:arrow_down:

Metrics
80.20% <ø> (ø)

Options
100.00% <ø> (ø)

Setting
56.79% <ø> (ø)

StatusObject
73.83% <ø> (ø)

Utility
82.51% <100.00%> (-0.21%)
:arrow_down:

Version
95.83% <ø> (ø)


Static Activations Class

Should provide str2enum and then return a function ptr or something similar.
This will be helpful for things like:
        private:

            Weights mWeights;
            Weights mDiffs;
            Activation mActivation;

        public:

            LinearNode(const int inputSize, const int outputSize,
                       std::string activation='tanh',
                       float spread = 0.05,
                       const char *name="none"):
                Node(1, &inputSize, 1, &outputSize, name),
                mWeights(inputSize, outputSize, spread),
                mActivation.get(activation),
                mDiffs()
{}

            ArrayVector forward(const ArrayVector &input){
                return {mActivation(af::matmul(mWeights.getWeights(), input[0])) +
                        af::tile(mWeights.getBias(), 1, input[0].dims(1))};

LinearNode merely performs the matrix multiplication. The activation part is done separately.  This is similar to what other neural network libraries / frameworks are doing.
If it is necessary for convenience, you can easily do this in user code. That said FFNet sort of does this, but is more generalized. You can have a specialization of FFNet and restrict it to what you have mentioned here.

The linear node was just an example. I can't have the activations be external to the node for an LSTM.
Some gates (eg: memory gate) are dependent on activations of the previous gates and thus cannot be refactored outside of the node level.

Fair enough. I have not yet started looking into LSTMs. I am currently implementing some core functionality necessary for convolutional nets in ArrayFire. I will keep this in mind when looking at LSTMs.

I'v already started writing a skeleton of this one. Will submit a pull soon

No longer relevant.


set noisev to Volatile to freeze netG when updating netD.

when training netD, we won't need the gradient and buffer of netG. set noisev to volatile would acclerate training step and reduce memory usage which is even better than detach.

thanks!


while using Func, can't add layers and timeout

Environment information
System:
    OS: macOS 13.3.1
    CPU: (8) arm64 Apple M1 Pro
    Memory: 87.11 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 20.10.0 - /usr/local/bin/node
    Yarn: 1.22.19 - /opt/homebrew/bin/yarn
    npm: 10.2.4 - /opt/homebrew/bin/npm
    pnpm: Not Found
    bun: Not Found
    Watchman: 2<IP_ADDRESS> - /opt/homebrew/bin/watchman
  npmPackages:
    @aws-amplify/backend: ^0.5.5 => 0.5.5
    @aws-amplify/backend-cli: ^0.9.1 => 0.9.1
    aws-amplify: ^6.0.4 => 6.0.4
    aws-cdk: ^2.111.0 => 2.111.0
    aws-cdk-lib: ^2.110.1 => 2.110.1
    typescript: ^5.3.2 => 5.3.2

Description
hello,
Can't seem to add layers or modify the lambda timeout while adding custom business logic via Func
generate: a
    .mutation()
    .arguments({
      companyId: a.string(),
    })
    .returns(a.ref("GenerateResponse"))
    .authorization([a.allow.private()])
    .function("echoHandler"),

..........
  functions: {
    echoHandler: Func.fromDir({
      codePath: "./echo",
      name: "echoHandlerFunc",
    }),

I tried to reference the lambda from backend.ts, still can't access function via L1, or L2
if we use the Func, how do we modify layers, timeouts and permissions?
thanks in advance.

Hey @blinkdaffer, thank you for reaching out. I was able to reproduce this, it appears the attributes are currently not exposed on the custom business logic via Func. Tried to see if we can modify the IFunction from the backend but doesn't appear to have an attribute.
Marking this a feature request to enable additional attributes.

Hi @blinkdaffer, the functions experience is under active development right now. We have just released a change to replace the Func.fromDir experience with defineFunction. You can update your @aws-amplify/backend package to try it out. We haven't exposed timeout, layers, or permissions yet, but this is on our todo list.
You can use overrides to set permissions, layers, etc on the function until we support it natively:
// amplify/data/resource.ts

import { defineData, defineFunction } from '@aws-amplify/backend';
import { Function } from 'aws-cdk-lib/aws_lambda';

export const echoHandler = defineFunction({
  entry: './echo-handler.ts',
});

export const data = defineData({
  ...
  functions: {
    echoHandler
  }
})

// amplify/backend.ts

import { data, echoHandler } from './data/resource.ts'

const backend = defineBackend({
  data,
  echoHandler
});

const lambdaFunction = backend.resources.echoHandler.resources.lambda as Function;

lambdaFunction.addTrigger(...)
lambdaFunction.addPermission(...)
lambdaFunction.timeout = <number>

For more info on what's possible with custom resources and overrides, check out https://next-docs.amplify.aws/gen2/build-a-backend/add-aws-services/custom-resources/

thank you guys.
P.S loving the new amplify dev experience. great job guys.

This is now possible with the timeoutSeconds prop :tada:
import { defineFunction } from "@aws-amplify/backend";

defineFunction({
  timeoutSeconds: 60
})

Closing as additional config options have been added to functions. We will evaluate the layers functionality moving forward


CorsMiddleware returns 204 for preflight request

Looks like the current implementation of cors return a 204 for preflight request and it looks like Chrome considers any non-200 being a failure.
Doing some quick research on the web I've seen that there is discussions about what should be the good behavior but what I'm sure of is that we need that to just work.
Maybe we should be able to configure it?

204 is no content and is the right behavior for the middleware.chrome should display no content 😊 for this status code. Can you please post your request and response.

Moved to https://github.com/aspnet/CORS/issues/19.


Adjust build environment to upstread recommendations and to work in XP in Python versions that support it

Upstream requires vs11 minimum (I confirmed it to not build in vs90 due to lack of language features) and Py3.5+ uses vs14.
See https://docs.opencv.org/3.1.0/d5/de5/tutorial_py_setup_in_windows.html and https://wiki.python.org/moin/WindowsCompilers#Which_Microsoft_Visual_C.2B-.2B-compiler_to_use_with_a_specific_Python_version.3F

What's the reasoning behind this? There are no Visual C++ runtime related issues with the current builds as far as I know because OpenCV build is static.

The problem is that the 2.7 package doesn't work in XP (I didn't check the 3.4 one but expect as much, too).
I changed the environment to vs11 as well to be as close to those Pythons' runtimes as possible but if you're sure it doesn't matter, feel free to change it back.

I'm sorry, I totally missed that XP in the title. Windows XP is an ancient operating system and it's true that software which has been built with VS 2015 does not work in XP (installing Visual C++ 2015 redistributable might fix the problem: https://www.microsoft.com/en-US/download/details.aspx?id=48145).
The old build toolchain is going to add dependency to the older Visual C++ Runtime which means that all existing installations would most likely break during package update if the older runtime isn't present. In addition, Windows XP's market share is approaching slowly 0 % (https://www.neowin.net/news/windows-10-market-share-continues-to-increase-as-xp-falls-below-7-for-the-first-time).
I hope you understand that I'll have to reject this pull request since Windows XP support is not in the scope of this project.

If using v140_xp build toolset -- which is what I suggested by "feel free to change it back", -- it should be compiled against the same runtime as the default thus not introduce any new requirements. I'm checking this as we speak.
It's rather hard to do the work without a script to build locally. Is it okay if I submit one and make appveyor's script use it?

Sure, that's okay. The possibility to do a local build is one of the things which should be done anyway at some point since setup.py install can't currently be used to run the whole build process. And if the toolset does not introduce any new requirements it's ok to make these changes. It's just that the distributions generated via this project are used by a lot of people (more than 2 000 000 downloads already which means that these packages are installed about 4000 times a day) so it's important that the packages just work even after upgrades.


v4: setting --background overrides the background set by color

Bug Report
Describe the Bug
Setting the --background variable on an ion-toolbar overrides toolbars with color
Steps to Reproduce
Steps to reproduce the behavior:

Open up any of the preview tests that use a translucent, white toolbar, for example:
http://localhost:3333/src/components/alert/test/preview
Add a color to the ion-toolbar: <ion-toolbar color="danger">
See that the toolbar still has a white background.

[x] anchor
[x] back-button
[x] badge
[x] button
[x] card
[x] card-header
[x] card-subtitle
[x] card-title
[x] checkbox
[x] chip
[x] chip-button
[x] chip-icon
[x] content
[x] fab-button
[x] input
[x] item
[x] item-divider
[x] item-option
[x] label
[x] list-header
[x] menu-button
[x] note
[x] radio
[x] range
[x] searchbar
[x] segment
[ ] segment-button
[x] spinner
[x] tabbar
[ ] tabs
[x] text
[x] textarea
[x] title
[x] toggle
[x] toolbar

Confirmed this is still an issue for segment and tabs after the refactor, cc @manucorporat


Remove revoke column

Say that I don't want to use Role feature in Adminstrations.
Is that possible to remove or hide revoke column in Edit User Permissions ?
Thanks

You could, should be some simple search replace and a few changes.

Wow, it's so simple.
Just set it false in UserPermissionDialog.ts
Thanks


[SIP-85] OAuth2 for databases

[SIP-85] OAuth2 for databases
Motivation
Modern cloud databases (eg, Sowflake, BigQuery, and Google Sheets) support OAuth2 for user authentication and authorization. Connecting Superset to these databases today, specially Google Sheets, is a complicated multi-step process, requiring uses to create a service account that can potentially give access to all the sheets inside an organization (if "impersonate user" is not enabled).
Superset could offer a much better experience to users by supporting OAuth2 directly. Users would simply have to grant the necessary permissions to Superset, and Superset would store and use the access tokens when running queries. This would remove the complexity of setting up these databases, and solve the problem of risking giving access to confidential tables and/or sheets.
Proposed Change
We propose supporting OAuth2 directly in Superset. When accessing a resource (table or Google sheet) that requires OAuth2 the user would be redirected to the authorization server, where they can grant the necessary permissions. After OAuth2 the access and refresh tokens would be stored in table with grain of (database, user), and reused in subsequent connections.
The following video shows the process in action:
https://user-images.githubusercontent.com/1534870/172488708-06f99cf3-499f-4323-91cd-fa426259e06c.mov
New or Changed Public Interfaces
This proposal adds a new table and a new endpoint. It also modifies modify_url_for_impersonation to pass a new parameter, the OAuth2 access_token. The SIP will be first implemented for Google Sheets, but the implementation is database agnostic, with all database specific logic living in the engine spec.
To store the user tokens a new table database_user_oauth2_tokens would be created, with a corresponding SQLAlchemy model:

user_id
database_id
access_token
access_token_expiration
refresh_token

1
1
XXX
2022-06-06 09:00:00Z
YYY

(The access token and refresh token are stored in encrypted columns, similar to other database credentials.)
Here the user with ID 1 has an access token XXX on the database with ID 1. When they run a query in that database Superset will pass the access token to the database engine spec via modify_url_for_impersonation. For Google Sheets to use this token it's as simple as:
class GSheetsEngineSpec(SqliteEngineSpec):
    ...
    @classmethod
    def modify_url_for_impersonation(
        cls,
        url: URL,
        impersonate_user: bool,
        username: Optional[str],
        access_token: Optional[str] = None,  # added in this SIP
    ) -> None:
        if impersonate_user and access_token:
            url.query["access_token"] = access_token

Different DB engine specs might have to handle the token in a different way.
When passing the token to the DB engine spec Superset will check if it hasn't expired. If it has expired and a refresh token is available Superset will refresh the token and store the new one by calling a DB engine spec method. For Google Sheets:
class GSheetsEngineSpec(SqliteEngineSpec):
    ...
    @staticmethod
    def get_oauth2_fresh_token(refresh_token: str) -> OAuth2TokenResponse:
        response = http.request(  # type: ignore
            "POST",
            "https://oauth2.googleapis.com/token",
            fields={
                "client_id": current_app.config["GSHEETS_OAUTH2_CLIENT_ID"],
                "client_secret": current_app.config["GSHEETS_OAUTH2_CLIENT_SECRET"],
                "refresh_token": refresh_token,
                "grant_type": "refresh_token",
            },
        )
        return json.loads(response.data.decode("utf-8"))

The refresh token logic is part of the OAuth2 spec, but the details of how to do it are left to each DB engine spec. For Google Sheets we need to post a payload to https://oauth2.googleapis.com/token, as the example above shows.
How are these tokens initially obtained and stored? Each DB engine spec should declare if it supports OAuth2 via a is_oauth2_enabled method, for example:
from shillelagh.exception import UnauthenticatedError

class GSheetsEngineSpec(SqliteEngineSpec):
    ...
    @staticmethod
    def is_oauth2_enabled() -> bool:
        return (
            "GSHEETS_OAUTH2_CLIENT_ID" in current_app.config
            and "GSHEETS_OAUTH2_CLIENT_SECRET" in current_app.config
        )

    oauth2_exception = UnauthenticatedError

(The default method in the base class returns False.)
Each DB engine spec also defines an exception oauth2_exception that is raised when OAuth2 is needed (UnauthenticatedError in the example above). Superset will capture this exception and start the OAuth2 flow by raising a custom error that the frontend understands:
class BaseEngineSpec:
    ...
    def execute(
        cls,
        cursor: Any,
        query: str,
        database_id: int,
        **kwargs: Any,
    ) -> None:
        try:
            cursor.execute(query)
        except cls.oauth2_exception as ex:
            if cls.is_oauth2_enabled():
                oauth_url = cls.get_oauth2_authorization_uri(database_id)
                raise OAuth2RedirectError(oauth_url) from ex

Here the base engine spec is calling the method get_oauth2_authorization_uri that is database specific — this returns the URL of the authorization server.
When authenticating with OAuth2 it's common to pass a state parameter to the authorization server to, as the name suggests, maintain state. That parameter is returned unmodified from the authorization server, and we can use it to verify that the request is valid and came from Superset. In this implementation, our state is a JWT signed with current_app.config["SECRET_KEY"], with the following payload:
{"user_id" 1, "database_id" 1}

The user should be redirected back from the authorization service to a new endpoint, api/v1/databases/oauth2/. That endpoint will receive the state JWT and a code query argument. The backend validates the JWT and extracts the user and database IDs. It then exchanges the code for the access and refresh tokens. Since this is database specific we call a method on the DB engine spec; for Google Sheets:
class GSheetsEngineSpec(SqliteEngineSpec):
    ...
    @staticmethod
    def get_oauth2_token(code: str) -> OAuth2TokenResponse:
        redirect_uri = current_app.config.get(
            "GSHEETS_OAUTH2_REDIRECT_URI",
            url_for("DatabaseRestApi.oauth2", _external=True),
        )

        response = http.request(  # type: ignore
            "POST",
            "https://oauth2.googleapis.com/token",
            fields={
                "code": code,
                "client_id": current_app.config["GSHEETS_OAUTH2_CLIENT_ID"],
                "client_secret": current_app.config["GSHEETS_OAUTH2_CLIENT_SECRET"],
                "redirect_uri": redirect_uri,
                "grant_type": "authorization_code",
            },
        )
        return json.loads(response.data.decode("utf-8"))

Note here that we have an optional GSHEETS_OAUTH2_REDIRECT_URI configuration key. This should not be used in most situations (but is needed at Preset, where we manage multiple Superset instances).
After exchanging the code for the access and refresh tokens they get saved to the table database_user_oauth2_tokens.
New dependencies
No new dependencies, though the reference implementation uses a few dependencies-of-dependencies not listed explicitly in Superset's setup.py (urllib3 and yarl).
Migration Plan and Compatibility
A new migration is needed to create the database_user_oauth2_tokens table.
Rejected Alternatives
There are not many alternative ways to solve the problem of authenticating to a database using OAuth2. The table is needed, since we store personal tokens at the (database, user) grain. We need a new endpoint, to receive the code from the authorization server. Passing the access_token to modify_url_for_impersonation seems like the cleanest way of supporting OAuth2 without having to refactor all the engine specs.

Yes please, this would be wonderful ❤
Our use case for this is Redshift and Aurora Postgres with Microsoft AAD.

@phildum do you have any docs on how to use OAuth2 in those cases?

We, at Wise, have implemented this for Snowflake in the superset custom config file, it's a great chunk of the file, would love to have this native support for it in Superset.
Currently, like shown in this SIP, we're saving the tokens to the metadata db, in hindsight, I suggest adding the option to save them to the cache instead, since they expire anyway and to avoid multiple trips to the DB to fetch them throughout the period the user is querying the data source.
On another note, as was pointed out on Slack, a limitation we hit with this implementation is that we cannot enable alerts/reports because Superset uses a machine user which cannot authenticate to the data source to render a dashboard.
There is also data caching that has to be done per user to avoid data leaking to visitors of a dashboard, I have a PR open for this https://github.com/apache/superset/pull/20114

@phildum do you have any docs on how to use OAuth2 in those cases?

Redshift: https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-native-idp.html
Postgres RDS is via Kerberos to AWS managed AD which can then be synced with Azure AD via Azure AD Connect: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/postgresql-kerberos.html
https://aws.amazon.com/blogs/security/enable-office-365-with-aws-managed-microsoft-ad-without-user-password-synchronization/
As Postgres RDS is not OAuth2, but Kerberos, you may want to split this out, but the premise of database access via SSO could remain the same, with a different backend implementation of token fetching?

Currently, like shown in this SIP, we're saving the tokens to the metadata db, in hindsight, I suggest adding the option to save them to the cache instead, since they expire anyway and to avoid multiple trips to the DB to fetch them throughout the period the user is querying the data source.

@betodealmeida If we choose to use the cache to store this information, our custom flask caching backend can store data in the key_value table in case a client does not support any of the available backends 😉

This would fill a major missing hole in BI offerings generally, I have several clients in need of this

this is a great feature! We spent a lot of time to find a good way to enable snowflake oauth and none of them is perfect. Really looking forward to having this feature available.

Trino like this :+1:

this will support trino oauth2 ?

this will support trino oauth2 ?

We'll create a base implementation, and then people can add support on per-database basis. My idea is to start with GSheets and Snowflake, but it should be easy to add support for more databases.

Could please point out to the branch where the code is in progress to incorporate this feature. @betodealmeida

@betodealmeida I've tried to make a docker build from your branch https://github.com/betodealmeida/incubator-superset/tree/gsheets_oauth but it failed on the npm stage:
executor failed running [/bin/sh -c cd /app/superset-frontend         && npm run ${BUILD_CMD}         && rm -rf node_modules]: exit code: 1
is there a better recipe to test your changes?
I'd be happy to contribute as a tester (or maybe even code)

Hi,

We'll create a base implementation, and then people can add support on per-database basis. My idea is to start with GSheets and Snowflake, but it should be easy to add support for more databases.

Wondering if the implementation in progress is taking into consideration how having oauth for the datasources impacts scheduling alerts/reports?

Any updates on this? There is no recent activity in this branch https://github.com/betodealmeida/incubator-superset/tree/gsheets_oauth
Happy to contribute as a dev

Hi,

We'll create a base implementation, and then people can add support on per-database basis. My idea is to start with GSheets and Snowflake, but it should be easy to add support for more databases.

Wondering if the implementation in progress is taking into consideration how having oauth for the datasources impacts scheduling alerts/reports and if anything is being done around this?

Alerts & Reports can now be executed without a service account, see #21931 for details. So in terms of this PR, as long as the report executor has a valid access and/or refresh token stored in the db, the report should execute as if the user were logged in.

@michael-s-molina could you give a reference on the PR or code path that implements the OAuth2 for DB? Thanks!

@michael-s-molina  Can you please share the PR branch name for the oauth DB issue

@yzliao-zip @musicmuthu A closed SIP ticket only means that the SIP was approved. It does not mean it was implemented yet. You can check the implementation status of SIPs here.

@michael-s-molina  thank you for the explanation

I finally found some time to work on this.

Quick comment here for legacy and capturing a Slack conversation. I wondered if we had considered using the user session as a mean to store the token. The idea being that the token would be more ephemeral, not persisted by Superset and expiring with the Superset session, which all seemed good and healthy.
Now from a short conversation around this, a clear issue around the session approach is around 1) the async celery backend doesn't have a handle on the web request, forcing us to pass the token around in some capacity and encrypting it on the wire and 2) to support alerts & reports, unless we'd disable that combination of feature. In any case, knowing that Superset needs to have a hold on the token, it does make sense to use the database that provides the right guarantees around encryption.

Hi @betodealmeida @mistercrunch , I can chime in here, as I've implemented e2e OAuth database auth using the tokens from the initial Superset OAuth authentication flow. This is a more custom case, as we're able to use the initial token as the basis for all db OAuths, and don't need to do separate web based login dance that's required for these auths. However, the storage requirements are likely very similar.
The relevant auth steps look something like this:

When the user logs in, the JWT tokens are persisted in the key-value table. We do fairly heavy encryption of the tokens to minimize risk of tokens leaking.
When connecting to internal databases that support OAuth, we do token exchange to exchange the initial token for the downstream one.
When the downstream token expires (they usually have a fairly short TTL), they are re-exchanged for a new one from the initial token.
We persist the refresh tokens also, which means that if the initial token expires, we can refresh it on the fly and then re-exchange when needed.

One important thing that required careful consideration is how to handle this in highly horizontally scaled deployments. Example: let's say you open a big dashboard with many charts referencing the same database. The browser will trigger multiple chart data requests that will likely be picked up by different web workers that don't share state. If the token needs exchanging or refreshing, we only want one single process to handle that. For that reason, we use a distributed lock, that again leverages the key-value table. It goes something like this (this happens from the db connection mutator):

fetch the latest downstream token from the key-value store (each downstream token is persisted in a separate entry based on the OAuth app id)
if it's valid, add the JWT token to the database connection and return the mutated db connection.
if it's expired, try to retrieve a lock for executing token exchange.
If the lock is already taken, do backoff, and goto 1.
Initiate the token exchange process.
If the initial token is also expired, a similar locking/refreshing flow is initiated for that as explained in 1-4
once the new token is ready, persist that in the key-value store, and return the lock

This ensures that only a single web worker thread is actually carrying out the token exchange/refresh, and the others are simply waiting for it to complete, after which they proceed normally with the chart data request. It also works great for alerts & reports, as this all happens under the hood by the web workers. This flow has worked very well for us, and I'm happy to contribute the related code upstream if this aligns with this feature.

Hi @betodealmeida - just checking in to see if this is still WIP of if it's effectively "done". No pressure, just wondering what column to put it in ;)

@betodealmeida would be the one to ask here - I think so, but I'm not sure if it's been officially released yet.


Example in README

Hello, probably, it's better to add doc.close(); command in code snipped in readme

Why would you want to do so if RAII takes care of calling it for you?

I am not sure that I understood what you meant, but for my c++ program it was critical, because I couldn't change excel without closing program

As close() is automatically called by the destructor, adding a manual call to the method is redundant and probably not wanted.
I'm not very familiar with Qt and it also depends on how you designed your app, but you should probably have a look to XLDocument::save().

Got it. Thank you!


Create jdk collection views

as @jbgi suggested: https://twitter.com/jb9i/status/648427409532932096

@jbgi Would you also allow to create a Set view on a List? But Map view on List would clearly make no sense...

@danieldietrich  Would this work? To produce a map view on a list, the key = index, value = value ( Map<Integer,T> ). And vice versa List<Map.Entry<K,V>>

@johnmcclean-aol Yes, that would be a viable option.
In general, I think it is too much to define all possible views for each Javaslang collection (= number of Javaslang collections * number of Java collections). In a first step we could create a 1:1 dependecy, namely List to ListView, Set to SetView, ...

Martin Odersky wants to re-design Scala's views, as stated in a recent talk.
Here is the corresponding issue: Wanted: Strawman proposals for new collections architecture
Daniel Spiewak wrote down a first idea of redesigning Scala's collections in his Collections Redesign Proposal gist.

+1 for this issue.
I am particularly keen on getting a ListView from an IndexedSeq, which would allow usage of java.util.Collections.binarySearch without memory overhead.

What about adding binarySearch to Seq (List, Stream, Vector, ...)?

That would work well for my specific needs!

It does not make sense to provide java.util Collection views. These are mutable. Javaslang collections are immutable. If we have a java.util.ListView listView on a javaslang.colleciton.List and call listView.add(x), nothing will happen to the view because the immutable change returns a new instace but java.util.List#add returns boolean.


Fast blocking broken

Block dialogue now shows up again as of recent

Looks like they've changed a couple of things which could be affecting this, which we also need to account for elsewhere. For one they're now setting an overflow style on <html>, which is causing the whole page to get reprocessed when popups appear, and we want to avoid that.
Perhaps it's time to bite the bullet and add "Block" to the list of translations we know about, so we can just use the button text.


[Pulsar-Edit] Add Pulsar Badges for Stargazers & Downloads

Hello folks, first time submitting a PR to this repo, so hopefully I've considered and followed all Contributing Guidelines.
But this PR adds badges for the Pulsar-Edit or Pulsar Package Registry Server.
Adding the following endpoints and Badges:

pulsar-edit/downloads/:packageName: To get a Packages Download Count
pulsar-edit/stargazers/:packageName: To get a Packages Stargazers Count

Pulsar is the emergent fork of Atom, and these badges now replace the apm badges for our service, which it may be worth removing the apm badges as they all no-longer work (But outside the scope of this PR).
Unfortunately I was unable to run the test suite locally on my machine and had to rely on GitHub Actions to test due to Issue #8437 and will add a comment to that issue as well, that the service tests do not run on Windows for me either.
But please provide any feedback as needed, and thanks for any time spent reviewing this!

Messages

:book:
:sparkles: Thanks for your contribution to Shields, @confused-Techie!

  Generated by :no_entry_sign: dangerJS against 08e6cc275f773e0b2235a3b70c3d07f352ea8f2f

Apparently, the test runner is unable to find my test suite, does it maybe not like the dash? Although it looks like eclipse-marktetplace got by with a dash, although the PR added that doesn't show the tests that were run on it since it was a while ago.
If anyone has some pointers on what's causing the tests to be missing, I'd appreciate it

Not sure why danger is failing to run after just merging in the main branch. A tad confusing, but I'll look at trying to get a Linux machine setup to see if I can run tests there, since I'm unable to run the test suite on Windows. So hopefully I can get the tests running on this PR

Odd. We have been in the process of converting our existing CI processes over to GitHub Actions, so the failure could be unrelated to your changes

Tests are running now, with failure details available at the link + inline below. The test runner framework by default is driven off the class name, so the hyphen is unnecessary unless the tester has been explicitly wired up in a different way.
https://app.circleci.com/pipelines/github/badges/shields/16711/workflows/b394e94a-c118-4411-af40-4914ddbb6a86/jobs/201806/tests#failed-test-0
2 tests failed  out of 4
Test Insights
New

PulsarEditDownloads [live] pulsar-edit downloads (not found) [ GET /test-package.json ]
[ GET /test-package.json ]
/home/circleci/project/core/service-test-runner/cli.js

AssertionError: color mismatch: expected 'red' to equal '#662d91'
    at Function._expectField (file:///home/circleci/project/core/service-test-runner/icedfrisby-shields.js:85:51)
    at IcedFrisbyNock.<anonymous> (file:///home/circleci/project/core/service-test-runner/icedfrisby-shields.js:73:26)
    at IcedFrisbyNock.<anonymous> (node_modules/icedfrisby/lib/icedfrisby.js:954:10)
    at invokeNextHook (node_modules/icedfrisby/lib/icedfrisby.js:1003:24)
    at /home/circleci/project/node_modules/icedfrisby/lib/icedfrisby.js:1017:7
    at new Promise (<anonymous>)
    at IcedFrisbyNock._runHooks (node_modules/icedfrisby/lib/icedfrisby.js:976:12)
    at IcedFrisbyNock.run (node_modules/icedfrisby/lib/icedfrisby.js:1276:20)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Context.<anonymous> (node_modules/icedfrisby/lib/icedfrisby.js:1348:9)

      + expected - actual

      -red
      +#662d91

PulsarEditStargazers [live] pulsar-edit stargazers (not found) [ GET /test-package.json ]
[ GET /test-package.json ]
/home/circleci/project/core/service-test-runner/cli.js

AssertionError: color mismatch: expected 'red' to equal '#662d91'
    at Function._expectField (file:///home/circleci/project/core/service-test-runner/icedfrisby-shields.js:85:51)
    at IcedFrisbyNock.<anonymous> (file:///home/circleci/project/core/service-test-runner/icedfrisby-shields.js:73:26)
    at IcedFrisbyNock.<anonymous> (node_modules/icedfrisby/lib/icedfrisby.js:954:10)
    at invokeNextHook (node_modules/icedfrisby/lib/icedfrisby.js:1003:24)
    at /home/circleci/project/node_modules/icedfrisby/lib/icedfrisby.js:1017:7
    at new Promise (<anonymous>)
    at IcedFrisbyNock._runHooks (node_modules/icedfrisby/lib/icedfrisby.js:976:12)
    at IcedFrisbyNock.run (node_modules/icedfrisby/lib/icedfrisby.js:1276:20)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async Context.<anonymous> (node_modules/icedfrisby/lib/icedfrisby.js:1348:9)

      + expected - actual

      -red
      +#662d91

@calebcartwright Thanks a ton for providing some feedback and working out the test issue for me!
I'll get right on those changes, and glad to hear I didn't do something crazy causing that other test to fail. Appreciate your time!

@calebcartwright (I apologize if you are the wrong person to ping, or if the ping is unnecessary)
But wanted to add with your help the tests are now running and passing!
Was trying to expect the badges colour when the service returns a 404, but seems that no other badges do this, which I'm assuming the colour on failure is being set somewhere else in the application rather the my badges render method. So my bad there and this one should be good to check out, thanks again for your help!

The issue with danger is unrelated. I thought everything was just using API calls but there must be something in our dangerfile that is working out the list of changed files from the API and then tries to open some of the files in the PR from the local filesystem, which then fails because they're not checked out on the pull_request_target event sigh. I can't see immediately what it is, but I'll try to work it out tomorrow.

Thank you for the PR, now that all the tests & CI checks are passing we should be able to begin the review process.
Although we do not strictly require PRs have an associated issue, in cases like this where a new badge is being proposed absent an issue we'd still like to get the details and answers to the questions we pose as part of fielding new badge requests.
Sharing them inline below to streamline things, please follow up with responses whenever you get a chance!
Description

Which service is this badge for e.g: GitHub, Travis CI
What sort of information should this badge show?
Provide an example in plain text e.g: "version | v1.01" or as a static badge (static badge generator can be found at https://shields.io/#your-badge )

Where can we get the data from?
Please consider and cover details like:

Is there a public API?
Does the API require authentication or an API key? (If so, please review our documentation on Badges Requiring Authentication)
Link to the API documentation.

@calebcartwright Of course, apologies if this was not good form but here are the answers to those questions:

Also I appreciate you sorting out these testing issues and getting to my PR in such a timely manner

Description

These two badges are for the Pulsar Package Registry, otherwise the Package Registry for Pulsar. Pulsar is the newly developed fork of Atom. Of which the Pulsar Team has created the Pulsar Package Registry to fill in for what APM or the Atom.io servers once did, and that is allow the Pulsar/Atom community to publish, share and distribute their packages. So essentially this is for the new rebirth of Atom after it's sunset.
There are two badges here showing two different things. They are the "Download" count of a community package, and the other shows the "Stars" for that community package.
For downloads: downloads | 1,101 ... And for Stars (Or Stargazers) stargazers | 100

Where can we get the data from?

Yes the API is Public, currently it exactly matches Atom's previous API to maintain compatibility, but even when changes occur the API will remain public
While some endpoints require authentication the endpoints used here do not require any kind of authentication, and are only subject to reasonable rate limiting per IP
Documentation: The most up to date documentation for the Pulsar Package Registry can be found here as this is a file generated from the source code. Additionally we have a swagger instance hosted alongside the API. (This one is manually updated, so may be slightly behind on the most recent changes)

Since I know Pulsar is a newer platform and service here's some links if you'd like to verify more:

Pulsar GitHub Org
Pulsar Website
Pulsar Package Registry Source Code

That helps a lot, thanks! Last question before really diving into the code, but based on the commentary in this thread and the material on the links you posted I get the impression that "Pulsar" is the truer name & nomenclature that will most resonate with users, and I imagine the "edit" portion was just added in places where necessary for distinction (e.g. domain). Is that fair/accurate, or is the service/platform/etc. name indeed PulsarEdit/Pulsar-Edit?
If it's the former then we should update the naming utilized here as well to simply reflect Pulsar

That helps a lot, thanks! Last question before really diving into the code, but based on the commentary in this thread and the material on the links you posted I get the impression that "Pulsar" is the truer name & nomenclature that will most resonate with users, and I imagine the "edit" portion was just added in places where necessary for distinction (e.g. domain). Is that fair/accurate, or is the service/platform/etc. name indeed PulsarEdit/Pulsar-Edit?
If it's the former then we should update the naming utilized here as well to simply reflect Pulsar

Hm. That is a good point. The way we have essentially used it is Pulsar-Edit is the organization, meanwhile Pulsar is the editor itself.
But you have a good point that Pulsar may resonate more-so with the community of users as this is more recognizable as our naming. And talking quickly with other Pulsar devs seems they agree with your assessment.
I'll go ahead and get to those changes here, and ping once done. Thanks!

@calebcartwright I've gone ahead with the rename, and am now simply using Pulsar in all locations here. Thanks for the assistance and feedback

Please feel free to let me know if there's anything I can do to further help this PR, such as updating it to the latest changes on master or any other information.
Otherwise appreciate any attention it's gotten so far!

Again feel free to let me know if you'd like me to update this from the master branch or do anything else to get it in a prime position. Appreciate any feedback. Thanks.

@PyvesB Thanks a ton for the review, I've gone ahead and made the requested choices.
Feel free to let me know if everything looks good.

Thanks, looks good to me! 👍🏻

Thanks a ton for reviewing and getting this approved. Appreciate you!

 Sorry this probably took longer than you'd have expected. It's a big project with many external requests and contributions, and only a small handful of maintainers dedicating their time for free. Sometimes it's just a matter of being patient and waiting for the PR to pique of the maintainers' interest. :)
I've gone ahead and deployed this to production, e.g. . Enjoy!


ValueError when using mode that includes "t"

If the intention is for safer to be a drop-in replacement for the open() builtin, then it should support all the valid arguments for mode, including t (even though it's redundant).
>>> import safer
>>> safer.open("foo", "wt")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/jdidion/.pyenv/versions/xphyle/lib/python3.6/site-packages/safer.py", line 128, in open
    return _open(name, mode, buffering, make_parents, delete_failures, arg)
  File "/Users/jdidion/.pyenv/versions/xphyle/lib/python3.6/site-packages/safer.py", line 207, in _open
    fp = m(temp_file, mode, opener=opener)
ValueError: invalid mode: wt

Oh, I even knew about 't' and I falsely believed that this would all flow through without a test.
Moment pls.

Done!
I'll release a new version in the next day or two.

Thanks! With this fixed I should be able to use safer for file opening in https://github.com/jdidion/xphyle

Well, then, I just pushed version 2.0.3 which has this change in it.  You should see it on Pypi by and by.

Awesome, thanks!


Making httpcall to external services in lua filter

Hi,
I'm trying to configure Lua filter to make HTTP call to an external service. From the documentation, the API defines headers, body = handle:httpCall(cluster, headers, body, timeout).
It looks like "cluster" refers to Kubernetes cluster or any other Pod. Is there a way to make a Lua call to external services without authorization or ServiceEntry in Istio?
Here's my Lua code:
        function envoy_on_request(request_handle)
          request_handle:logCritical("HI")
          -- Make an HTTP call.
          local headers, body = request_handle:httpCall(
          "outbound|80||leelabs.org",
          {
            [":method"] = "GET",
            [":path"] = "/",
            [":authority"] = "leelabs.org",
            ["set-cookie"] = { "lang=lua; Path=/", "type=binding; Path=/" }
          },
          "hello world",
          5000)
          request_handle:logCritical("HI".. body)

The cluster refers to an Envoy cluster (https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/cluster.proto, defined in your bootstrap or through your management server). You should be able to define a cluster for your remote service and reference that in your lua call

Thanks for the pointer! I'm wondering whether there's a way to refer dynamically to "external cluster" that points to external end-point when a cluster is not found in the configuration.


[suggestion] "Get the COVID vaccine" prefilled scenario

I found myself wondering today how much risk my parents incur by heading to an indoor vaccination site. Getting vaccinated will be pretty common for people over the coming months, and some people might prefer to isolate and wait instead of risking a visit to a vaccine site, especially if prevalence spikes. So perhaps it makes sense to add it as an option to the prefilled scenarios.
Here's my quick guess at appropriate parameters.

Hi @orborde, thanks for filing this! I think it's worth adding (but the preset selector itself needs a bit of work before it can really support as many options as we'd like to add to it)
I wanted to chat about the parameters you chose. Could you walk me through them (specifically number of people and your mask/their mask)? In particular, can you describe the physical appearance of these "medical-grade N95 that fits, but you are NOT sure it's sealed" things?

Well, first of all: I haven't been to a vaccination center, so all my
parameter choices were complete guesswork.
For "number of people", I figured that there'd be about 2 nurses nearby,
and a mean of one other patient nearby (from waiting in line to walking to
the chair to sitting getting jabbed through sitting in observation).
For the mask choice, my reasoning went: "the practitioners are probably
wearing well-sealed masks, but the fellow patients probably aren't, so
let's just average that out to 'an N95, worn poorly'".
On Tue, Feb 9, 2021 at 4:22 PM Jenny<EMAIL_ADDRESS>wrote:

Hi @orborde https://github.com/orborde, thanks for filing this! I think
it's worth adding (but the preset selector itself needs a bit of work
before it can really support as many options as we'd like to add to it)
I wanted to chat about the parameters you chose. Could you walk me through
them (specifically number of people and your mask/their mask)? In
particular, can you describe the physical appearance of these
"medical-grade N95 that fits, but you are NOT sure it's sealed" things?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/microcovid/microcovid/issues/738#issuecomment-776061289,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGEOHVTQWFXRHOMNMCAE6TS6FONDANCNFSM4XKXKTEA
.

sorry, incoming small essay!
I think in the 2 nurses 1 patient situation, the best possible mask assumption for the other patient is cotton mask, thick and snug. Assuming all medical staff had sealed N95s, that would average out to a 1/6.5 multiplier, pretty close to your proposal of unsealed N95 (1/6).
However, I don't think we should assume that all the medical staff have N95s, let alone seal-tested N95s:
The handful of times I've visited a medical facility during the pandemic for non-COVID-related reasons, I've noticed that some of the staff have surgical masks, and some others have N95/KF94/etc. I suspect that for vaccinations, where there is no prior cause for suspecting more people to be COVID-infected than usual, places that are still rationing masks will have the vaccine administrators in surgical masks. That makes for an averaged mask multiplier of (2*(1/4) + 1*(1/3))/3 ~= 1/3.6, which I'd conservatively model as "assume everyone is wearing a thick and snug cotton mask".
I'm still asking around (I have a handful of second degree connections who have gotten vaccinated), but the one person I've gotten responses from so far says that the medical staff were wearing surgical masks. For the rest of it, I suspect COVID vaccination can be treated a lot like flu vaccination with distancing: assume you're in a line like this (which is equiv to 3 people at 6 feet) for 10-30 minutes:
(12ft)        (6 ft)         (you)         (6 ft)           (12 ft)
and spend 1-2 minutes total at a distance of 1 ft from one nurse (not talking most of the time) while you're getting the shot itself (negligible relative to waiting-in-line time).
I don't think any of the presets should assume that "you" are wearing anything "better" than a basic cotton mask (thick and snug).
I'll happily add this scenario in once I've

consulted with some research-y folks for a sanity check
heard back from some people who have gotten vaccinated
convinced myself that the preset search bar can handle even more options

Another consideration: I bet most of the medical staff you'll encounter are
vaccinated at this point.
On Wed, Feb 10, 2021 at 5:36 AM Jenny<EMAIL_ADDRESS>wrote:

sorry, incoming small essay!
I think in the 2 nurses 1 patient situation, the best possible mask
assumption for the other patient is cotton mask, thick and snug. Assuming
all medical staff had sealed N95s, that would average out to a 1/6.5
multiplier, pretty close to your proposal of unsealed N95 (1/6).
However, I don't think we should assume that all the medical staff have
N95s, let alone seal-tested N95s:
The handful of times I've visited a medical facility during the pandemic
for non-COVID-related reasons, I've noticed that some of the staff have
surgical masks, and some others have N95/KF94/etc. I suspect that for
vaccinations, where there is no prior cause for suspecting more people to
be COVID-infected than usual, places that are still rationing masks will
have the vaccine administrators in surgical masks. That makes for an
averaged mask multiplier of (2*(1/4) + 1*(1/3))/3 ~= 1/3.6, which I'd
conservatively model as "assume everyone is wearing a thick and snug cotton
mask".
I'm still asking around (I have a handful of second degree connections who
have gotten vaccinated), but the one person I've gotten responses from so
far says that the medical staff were wearing surgical masks. For the rest
of it, I suspect COVID vaccination can be treated a lot like flu
vaccination with distancing: assume you're in a line like this (which is
equiv to 3 people at 6 feet) for 10-30 minutes:
(12ft) (6 ft) (you) (6 ft) (12 ft)
and spend 1-2 minutes total at a distance of 1 ft from one nurse (not
talking most of the time) while you're getting the shot itself (negligible
relative to waiting-in-line time).
I don't think any of the presets should assume that "you" are wearing
anything "better" than a basic cotton mask (thick and snug).
I'll happily add this scenario in once I've

consulted with some research-y folks for a sanity check
heard back from some people who have gotten vaccinated
convinced myself that the preset search bar can handle even more
options

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/microcovid/microcovid/issues/738#issuecomment-776455901,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGEOHRJWD2U6QYD36PDZ3LS6ILM5ANCNFSM4XKXKTEA
.


trigger build when a dependency changes

That would be so cool.
In a project I'm working on, a module we depended on w/ semver'd "N.N.x" made a bugfix release that broke our code, and we didn't realize this until days later.
If we could automatically trigger a build any time a dependency issues a new release (that's still within the version requirements we supplied), that would be such a killer feature, especially for node projects.

Is this already possible or still in the plans? It would be awesome something that could detect dependencies through the package.json file and automatically upstream/downstream things.

I'm guessing it's still planned. Maybe once http://libraries.io has an API..

@knownasilya
IMHO, managing downstream dependencies is a basic feature of CI/CD platforms.
While it is not straightforward to trigger build of downstream projects (managed by Strider) of a project managed outside of Strider, it by far more feasible to do so for a Strider-managed projects.
I highly vote for this feature in Strider.

http://blog.npmjs.org/post/145260155635/introducing-hooks-get-notifications-of-npm?utm_source=package&utm_medium=below header&utm_term=announcing webhooks&utm_campaign=20160601


Add version property to datasets.

A question here would be whether we'd like to force the version to have any specific format (e.g. "1.0" is accepted but "1" no, or even "1.0.0" not).
I'd be in favor or keeping this very flexible for now, and not to add any extra check; but I would be happy to add some format check in metadata.py.

Note: https://schema.org/version in schema.org allows a version to be of types: "Text" and "Number".
I am not sure whether we'd like to support "Number" in mlcroissant or not.
This would work if we allow users to only specify versions as MAJOR.MINOR, but we might get into problem if users use integers and then select 1.0.0 -- WDYT? I'd be happy to add support for floats the version typing.

Starting with strings ("1.0") SGTM. We could certainly add checks, I think we'll need some checks anyway in the future


Update to 3.5

Hello!,
I'm New To Mod Among Us, Can you Update To 2021.3.5?

I'm working on it.

Done (little bit too late, but better than nothing).
https://github.com/CrowdedMods/CustomServersClient/releases/tag/1.5.0


Merge navstar minuteman

High level description including:

What does this change enable
What bugs does this change fix
High-Level how things changed

Issues
DCOS-
...
Checklist

[ ] Included a test which will fail if code is reverted but test is not
[ ] Followed relevant code rules Rules for Packages and Systemd

If this is a component/package update, include

[ ] Change Log from last:
[ ] Test Results:
[ ] Code Coverage:

@mellenburg can you do a first pass as the tests?

This PR requires some touch ups before it's ready to merge, but I don't want to do those things until we know we're near a merge window because it stalls out some other development efforts.

@sargun you are in a merge window. Please get this ready to go:-)

@mellenburg So like:

@retrying.retry(wait_fixed=2000,
                stop_max_delay=120 * 1000,
                retry_on_result=lambda ret: ret is False,
                retry_on_exception=lambda x: True)
def test_if_overlay_ok(cluster):
    def _check_overlay(hostname, port):
        uri = 'http://{}:{}/overlay-agent/overlay'.format(hostname, port)
        resp = requests.get(uri).json()
        overlays = resp['overlays']
        assert(len(overlays) > 0)
        for overlay in overlays:
            assert(overlay['state']['status'] == 'STATUS_OK')
        return True

    for i in cluster.masters:
        assert(_check_overlay(i, 5050))
    for i in cluster.all_slaves:
        assert(_check_overlay(i, 5051))

@mellenburg Can I get another review?

 ####  #    # # #####     # #####
#      #    # # #    #    #   #
 ####  ###### # #    #    #   #
     # #    # # #####     #   #
#    # #    # # #         #   #
 ####  #    # # #         #   #

maybe?

@branden I've been told not to squash commits during the review process because it makes it harder for people to see what changes have been made since the last review. Shall I do differently?

@sargun I'm OK with waiting until people are happy with the changes in the PR before you clean up history.

Okay, I made the change:

Squashed commit
Renamed i to master, and slave

I don't think changing the retry logic is a good idea.


Could not compile ic-utils during cargo install icx-proxy

Hi there! I'm getting the below error when trying to run cargo install icx-proxy.
   Compiling ic-agent v0.9.0
   Compiling ic-utils v0.7.0
error[E0277]: the trait bound `ic_agent::export::Principal: CandidType` is not satisfied
   --> /Users/phuongvu/.cargo/registry/src/github.com-1ecc6299db9ec823/ic-utils-0.7.0/src/interfaces/management_canister/builders.rs:251:42
    |
251 | impl<'agent, 'canister: 'agent, T: Sync> AsyncCall<(Principal,)>
    |                                          ^^^^^^^^^^^^^^^^^^^^^^^ the trait `CandidType` is not implemented for `ic_agent::export::Principal`
    |
    = note: required because of the requirements on the impl of `for<'de> ArgumentDecoder<'de>` for `(ic_agent::export::Principal,)`
note: required by a bound in `AsyncCall`
   --> /Users/phuongvu/.cargo/registry/src/github.com-1ecc6299db9ec823/ic-utils-0.7.0/src/call.rs:38:10
    |
36  | pub trait AsyncCall<Out>
    |           --------- required by a bound in this
37  | where
38  |     Out: for<'de> ArgumentDecoder<'de> + Send,
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncCall`

For more information about this error, try `rustc --explain E0277`.
error: could not compile `ic-utils` due to previous error
warning: build failed, waiting for other jobs to finish...
error: failed to compile `icx-proxy v0.7.0`, intermediate artifacts can be found at `/var/folders/zj/f8bhtxm522vd_js96_y2w66c0000gn/T/cargo-installauI5dz`

I am getting the same error. Did you find any solution yet?

@dubecker Sadly, I haven't.

same problem on my side

Same problem on my side.
I'm on a mbp M1.

bumping this issue

This should now be resolved with the release of 0.8.0. Please re-open if you run into similar issues.

Hey @Daniel-Bloom-dfinity, I am receiving this error in ic-utils v0.12.1
dfx v0.11.2
Ubuntu 20.04.4 LTS
Compiling ic-utils v0.12.1
error[E0277]: the trait bound `ic_agent::export::Principal: CandidType` is not satisfied
   --> /home/owner/.cargo/registry/src/github.com-1ecc6299db9ec823/ic-utils-0.12.1/src/interfaces/management_canister/builders.rs:251:42
    |
251 | impl<'agent, 'canister: 'agent, T: Sync> AsyncCall<(Principal,)>
    |                                          ^^^^^^^^^^^^^^^^^^^^^^^ the trait `CandidType` is not implemented for `ic_agent::export::Principal`
    |
    = note: required because of the requirements on the impl of `for<'de> ArgumentDecoder<'de>` for `(ic_agent::export::Principal,)`
note: required by a bound in `AsyncCall`
   --> /home/owner/.cargo/registry/src/github.com-1ecc6299db9ec823/ic-utils-0.12.1/src/call.rs:38:10
    |
36  | pub trait AsyncCall<Out>
    |           --------- required by a bound in this
37  | where
38  |     Out: for<'de> ArgumentDecoder<'de> + Send,
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncCall`

For more information about this error, try `rustc --explain E0277`.
error: could not compile `ic-utils` due to previous error
warning: build failed, waiting for other jobs to finish...
error: failed to compile `icx-proxy v0.8.0`, intermediate artifacts can be found at `/tmp/cargo-installMQN1rO`

I am getting the same issue as well with the same version(s) as pointed out in @Tyler-Gates post.

I've just published icx-proxy v0.10.1 with updated dependencies, which should cargo install cleanly.


Option to disable font override

GH now has SF Mono by default, which is quite a nice font. I'd rather not see operator mono. Would it be possible to make the font override an option? Thanks!

Yeah. Either we drop it altogether or we disable it by default and add a font and font size option.

I'd vote to drop it 👍

If anyone misses this feature, see: https://github.com/sindresorhus/module-requests/issues/97

First of all, thanks for this great extension!
One of the features that I like the most was the custom font (FiraCode) so I'm definitely missing it. IMHO, it would have been a better transition path to keep this feature on (or to merge the disable font feature) until there is a decent Chrome Extension to change the font for code blocks on Github. I've tried couple of other Chrome Extensions but they are not too good, so now I'm stuck with the non-ligatures font on Github until I get some time to write my own extension (or fork this one and bring custom font back :)) or @sindresorhus adds another project under his belt (big kudos man btw!).
Anyways, just my 2 cents


add to ruby-toolbox.com

I was struggling to remember the name of this gem after reading about it on hackernews. I figued it would be in the ruby toolbox but was not listed.
https://www.ruby-toolbox.com/categories/rails_file_uploads
can someone add/ask for this gem to be put in the upload category? thanks

Hmm, I'm can't find a way how to add/ask for adding a new gem, do you know what's the procedure?

When I try to suggest a project, I get: "Project suggestions are currently under maintenance and are disabled. They will be back with a vengeance soon!". So I guess it's currently not possible to add it to Ruby Toolbox, but I'll put it on my TODO list to periodically check if it's back on. Thanks for letting me know.