YARN-10747. Bump YARN CSI protobuf version to 3.7.1

https://issues.apache.org/jira/browse/YARN-10747

I think hadoop.protobuf.version in hadoop-project/pom.xml can be used instead of defining the version in hadoop-yarn-csi module.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 56s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

-1 :x:
test4tests
0m  0s

The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
36m 25s

trunk passed

+1 :green_heart:
compile
0m 37s

trunk passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
compile
0m 33s

trunk passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
mvnsite
0m 38s

trunk passed

+1 :green_heart:
javadoc
0m 33s

trunk passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
0m 28s

trunk passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
shadedclient
54m 17s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 36s

the patch passed

+1 :green_heart:
compile
0m 29s

the patch passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javac
0m 29s

the patch passed

+1 :green_heart:
compile
0m 25s

the patch passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
javac
0m 25s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 29s

the patch passed

+1 :green_heart:
xml
0m  2s

The patch has no ill-formed XML file.

+1 :green_heart:
javadoc
0m 22s

the patch passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
0m 20s

the patch passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
shadedclient
16m 27s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
unit
0m 38s

hadoop-yarn-csi in the patch passed.

+1 :green_heart:
asflicense
0m 35s

The patch does not generate ASF License warnings.

76m 45s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2946

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell xml

uname
Linux 68ddcc841db8 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / eb5edfc661a1621a3c046ef9e7afdc2d1652c6f1

Default Java
Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/1/testReport/

Max. process+thread count
752 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/1/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

I think hadoop.protobuf.version in hadoop-project/pom.xml can be used instead of defining the version in hadoop-yarn-csi module.

Good point! Done.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
1m 53s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  2s

codespell was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

-1 :x:
test4tests
0m  0s

The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
42m 43s

trunk passed

+1 :green_heart:
compile
0m 44s

trunk passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
compile
0m 37s

trunk passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
mvnsite
0m 44s

trunk passed

+1 :green_heart:
javadoc
0m 35s

trunk passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
0m 30s

trunk passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
shadedclient
64m  4s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

-1 :x:
mvninstall
0m 37s
/patch-mvninstall-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-csi.txt
hadoop-yarn-csi in the patch failed.

+1 :green_heart:
compile
0m 35s

the patch passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javac
0m 35s

the patch passed

+1 :green_heart:
compile
0m 28s

the patch passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
javac
0m 28s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 31s

the patch passed

+1 :green_heart:
xml
0m  3s

The patch has no ill-formed XML file.

+1 :green_heart:
javadoc
0m 24s

the patch passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
0m 21s

the patch passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
shadedclient
19m 49s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
unit
0m 42s

hadoop-yarn-csi in the patch passed.

+1 :green_heart:
asflicense
0m 37s

The patch does not generate ASF License warnings.

91m 32s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/2/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2946

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell xml

uname
Linux a827f265473f 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / 98001cad47b2c416f575d67b56144f2f3e40a1f8

Default Java
Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/2/testReport/

Max. process+thread count
624 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/2/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

This is weird. The second commit essentially translate into the same thing as the first one, but now it gets mvninstall -1 for Dependency convergence error:
[WARNING]
Dependency convergence error for com.google.protobuf:protobuf-java:3.7.1 paths to dependency are:
+-org.apache.hadoop:hadoop-yarn-csi:3.4.0-SNAPSHOT
  +-com.google.protobuf:protobuf-java:3.7.1
and
+-org.apache.hadoop:hadoop-yarn-csi:3.4.0-SNAPSHOT
  +-io.grpc:grpc-protobuf:1.26.0
    +-com.google.protobuf:protobuf-java:2.5.0
and
+-org.apache.hadoop:hadoop-yarn-csi:3.4.0-SNAPSHOT
  +-org.apache.hadoop:hadoop-common:3.4.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0
and
+-org.apache.hadoop:hadoop-yarn-csi:3.4.0-SNAPSHOT
  +-org.apache.hadoop:hadoop-common:3.4.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0
and
+-org.apache.hadoop:hadoop-yarn-csi:3.4.0-SNAPSHOT
  +-org.apache.hadoop:hadoop-yarn-common:3.4.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0
and
+-org.apache.hadoop:hadoop-yarn-csi:3.4.0-SNAPSHOT
  +-org.apache.hadoop:hadoop-yarn-api:3.4.0-SNAPSHOT
    +-com.google.protobuf:protobuf-java:2.5.0

[WARNING] Rule 0: org.apache.maven.plugins.enforcer.DependencyConvergence failed with message:
Failed while enforcing releasability. See above detailed error message.

Thanks @smengcl for the update.
Before: While checking the dependency, hadoop.version overrides the protobuf-java versions in hadoop-common and other modules. Therefore the dependency convergence error is missed.
After: The dependency check is run as expected, and it fails.
Reading the discussion in YARN-9057, YARN CSI does not contain third-party dependencies including protocol buffer 2.x jars. Therefore we can exclude the protocol buffer 2.x dependency from hadoop-common and other modules to fix the error.

Thanks @aajisaka . I have excluded protobuf-java 2.5.0 from yarn-csi dependencies that introduced it.

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 41s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  0s

codespell was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

-1 :x:
test4tests
0m  0s

The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
41m 43s

trunk passed

+1 :green_heart:
compile
0m 36s

trunk passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
compile
0m 32s

trunk passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
mvnsite
0m 38s

trunk passed

+1 :green_heart:
javadoc
0m 34s

trunk passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
0m 29s

trunk passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
shadedclient
63m  6s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 36s

the patch passed

+1 :green_heart:
compile
0m 31s

the patch passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javac
0m 31s

the patch passed

+1 :green_heart:
compile
0m 25s

the patch passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
javac
0m 25s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
mvnsite
0m 29s

the patch passed

+1 :green_heart:
xml
0m  1s

The patch has no ill-formed XML file.

+1 :green_heart:
javadoc
0m 22s

the patch passed with JDK Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04

+1 :green_heart:
javadoc
0m 19s

the patch passed with JDK Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

+1 :green_heart:
shadedclient
19m 19s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
unit
0m 41s

hadoop-yarn-csi in the patch passed.

+1 :green_heart:
asflicense
0m 35s

The patch does not generate ASF License warnings.

88m 31s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/3/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/2946

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient codespell xml

uname
Linux 17ce5e9832b7 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / fd85854b6b24f87bcce6c15c7d60729d777f468f

Default Java
Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.10+9-Ubuntu-0ubuntu1.20.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_282-8u282-b08-0ubuntu1~20.04-b08

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/3/testReport/

Max. process+thread count
729 (vs. ulimit of 5500)

modules
C: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi U: hadoop-yarn-project/hadoop-yarn/hadoop-yarn-csi

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-2946/3/console

versions
git=2.25.1 maven=3.6.3

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Merged. Thank you @smengcl

@aajisaka Thanks for the reviewing and merging this.


Replaced with a better library

Hi, this lib is based on the old one but it's much better and well documented

I see some good changes in your fork, but I don't see a reason to remove link to the original actively developed library from the list of examples.

@AmirSbss I've added a link to your fork to the list of examples in https://github.com/tdlib/td/commit/449bd82fad3fbd5b351f219cb7b8dfbaa15805f9.


[Usage]: Model Qwen2ForCausalLM does not support LoRA, but LoRA is enabled. Support for this model may be added in the future. If this is important to you, please open an issue on github

Your current environment
The output of `python collect_env.py`

How would you like to use vllm
I want to run inference of a [specific model](put link here). I don't know how to integrate it with vllm.

vllm==0.3.3

refer to:https://github.com/vllm-project/vllm/issues/3543


Remove extra expected event in tests.

JAVA-5340

Note static checks failing?! but doesnt seem linked.


Request header field x-inertia-version is not allowed by Access-Control-Allow-Headers in preflight response.

Before you start
[v] Update to the latest version by running composer update fruitcake/laravel-cors
[v] Make sure that Apache/nginx/Valet are NOT also adding CORS headers
Check your config
[v]  Double-check your config file with the version from the repo. Make sure the paths property is correctly set. Start by allowing as much as possible.
[v]  Make sure the middleware is added to the global middleware in your Http Kernel (not group)
Clear your caches
Please do these steps again before submitting an issue:
[v]  Clear your config cache php artisan config:clear, route cache (php artisan route:clear) and normal cache (php artisan cache:clear).
[v]  Make sure your permissions are setup correctly (eg. storage is writable)
Make the request
Open Chrome Devtools to see which requests are actually happening. Make sure you see the actual OPTIONS requests for POST/PUT/DELETE (see https://stackoverflow.com/questions/57410051/chrome-not-showing-options-requests-in-network-tab)
Please show the actual request + response headers as sent by the OPTIONS request and the POST request (when available)
base: laravel 8, inertiajs, svelte
I'm so tired...

Oh, sorry...
Inertiajs issue...
Solved..
https://inertiajs.com/redirects#external-redirects


imgui.text() render icons from ttf font

Hi, when I tried to use some custom ttf icon font, I could only render digits + alphabets.
Any icon I use from the font does not render at all (only shows up as empty).
I am trying to use the unicode of the icon in the following form.
imgui.text('\uf018')
Does pyimgui support rendering icons like this?
What is the expected way to render icons?
Thank you.

Hey, so I also ran into this issue. The cause is that
io.fonts.add_font_from_file_ttf(os.path.join('Custom.ttf'), 32)
will just load the default unicode range (a-z and some numbers).
You can also ask it to load additional character sets, e.g. :
io.fonts.add_font_from_file_ttf(os.path.join('Custom.ttf'), 32, io.fonts.get_glyph_ranges_chinese())
As you write above, you can directly address characters by their unicode id. However, if load something like an icon font, then its glyphs are stored in some random unicode range that is not loaded by pyimgui. For example, in Google Material Design Icons, the glyphs are stored in the range e000 -> fffd.
Currently pyimgui only accepts from a number of predefined ranges, so if you want to use an icon font, you will have to manually move the glyphs to unicode ranges that are loaded. You can do this using something like FontForge (free).
However, the best solution is if pyimgui allows for loading custom ranges (which is trivial in the c++ version that allows you to set the pointer directly). This could be done with a new wrapper python function that converts some numerical range to the expected pointer.
Hope this helps, and looking forward to future versions of pyimgui :)

Along the same lines, another use case that is not supported is merging glyphs into the default font. It would be great to support this as well!

By the way, since it is very often used in the "mainline" projects (aka projects written directly in C++), can I assume that including Icon fonts like "Font Awesome" will not work currently? (Not until the PR v1.81 at least?)
It seems that the range for calling "add_font_from_file_ttf" is of a strange type "_StaticGlyphRanges", so that I don't know how to set any range at all.. if possible, I would just expect something like a simple list or tuple. At least to be able to manually set a certain range if one know exactly the range.

This would be better if the codepoint range defaulted to 32-bit within the C++ build. It would be nice to be able to construct an arbitrary font configs and glyph ranges as noted in #35, and ideally would not need to construct a texture with all of the glyphs, rather just the few we use e.g. MDI currently has > 6000 glyphs so the code above results in a 4096x4096 texture for this font.

And it works for any font, not just the one that I chose to work with 😄

This should be fixed thanks to @saulthu in #241. I merged the fix in branch dev/version-2.0. Let me know if there is any problem.


fix(iroh-net): fix extra delay

Description
Fix https://github.com/n0-computer/iroh/issues/2328 (The delay issue I encountered has been resolved. It needs to be evaluated whether the modification is correct.)
Bump netdev to v0.27.0 , Fix https://github.com/n0-computer/iroh/issues/2327

@flub I have fixed formatting issues. Could you please help to approve the CI workflow again? Thank you very much!

See https://github.com/n0-computer/iroh/pull/2332 for the flaky test this found :(

clippy is unhappy, otherwise looks good

Thank you for your patient guidance.

Thank you for your patient guidance.

Thanks for your contributions!  Finding and fixing where those delays are from is great!


Initial working version

I still need to update the client-java dep and add javadoc across the estate. I also want to run some more tests against a starter project I'm building. Anyway I think it's good for review.
Metrics are currently validated against a whitelist based on the metric name. I believe that, although restrictive this is the easiest way to make sure we only process metrics we understand. I'm open to suggestions for future iterations.
Next iterations will most likely include support for Datasource and Cache metrics as described in here since it seems simple straightforward.
We might want to include support for Custom metrics and Dropwizard but I don't see that as being as simple to do.

Lgtm. Some minor comments. 👍

Thanks both, I've updated according to feedback.
Can I have your opinion on the groupId for this stuff before merging?

I like it :)

Thanks 👍


Some inputs have wrong height on mobile browsers

Describe the bug
<select> and <input type="date"> looks OK in desktop browser, but does not have the same height as <input type="text"> on some mobile browsers.
To Reproduce
Steps to reproduce the behavior:
<select class="hoo-input-text><!-- omitted --></select>
<input type="date" class="hoo-input-text">
Expected behavior
Same height as <input type="text" class="hoo-input-text">
Smartphone:

Device: Samsung Galaxy S1
OS: Android
Browser: Samsung Internet

Additional context
I realize that there is a hoo-input-date class as well, but found that it missed some functionality from hoo-input-text, or I was using it wrong. Either way, hoo-input-text did everything I wanted out of the box, except for this issue.
I know the <select> tag is not in the style guide so technically not a bug, but works just as well as the date field I mentioned before. I can open a separate feature request issue for it if you want.
My workaround:
select.hoo-input-text,
input[type="date"].hoo-input-text {
    height: 1.875rem;
}

Fixed height is OK, since these field types are not multi-line.

Are you sure the base font size is set to 1rem at 16px?

Font size for .hoo-input-text is 0.875rem. Font size on html/body is undefined in CSS in my case so it defers to my browser settings.

Yes but if you change the font of your OS that the browser shows smaller text, this changes the font size on root. There is now browser default other then the default setting is set to 16px. Can you share a screenshot?

Sure thing.

Indeed. Luckily, setting the height of the control works in this case. Also, font is not matching, but at least it looks better when height is matching.

I need to find an Android emulator to check what is going on there.

I frequently use BrowserStack for device testing. They have a sponsorship program for open source projects. https://www.browserstack.com/open-source

Thanks haven't tought about that ;) - Submitted it now.


[BUG] Responsive display problem for repositories with long names and languages

Description
Hi team,
It's not a huge problem that affects everyone either, but I've noticed that the display of repositories with a long name and displayed language doesn't display correctly on mobile (cf. screenshot below).
Would it be possible to consider switching the display on two lines in such cases ?
Thank you in advance in any case !
Gitea Version
1.20.0+dev-999-g8d7893e81
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots

Git Version
No response
Operating System
No response
How are you running Gitea?
Please have a look (thru mobile) on https://gitea.com/DansLeRuSH
Database
None

Hi ! It seems that b9baed2c74 delivered in 1.21 corrected that. Thank you and I close this issue.


Truncate the cached max seq len

Truncate the cached max seq len

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


add containment of subclasses into main docker class

I encounterd an issue with the following code which ensures the disk is properly formatted and mounted before installing docker:
Profile::Disk::App[$app_name] ->
class { '::docker': }
Actually Puppet was still installing docker before the disk is ready (docker::install class was applied too early)
This is solved by using containment feature.

Hi @brunoleon. Thanks for this fix, much appreciated.


Make Enable Debug Status Persistent Between Sessions

On restarting Propeller Tool, the Enable Debug state is set to ON by default; this gets in the way as soon as I try to download something that uses PST. Please make this state persistent between sessions so that I don't have to turn it off every time I restart Propeller Tool (which is frequent given crashes probably caused by memory leaks).
The Enable Debug state should also be part of the toolbar which is right around the corner, right? :)

Thanks @JonMcPhalen.  (I thought I had recorded this as an issue already, but don't see it; regardless, it's what was intended)
They'll also be an additional enhancement that makes this issue mostly mute, related to issue #112.  I'd requested the P2 compiler be enhanced to automatically step back to debug mode off if the source being compiled doesn't contain executable DEBUG() statements.  That request may or may not still happen.  For now, I'll resolve it furth in the Propeller Tool itself; the current behavior is just temporary.
Yes, Enable Debug will be a button on the toolbar.  Yes, it's right around the corner.

Setting is now saved in v2.5.2 and restored at the start of the next session.
Also of note, as indicated earlier, an enhancement to the same version makes the experience much smoother regardless of this issue: with Debug Mode on, if the objects being compiled do not contain executable DEBUGs, no debug-related error occurs and instead the P2 application is built without the debug subsystem included (just like compiling with Debug Mode off).  A notice appears on the status bar when this automatic behavior was employed.


How to use srtrict mode properly?

I run semantic (8.0.3) with --strict option enabled. Tool makes new commit with message, for example "1.2.0", and pushes this in the repo. Since this commit are made in the same branch GitLab runs pipeline again and semantic are running for this new commit. Semantic can not create a new release because of commit "1.2.0" do not indicate any changes (fix or feat) and fails.
How I can use --strict mode properly? Should I skip semantic run for these version commits? How? Or I need to write my own parser?

There is a lot to unpack in your question. I'll try my best to give you some advice.

You shouldn't need to run your own parser as long as your commit scheme is one of the built-ins (angular, scipy, emoji, or tag)

You should only be running semantic-release once and that is when you want to actually make the version commit and tag. I think your problem is that you ran it locally and then the CI ran it again as it tried to replicate the same functionality. Recommend only the CI.

Since you are using GitLab you will need a personal/group/project access token configured for the environment that can push to the repository (this is not the same as a CI_JOB_TOKEN). You must configure the git environment with the token before running Semantic Release.


code generator that would abigen work like ethereum abigen

it would be really useful to support generating typed bindings similar to go-ethereums abigen. take a contract abi and generated a typed interface for calling it

Objectives
The goal would be to start from the geth implementation as started with greged93:feature/abigen and come with a code generator that implements all the function from a contract address (or from the abi file if for some reasons it is not feasible)
Acceptance criterias
We should be able:

[ ] to run a command with a contract address and it generates the associated code with the right properties
[ ] it should be callable from the gateway directly in the case of views and through an OZ account in the case of external
[ ] it should support multicall so that we can call several functions from one call

Additional notes
This issue is ambitious for many reasons. Do not hesitate to comment it and if possible, we will split it and make sure the grants are updated accordingly


nRF5x  subscribe will cause HardFault while disconnect and reconnect

While  discovery the Current time Service and subscribe to server(iphone is server), and then disconnect from the setting page on iphone.  and open the bluetooth on setting page again, reconnect the nRF5x device. the zephyr will run to  the  function  att_handle_rsp(),  and the  function pointer att->req->func is NULL, while run the func(att->chan.chan.conn, err, pdu, len, att->req) will cause a HardFault.
The  function  att_handle_rsp() is list below:
static u8_t att_handle_rsp(struct bt_att *att, void *pdu, u16_t len, u8_t err){
bt_att_func_t func;
BT_DBG("err %u len %u: %s", err, len, bt_hex(pdu, len));

/* Cancel timeout if ongoing */
k_delayed_work_cancel(&att->timeout_work);

if (!att->req) {
	BT_WARN("No pending ATT request");
	goto process;
}

/* Release original buffer */
if (att->req->buf) {
	net_buf_unref(att->req->buf);
	att->req->buf = NULL;
}

/* Reset func so it can be reused by the callback */
func = att->req->func;
att->req->func = NULL;

func(att->chan.chan.conn, err, pdu, len, att->req);

/* Don't destroy if callback had reused the request */
if (!att->req->func) {
	att_req_destroy(att->req);
}

att->req = NULL;

process:
/* Process pending requests */
att_process(att);
return 0;

})

Can we have a trace with CONFIG_BT_ATT_DEBUG and CONFIG_BT_GATT_DEBUG? Note that the API of bt_gatt_subscribe do state that struct bt_gatt_subscribe_params *params should not be touched during its operation, perhaps there is something cleaning up the _req used by the stack to track the reply?

@sam131208 ping, can you please provide the logs?

@nashif  @Vudentz ,under is the log and the source code.
subscribe.log
test.tar.gz


Tools to make Pantavisor Linux compatible with script handler and ADU 0.8.0

@anibalportero Is this still needed? If so, please retarget to develop branch and convert from draft status once ready.

Closing out stale requests.


V7

Updates

Added a GUI (time-decode -g)
New GUI means change in requirements (added PyQt6)
Fixed some issues with iOS time conversion
Moved the references in the script itself out of the script and into REFERENCES.md
Generated a standalone executable for the GUI as well (available under Releases)

Merging v7 with master branch


Model information

Would it be possible to commit your model eye_model.hd5 and synsets.pkl and the Dataset that you used. I would like to reproduce what you have done for a project.
Many thanks

The trained models that I generated for this project were trained on images of me exclusively, and they only worked well on me. Therefore, if you're looking to replicate this, I don't think the trained models will be that useful, but I can provide them anyway if you with.
If you really want to do this, your best bet is probably using the included data-collection code to generate a dataset from images of yourself. I can give more detailed instructions on that if need be.
Alternatively, you might want to check out my newer gaze estimation project, which contains much more general models. This is for tracking gaze on mobile devices, however.

Hi,
thanks for the quick answer. I would be glad if you could give me more information about how to use data-collection code. I'm might be able to ask some people in my school to gather more images!
Thanks
Luc


Proposal of a follower role.

There seem to be the roles:

broadcaster
moderator
vip
subscriber
staff

I would find a follower role handy for raffle widgets and other user participation widgets.

Unfortunately there is no data for followers on the message object and it doesn't look like Twitch wants to add that.
Checking for followers would require asking the API for that data on each message and that is a bit overkill for this toolset.


No argo, argoexec, argo-workflow binary in latest argocli docker images

Summary
The update in #4519 attempts to variables the os, but as the variable doesn't exist in the 3 images that actually copy over the binaries, it doesn't copy over anything, leading to building a docker image with no binaries in it.
This basically makes all new installs or anything that pulls the latest container fail.
Diagnostics
> docker run -i -t  argoproj/argocli:latest
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"argo\": executable file not found in $PATH": unknown.

Message from the maintainers:
Impacted by this bug? Give it a 👍. We prioritise the issues with the most 👍.

@terrytangyuan could you take a look by any chance? Thank you.

@simster7 @sarabala1979 I imagine this would block  v2.12.0-rc3

Thanks for the catch! @davidgibbons Looks like the PR is already merged. Thanks for the quick fix.


[Feature request] Show all chars of the 'Public adresses'

Hello.
I like to request a feature regarding the public adresses generated by the seed.
Would it be possible to show the whole string of the adress after selecting one?
Thanks for listening.

This was my intention of the request.
It seems you have already an approach to realize it.

Including dash between letter groups, could be an interesting way of show, too.
https://x.com/peterktodd/status/1786709515611648464


Make ThemeTypeDialog List navigatable when the LineEdit has focus

Fixes: #96211
This makes the ThemeTypeDialog navigatable while the filter LineEdit has focus in the same way it is done for the CreateDialog:
https://github.com/godotengine/godot/blob/master/editor/create_dialog.cpp#L428
https://github.com/user-attachments/assets/b68a9b4b-82bd-4f1d-9fce-d28e69cccffc

I think the code should use ui_up/ui_down etc. But CreateDialog would need to be changed too.

Good idea. Can do that in a follow up for both dialogs.

Thanks!


Vagrant up transporter

Enables one to just type:
> vagrant up

and have a fully configured VM with Mongo, ElasticSearch and Compose, with a ready to run demo.

I like this a lot
I'm not familiar with ansible,
is there a chance of the dot ansible files conflicting with some other system parts?  should those provisioning files be kept in a subdir?  (I'm not sure the idiom with these)

lgtm
thanks!

Thank you!


Got an OS error while setting up flask server

After restoring MySQL dump. I started the flask server using run .py
Then this error occurred

Fixed the issue #145


Allow to activate / deactivate Maven profiles

These are useful when loading old spark stuff. E.g. when loading org.apache.spark:spark-sql:1.6.2, enabling the hadoop-2.6 profile like
@ interp.profiles() = interp.profiles() :+ "hadoop-2.6"

@ import $ivy.`org.apache.spark::spark-sql:1.6.2`

allows hadoop 2.6 stuff to be pulled rather hadoop 2.2 ones.

Superseded by https://github.com/lihaoyi/Ammonite/pull/842.


V1 Documentation doesn't seem to work

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: a10c58c2-1767-778c-5591-8b6eb1e50969
Version Independent ID: ecc11aa4-56c9-d8b0-69c0-d9978de4adc5
Content: Manage Azure Machine Learning environments with the CLI & SDK (v2) - Azure Machine Learning
Content Source: articles/machine-learning/how-to-manage-environments-v2.md
Service: machine-learning
Sub-service: core
GitHub Login: @ositanachi
Microsoft Alias: osiotugo

When I tried to switch to documentation version, from v2 to v1,  it doesn't load the v1 documentation and reload the v2 documentation

@canavaggio
Thanks for your feedback! We will investigate and update as appropriate.

@canavaggio
The issue is related to below document.
https://learn.microsoft.com/en-us/azure/machine-learning/introduction?view=azureml-api-1
@ositanachi
Can you please check and add your comments on this doc update request as applicable.


Sánchez Barreiro 2017

Reference
doi or URL: 10.1111/1755-0998.12610

Actually this paper didn't study metagenomic content but was reutilised for that purpose in #118


Feature Suggestions

Freedom of creating own input data
More standard data templates
How formula is applied in the background, which learning rule is being used

All of the above, with the possibility of using our own data!


Correction to "Create a file share in the storage account", step 4

Correction to "Create a file share in the storage account", step 4.
The "OK" button no longer exists. It's now "Create"

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: cfd9533e-c174-cd48-0f72-a58457efa958
Version Independent ID: b7a77b77-61c2-5e89-cb4b-0b9a502fce71
Content: Restrict access to PaaS resources - tutorial - Azure portal
Content Source: articles/virtual-network/tutorial-restrict-network-access-to-resources.md
Service: virtual-network
GitHub Login: @KumudD
Microsoft Alias: kumud

@gb5757870, Thanks for reaching out. We will investigate and update this thread.

@gb5757870, Appreciate your patience. The doc has been edited accordingly and it would take some time for the changes to get reflect over the doc.
We are closing this issue for now. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


Add corner positioning

Top right, Top left, Bottom right, Bottom left
Great little tool.

Thanks. Good suggestion. I assume you mean for the slideshow, although I suppose it could by an option for stamping too.
Top Left is the only easy one because the window vertical and horizontal dimensions vary depending on the picture's aspect ratio (since I maintain a constant area instead of a constant widow size). For top right, x would change for each image and be screen width minus image width. Similar idea for calculating the x and y for the other corners.
I'll work on that. I'm also working on supporting transparency for slideshow mode. That requires some C# code that I've only just begun. I may do an interim release with the positioning options (barring any unforeseen issues). I'll report back here with any updates.


Accelerate confirmation window shows errors in numbers where there are none

When you edit custom fees in the Accelerate confirmation window, what you often get is something like this;

25 is a good number, but for some reason, the window shows it as a mistake

+1

Normally the number is writted in red if the transaction you are trying to accelerate has a greater or equal amount of satoshi per byte


[FR] Selecting ZWAVE device in control panel by /dev/serial/by-id/xxxx/

Problem/Motivation
I wonder if it is possible to have the Zwave stick selected by serial-id like in the conbee add-on for example.
As sometimes with the ACM0/1 it not clear and could be a failure.
Expected behavior
Selecting the Wave stick by /dev/serial/by-id/xxxxx/
Actual behavior
Nothing it isn't possible.
Steps to reproduce
In control panel under zwave
Check Serial Port:
Only selectable by /dev/ttyACM0/1 or USB
Proposed changes
Selectable by /dev/serial/by-id/xxxxx/
Its just handy and more reliable.

It does that already.

It does that already.

Sorry for that didnt know.
Can you tell me maybe why im not able to select it by serial ID. Might you know if this is a configuration issue?

That is more a question of how your system is configured. The add-on doesn't care, it just shows what is available/provided.


Python 3 compatibility

@jdavisp3 cc @hrichards This PR updates baya so that it is python 3 compatible.
Most of the changes are mechanical transformations from 2to3 and futurize.  I'll annotate the meaningful changes inline.
I also removed the Makefile, which is not used anymore, since we're using travis and tox for running tests.

I'll have as separate PR for django 1.10 compatibility, and then I'll cut a new release. Thanks @jdavisp3!


:seedling: Unit tests checks/ci_tests_test.go

Please check if the PR fulfills these requirements

[ ] Tests for the changes have been added (for bug fixes / features)
[ ] PR title follows the guidelines defined in  https://github.com/ossf/scorecard/blob/main/CONTRIBUTING.md#pr-process

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

What is the current behavior? (You can also link to an open issue here)

What is the new behavior (if this is a feature change)?
Unit tests for tests checks/ci_tests_test.go
https://github.com/ossf/scorecard/issues/986

Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)

Other information:

Codecov Report

Merging #1602 (279379b) into main (f84291d) will increase coverage by 0.71%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #1602      +/-   ##
==========================================
+ Coverage   53.95%   54.67%   +0.71%
==========================================
  Files          72       72
  Lines        6257     6257
==========================================
+ Hits         3376     3421      +45
+ Misses       2667     2617      -50
- Partials      214      219       +5


Feature/survey

Done. Should maybe verify that the order of the elements #s/#e/_end_point/ip3 markers in twiss.mirror is the good one since I had to reshuffle them in survey.mirror

Done. Should maybe verify that the order of the elements #s/#e/_end_point/ip3 markers in twiss.mirror is the good one since I had to reshuffle them in survey.mirror

In fact I would not move the markers. For me the sequence is mirrored and therefore the markers are flipped

but you still want the sequence to start at ip3 at least? no?


Integrated multi-model support within ClovaEmbeddings

[ ] PR title: "Add support for additional Clova embedding models"

Enhanced ClovaEmbeddings to support multiple models: clir-emb-dolphin and clir-sts-dolphin.
Updated environment validation to handle multiple models.
Adjusted embedding methods to dynamically use specified model.

Additional guidelines:

clir-emb-dolphin: A versatile model suitable for all domains.
clir-sts-dolphin: A model specialized in precisely measuring the semantic details of sentences.
Reference: Clova Studio Embedding API

Since there has been no progress on my current PR for two weeks, Clova Embedding V2 has been released. Therefore, I will add the V2 features and submit the PR again.
Thank you LangChain ~


Friday 22-03-2024 roll call

Roll Call!
Leave a comment with these two things:

A summary of your study using only emojis
Something you'd like to share, anything goes! (within respect)

emoji cheat sheet

Hello

Hi

salut

Good morning!

Hello

Morning 🫡

Good Morning

Good morning

hi

good morning

gud mrng

hey hey

buongiorno

morning

good morning


Adjust over 'group by array' for functions as MONTH(), DAY(), etc

Describe the bug
In array group, medoo show the next error: "Object of class Medoo\Raw could not be converted to string"
$filter['GROUP']    =  [
Medoo::raw('MONTH(d.start)')
];
I fixed on file Medoo.php on line 878:
foreach ($GROUP as $column => $value)
{
if ($raw = $this->buildRaw($value, $map))
{
$stack[] = $raw;
}else{
$stack[] = $this->columnQuote($value);
}
}
I don't have write permissions
Information

Version of Medoo: 1.7
Type of Database (MySQL, MSSQL, SQLite...):MySQL
System (Liunx\Windows\Mac):Windows\Linux

Detail Code
$filter['GROUP']    =  [
Medoo::raw('MONTH(d.start)')
];
Expected output
Data array

Just use with raw object directly.
$where['GROUP'] => Medoo::raw('MONTH(d.start)')


TEM2015 Test 02: Operations Response web mapping app Locate Incident widget fails to pick up rapidly sketched vertices

When I digitize a polygon using the Locate Incident widget in the Operations Response web mapping app - d3edfee7294d417a9a9f5f3e67adf98b I find that it doesn't register mouse clicks if I rapidly sketch the polygon. It does register each vertex if I pause between clicks.

I would consider this a known limit of the template.


Heatmap: displayed image is reversed

Heatmap bug (both 4 and 5 versions).
Element intensities[0,0] is displayed in left upper corner, corresponding to x=0, y=1000.
Element intensities[1000,0] is displayed in left bottom corner, corresponding to x=0, y=1000.
The same bug can be seen in your example https://scottplot.net/cookbook/4.1/recipes/heatmap_limitscale/
the function :
intensities[x, y] = (Math.Sin(x * .2) + Math.Cos(y * .2)) * 100;

doesn't correspond to what we see on the image.

Hi @Zakharovvas, I believe this is the correct behavior. If you disagree or I am not understanding the issue, let me know how I can modify the console application below to demonstrate the issue you are describing:
using ScottPlot;

double[,] data =
{
    { 1, 2, 3 },
    { 4, 5, 6 },
    { 7, 8, 9 },
};

Plot plt = new();
var hm = plt.Add.Heatmap(data);
plt.Add.ColorBar(hm);
plt.SavePng("test.png", 400, 300).LaunchFile();

Note that if you want to flip the orientation of the heatmap, flags are available to make this easier https://scottplot.net/cookbook/5.0/Heatmap/HeatmapFlip/

Unfortunately, I don't understand the issue. That's a first problem.
And you've been so impolite, that closed the issue without even trying to
understand. This is second problem.
When you look in the image, you compare it with matrix, which is not a
correct way how to check it. Your plot displays a matrix with 0,0 in left
upper corner, x for cols, y for lines.
Your heatmap not a plot at all and what your axes mean in that case no one
knows, what numbers on axes mean?
 I've written
this already on GitHub, but you, it seems to be a simple coder.
It is clear for everyone how remembers the trigonometry from a middle
school, not Mona Lisa only.
I have no intention to help you anymore,
Good luck
On Fri, 17 May 2024 at 00:59, Scott W Harden @.***>
wrote:

Hi @Zakharovvas https://github.com/Zakharovvas, I believe this is the
correct behavior. If you disagree or I am not understanding the issue, let
me know how I can modify the console application below to demonstrate the
issue you are describing:
using ScottPlot;
double[,] data ={
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },};
Plot plt = new();var hm = plt.Add.Heatmap(data);
plt.Add.ColorBar(hm);
plt.SavePng("test.png", 400, 300).LaunchFile();
test.png (view on web)
https://github.com/ScottPlot/ScottPlot/assets/4165489/56c1eabb-f3f8-4296-be71-8a3c5eabfcdf
—
Reply to this email directly, view it on GitHub
https://github.com/ScottPlot/ScottPlot/issues/3787#issuecomment-2116333394,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASCQ3NETZIUKQK3XSNLC3XTZCU23LAVCNFSM6AAAAABHJI4CVWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJWGMZTGMZZGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @Zakharovvas, thank you for your follow-up message! It is unfortunate you found my initial response impolite. It seems I was unable to understand your original question, which is why I created the code sample to help facilitate communication with you.

Your plot displays a matrix with 0,0 in left upper corner, x for cols, y for lines.

From what I read from your latest message, it sounds like you disagree with the design decision where the first row of heatmap image data (y index 0) is at the top. This decision was made to be consistent with common image formats (e.g., how pixels are encoded in memory in the bitmap file format). Users who find this thread and wish to change this behavior will find the following resources useful:

https://scottplot.net/cookbook/5.0/Heatmap/HeatmapFlip/
https://en.wikipedia.org/wiki/BMP_file_format

Your heatmap not a plot at all and what your axes mean in that case no one knows, what numbers on axes mean?

Thank you for pointing this out! The test images in the cookbook are paintings, but a better example would be to plot real sensor data like atomic force microscopy readings, and add labels to the horizontal and vertical axis to indicate the tick marks represent positions in space. Users interested in displaying a heatmap as an image (and not displaying axis labels and ticks marks) may be interested in activating the "frameless" option.

https://scottplot.net/cookbook/5.0/AxisAndTicks/Frameless/
https://en.wikipedia.org/wiki/Atomic_force_microscopy


SQL Completion 'Convert keyword case' unchecked is not honoured.

System information:

Operating system (distribution) and version: Win7
DBeaver version: 6.03.201904211926
Java version: Dbeaver Help->About isn't telling me which version of Java it's using.
 Not relevant

Describe the problem you're observing:
With auto complete enabled it is not possible to type 'where' and press ENTER without the SQL editor changing the case of 'where' to uppercase.
It seems to me that the root of this issue is that the ENTER key appears to be hardcoded to be the key to insert the currently selected word completion candidate and there is no way to configure it to be anything else.
Steps to reproduce, if exist:
In the Preferences dialog on the Editors -> SQL Editor -> SQL Completion page
Enable auto activation - checked
Activate on typing - checked
Convert keyword case - unchecked
In an SQL editor type 'where' and press ENTER.
Result - WHERE
Expected - where

Unfortunately, cannot reproduce the issue on 6.0.4 and 6.0.5 EA version.
The issue is reproducible for me only in case when default case is set as"Upper" in SQL Formatting page. Could you check it?


Possible copy of your project

https://github.com/Bosnadev/Repositories

@vluzrmos Yes, he was inspired in my project, and even wrote a great article about the Repository pattern. https://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/
I commented on the post stating that he had been inspired by my project, he confirmed and said he would put the credits, but did :(

@Bosnadev please...

@Bosnadev give the credits to @andersao please!

@andersao I'm sorry I was pretty busy, I haven't update my blog in a month :) I've added credits in a readme ;)

Article it self is updated ;)
http://bosnadev.com/2015/03/07/using-repository-pattern-in-laravel-5/#Credits
I had in plan part 3 of repository series. I've made quite change in your "request criteria queries", but currently I'm very busy to write about it :).

@mirzap Thanks man!


Detect 4xx error response from firewall

When handling a 4xx error response from a tunnel management API request, check for the absence X-Served-By response header to detect when the error was likely caused by a firewall intercepting the request.

I'm pretty sure this is not going to work in browsers, since the X-Served-By header will be hidden by CORS. I need to test that. And then we might change CORS configuration on the service to expose it.

This needs to wait on the CORS change in the service that adds X-Served-By to exposed headers.

Reviewers: There appears to be a line-endings difference with TunnelManagementClient.cs; I suggest enabling the "Hide whitespace" option when reviewing.

note: still testing before merging


replication: add update_time to ResyncVolumeResponse

added update_time to resync response to update the actual resync that happened to time in the backend and this field is optional.
fixes: #24
Signed-off-by: Madhu Rajanna<EMAIL_ADDRESS>

@Madhu-1 is this still needed now we have #44?


[SPARK-26013][R][BUILD] Upgrade R tools version from 3.4.0 to 3.5.1 in AppVeyor build

What changes were proposed in this pull request?
R tools 3.5.1 is released few months ago. Spark currently uses 3.4.0. We should better upgrade in AppVeyor.
How was this patch tested?
AppVeyor builds.

cc @felixcheung

Test build #98716 has started for PR 23011 at commit b94d04a.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/4942/
Test PASSed.

Test build #98716 has finished for PR 23011 at commit b94d04a.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98716/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/4948/
Test PASSed.

Merged to master.
Thanks, @srowen.


How to get date of change status event?

Hello,
I need to compute difference between dates.
Start date is field cfs[21].
End date is when issue status has changed (to specific status) or now if it hasnt changed.
My current code looks like that:
(Date.today - cfs[21]).to_i if cfs[21].present?
With this I can compute number of days between field cfs[21] and now.
Depending on status, sometimes I want to compute 1* or 2*.
1* - number of days between field cfs[21] and now.
2* - number of days between field cfs[21] and date of status change (when status of issue has changed to specific status)
Pseudocode
if (status != SPECIFIC_STATUS) {
  numberOfDays = Now() - cfs[21]
} else {
 numberOfDays = dateOfStatusChanged - cfs[21]
}

Hi.
journals.reverse.find { |j| j.details.find { |d| d.prop_key == 'status_id' && d.value.to_i == SPECIFIC_STATUS } }.try(:created_on).try(:to_date)


[network] Remove Raw(Enc)NetworkAddress

Merge RawNetworkAddress encoding into NetworkAddress, so that we can
still handle incompatible versions in a Vec
Eliminate RawEncNetworkAddress since versionining should both be
uniform and the format is so simple as to not benefit from versioning.

Removing because it came up often enough that it was confusing people
why we had this layer of abstraction... and writing the addresses is an
atomic operation, if the validator operator messed up one, then they
probably messed up the rest.
this is not actually a breaking change...

Finally no middle conversion layer

middle out compression.

/land


Date issues

Hi,
I just noticed an issue with the overview:

As you can see the dates go from 29th of March, 31st of March, 2nd of April and then jump back to the 4th of March and continue from there.
The view is set to 30 days and I am using my own fork to have the shim fixes from here https://github.com/joshmn/ahoy_captain/pull/40 and the latest ahoy_captain code.
The fork is here:
https://github.com/abuisman/ahoy_captain
I can't get the forkless version working because of the #40 issues and I am experiencing these issues: https://github.com/joshmn/ahoy_captain/issues/36

i'm seeing the same issue


Pie Lines

Is there a way to make the lines in the pie charts more visible? Here's the code along with a screenshot:
  return (
    <>
      <svg width={width} height={height}>
        <LinearGradient
          from="#b39cea"
          to="#e99cea"
          id="gradient"/>
        <rect width={width} height={height} fill="#fbc2eb" rx={14} />
        <Group top={height / 2} left={width / 2}>
          <Pie
            fill={`url('#gradient')`}
            centroid={(centroid, arc) => {
              const [x, y] = centroid
              return (
                <Label x={x} y={y}>
                  {arc.data.age_group}
                </Label>
              )
            }}
            data={data}
            outerRadius={radius - 125}
            pieValue={d => d.death_rate}
          />
        </Group>
      </svg>
    </>
  )
}

👋  @libnine, thanks for checking out vx. If you inspect the output of this in your browser you'll see that Pie arcs are created as SVG path elements. Depending on how you want to style your chart you could simply add a stroke={colorVariable} to your <Pie /> to give something like

Alternatively, if you don't want an outline and want to differentiate segments spatially, you could tweak some of the underlying d3 pie generator variables like cornerRadius or padAngle. See the Pie demo codesandbox for an example.


[fix_makestring_example] bad call to makeString in README.md

Hi, just a small error, but thanks a lot for this project.
It is impossible to compile this example in README.md :
file car.ts
import * as Collections from 'typescript-collections';

class Car {
    constructor(public company: string, public type: string, public year: number) {
    }
    toString() {
        // Short hand. Adds each own property
        return Collections.makeString(this);
    }
}

with tsc car.ts the output is :
car.ts(8,28): error TS2339: Property 'makeString' does not exist  ...

Here the fix:
import * as Collections from 'typescript-collections';

class Car {
    constructor(public company: string, public type: string, public year: number) {
    }
    toString() {
        // Short hand. Adds each own property
        return Collections.util.makeString(this);
    }
}

console.log(new Car("BMW", "A", 2016).toString());

After compiling and executing respectively with tsc car.ts then node car.js, you have well:
{company:BMW,type:A,year:2016}

Hi @georgiosd thank you for the PR. I also wrote a test case for this at https://github.com/basarat/typescript-collections/commit/98d0037354224da28fd74b064ec32d7e398eed11.
I will merge your changes in a second
Thanks for using typescript-collections
Best
episage


Review CI

Here we try to make the CI functioning

Yes, I've been making this change back and forth. The problem is that it will not work if you set retrieve_databundle to false...

Ah! I see

I'm not sure what a good solution would be.

Neither do I... Do we still need the retrieve_data_bundle setting on pypsa-eur? I never use it.
Alternative but not pretty would be:

load pypsa-eur config in Snakefile
make an input function to choose between pypsaeur function or direct paths

Would definitely keep the retrieve_databundle, because you can directly run snakemake on a cloned repository without manually downloading and extracting.

On a discussion with @euronion we agreed that not relying on pypsaeur default config, makes the world messy. Also we though that disabling the retrieve_databundle config entry in pypsa-eur would be cleaner in the long term.
In case you have a locally stored bundle that you copied into your freshly cloned pypsa-eur repo, you can simply call
snakemake --touch data/bundle/*

and it skips the retrieval

Johannes already found the bug, the reduced config.*.yaml files that I made seem to result in  merge conflicts. I'll fix them

Because of the nested config update, I had to modularize the solver options to come closer to where we want. I think it's a nice side-effect.
Last hurdle is that CBC does not want to solve the sec-networks. @fneum did you once manage to solve one with cbc?

The CI ran at some point in time.

test Discord webhook

@fneum @lisazeyen I think we can merge this. It comes along with some breaking changes in the solving part of  configuration yaml. This was necessary to make the config override via snakemake working. But the structure is now modularized and suits better for extension anyway.

Sure, I'll set it up :)

So far, I have checked everything but the solve_network script. That looks all good!
Since it's a big change to switch the solver interface, could you make a comparison run 3-hourly, 45 nodes, with H2 retrofitting, no gas network, all of Europe and make sure the results are the same? I just want to be sure that we don't introduce a bug.

this branch and the master yield same solution for the test: 37 nodes, 3H sampling, all sectors (T-H-B-I-A). H2 network, H2 retrofitting, no gas network.

Thanks @Irieo for testing! @fneum whenever you feel ready, let's merge it. I would not wait too long so we can add tests for #301

Great, what I'll do: Since we have not done a release of PyPSA-Eur-Sec since Oct 2021 and the change of solver interface is a major change, we should do a release before merging this PR. I'll cherry-pick the changes unrelated to the solver interface from this PR.

Okay, step 1 is done. Sorry @FabianHofmann, the "co-authored by" was not recognised by Github.

@fneum if no objection, I would merge this


/nompedit, bye bye!

Simple: every single editing action should be available in multiplayer as well in singleplayer. Death to annoying /sendmap procedures!

Related to #57.
Definitely planned :)

Great cool nice!

@Fransje I think all of the suggestions you posted are great and I am pretty sure that we're going to implement them. There are some big architectural changes going on, so we're probably not do it exactly the way you suggested, but the new systems are going to be a lot more powerful and the features you mentioned are definitely going to be in it!
Keep the great tickets coming please :)

(19:15:22) @Fohlen: @ Nooby, prefabs are available in multiplayer when you use /nompedit 0

-> make prefabs working in multiplayer out of the box (related to #77)


rebuild SSO ASP.NET walkthrough

The SSO API changed, so this had to be rewritten.

Docs Build status updates of commit 9099dcf:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:warning:Warning

Details

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

docs/develop/create-sso-office-add-ins-aspnet.md

Line 151: [Warning] Invalid file link:(~/develop/concepts/browsers-used-by-office-web-add-ins.md).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 79c9464:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 70f93b0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit e5410f6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 81d3c90:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 819a123:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Ran through the tutorial and got up to running the add-in. I never actually saw OneDrive files loaded, but that may be due to my demo tenant settings. I figure since I'm getting authentication prompts, everything's probably setup correctly.
I left some notes from my experience following the instructions. Would you like me to do a copy edit too?

I don't think a copy edit is essential at this time. Could you raise the problem of not seeing any files on the repo at Office-Add-in-ASPNET-SSO/issues? I can work on it after the new year. BTW, do you have any files in that OneDrive account?

Docs Build status updates of commit c0da6e3:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit a8fd968:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/create-sso-office-add-ins-aspnet.md
:white_check_mark:Succeeded

docs/images/SelectHost.JPG
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Do not call calculateExposure() if AEL is active

The function calculateExposure() started with:
    if (ael) {
        return;
    }

It is, however, incorrect to return no value from a function that is supposed to return a float. This commit moves the AEL test from this function to the caller (namely, loop()), which avoids this problem.

Good call it's violating it's contract by returning nothing. Cheers


DI for bakery itself

Playing around bakery's injection into other bakery. Like
from bakery import Bakery, Cake

class Bakery1(Bakery):
    some_value_expected: str = Cake()

class Bakery2(Bakery):
    some_value: str = Cake("123")
    bakery1: Bakery1 = Cake(Cake(Bakery1, some_value_expected = some_value))

Implemented in #53 and #54 (docs)


Add support for modern color syntax

In CSS you can write hsl like so hsl(0 0% 0% / 0.5) without the commas or hacing to use hsla
Can this format be supported?

Hey @mattpilott, curious why you closed this. I, too, would like to toHslString & toRgbString to use modern syntax

Can't recall why i closed this, reopened!


Installation always replaces the tailwind config

Currently the installation process always replaces the tailwind config. So in CI for example since tailwind isn't there in _build the config gets replaced. I made a change on my own branch to only replace when the file does not exist: https://github.com/rowofpixels/tailwind/commit/5c1ca1da76eeb03b2f975699a3a6901411d06ade
The alternative in CI would be to:

Run mix tailwind.install
Modify the replaced config by using a separate file and replacing it again
Run mix assets.deploy

Wondering which approach would be best.

As a workaround, I've renamed my custom configuration file to tw.config.js and modified my config.exs to have:
config :tailwind,
  version: "3.0.7",
  default: [
    args: ~w(
      --config=tw.config.js
      --input=css/app.css
      --output=../priv/static/css/app-tw.css
    ),
    cd: Path.expand("../assets", __DIR__)

In CI, the installation still generates a tailwind.config.js file, but it is ignored during asset creation.
Not sure if it aligns with the goals of the maintainers, but I'd encourage you to open a PR with your changes from rowofpixels@5c1ca1d. Checking for existence prior to writing sounds like a good default behavior to me. 🙂
If you happen to use a CI workflow with dependency installation + caching in a separate step/job, it may also be possible to run mix tailwind.install in the same step as mix deps.get and mix deps.compile. Later, when running the asset deploy in a different step/job, the tailwind executable will already be present.


Has anyone tried integrating git-fat with gitolite?

Someone did with gitolite/git-annex.
http://git-annex.branchable.com/tips/using_gitolite_with_git-annex/

To answer my own question, it's not so hard.
In your .gitolite.rc, add 'rsync' to the ENABLE list; also enable
    LOCAL_CODE                =>  "$ENV{HOME}/local",

Make a file ~/local/commands/rsync. Put something like this in it (maybe think harder about security than I did):
#!/usr/bin/perl

# restrict syncing to git-fat-store
# this could probably be more secure, requiring --ignore-existing

$STORE='git-fat-store';
$STORE_EXT="$STORE/";

if ( ($ARGV[-1] == '.' or $ARGV[-2] == '.') and ($ARGV[-1] eq $STORE_EXT or $ARGV[-2] eq $STORE_EXT))
{
  exec '/usr/bin/rsync', @ARGV;
}
else
{
  print STDERR "ERROR: In .gitfat, store must be specified as:\n";
  print STDERR "  remote = git:git-fat-store\n";
  print STDERR "  sshuser = git\n";
}

Works for me.

Thanks for the tip, @gitfoxi. I haven't used gitolite.  If you'd like to convert this comment into a doc/gitolite.md pull request, I'm sure it would help some people out and I'd be happy to merge it.


TST: Use Python 3.12 for devdeps

Fix #60
Though I fear crds is going to make me grumpy. We'll see.

That was easy. Phew.


Option to show post added and edited dates

Is your feature request related to a problem? Please describe.
Currently there is no way to show the created and updated dates of the posts. It would be nice if they are shown beside/underneath the title of the posts.
Describe the solution you'd like
An option to show the post creation and update date along with its regular data.
Describe alternatives you've considered
None at the moment
Additional context
None.

If you give me some time, I think I'll be able to come up with a PR.

@Devorein if you are interested in working on a PR then you are very much welcome to do so.


Updated tests for the Custom Set problem

In order to reduce the amount of code required to pass incremental tests (assuming that users pass tests starting from the top), the order of the tests was modified slightly.
Since this track implements Custom Set, please take a look at the new custom-set.json file and see if your track should update its tests.
If you do need to update your tests, please refer to this issue in your PR. That helps us see which tracks still need to update their tests.
If your track is already up to date, go ahead and close this issue.
More details on this change are available in https://github.com/exercism/x-common/pull/257.

Hi - I'm happy to pick this one up.
I've had a look through the JS test suite for this, and there isn't actually a discreet test that introduces set
equality. The concept is introduced in the first test (delete element).
Current test order & method dependency (in brackets):
delete (eql)
difference (eql)
disjoint
empty (eql)
intersection (eql)
member
put (eql)
size
subset
toList
union (eql)

working on a PR

Thanks @ireddick! Looking forward to seeing it.

this isn't quite right:

disjoint and equal are the wrong way around
some test cases differ from those in canonical tests

I suggest that these are also fixed as part of the issue
Should I continue with this PR or start a new one?

Thanks for all your hard work.  Just make the changes on the same PR and push your changes.
In the end, we'll want you to squash to one commit before we merge, but don't worry about that until then!

Apologies for the delay!
I've added a small commit that corrects the ordering of the 'disjoint' and 'equal' tests. This fixes the test ordering, which is what this issue and the parent PR are about.
However there are still differences from the the canonical custom-set.json test cases
https://github.com/exercism/x-common/blob/master/custom-set.json
'contains' is a good example (called "member" in this suite). The canonical test has the empty set case, for instance, yet this suite doesn't.
I'm going to put together a commit that fixes this, however I'm unsure about adding it to this PR, as this issue seems more focused on test ordering.
Advice needed - I'm happy to do it either way 🙂

I think that a single PR would be ok. The goal is to make the track as close as canonical tests as possible.
If that means reordering tests, that's ok. If that means renaming methods to match canonical tests, that's ok too.
@matthewmorgan? Any word on this?

I've added a commit that adopts the test cases from the canonical tests.
There are now 2 outstanding things that I'd like to consider before squashing & merging this.
The 1st is whether or not empty sets should be constructed using an empty array or not, e.g.
new CustomSet()
vs.
new CustomSet([])
There were some of the latter before I started these changes, but I inadvertently added some more.
The former (no-args constructor) seems correct to me, and I'd like to change all empty set construction to use that.
The 2nd thing is the discrepancy of naming in a couple of method names, as mentioned earlier:

'member' in this track vs. 'contains' in the canonical tests
'put' in this track vs. 'add' in the canonical tests

I'm less sure about fixing this, but it is an opportunity to bring it in line.
Any advice welcome! 🙂

In other languages, I would keep the parameter in the constructor, to have homogeneous calls to it (the language might force me to do that). But, in JavaScript, I think the code is clearer without parameters in the constructor, so I'd use new CustomSet().
About method names, I'd rename them to match canonical tests. member would become contains, and put would become add.

I've added a further 2 commits that address those points - I think that this is now good enough.
Can someone give me an 'OK' on this?
(I'm assuming we'll be wanting to squash these still)

It looks good now. I have some comments about the code, but I'll make them in the PR #285


information missing

I'm looking at the .chm file from lync 2013 and even it has this:  Who can run this command?
Who can run this cmdlet: By default, members of the following groups are authorized to run the Update-CsAddressBook cmdlet locally: RTCUniversalUserAdmins, RTCUniversalServerAdmins. To return a list of all the role-based access control (RBAC) roles this cmdlet has been assigned to (including any custom RBAC roles you have created yourself), run the following command from the Windows PowerShell prompt:
Get-CsAdminRole | Where-Object {$_.Cmdlets –match "Update-CsAddressBook"}

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b5e9e230-71c0-f3c2-066c-897d144d0f3c
Version Independent ID: 503cd60a-ecd2-d76f-61d5-14a0df80ba34
Content: Update-CsAddressBook (skype)
Content Source: skype/skype-ps/skype/Update-CsAddressBook.md
Service: skypeforbusiness-powershell
GitHub Login: @kenwith
Microsoft Alias: kenwith

@JoshJ-MSFT - this is great info. Please feel free to submit a Pull Request to add to the appropriate docs. Guidance on creating a PR in the README in the root of the source repo: https://github.com/MicrosoftDocs/office-docs-powershell

I'm confused.  This information used to be in our documentation.  Then it got removed.  Why do I have to jump through some hoop to get it back?  Isn't that what you guys do?


Can you share the paramater of the husky dog?

Can you share the paramater of the husky dog?

Thanks, Looking forward to your reply!

Hi @vba34520, sorry for the late response. You can try:
python demo_prog.py --img_path ./test_images/dog.jpg --canvas_color 'white' --max_m_strokes 500 --max_divide 5 --renderer oilpaintbrush --renderer_checkpoint_dir checkpoints_G_oilpaintbrush --net_G zou-fusion-net

Thank you so much!
Best wishes.


RFD - Nebari Permissions Model

Status
Open for comments 💬

Author(s)
@aktech

Date Created
04-04-2024

Date Last updated
10-04-2024

Decision deadline
30-04-2024

Summary
Nebari doesn't have a proper RBAC model yet. As a consequence, providing fine grained control of access to Nebari's services to users and groups is not possible. This poses a risk of the user might inadvertently accessing and modifying any data or service within Nebari that violates the principle of least privilege.
User benefit
Role Based Access Control (RBAC) in Nebari will provides fine grained control of access to Nebari’s services.
Design Proposal
Current Permissions model in Nebari
To understand the proposal for the new RBAC, its important to understand current permissions model, we will go through this very briefly here. Also see https://github.com/nebari-dev/nebari/issues/2304 for more context.
JupyterHub
RBAC came in JupyterHub in 2.x and we upgraded from 1.5 in Aug, 2023:

https://github.com/nebari-dev/nebari-docker-images/pull/85/
https://github.com/nebari-dev/nebari/pull/1856

This means we never got to implement JupyterHub's RBAC and have our limited in-house baked permissions model.
Which is basically getting server options for the given user from keycloak
Only two levels of permissions available at this point:

jupyterhub_developer
jupyterhub_admin

If the user is not in any group, the user will get 403 on accessing Nebari.
Conda Store
At the moment we have the following roles:

conda_store_superadmin
conda_store_admin
conda_store_developer
conda_store_viewer

This is set in conda-store configuration:
c.CondaStoreServer.authentication_class = KeyCloakAuthentication

The KeyCloakAuthentication class fetches the user data from keycloak
via keycloak's conda-store client and finds the roles user have and based on that, it returns user's role binding such that user have corresponding permissions on conda-store.
This also fetches user's groups and creates conda-store namespaces (adding them to the conda-store db).
Grafana
Nebari has following Grafana roles, which in code maps to corresponding Grafana roles (1-to-1 mapping):

Nebari Roles
Grafana roles

grafana_admin
Admin

grafana_developer
Editor, Viewer

grafana_viewer
Viewer

Dask

dask_gateway_admin
dask_gateway_developer

This uses NebariAuthentication(JupyterHubAuthenticator) to define custom authentication, which checks if either of the above are present on user's roles
If none of these are present, user has no access to create dask clusters.
This makes calls to JupyterHub's API to get user roles and groups from the following keys in JupyterHub's /user endpoint.

auth_state.oauth_user.roles
auth_state.oauth_user.groups

Argo
Argo has following roles:

argo-admin
argo-developer
argo-viewer

Three k8s service accounts are created with the above three levels of permissions and based on that user is assigned permissions. These roles are assigned in keycloak.
Problems

Fine grained access cannot be provided to users/groups.
Roles are static. New roles cannot be created and existing roles cannot be updated (In theory they can be updated and created, but it will not have the desired effect on Nebari services)

Idea
The idea is to not re-invent the wheel but rather try to use existing RBAC frameworks wherever possible with little or no modifications to support wide range of fine-grained control. We will use JupyterHub's RBAC as a motivation to implement RBAC in Nebari. We'll also try to use similar conventions to avoid confusion and reduce the learning curve of yet another rbac system.
JupyterHub RBAC: brief overview
Read more about it here: https://jupyterhub.readthedocs.io/en/latest/rbac/index.html
JupyterHub defines the following fundamental concepts:

Group / User: single or a set of users
Role: Roles are collections of scopes.
Scope: Permission - specific permissions used to evaluate API requests.

Nebari RBAC: Proposal
The idea is to be able to manage roles and permissions from a central place, in this case keycloak. An admin or anyone who has permissions to create a role in keycloak will create role(s) with assigned scopes (permissions) to it and attach it to user(s) or group(s). We define the following concepts (some of them already exist):
Service
This represents the main services in Nebari. There is a keycloak client created for most nebari services. The idea here is those services will call keycloak API (they already do at the moment for authentication) to fetch roles from a particular client for a user and using the roles's attributes it will decide what permissions the user have on that service. Here are some of the main core services:

Jupyterhub
Grafana
Conda Store
Argo

Component
A service can have several components and each component can have the need for a user or group to have different levels of access. We call them as component. For example, the JupyterHub service can have the following components:

JupyterHub itself (JupyterHub API).
Jupyterhub Profiles (this is spawner dependent, which is KubeSpawner profiles in Nebari)
shared-directory (e.g. creating a shared nfs for a particular group), it is categorized under JupyterHub service because it is created by jupyterhub hooks.
Dask: dask is accessed from JupyterHub.

Roles and Scopes

This figure depicts how services, components and scopes are related. Note that the scopes for grafana and argo are only for demonstration purpose.
Role is a collection of scopes (permissions).
Scope is a permissions to resource in a component of a service. We're borrowing the syntax for defining scopes (or permissions) from JupyterHub's RBAC. See https://jupyterhub.readthedocs.io/en/latest/rbac/scopes.html#scope-conventions for reference.
In a nutshell, it looks something like this:
<access-level><resource>:<subresource>!<object>=<objectname>

<resource>:<subresource> - vertical filtering
<resource>!<object>=<objectname> - horizontal filtering.
If <access-level> is not provided, we assume maximum permissions.
<subresource> is optional
!<object>=<objectname> is optional

This is an example of how users, groups and roles interact. In this the group gpu-access-conda-store-pycon-argo-viewer-group has 3 roles, group gpu-users-group has one role and the group pycon-tutorial-group has one role attached to it. User alice has one role attached to them and the user john has no roles attached to them.
Examples:
1. Create a role such that when attached to a group it will create shared nfs directory in /shared.
You'll go to keycloak client jupyterhub and create a role with a meaningful name and add the following attributes to the role:
Role: create-shared-directory

Key
Value

component
shared-directory

scopes
create:shared

When you'd attach this role to a group, then Nebari will make sure to create a shared directory for the group.
Next, we want to have two sets of permissions:

group of people (pycon-shared-read-group) with read access to a shared directory.
group of people (pycon-shared-write-group) with write access to a shared directory.

We will create two roles:

Role: read-access-to-pycon-shared-directory-role
This role will be attached to pycon-read-group

Key
Value

component
shared-directory

scopes
read:shared!shared=pycon

Role: write-access-to-pycon-shared-directory-role
This role will be attached to pycon-read-group

Key
Value

component
shared-directory

scopes
write:shared!shared=pycon

Note: The names of roles and groups are arbitrary and can be anything.
2. Roles to control access to conda store namespace

Create a role such that when attached to a group name read-conda-pycon-group, the group members will have read access to conda environments in pycon namespace.
Create a role such that when attached to a group name write-conda-pycon-group, the group members will have read access to conda environment in pycon namespace.

Role: read-access-conda-pycon-namespace-role
This role will be attached to read-conda-pycon-group

Key
Value

component
conda-store

scopes
read:conda-store!namespace=pycon

Role: write-access-conda-pycon-namespace-role
This role will be attached to write-conda-pycon-group

Key
Value

component
conda-store

scopes
write:conda-store!namespace=pycon

3. App sharing permission
Create a role to allow everyone to share apps in a particular group.
Since we're using JupyterHub's RBAC, we can use scopes convention directly here.
Role: allow-app-sharing-role
This role will be attached to allow-app-sharing-group

Key
Value

component
jupyterhub

scopes
shares!user,read:users:name,read:groups:name

See https://jupyterhub.readthedocs.io/en/latest/reference/sharing.html#enable-sharing
By default, it will be disabled for everyone.
Implementation steps:
Since this is a complex piece of functionality, we would need to implement this in small modular steps. The steps are mentioned below:

Fetch keycloak groups and roles from Keycloak and sync them in JupyterHub. https://github.com/nebari-dev/nebari/issues/2308. At the moment we do have these available from the /user endpoint in the Hub API, under following keys. These needs to to be synced with JupyterHub roles and groups so that the permissions are actually applied at JupyterHub level.

auth_state.oauth_user.roles
auth_state.oauth_user.groups

Update the render_profiles functionality in profiles in jupyterhub config, such that it creates shared directory only if the group has permissions. This would also require us to implement a way to parse role scopes, e.g: parsing read:shared!shared=pycon for shared directory, when the component is shared-directory.
Implement scopes parsing can evolve as we implement rbac for each service. I don't expect us to write perfect scope parsing in one go. We should start with a service. I would suggest JupyterHub and make scope parsing for shared-directory work for it. For jupyterhub component it would work without parsing, after they are synced from keycloak into jupyterhub.
Implement scope parsing for conda-store and based on that incorporate conda-store's new permissions model.
Follow the same for Argo and Grafana.

Notes

The RBAC system described above gives us the flexibility to create fine-grained permissions to specific resources and groups. While this is useful, we also need to make sure we set sensible defaults. Every user of Nebari might not need this level of fine-grain ability so we need to create some roles and groups by default when deploying a Nebari to facilitate basic permissions.
JupyterHub also has a concept of custom scopes, but it's not very flexible and it does not enforce that your services apply them, so might not be very useful, but still worth exploring.
JupyterHub doesn't have a way to update roles without restarting Hub, we need a way to tackle this limitation, ideally contributing to JupyterHub to update roles dynamically. See: https://jupyterhub.readthedocs.io/en/stable/rbac/roles.html#removing-roles

Alternatives or approaches considered (if any)

Best practices

The goal of this proposal is to implement the following best practices:

Principle of least privilege.
Adopting from an existing RBAC system in the Jupyter Ecosystem.

User impact

The implementation would change the default permissions of a user so it would affect the user, but we can set up with sensisble defaults to reduce the impact.
Unresolved questions

I don't think a conda_store_viewer role is defined in keycloak currently.

Fine grained access cannot be provided to users/groups.
@aktech can you provide an example of fine grained access that isn't possible currently?

Looks like one of the examples has a typo.  Quansight should be changed to pycon.

So eventually our "scopes" (e.g. conda-store!namespace=pycon) will need to map to whatever permissions model is implemented by each service (e.g. conda-store, argo, etc.).
I believe conda-store is currently flexible enough to support create, read, update, delete scopes for individual namespaces, but Argo Workflows is not nearly so flexible from what I've seen.  It may be worth listing anything that we expect the new permissions model to be able to do that the current one can't do if any for each service (e.g. We can give individual users permission to view workflows in particular k8s namespaces, etc.)

Rather than have a "create share" scope, I think we should just have read and write scopes for the shared directories and we'll create the shared directory if it doesn't already exist.

Implementation steps:

Since this is a complex piece of functionality, we would need to implement this in small modular steps. The steps are mentioned below:

Fetch keycloak groups and roles from Keycloak and sync them in JupyterHub. https://github.com/nebari-dev/nebari/issues/2308. At the moment we do have these available from the /user endpoint in the Hub API, under following keys. These needs to to be synced with JupyterHub roles and groups so that the permissions are actually applied at JupyterHub level.

auth_state.oauth_user.roles
auth_state.oauth_user.groups

Update the render_profiles functionality in profiles in jupyterhub config, such that it creates shared directory only if the group has permissions. This would also require us to implement a way to parse role scopes, e.g: parsing read:shared!shared=pycon for shared directory, when the component is shared-directory.
Implement scopes parsing can evolve as we implement rbac for each service. I don't expect us to write perfect scope parsing in one go. We should start with a service. I would suggest JupyterHub and make scope parsing for shared-directory work for it. For jupyterhub component it would work without parsing, after they are synced from keycloak into jupyterhub.
Implement scope parsing for conda-store and based on that incorporate conda-store's new permissions model.
Follow the same for Argo and Grafana.

These steps don't necessarily need to be completed in this order.  Only jupyter is dependent on steps 1-2.  Argo, Grafana, and conda store permissions could be switched over at any time.
Also, does the conda store UI support the new role_mappings_version in conda store?  I'll ask the devs to find out.

I believe conda-store is currently flexible enough to support create, read, update, delete scopes for individual namespaces, but Argo Workflows is not nearly so flexible from what I've seen. It may be worth listing anything that we expect the new permissions model to be able to do that the current one can't do if any for each service (e.g. We expect to give individual users permission to view Argo Workflows workflows in particular k8s namespaces, etc.). At least for Argo Workflows and Grafana it's not clear to me that this change would enable us to support more fine grained permissions than what we already have.

Yes, correct. The scope of this proposal is to create a framework to be able to assign fine-grained permissions for each service and component Nebari have right now and is limited by the service/component. If a particular service / component doesn't have the an ability to allow for fine-grained permissions, then solving that problem is beyond the scope of this proposal.

A few additional thoughts.  No model can foresee all potential future needs, so we may need to not adhere to this in the future for some service, and this model likely won't provide any benefit for Argo or Grafana currently (it's unlikely to affect them negatively either), it'll just allow more fine grained Jupyterhub and conda-store permissions.

No model can foresee all potential future needs, so we may need to not adhere to this in the future for some service

Not sure about the future, but the proposal is that this model will handle all the current needs.

and this model likely won't provide any benefit for Argo or Grafana currently (it's unlikely to affect them negatively either)

I don’t think that’s correct. It will provide many benefits, Grafana has a well defined RBAC which can be translated into the above syntax in the form of keycloak roles, I have not explicitly created examples for them here, but they can definitely be created along the lines of the given examples.
For Argo, they also have an RBAC but I haven’t looked at it very closely yet and moreover we’re yet not sure if it will be part of core Nebari for long enough, so wasn’t sure if we should put too much effort yet.

it'll just allow more fine grained Jupyterhub and conda-store permissions.

Three things on this:

“Jupyterhub” and “conda-store” combined are most of Nebari.
JupyterHub permissions also includes App Sharing permissions as well, which is also one of the major use cases of the permissions model.
This “just” is a lot. There are no fine grained permissions as of yet for either of these except for 2-3 predefined ones and also there is no way to create custom roles at the moment.

Thanks for your detailed repsonses @aktech.

I don’t think that’s correct. It will provide many benefits, Grafana has a well defined RBAC which can be translated into the above syntax in the form of keycloak roles, I have not explicitly created examples for them here, but they can definitely be created along the lines of the given examples.

I agree with you after looking at that.  I hadn't seen the more detailed RBAC for Grafana previously.

it'll just allow more fine grained Jupyterhub and conda-store permissions.

Three things on this:
“Jupyterhub” and “conda-store” combined are most of Nebari.
JupyterHub permissions also includes App Sharing permissions as well, which is also one of the major use cases of the permissions model.
This “just” is a lot. There are no fine grained permissions as of yet for either of these except for 2-3 predefined ones and also there is no way to create custom roles at the moment.

I agree with you 100% that adding more fine-grained permissions for jupyterhub and conda-store is very useful by itself :).  My comment was more about clarifying the benefits and limitations of this RFD.

Looking great, just finished reading and here are my takeaways on this:

JupyterHub doesn't have a way to update roles without restarting Hub, we need a way to tackle this limitation, ideally contributing to JupyterHub to update roles dynamically. See: https://jupyterhub.readthedocs.io/en/stable/rbac/roles.html#removing-roles

@aktech this is what was discussed today, and jupyterhub will now support is that right?

I don’t think that’s correct. It will provide many benefits, Grafana has a well defined RBAC which can be translated into the above syntax in the form of keycloak roles, I have not explicitly created examples for them here, but they can definitely be created along the lines of the given examples.

@aktech THe only one that I am not sure about is the gpu-access-role here:

based on the syntax proposed, what would be the access level for jupyterhub-profile!profile=...? Would it be read ?

JupyterHub also has a concept of custom scopes, but it's not very flexible and it does not enforce that your services apply them, so might not be very useful, but still worth exploring.

I think we can use this for any extensions that require access to jupyterhub API for anything

overall I am okay with moving forward with this structure.

@viniciusdc @aktech

See the note at the beginning; I am not sure if we are using the enterprise or cloud versions, though I might be wrong.

Good point, Vini.  We're using Grafana OSS which may not have RBAC abilites.  https://grafana.com/oss-vs-cloud/

For the Grafana OSS, I was working on a possible workaround for this by imposing oauth2proxy in front of grafana and handling any scope permissions checks in there... I am still now sure how reliable it would be, but at least would work as a gateway for mapping grafana basic permissions with out new RBAC structure

Just to give more context on that regard, I was planning on using oauth2 proxy alpha settings with the Keycloak client to handle access using scopes. In general, it would only work as a way to restrict from read/view access to it, as any extra permissions would require grafana's RBAC to be in place

@aktech , when looking at parsing the roles, we will need to be sure we strike the right balance between being constrained in what we accept, but flexible enough to be useful. I would think we would need some concept of wildcards, but that can get very complex very quickly. We also may need some default variables. Like if we want to automatically grant each user permissions on their namespace being able to write something like write:conda-store!namespace={USER.NAME} would be useful.

High level though, I like the design and think it will serve well, I also agree with the iterative build strategy. Don't build things we don't need, but leave the flexibility for future needs is a good design principle.

@aktech , when looking at parsing the roles, we will need to be sure we strike the right balance between being constrained in what we accept, but flexible enough to be useful. I would think we would need some concept of wildcards, but that can get very complex very quickly.

Yeah, we might. I left that for more of an implementation detail.

We also may need some default variables. Like if we want to automatically grant each user permissions on their namespace being able to write something like write:conda-store!namespace={USER.NAME} would be useful.

Agree, this should be part of defaults, as mentioned in the notes:

The RBAC system described above gives us the flexibility to create fine-grained permissions to specific resources and groups. While this is useful, we also need to make sure we set sensible defaults. Every user of Nebari might not need this level of fine-grain ability so we need to create some roles and groups by default when deploying a Nebari to facilitate basic permissions.

Thanks everyone for the comments and approval, I have marked it as accepted now.


Add Antonis Kalipetis bday

You're 824 years old?

Did you really go and code review every pull request? I'll fix this, rebase and ping you again.

Ping @dionyziz for updated bday :fireworks: