allow the user specify how long password shall be generated as an argument

or rather completely redefine the configured generator on agrv. And configure different generators based on the contex (= the graph path or its parts)


Restructure the project to produce separate libraries

It would be useful to produce separate Java libraries from mockito-release-tools. Example submodules:

org.mockito:mockito-release-tools-git
org.mockito:mockito-release-tools-github
org.mockito:mockito-release-notes-generator
org.mockito:mockito-release-notes-gradle-plugin
org.mockito:mockito-continuous-delivery-gradle-plugin

This way it is easier to manage the code, ensure the right architecture. It could be easier for the community to reuse some parts of the pipeline.
Asked on Gradle forums how to publish multiple jar to Gradle plugin portal: https://discuss.gradle.org/t/publishing-plugin-with-other-jars-from-a-multi-project-plugin/21551

Deprioritized for now.


Unexpected error when ___________

Describe the bug

I got an unexpected error on https://opencollective.com/pixijs/donate? while I was trying to __________
To Reproduce

Go to ________
Click on ________
Scroll down to ________
See error

Device

OS: Linux armv8l
Browser: 5.0 (Linux; Android 8.1.0; CPH1853) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.111 Mobile Safari/537.36

Technical details

@tanpattaya thank you for reporting. Can you please give us additional details so we can have a look?


CAS-106: Add Endpoint for query community users by userType

Ticket: CAS-106
Description:

Fixes test for /communities/[communityId]/users endpoint
Removes unused code block in TestCreateCommunityUsers
Adds endpoint /communities/[communityId]/users/type/[userType]
Adds tests for above endpoint

similar to Richard i'm also seeing the TestCommunityAdminRoles test failing.  I think the scany log statement is expected but if you could remove unnecessary log statements that would be great :)

otherwise, looks great!

Tests Fixed and cleaned up to remove unnecessary noise.

Looks good!


Problem with animated emoji rendering

When uploading an animated .gif file as an emoji it renders correctly on the preview but will smear all the frames together once it is submitted.

@Trey-Fore What Mattermost server version are you on? What OS and version are you on?

Hello Amy, Looks like it is 5.2.2.

@Trey-Fore This might be your desktop app version. You can find the server version from Main Menu > About Mattermost.

Team Edition
7.5.2
db schema: 95
db: postgres

Ubuntu server 20.04 and its the mattermost thats bundled in the ombibus package of gitlab

@Trey-Fore Do you have the gif file that I can test with?

I attached it in the original post.

@amyblais


The Community Administrator should not view all communities in the edit section

Describe the bug
The Edit communities section displays all the communities to the Community Administrator, so communities for which the user is not the community administrator are also displayed.
To Reproduce
Directly on the demo instance https://demo7.dspace.org/home
Steps to reproduce the behavior:

Log in as Community Administrator
Go to the "Edit" > "Community" section
click any community
a forbidden error will be shown

Video dimonstrating the issue:
screencast-demo7.dspace.org-2023.06.26-09_32_41.webm
Expected behavior
The list of communities should be filtered, so only communities for which the current user is the Community Administrator should be shown.

It seems to be related to https://github.com/DSpace/dspace-angular/issues/1331

Overlaps with #8917 and #8918 which are very similar issues (just in different UI screens).  Likely all three of these should be claimed together.   It is also similar to https://github.com/DSpace/dspace-angular/issues/1331

Claimed by @PitbaranK / Virsoftech as part of #8918.  See that ticket for more details. https://github.com/DSpace/DSpace/issues/8918#issuecomment-2268363977


Nginx whitelist

Please check Makefile.
I can`t generate new readme.md

Please check Makefile. I can`t generate new readme.md

As about generiting values schema, it can be done using bitnamis readme-generator-for-helm
You can check the example here:
https://github.com/aenix-io/cozystack/blob/bbd2ca81a376d0ddc32a9f7264f7cdb53dc36b89/packages/apps/tcp-balancer/Makefile#L2-L3


Session watcher doesn't work for self-managed environment

Describe the bug
I am using the vscode-r extension in combination with the Remote-SSH extension to develop on a university cluster.
I initially connect to the login node, which shouldn't be used for anything compute intensive.
Unfortunately, using R: create R terminal starts the terminal on the login node as well (but the session watcher does work!).
To get around this, I'm trying to use a self-managed R terminal.
I've set Always Use Active Terminal to true, and added the necessary snippet to my .Rprofile.
The session watcher still doesn't work, and .vsc is undefined, so something has gone wrong
Do you want to fix by self? (We hope your help!)
Yes! I'd like to fix this, but would appreciate recommendations on what to check in order to make progress.

See https://github.com/REditorSupport/vscode-R/issues/1019#issuecomment-1056616224.
It is a known limitation at the moment.

On remote scenario, the session watcher relies on direct filesystem access to create file watcher on several files that will be updated by interactive user R session. On each user input, the R session file is updated to reflect the latest information, and the file watcher notifies the file change and let session watcher read the file and present the latest information.
If the remote vscode-R extension cannot access the files created by the R session, e.g. vscode-R is running on login node, yet R session is running on compute node, then there is no way to communicate between R session and sessio watcher at the moment.


Impl trait bounds in argument position (sometimes?) duplicated as where clauses

Just got the following signature shown in a popup (the Fn should also use the usual syntax sugar, that's #8157) for druid::widget::Button::on_click:
pub fn on_click(self, f: impl Fn<(&mut EventCtx, &mut T, &Env), Output = ()> + 'static) -> ControllerHost<Self, Click<T>>
where
    {unnamed}: Fn<(&mut EventCtx, &mut T, &Env), Output = ()> + 'static,

I don't think the impl Fn argument should be duplicated as a where clause on {unnamed}.

This is printed here, should be pretty straightforward to fix:
https://github.com/rust-analyzer/rust-analyzer/blob/a60e009b48a00c6248feca75497648bf16e4a853/crates/hir/src/display.rs#L336


Configuration for removing multiple dashes from file name

Statiq.Common.NormalizedPath.OptimizeFileName() removes multiple dashes by default.
https://github.com/statiqdev/Statiq.Framework/blob/e0e0bc5ba49fb657ebf5b25e69fd1da8b7a6aed7/src/core/Statiq.Common/IO/NormalizedPath.cs#L979-L980
Currently, there is no way to configure this behavior. And I saw some links broken in .NET Foundation site.
Is this by design? From a security perspective?

Not really by design, more just a best practice I've noticed (though I don't really have anything concrete to base that on - there's no real "standard" around friendly URLs that I'm aware of).
Generally links should be generated using Statiq helpers like Document.GetLink() and @Html.DocumentLink(document) so that the link follows whatever logic is being used to determine output location. Otherwise hand-coded /foo/bar style paths tend to break in other subtle ways like if a web server requires extensions or not.
If we were to add a few toggles to the way file names are optimized (and thus the output file/link for documents) what would they be? Collapsing dashes (or not) could be one, any others you can think of?


Loss of color/mangled formatting on GNU screen

Confirmed with both termshark and browsh. Brought up as a result of https://github.com/gcla/termshark/issues/7.
termshark on screen (Centos)

browsh on screen (macOS 10.14)

May be related to #279.

what is $TERM?

Also, if this is a regression relative to an earlier version, I'd like to know that.

My $TERM is xterm-256color.

browsh uses tcell version 1.1.0
termshark uses tcell version v1.1.2-0.20190412054914-dcf1bb30770e

By the way, people love you!
Copying and pasting browsh's only import comment, which is about tcell:
    // TCell seems to be one of the best projects in any language for handling terminal
    // standards across the major OSs.

Hmm...  GNU screen has it's own terminal entries, and may be eat some of the escape sequences intended for xterm256-color.  What terminal emulator are you running screen inside?

xfce4-terminal/terminator on Centos
iTerm2 on MacOS

To be clear, termshark has the same screen issues on macos/linux with underlines and unresponsive mouse. I haven't tested browsh in linux.

I've confirmed that GNU screen has it's own terminal description, and it isn't compatible with xterm-256color.  It seems to use screen.xterm-256color on my system at least.  Stay tuned.

I have a working solution, utilizing infocmp to generate entries dynamically.


GCC 9 fixes

Codecov Report

Merging #93 into master will increase coverage by 0.07%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #93      +/-   ##
==========================================
+ Coverage   94.53%   94.61%   +0.07%
==========================================
  Files          87       87
  Lines        7014     7014
==========================================
+ Hits         6631     6636       +5
+ Misses        383      378       -5

Impacted Files
Coverage Δ

test/flex_vector/fuzzed-0.cpp
99% <ø> (ø)
:arrow_up:

immer/detail/combine_standard_layout.hpp
100% <ø> (ø)
:arrow_up:

test/flex_vector/fuzzed-2.cpp
80.76% <ø> (ø)
:arrow_up:

test/flex_vector/fuzzed-4.cpp
90.75% <ø> (ø)
:arrow_up:

test/flex_vector/fuzzed-1.cpp
82.22% <ø> (ø)
:arrow_up:

test/vector/generic.ipp
99.27% <100%> (ø)
:arrow_up:

immer/atom.hpp
100% <100%> (ø)
:arrow_up:

test/flex_vector/fuzzed-3.cpp
64.91% <100%> (ø)
:arrow_up:

immer/detail/rbts/position.hpp
86.48% <0%> (+0.68%)
:arrow_up:

Continue to review full report at Codecov.

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


making auth to work in python 3.5; tested both in 2.7 and 3.5

I have my code in python 3.5 and auth didn't work in this version. I made it running in 3.5 but also tested if it still works in 2.7.

Hi Dominik,
Thank you for using cbexchange and finding the auth issue in Python 3.5.  As this project is quite new, I am yet to write a comprehensive test suite thus some bugs may have slipped through the cracks.  I have tested the fix you have provided and it seems to work very well.  I have thus merged it into the main project.  I also bumped up the version of cbexchange to 1.0.3 and uploaded it to PyPI so you can easily install cbexchange and use it with the 3.5 fix by simply using:
pip install cbexchange

or if you already have the package installed on your system you can use:
pip install --upgrade cbexchange

I plan on keeping this package up to date and actively maintained so if you find any more bugs let me know in the issue tracker or with another pull request.   Hopefully I can find some time in the near future to write a comprehensive test suite as well.
Cheers,

Alex

Thank you - both for accepting the pull request and for the project, which I find helpful and very well written.
I am planning to use your more intensively, so definitely I will react on any issues I may stumble upon.


Make application names in search results consistent

Fixes https://issues.redhat.com/browse/RHINENG-4853.
This updates multiple search entries for RHEL, OpenShift, Edge bundles. See more on the desired format in the ticket.
Acceptance criteria:

All of the existing search entries mentioned in the ticket/spreadsheet must follow "<page> - <application> | <bundle>" format
If there are some duplicate entries already listed in *-navigation.json files, then another custom one created that follows the format (we will clean them up later after FEO enhancements)
If some entries are listed in the spreadsheet, but are not present in the search, the do nothing

/retest


uAgents Support for Fetch Mainnet

Prerequisites

[X] I checked the documentation and made sure this feature does not already exist
[X] I checked the existing issues to make sure this feature has not already been requested

Feature
Currently, uAgents register on the Dorado Testnet's Almanac contract, and their wallets are also on the Dorado Testnet. However, there is a need for uAgents to support the Fetch Mainnet, allowing users to hold and send real FET tokens (not testFET) through their uAgents.
Additional Information (Optional)
No response

While agent do not yet use of Fetch Mainnet as default, It should be possible to have your agent register on mainnet by setting the test flag to false:
agent = Agent(..., test=False)

Let us know if you have any issues with this.

@jrriehl What I understand from your message is that by setting:
agent = Agent(..., test=False)
This will make my agent register on the Almanac smart contract using the mainnet, and the agent's wallet address will also be on the Fetch Mainnet. Does this mean that the Agent will need to pay with mainnet FET tokens for the registration process?

@harshpatel199259 Yes, exactly. The main net uses a different denomination and users will need to top up the wallet of the agent for it to be able to register. Currently that is FET but will be ASI in the near future.
But please be advised that we do not explicitly recommend to use agents on the main net yet as that hasn't been tested thoroughly and since, e.g. we don't have enforcing mechanisms for the seed you need to be extra cautions about the uniqueness and security of that seed so that others are not able to access your agents funds.

@harshpatel199259 Yes, exactly. The main net uses a different denomination and users will need to top up the wallet of the agent for it to be able to register. Currently that is FET but will be ASI in the near future.
But please be advised that we do not explicitly recommend to use agents on the main net yet as that hasn't been tested thoroughly and since, e.g. we don't have enforcing mechanisms for the seed you need to be extra cautions about the uniqueness and security of that seed so that others are not able to access your agents funds.

I was wondering if there is any plan or ETA for thoroughly testing the uAgents on the Fetch Mainnet? It would be great to see an official announcement that enterprises and projects using Fetch agent tech can now confidently register uAgents on the mainnet. I believe prioritizing this will boost confidence among developers and could significantly increase adoption across projects.
Looking forward to hearing more about the roadmap and updates on this front!


[BUG] System.UnauthorizedAccessException: Access to the path 'RobloxPlayerBeta.exe' is denied.

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.
[X] I have thoroughly looked through the available Wiki articles and could not find a solution to my problem.
[X] I am using the latest version of Bloxstrap.
[ ] I did not answer truthfully to all the above checkboxes.

Bloxstrap Version
v2.8.4
What problem did you encounter?
even after i upgraded my bloxstrap from the old version this bug still happens ive tried everything it still shows:''configuring roblox''
and [BUG] System.UnauthorizedAccessException: Access to the path 'RobloxPlayerBeta.exe' is denied.
Bloxstrap Log
[BUG] System.UnauthorizedAccessException: Access to the path 'RobloxPlayerBeta.exe' is denied.

anyone got any fixes to this?

Did you install Bloxstrap as administrator? If you did, don't.

help plz

System.AggregateException: One or more errors occurred. (The given key 'content-platform-dictionaries.zip' was not present in the dictionary.)
[Inner Exception]
System.Collections.Generic.KeyNotFoundException: The given key 'content-platform-dictionaries.zip' was not present in the dictionary. it bloxstrap give me this

update
https://bloxstraplabs.com/


Unable to activate jekyll-asset-pipeline-0.1.6

Hello,
I was following the getting started tutorial until step 5. When I try to run jekyll with option "s" or "b" I am getting the following error:
Webchef:webchef arnegockeln$ jekyll s
Configuration file: /Users/arnegockeln/Sourcecode/htdocs/static/webchef/_config.yml
/Library/Ruby/Site/2.0.0/rubygems/specification.rb:2112:in `raise_if_conflicts': Unable to activate jekyll-asset-pipeline-0.1.6, because jekyll-3.0.1 conflicts with jekyll (~> 0.12), liquid-3.0.6 conflicts with liquid (~> 2.4) (Gem::ConflictError)
    from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1280:in `activate'
    from /Library/Ruby/Site/2.0.0/rubygems.rb:198:in `rescue in try_activate'
    from /Library/Ruby/Site/2.0.0/rubygems.rb:195:in `try_activate'
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:126:in `rescue in require'
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:39:in `require'
    from /Users/arnegockeln/Sourcecode/htdocs/static/webchef/_plugins/jekyll_asset_pipeline.rb:1:in `<top (required)>'
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require'
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:121:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/plugin_manager.rb:75:in `block (2 levels) in require_plugin_files'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/plugin_manager.rb:74:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/plugin_manager.rb:74:in `block in require_plugin_files'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/plugin_manager.rb:73:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/plugin_manager.rb:73:in `require_plugin_files'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/plugin_manager.rb:18:in `conscientious_require'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/site.rb:97:in `setup'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/site.rb:49:in `initialize'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/commands/build.rb:30:in `new'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/commands/build.rb:30:in `process'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/lib/jekyll/commands/serve.rb:26:in `block (2 levels) in init_with_program'
    from /Library/Ruby/Gems/2.0.0/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `call'
    from /Library/Ruby/Gems/2.0.0/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `block in execute'
    from /Library/Ruby/Gems/2.0.0/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/mercenary-0.3.5/lib/mercenary/command.rb:220:in `execute'
    from /Library/Ruby/Gems/2.0.0/gems/mercenary-0.3.5/lib/mercenary/program.rb:42:in `go'
    from /Library/Ruby/Gems/2.0.0/gems/mercenary-0.3.5/lib/mercenary.rb:19:in `program'
    from /Library/Ruby/Gems/2.0.0/gems/jekyll-3.0.1/bin/jekyll:17:in `<top (required)>'
    from /usr/bin/jekyll:23:in `load'
    from /usr/bin/jekyll:23:in `<main>'

Is there a fix for the current jekyll version 3.0.1?
Best,
Arne

I have the same issue

If this is still relevant, I have just updated my fork with support for the latest Jekyll.

My fork is now merged here so it should be OK.


Separate predictions on different samples from same vcf?

I have a use case where samples are all in the same vcf and have same hyper parameters (mutation rate etc.), but would like to make predictions for separate taxa. Out of the box prediction on new samples from the same vcf didn't work I guess because the windows are broken up according to the vcf/samples given to ReLERNN_SIMULATE. Seems like a waste to do distinct sims for this. I would be happy to try tackling this if it seems feasible. Naively it seems like it would require basing the windows according to a reference genome instead of a vcf? Are this issues I'm overlooking?

Thought about this more and read relevant parts of the paper again. Seeing that estimating Ne is necessary for equilibrium demography based inference. Makes more sense why vcf is needed for sims! I think it's safe to close this. Sorry for adding clutter!


DL: Add GPU support for evaluate

In our experiments on a multi host gpdb cluster, we noticed that using CPU and compiling the model everytime caused the fit query to fail during the validate code with the error Dst tensor is not initialized. Adding GPU and caching the compiled model fixed this issue.

Add GPU support to the evaluate code called by the fit function.
The evaluate code previously compiled the model for each row in the validation table.
This was unnecessary and takes more resources in terms of time and memory. This commit avoids this by using SD to cache the compiled model.
Also refactored the code by creating a function to get the rows per segment

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/846/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/850/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/madlib-pr-build/852/


Add post for free style sprint

Deploy preview for openbuildservice ready!
Built with commit 960aaed6a6bd4fd1419d6478e949b2b1e5907b1a
https://deploy-preview-249--openbuildservice.netlify.com


[Event Request] Codeunit 5780 "Whse. Cross-Dock Management" – New Event  “OnCalcCrossDockToTransferOrderOnBeforeInsertDockLine”

Could we please have a new publisher “OnCalcCrossDockToTransferOrderOnBeforeInsertDockLine” in Function “CalcCrossDockToTransferOrder”, Codeunit 5780 "Whse. Cross-Dock Management”?
    local procedure CalcCrossDockToTransferOrder(var WhseCrossDockOpp: Record "Whse. Cross-Dock Opportunity"; var QtyOnPick: Decimal; var QtyPicked: Decimal; ItemNo: Code[20]; VariantCode: Code[10]; LocationCode: Code[10]; CrossDockDate: Date; LineNo: Integer)
    var
        TransferLine: Record "Transfer Line";
        WhseRequest: Record "Warehouse Request";
        QtyOnPickBase: Decimal;
        QtyPickedBase: Decimal;
    begin
        with TransferLine do begin
…
                        CalculatePickQty(
                          DATABASE::"Transfer Line", 0, "Document No.", "Line No.",
                          QtyOnPick, QtyOnPickBase, QtyPicked, QtyPickedBase, Quantity, "Quantity (Base)",
                          "Outstanding Quantity", "Outstanding Qty. (Base)");
*** start new code ***
                        OnCalcCrossDockToTransferOrderOnBeforeInsertCrossDockLine(TransferLine.Quantity, TransferLine."Outstanding Quantity");
*** stop new code ***
                        InsertCrossDockLine(
…
*** start new code ***
    [IntegrationEvent(false, false)]
    local procedure OnCalcCrossDockToTransferOrderOnBeforeInsertCrossDockLine(Quantity: decimal; OutstandingQuantity: Decimal)
    begin
    end;
*** stop new code ***

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


test-install: Do not install rabbitmq in base install.

The installer does not adjust the node name if the rabbitmq already
exists, and the default node name bakes in the
zulip-install-bionic-base hostname.  As such, the resulting LXC
image does not properly start rabbitmq.
Remove rabbitmq, allowing the installer to install and configure it
with a nodename of zulip@localhost.  This also lets the installed
image be successfully copied and booted under a new hostname without
breaking rabbitmq.

lgtm!


Having truble in Debian 12.6

I tried making it work on Debian 12.6. I got the US-layout, and most things work, except the Umlaute. Meaning, I have 'y' at the top row and [] where 'ü' and '+' would be.
I use by default sway window manager
When I press AltGr+a I get nothing in sway and an 'a' in gnome.
I did create a new file /usr/share/X11/xkb/symbols/intlde and added
<variant>
  <configItem>
    <name>intlde</name>
    <description>English (US, intl., German)</description>
  </configItem>
</variant>

and I changed the language to the new language intlde.
I also tried adding the line include "eurosign(e)" (after the include us(basic)) and it also didn't work. If I press AltGr+e I get no character, but in Firefox it activates the Edit-Menu, basically being Alt+e.
Any ideas?

After day of fiddling around, I managed to make it work. I believe that my my mistake was confusing layout and variant, but I'm not entirely sure as I'm new to XKB.
It works fine, and thank you!


Fandom emoji

Mix of 😍, 😭 and 😱, 😛 or 🤤 showing sheer, overwhelmed excitement
Petitions

change.org: Fanboy and Fangirl

iPetitions: Fangirl
iPetitions: Fandom

Mockups
Emojitwo:


Add CICD

Adds gitlab-ci.yml that builds and tests the project.

Superseded by https://github.com/AletheiaWareLLC/Wink/pull/14


Added DisableFastStartup function

Is this really applicable also to Server? I'm pretty sure it's disabled there by default, but can it be even enabled? I don't have any physical server which I could break at the moment and on my Server VMs the fast startup does not exist. :( But if you can't test it on Server either, I'll try to find a victim during the weekend.

Requirements of Group Policy Object Computer Configuration\Policies\Administrative Templates\System\Shutdown\Require use of fast startup says At least Windows Server 2012, Windows 8 or Windows RT, so it should be applicable to Windows Server too, but I didn't tested it (I don't have any WinServer either).


Import compose->DOCKER-COMPOSE has to be a mandatory field

Component   Version
Rancher     v0.39.0-rc1
Cattle  v0.95.0
User Interface  v0.52.0
Rancher Compose     beta/latest

Rancher compose CLI would not allow rancher-compose create without a valid docker-compose.yml. But in UI,  I uploaded a valid rancher-compose.yml and did not uploade any docker-compose.yml and create. Stack is still getting created. Some sort of validation is needed here.

The compose files are not required, there's nothing wrong with an empty stack.


Catch ConnectionError (fixes #14241)

Description:
If the receiver goes offline then there is a ConnectionError.
@derandiunddasbo, could you please test this?
Related issue (if applicable): fixes #14241 (partial)
Example entry for configuration.yaml (if applicable):
media_player:
  - platform: yamaha

Checklist:

[ ] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass

#14241 is closed. In the solution this issue ( #14748) was references.
But the behavior described in my second comment on #14241 still occur with 0.80.3.
The update warnings from the component stop after ten minutes...
2018-10-26 17:10:28 WARNING (MainThread) [homeassistant.components.media_player] Updating yamaha media_player took longer than the scheduled update interval 0:00:10

but even after that, the entity is still shown as 'on' and errors are thrown, when trying to change something in the UI (f.e. volume or input).


Update sbt to 1.7.2

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

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

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "org.scala-sbt", artifactId = "sbt" }
}]

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

Codecov Report

Merging #148 (b83c258) into master (acc035a) will not change coverage.
The diff coverage is n/a.

 Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Is the bot still alive?

Hello,
I've installed this bot a few days ago but nothing happened till now. I saw other people have the same problem. Just wondering if this bot still working.
p/s: Expecting an answer from the maintainer, not the bot 😅

maybe this could be an alternative... https://github.com/actions/stale

Added the bot yesterday and it already marked some of our company issues. Maybe a misconfiguration on the yaml ?

hmm, no. the yaml file is valid and the app has been granted permission as well. No idea why It didn't work.


Clean up Links card UI

The Links card UI has a few UI issues. This task is to:

Remove the double border from the bottom of the card
Fix the horizontal spacing - each line below every row should extend to the card boundaries, and be padded in from the right and left side
Update the arrows to the less pronounced arrows seen on the User Profile tab
Ensure the card and View All render in the same fashion

Done in 0fbdfa4


Manual configuration of GitHub webhook fails initial test payload with status 400

Details

Project URL: https://github.com/dropbox/dropbox-sdk-python
Read the Docs username (if applicable): [let me know if you need this]

Add a manual webhook to your GH project.
Set the Payload URL to https://readthedocs.org/github (per the docs).
Select application/json for Content type (although no setting works).
Click Add webhook.
Note the test payload will fail.

Expected Result
Success.
Actual Result
Request headers:
Request URL: https://readthedocs.org/github
Request method: POST
content-type: application/json
Expect:
User-Agent: GitHub-Hookshot/886c556
X-GitHub-Delivery: 7d934b00-fecb-11e6-9a26-38d336aab6b2
X-GitHub-Event: ping

Response (status 400):
Connection: close
Content-Language: en
Content-Length: 15
Content-Type: text/html; charset=utf-8
Date: Wed, 01 Mar 2017 22:07:43 GMT
Server: nginx/1.10.0 (Ubuntu)
Transfer-Encoding: chunked
Vary: Accept-Language, Cookie

Invalid request

I would say that the URL https://readthedocs.org/github from the docs is wrong since I don't find it in the source code. I could be an alias or something like that in the nginx configuration, I don't know, but I don't find any URL in the source code that could handle a generic github webhook with that example payload.
I checked out the code itself and I can see that if the event is not a PUSH event, nothing happens: https://github.com/humitos/readthedocs.org/blob/5178e15da65079945a46faa133ba58b092efab46/readthedocs/restapi/views/integrations.py#L87-L97
But to get there, I used this URL https://readthedocs.org/api/v2/webhook/github/dropbox-sdk-python/ instead, because that is what I saw in the code at https://github.com/humitos/readthedocs.org/blob/5178e15da65079945a46faa133ba58b092efab46/readthedocs/restapi/urls.py#L63-L65
I did this test and it worked:
[17:53] humitos: ~> curl --verbose -X POST https://readthedocs.org/api/v2/webhook/github/dropbox-sdk-python/ -H "content-type: application/json" -H "User-Agent: GitHub-Hookshot/886c556" -H "X-GitHub-Delivery: 7d934b00-fecb-11e6-9a26-38d336aab6b2" -H "X-GitHub-Event: push" -H "Expect: " -d '{"ref": "master"}'
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying <IP_ADDRESS>...
* Connected to readthedocs.org (<IP_ADDRESS>) port 443 (#0)
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 704 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* 	 server certificate verification OK
* 	 server certificate status verification SKIPPED
* 	 common name: *.readthedocs.org (matched)
* 	 server certificate expiration date OK
* 	 server certificate activation date OK
* 	 certificate public key: RSA
* 	 certificate version: #3
* 	 subject: OU=Domain Control Validated,OU=PositiveSSL Wildcard,CN=*.readthedocs.org
* 	 start date: Fri, 15 Apr 2016 00:00:00 GMT
* 	 expire date: Sun, 15 Apr 2018 23:59:59 GMT
* 	 issuer: C=GB,ST=Greater Manchester,L=Salford,O=COMODO CA Limited,CN=COMODO RSA Domain Validation Secure Server CA
* 	 compression: NULL
* ALPN, server did not agree to a protocol
> POST /api/v2/webhook/github/dropbox-sdk-python/ HTTP/1.1
> Host: readthedocs.org
> Accept: */*
> content-type: application/json
> User-Agent: GitHub-Hookshot/886c556
> X-GitHub-Delivery: 7d934b00-fecb-11e6-9a26-38d336aab6b2
> X-GitHub-Event: push
> Content-Length: 17
>
* upload completely sent off: 17 out of 17 bytes
< HTTP/1.1 200 OK
< Server: nginx/1.10.0 (Ubuntu)
< Date: Thu, 16 Mar 2017 22:53:25 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Language, Cookie
< Content-Language: en
< Allow: POST, OPTIONS
< X-Frame-Options: DENY
< X-Deity: web03
<
* Connection #0 to host readthedocs.org left intact
{"project":"dropbox-sdk-python","build_triggered":true,"versions":["latest"]}

Using the simple ping event, nothing happens:
[17:52] humitos: ~> curl --verbose -X POST https://readthedocs.org/api/v2/webhook/github/dropbox-sdk-python/ -H "content-type: application/json" -H "User-Agent: GitHub-Hookshot/886c556" -H "X-GitHub-Delivery: 7d934b00-fecb-11e6-9a26-38d336aab6b2" -H "X-GitHub-Event: ping" -H "Expect: " -d '{"ref": "master"}'
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying <IP_ADDRESS>...
* Connected to readthedocs.org (<IP_ADDRESS>) port 443 (#0)
* found 173 certificates in /etc/ssl/certs/ca-certificates.crt
* found 704 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* 	 server certificate verification OK
* 	 server certificate status verification SKIPPED
* 	 common name: *.readthedocs.org (matched)
* 	 server certificate expiration date OK
* 	 server certificate activation date OK
* 	 certificate public key: RSA
* 	 certificate version: #3
* 	 subject: OU=Domain Control Validated,OU=PositiveSSL Wildcard,CN=*.readthedocs.org
* 	 start date: Fri, 15 Apr 2016 00:00:00 GMT
* 	 expire date: Sun, 15 Apr 2018 23:59:59 GMT
* 	 issuer: C=GB,ST=Greater Manchester,L=Salford,O=COMODO CA Limited,CN=COMODO RSA Domain Validation Secure Server CA
* 	 compression: NULL
* ALPN, server did not agree to a protocol
> POST /api/v2/webhook/github/dropbox-sdk-python/ HTTP/1.1
> Host: readthedocs.org
> Accept: */*
> content-type: application/json
> User-Agent: GitHub-Hookshot/886c556
> X-GitHub-Delivery: 7d934b00-fecb-11e6-9a26-38d336aab6b2
> X-GitHub-Event: ping
> Content-Length: 17
>
* upload completely sent off: 17 out of 17 bytes
< HTTP/1.1 200 OK
< Server: nginx/1.10.0 (Ubuntu)
< Date: Thu, 16 Mar 2017 22:52:58 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Language, Cookie
< Content-Language: en
< Allow: POST, OPTIONS
< X-Frame-Options: DENY
< X-Deity: web04
<
* Connection #0 to host readthedocs.org left intact
{"detail":"Unhandled webhook event"}

If you are still having trouble with this, we recently added a webhook management page. See the "Integrations" project dashboard page for more options setting up your webhook. We've deprecated the old build endpoints, the new ones are more consistent.
Closing here due to inactivity.

This problem due to webhook's  invailid request body, you could use the "doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)" method of the Servlet Filter to make the request to be a empty body such as '{ }' in your service if you use java.
If you are another kind of programming language developers,this solution is also applicable.


Review and update (or remove?) charter page from github pages

https://tdwg.github.io/cd/charter/

[ ] We do need a gh-pages refresh -- much text can come from the Code README.md.
[ ] Please archive (copy to historical) this old ncd version.

@stanblum thinks the gh-pages charter can be removed. @baskaufs what do you think?
The most up-to-date interest group charter is on the community website https://www.tdwg.org/community/cd/ currently waiting for a minor pull request to be accepted.

Trying to get back up to speed on this.  I think that the location of charters should be based on whatever the TDWG-wide convention seems to be.  If that's now the community website, that's fine.  Presumably we have some place in this repo where we squirrel away old charters and drafts (with them dated and noted as drafts.

The TDWG wide convention for charters is to post them on the main website under Community, with Task groups nested inside Interest Groups.  We don't have this feature yet, but Peter thinks it's possible. (perhaps just going to tag them with the IG shortname).
The IG's repository can then be a place for collaborating on new charters and to archive old charters.
If the IG needs its own website, the landing page can change more often, under the IG's control, and without Exec approval.  I think a separate website is needed only when there is a lot of content to guide users through, like DwC.


Indicate Support for Linux

I'm curious when support for the indicate property is scheduled for Linux. I have an application that requires this functionality so I was reading through the source code to see how to make it work. indicate is implemented on Mac already, and as far I can tell the following code block is all that was needed to make indicate work on OS X:
if (characteristic.properties.indexOf('indicate') !== -1) {
    if (characteristic.secure.indexOf('indicate') !== -1) {
        properties |= 0x200;
    } else {
        properties |= 0x20;
    }
}

When browsing through the Linux code, I found this block that looks very similar to the one above:
 if (characteristic.properties.indexOf('notify') !== -1) {
    properties |= 0x10;

    if (characteristic.secure.indexOf('notify') !== -1) {
        secure |= 0x10;
    }
}

If I added the following to l2cap-ble.js, is this all that is necessary to support Linux?
 if (characteristic.properties.indexOf('indicate') !== -1) {
    properties |= 0x200;

    if (characteristic.secure.indexOf('indicate') !== -1) {
        secure |= 0x20;
    }
}

And of course, there is always the possibility indicate support is already on the way. Does anybody know anything about this? I really could use it for some projects I'm working on.
If there is more to do, what is it? I could find few mentions of the word indicate in the repository, so I would guess that this would provide support, but I am very new to both Node and BLE and am not versed enough to know for sure. Thanks for taking the time to read this.

@sandeepmistry, thanks for this awesome lib.  I need indicate support in linux, and am m happy to submit a pull request.  Is there anything else that I should be looking at than what you listed above?  I've worked with BLE minimally.

@rowanc that would be sweet!
It would be great to make sure the behaviour is the same as OS X. We'll need to confirm the characteristic onNotify method is called when a ATT_OP_HANDLE_CNF message is received. If OS X doesn't call it now, maybe we should introduce a new onIndicate method?

https://github.com/sandeepmistry/bleno/commit/732d83adacc7bf265642c1cd35e37262a09773b1 adds support for this!


issue with angular-bootstrap (uib) and contextPath

When using the angular ui-bootstrap library together with an app that has a context path other than "/", for example "/myApp/", then the interceptor in the core app adds the context path to the uib template URLs and breaks the app. A quickfix is adding uib/ in the if-statement and thereby excluding those libraries, but I think this case shows that the entire interceptor should be reconsidered.

+1

Can you post an example that demonstrates the problem?

for example, ui-bootstrap adds the following to template cache:
  $templateCache.put("uib/template/rating/rating.html",
    "\n" +
    "    ({{ $index < value ? '*' : ' ' }})\n" +
    "    <i ng-repeat-end ng-mouseenter=\"enter($index + 1)\" ng-click=\"rate($index + 1)\" class=\"glyphicon\" ng-class=\"$index < value && (r.stateOn || 'glyphicon-star') || (r.stateOff || 'glyphicon-star-empty')\" ng-attr-title=\"{{r.title}}\" aria-valuetext=\"{{r.title}}\">\n" +
    "\n" +
    "");

and then this is intercepted by the angular core module (https://github.com/grails/grails-profile-repository/blob/master/profiles/angular/skeleton/grails-app/assets/javascripts/%40grails.codegen.defaultPackage.path%40/core/%40grails.codegen.defaultPackage%40.core.js) and rewritten with contextPath + "/" + config.url; and becomes faulty.

the before mentioned quickfix is this:
if (!config.url.indexOf("/") == 0 && contextPath && config.url.indexOf("uib/template") == -1) {
   config.url = contextPath + "/" + config.url;
}

OK, I understand the issue. So you said

I think this case shows that the entire interceptor should be reconsidered

Any suggestions are welcome. You can post an implementation here for discussion. Note that for the profile it can't be assumed the user is using ui-bootstrap.

Fixed by https://github.com/grails/grails-profile-repository/pull/79


[Runtime] Remove reinterpret cast.

Context: Error seen when compiling on macOS arm64
Description of the Change: Remove reinterpret_cast
Benefits: Can compile on architectures where intptr_t is long and int64_t is long long.

@maliasadi I think we don't need a change log for this one, what do you think?

@maliasadi I think we don't need a change log for this one, what do you think?

Always good to add a changelog :)

@maliasadi I think we don't need a change log for this one, what do you think?

I think it's good to add this for the future reference.

Don't forget to check other devices (lightning-kokkos, openqasm) too.

What do you mean here? Wouldn't the CI/CD tests cover these?

What do you mean here? Wouldn't the CI/CD tests cover these?

I simply mean that you may need to update other devices Obs Manager classes after building catalyst with those backend devices on our local MacOS arm64 device.

You still need to check/update LightningKokkosObsManager and maybe OpenQASMObsManager. Did you check those devices on the machine?

[sc-43392]


Esc the C:\ in "Manage user data folders"

Rendered section for review:
https://review.docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/user-data-folder?branch=pr-en-us-1952&tabs=win32#specifying-a-custom-udf-location
Find:
UserDataFolder = "C:\\MyAppUserDataFolder";

See tab 2 & 3, also inspect tab 1.
Changes made:

In two spots, added 2nd \ at C:\

Fixes https://github.com/MicrosoftDocs/edge-developer/issues/1892

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

File
Status
Preview URL
Details

microsoft-edge/webview2/concepts/user-data-folder.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

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

File
Status
Preview URL
Details

microsoft-edge/webview2/concepts/user-data-folder.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Self-hosted supergraph not available from server service

While self-hosting graphqlhive the supergraph gives a 404 when trying to reach the supergraph cdn endpoint from multiple sources.
The server service is available at it's own domain https://hive-server.example.domain and the graphql endpoint is available at https://hive-server.example.domain/graphql with graphiql showing up. The webapp has the option to connect to cdn at https://hive-server.example.domain/artifacts/v1/${TARGET_ID}/supergraph.
This is for an apollo federation project which I have published 2 schemas to graphql hive with apollo federation spec. I have also created a cdn access token that I provide when trying to get the supergraph from multiple sources such as curl, apollo router with kamilkisiela's image using hive cdn endpoint and hive cdn key variables, and insomnia. For the apollo router I took off the /supergraph at the end per the documentation at https://the-guild.dev/graphql/hive/docs/integrations/apollo-router. When using curl I have a header with X-Hive-CDN-Key using the hive cdn access token. The error on the apollo router is it finds unexpected character "<" with the response of <?xml version="1.0" encoding="UTF-8"?>.
The main issue is trying to get apollo router to consume the supergraph from graphqlhive. I have the apollo router running and have provided the schema manually in a file but when consuming from graphqlhive I am running into the issues above.
The supergraph is available on minio service and I can reach the artifact in the bucket. I downloaded the artifact and all looks good but when trying to access it through the CDN endpoint provided by the server service It is not accessible. I do see logs of 404 on the server service when trying to access the cdn endpoint for the supergraph.

Can you share with us the exact command + configuration that you use for running apollo router with the hive plugin?

Helm chart overrides from the chart at https://github.com/apollographql/router/tree/dev/helm/chart/router
extraEnvVars:

name: APOLLO_ROUTER_CONFIG_PATH
value: /config/router.yaml
name: HIVE_CDN_ENDPOINT
value: https://hive-server.example.domain/artifacts/v1/${TARGET_ID}
name: HIVE_CDN_KEY
value: '${CDN_KEY_VALUE}'

image:
repository:  ghcr.io/kamilkisiela/graphql-hive/apollo-router
pullPolicy: IfNotPresent
Overrides the image tag whose default is the chart appVersion.
tag: "75b6c16ef5be6610c912b1cc88ae0587a6af764a"
The router runs with a file mounted via a config map on kubernetes and I can run queries and mutations to the graphql services. When I change from APOLLO_ROUTER_SUPERGRAPH_PATH env var to the HIVE_CDN_ENDPOINT and the HIVE_CDN_KEY vars it fails to start the router.

https://github.com/kamilkisiela/graphql-hive/tree/main/packages/services/server
The docs for the server service state the s3 public url and s3 endpoint can be different but I had listed the s3 endpoint as the local kubernetes svc such as http://s3.hive.svc.cluster.local:9000. I changed them to be the same and had it externally accessible so that the router could access the artifacts. I also had to remove the s3 reverse proxy after reading the issue at https://github.com/kamilkisiela/graphql-hive/issues/2736. Now the apollo router is running and consuming the supergraph from graphqlhive. Thanks to the team for also adding native composition for apollo federation!


proposal: cmd/go: allow && and || operators and parentheses in build tags

The review for CL 107628 reminded me of this idea,so I wanted to make a quick note of it.
I think that this:
// +build (!arm64 && !s390x) || (arm64 && !go1.11) || gccgo || appengine

Would be a lot easier for a Go developer to parse (and verify) than the current syntax we use for build tags:
// +build !arm64,!s390x arm64,!go1.11 gccgo appengine

Build tags are hard to test so we should make them as easy to review as possible.
This might be a Go 2 suggestion, but it could probably also be added to Go 1. For Go 2 I would also be tempted to remove multi-line build tags which are also difficult for Go developers to parse.

I agree that the build tag logic is too cutesy but it's hard to change outright. It might be possible to support both forms transparently, or to use a different keyword such as +build2.
I never liked the current form. I'm not even sure I could ever do anything complex without reading the docs carefully.

Instead of +build2, if there's going to be a new keyword anyway lets take this chance to be consistent and have something like go:build

I don't like the current syntax at all, but breaking every 3rd part tool relying on it, created in the last nearly decade, shouldn't be taken lightly. Ugly syntax or not - it's not broken.
Also, going from a regular language to a CF one may result in some tools/scripts never getting fixed/upgraded with a full parser.

I'm sorry for the old syntax, but I was trying to keep people from doing very complex things. Probably that was a mistake, but the current syntax is general enough that we probably shouldn't add a second one.

Perhaps someone could write a simple third party tool that accepts a simpler syntax on the command line (with && and ||) and spits out appropriate build tag lines.

And as a bonus if the tool also went the other way, you could have a very nice IDE integration, in which you could simply edit pseudo-build tags. cc @mvdan @dominikh @fatih

Would be great if this was part of x/tools, since it seems like the main users would be the official Go repos themselves. Perhaps x/tools/cmd/buildtags?

@josharian  you might need to consider "go version" in build tags is different from what it looks like.
!go1.11 seems to be ( go1.x < go1.11 )
however it really means NOT ( if go1.x in ( go1.1 to go1.11) )

As I said above, introducing and encouraging extra complexity here is probably not a win. I think we should leave well enough alone.

All proposals add complexity.
But for the record: This is just the kind of change that could clarity to the code in Go 2.

Reopening both to merge in #36279, and to reevaluate consensus on this proposal.

Perhaps someone could write a simple third party tool that accepts a simpler syntax on the command line (with && and ||) and spits out appropriate build tag lines.

This does not help with readability though, that is arguably much more important than convenience when writing.

For what it's worth, I implemented Josh's idea as a prototype in https://golang.org/cl/117735. I don't think it has the issue that @CAFxX mentions, because both the Go-like and final syntax are next to each other in the final source:
//go:generate buildtags appengine || (!arm64 && !s390x) || (arm64 && !go1.11) || gccgo
// +build appengine !arm64,!s390x arm64,!go1.11 gccgo

In other words, the //go:generate buildtags line is the source of truth, and maintains the parseable // +build line right below it. So if you find the Go syntax easier to read, like me, you can read the first line.
I only abandoned the CL because I couldn't find a single reviewer in over a year. But if there is interest, I can reopen it and do a rebase. Even if we decide to go with direct support for +build2 or go:build, it could be a way for us to experiment with the feature on any Go version.

I wrote above in https://github.com/golang/go/issues/25348#issuecomment-390780370:

I'm sorry for the old syntax, but I was trying to keep people from doing very complex things. Probably that was a mistake, but the current syntax is general enough that we probably shouldn't add a second one.

This still seems true to me. Thanks for dedup'ing #36279 into this proposal, but this still seems like a likely decline.
Leaving open for a week for final comments.

I’m not sure I understand the rationale for declining. Everybody agrees that the current syntax is confusing. Go2 seems a good avenue to fix it for good. We also have a way to deprecate the current syntax (with go version checks) and move on to the new syntax for good (rather than having two syntaxes working at the same time). Also, it would be absolutely trivial to provide a go fix translation (heck, even go fmt could change it if we wanted do).
Why should we avoid changing just because the current one is “general enough”? The proposal itself was not even commented upon, and it provides a far superior syntax, much easier to read and understand.
If this proposal must be declined, i think it needs a stronger rationale than “the current syntax is general enough”.

I don't see how we can realistically remove the old syntax.  We can only use version checks to deprecate existing syntax in the most extreme of situations, or for constructs that are very rarely used, as doing that forces people to modify their code as soon as they want to take advantage of new language versions.  Every deprecation is a barrier to moving to new versions of Go.  This doesn't seem to me to meet that bar.

@ianlancetaylor right but if both flavors were accepted and (say) gofmt rewrote to the nicer form, over time, the nicer form would dominate. And it wouldn't matter that we had an old, vestigial form.
I'd say the question is: Are we better off with the cost of having two formats instead of one? Note that having gofmt rewrite to the newer form eliminates many of those costs, such as training.

Introduce the new syntax in go1.X. For modules that are go1.X or greater, have go fmt automatically rewrite old syntax to new or go fix to update it all at once.
Later, introduce go1.Y. Have modules that are go1.Y error out on the old syntax and require the user to go fmt/fix it for the new syntax.
Even if the old syntax would always be there in the tool chain, it would cease to be user facing quickly and even if the upgrade is forced on a maintainer it should be relatively painless.

@jimmyfrasche My point is that requiring the user to update for the new syntax is a painful step.  Of course it can be done.  The question is whether we get enough benefit to impose that pain.
But to be clear my only point is that I don't think we can remove the old syntax.  I'm agnostic as to whether we should also support a new syntax.

@ianlancetaylor when you say “we can’t remove”, I don’t understand whether you mean “we can’t disable support for the old syntax starting from Go 1.X for any X” or “we can’t remove the code parsing the old syntax from the toolchain ever”. I’m assuming you mean the former.
Why don’t we just try? It’s a relatively isolated corner of the language syntax, and the worst that can happen is that we make a giant mistake of the migration plan and we end up having two syntax for build tags forever. The best it can happen is that we learn if the Go ecosystem/community moves fast enough to allow a backward incompatible change to happen in a couple (?) of years. It’s a good story to write either case, and the worst case seems far less worse than doing the same mistake on other parts of the language.
I think this issue is a good “reality check” for the Go 2 migration plan. My feeling is that if this can’t be done, then Go 2 can’t succeed in changing mistakes of the past (maybe it will succeed in other areas).

I generally agree with @rasky. People can upgrade to newer versions of the Go language (potentially with breaking changes like disabling the old syntax here) at their pace, since they can keep an older version of Go in their go.mod files as needed.

@rasky we've been told there is no plan to remove (vs deprecate) mistakes of the past; I assume that's still true. "Go 2" is just a tag for backwards-compatible additions.

@rasky I mean that we can never remove the old build tags syntax.  I'm not sure what you mean by "why don't we just try?"  Try what, exactly?
I outlined my thoughts on Go 2 transitions at https://github.com/golang/proposal/blob/master/design/28221-go2-transitions.md.  Following that plan, we can remove items from the language if necessary, but we have to consider that a very heavy cost.  We should only do it for clear mistakes that lead people to write incorrect programs.  We shouldn't do it just to make things nicer.

the worst that can happen is that we make a giant mistake of the migration plan

No, the worst that can happen is that people find it painful to update their existing packages, and decide that Go is an unstable platform, and move to something else.  That is hyperbole in this case, but I think it's the right general guideline to keep in mind when it comes to breaking existing code.

@rasky we've been told there is no plan to remove (vs deprecate) mistakes of the past; I assume that's still true. "Go 2" is just a tag for backwards-compatible additions.

Off-topic, but yeah... that whole excitement of "Go2" becoming like a Modula-2 moment for Pascal (or C++ for C) kind of fizzled out by now. "Go3" anyone?

I'd say the cost in question is that of having two formats instead of one. Note that having gofmt rewrite to the newer form eliminates many of those costs, such as training.

I'm in favor of adopting @josharian's suggestion to support both formats. The two formats are mutually exclusive, except for the case of a single variable, where the constraint evaluates the same regardless of the format. We'd just have to look for (,  ), ||, or && when parsing the // +build constraint.

For the record, I'm coming around to the idea of doing this, but I want to work through the transition plan. I'm not ignoring this issue. :-)

Still working on plan and not ignoring.

Almost have a proposal written. Soon!

I have a draft design (not a proposal) that I'd like to discuss with the community, but it seems like now is not a good time with the pandemic going on. Putting on hold, but I will definitely return to this and start a discussion when it seems more appropriate to do so.

Delayed by all that is 2020, but I've published the draft design I was working on in early April.
Design: https://golang.org/s/go-build-design
Video: https://golang.org/s/go-build-video
Code: https://golang.org/s/go-build-code
Q&A: https://golang.org/s/go-build-reddit
For Q&A about the draft design, let's use the Reddit thread. If there is a lot of discussion, my hope is that Reddit's proper threading will be more manageable than a long GitHub sequence here.
(This proposal issue is still officially on hold anyway. I'm not officially proposing anything, just sharing the design for feedback.)

The response to the draft design has been uniformly positive, so I've proposed in #41184 to accept the design, doing the prep in Go 1.16, landing the main functionality in Go 1.17, and finishing the transition in Go 1.18.
Will close this now, superseded by #41184. Thanks for the excellent discussion everyone.


So the trick is that when we refresh the page to retrieve the time dynamically etc... in the script, we retrieve the whole page. So we might as well use the whole page. For example, if we're in a topic page, we can make sure that if a message has been added since then, we add it dynamically. Similarly, if we're in the forum, we could add the topic if a new one has been created.
I don't know if this is clear


Compute error: Overflow happened in tpcds_logical_q58

Describe the bug
after disable skip_failed_rules.
tpcds_logical_q58 failed in
'simplify_expressions' failed due to unexpected error: Arrow error: Compute error: Overflow happened on: 100 *<PHONE_NUMBER>00000000000000000000000000000"
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Add any other context about the problem here.

I investigated it, I found bug in ConstEvaluator.
It will failed in expr.rewrite(&mut const_evaluator)?

cc @HaoYang670 .
After we fix this problem, we can disable skip_failed_rules

After we fix this problem, we can disable skip_failed_rules
This is really a great news! Great works @jackwener.

failed in "CAST(Int64(100) AS Decimal128(38, 38))"
"ArrowError(ComputeError("Overflow happened on: 100 *<PHONE_NUMBER>00000000000000000000000000000"))"

We've dealt with such issue in #3690.

failed in expression "CAST(Int64(100) AS Decimal128(38, 38))"

This sounds like a type inference bug, as opposed to something related to the handling of decimal arithmetic. In particular where has this scale of 38 come from? Such a datatype cannot represent anything greater 1 and so the query is perfectly correct to bail out with an error.
The original schema has a precision of 2, as it represents a monetary quantity, and so ending up with a scale of 38 is extremely suspect...

skip_failed_rules is now disabled by default by #6265
https://github.com/apache/datafusion/blob/19356b26f515149f96f9b6296975a77ac7260149/datafusion/common/src/config.rs#L546-L549
And tpcds_logical_q58 is not ignored and runs successfully in test suite:
https://github.com/apache/datafusion/blob/19356b26f515149f96f9b6296975a77ac7260149/datafusion/core/tests/tpcds_planning.rs#L319-L322
Closing issue


Docker image?

Have you thought about doing this as a docker image?

Good idea I will handle that !!

first off I'd like to say thank you for this repository!
what is the status of docker image "implementation"?

@kerwenwwer https://github.com/kerwenwwer/pwrstat-exporter/pull/6 fixes the issue


Is it possible to restore a backpack knowing its uuid?

Is it possible to restore a backpack knowing its uuid?


fix(37): Support files with spaces

Context
The following snippet does not work correctly:
const simpleThumbnail = require('simple-thumbnail')

const src = '/Users/myuser/Movies/My Movie With Spaces.mp4'
simpleThumbnail(src, dest, '200x?')

Objective

Wrap filename with quotation marks to support files with spaces

References

Issue: https://github.com/ScottyFillups/simple-thumbnail/issues/37

:tada: This PR is included in version 1.4.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-source-version-target/pull/51 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-source-version-target.git

Docs Build status updates of commit 408caa6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

versioningArchiveSourceFolder/TOC.yml
:white_check_mark:Succeeded
View (sql-server-2014 || azuresqldb-current || azuresqldb-mi-current || azure-sqldw-latest || >= aps-pdw-2016 || >= sql-server-2016 || >= sql-server-linux-2017 || sql-server-previousversions || sqlallproducts-allversions)

versioningArchiveSourceFolder/docfx.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 408caa6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

versioningArchiveSourceFolder/TOC.yml
:white_check_mark:Succeeded
View (sql-server-2014 || azuresqldb-current || azuresqldb-mi-current || azure-sqldw-latest || >= aps-pdw-2016 || >= sql-server-2016 || >= sql-server-linux-2017 || sql-server-previousversions || sqlallproducts-allversions)

versioningArchiveSourceFolder/docfx.json
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Using Multiple Where  ...

Is it possible to using multi-where  clause such a :
return base.Count(statement => statement
		.Where($@"ISNULL({nameof(FirstMonthDueEffectiveDate.Deleted):TC},0) = 0")
		.Where($"{nameof(FirstMonthDueEffectiveDate.Id):TC} <> @Id")
		.WithParameters(new { Id = id })) > 0;

instead of this sample code ?
return base.Count(statement => statement
		.Where($@"ISNULL({nameof(FirstMonthDueEffectiveDate.Deleted):TC},0) = 0 AND {nameof(FirstMonthDueEffectiveDate.Id):TC} <> @Id")
		.WithParameters(new { Id = id })) > 0;

I thought about it but it may create confusion.
Another idea is to declare the where clause separately as an explicit FormattableString, which can be manipulated dynamically as long as it's being kept as such, then pass it to the Where method still in its FormattableString form.


Unable to add a project (not found)

I just installed the extension and configured my token and username in the settings, but when I try to add a project it says

token is correct
username is correct
I have projects in playcanvas

Hum it fixed itself when I manually created a script on the editor and restarted vscode


Strange bug with backspace and up/down arrow keys

Click in NumericInput
Click in textarea
When textarea  changed -> setState({comment:e.target.value}) -> rerender form with textarea & NumericInput

If you typing chars - all good, but when type backspace, arrow up, arrow down textarea unfocused and changing NumericInput
Video: https://www.youtube.com/watch?v=kxUnupPc2GQ

I'm having the same problem with this component and a textarea on the same page. It seems like the numeric input is half stealing focus on update.
Can you add a prop that disables all keyboard interaction and another prop that disables all focus control within the component?

Should be fixed since 2.0.9.


Rival 310 Led problem

I just got a rival 310 and im not very experienced, i changed the led in the engine to multi color breath i selected the one with red and yellow and now the mouse has only white led and if i try to change it back doesent do anything.

Hum something similar has happened to be before. Can you check if when you change the other led both the changes are applied to both leds?

I fixed it i needed to close the engine all the way not just pressing the X button .

I fixed it i needed to close the engine all the way not just pressing the X button .

Hum, that's interesting. I might dive into that when I get time.


Tswhison/pull libs

Coverage remained the same at 79.973% when pulling 75d056a758718ce72182c7124b6d683ab995505d on tswhison/pull_libs into<PHONE_NUMBER>fa2305e87eb4287eb15a2efd281670 on master.


Can't Compare FormData Objects and Write Tests in Dio Library

Package
dio
Version
5.2.1
Output of flutter doctor -v
[!] Flutter (Channel stable, 3.10.1, on macOS 13.4.1 22F82 darwin-arm64, locale en-PL)
    • Flutter version 3.10.1 on channel stable at /Users/bartosz/fvm/versions/3.10.1
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision d3d8effc68 (7 weeks ago), 2023-05-16 17:59:05 -0700
    • Engine revision b4fb11214d
    • Dart version 3.0.1
    • DevTools version 2.23.1

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).

[✓] IntelliJ IDEA Community Edition (version 2022.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 71.0.6
    • Dart plugin version 223.7571.203

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 13.4.1 22F82 darwin-arm64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 114.0.5735.198

[✓] Network resources
    • All expected network resources are available.

Dart Version
3.0.1
Steps to Reproduce
About the problem
The main problem I am facing right now is being unable to write a unit test for one of the POST endpoints. It requires passing FormData, but I can't compare FormData to another FormData. This limitation prevents me from writing the unit test, and I encounter the following error:

Assertion failed: "Could not find mocked route matching request
for POST /internal/api/v3/screenshot/push { data: Instance of 'FormData',
query parameters: {}, headers: {content-type: multipart/form-data;
boundary=--dio-boundary-0598433441, accept: application/json,
content-length: 294} }"

Code
Here's the code related to the issue:
@immutable
class CreateScreenshotRequest {

  const CreateScreenshotRequest({
    required this.createdAt,
    required this.screenshotBytes,
  });

  FormData toFormData() {
    return FormData.fromMap({
      'created_at': createdAt.toString(),
      'screenshot': MultipartFile.fromBytes(
        screenshotBytes,
        filename: 'name',
      ),
    });
  }

  final DateTime createdAt;

  final Uint8List screenshotBytes;

  @override
  bool operator ==(Object other) =>
      other is CreateScreenshotRequest &&
      createdAt == other.createdAt &&
      listEquals(screenshotBytes, other.screenshotBytes);

  @override
  int get hashCode => createdAt.hashCode ^ screenshotBytes.hashCode;
}

Here's how the unit test looks like:
  test('No data is returned when HTTP call is successful', () async {
    dioAdapter.onPost(
      path,
      (server) => server.reply(200, ''),
      data: createScreenshotRequest.toFormData(),
      headers: _getRequestHeaders(),
    );

    final response = await apiClient.sendScreenshot(
      request: createScreenshotRequest,
    );
    expect(response, isA<Success>());
  });

Expected Result
The main problem I am facing right now is being unable to compare FormData objects directly. The Dio library does not provide a built-in comparison method or operator overload for FormData. However, it is important for me to be able to compare one FormData object to another.
Actual Result
final createScreenshotRequest = CreateScreenshotRequest(
  createdAt: DateTime(2023, 1, 1, 10),
  screenshotBytes: Uint8List.fromList([1, 2, 3, 4, 5]),
);
final secondCreateScreenshotRequest = CreateScreenshotRequest(
  createdAt: DateTime(2023, 1, 1, 10),
  screenshotBytes: Uint8List.fromList([1, 2, 3, 4, 5]),
);

expect(
   createScreenshotRequest.toFormData(),
   secondCreateScreenshotRequest.toFormData(),
 );

package:matcher                                     expect
package:flutter_test/src/widget_tester.dart 459:16  expect
test/client/tc_api_client_test.dart 1351:7          main..
Expected: <Instance of 'FormData'>
Actual: <Instance of 'FormData'>

Are you using http-mock-adapter to test? It has a matcher for FormData.

I couldn't find this in the package (http_mock_adapter: ^0.4.4). Could you show it?

Closing as https://github.com/cfug/dio/issues/1888#issuecomment-1627791864.


0.13.0 deprecation warning on union_tables

Deprecation Warning: The adapter function adapter.get_columns_in_table is deprecated and will be removed in a future release of dbt. Please use adapter.get_columns_in_relation instead.

closing in favor of https://github.com/fishtown-analytics/dbt-utils/issues/129


Docs: Fix ambiguous use of term metadata

REQUIREMENT=DEVELOPMENT failures. See https://github.com/DRMacIver/hypothesis/pull/289


:white_check_mark: restore testing, add CI workflow and README.md

Hi!
I pushed a bit more the repo and I think it's ready to move to the nushell org. Maybe nushell/nufmt?
Some comments:

I splitted the clippy_check.yml into pul_request.yml and main.yml, so we can have different workflows on every event.
I deleted everything inside the examples/ folder
I deleted the previous functions format_nu and format_nu_buffered and some tests with it. So this repo doesn't have more lines that are deprecated.
Also, I removed the benchmark and its dependencies.
and did some cleaning and rework on the README to make it fit the organization 😄

maybe we should leave the examples? i put them there are test cases.

Mmm I'm not sure. What do you think if we do examples in markdown documentation?
For bench marking, initially I was thinking on doing multi threading, but after looking on other big projects I realized they don't go that deep. I assume it's because it's a fast process in general.
On top of that, performance in rust is rarely an issue.
If we start waiting more that 2 seconds to format a file, then yes, we should lookout for performance. But initially it's not among my concerns.
I've never written performant software, or ever have to worry about memory management even, so bear in mind I'm not an expert

i'm fine with having markdown docs but what i'm saying was that in order to test whether the software is formatting things properly, i had examples to test on.
as far as performance, it all depends on the size of the file. i have a > 4000 line script that takes a while to parse. so if parsing takes a while, reformatting could take longer.
i'm also fine with having lots of smaller tests to test in small bits.

Sounds good to me.
I copied the example.nu which has 2400 lines and also ajust the bench for the current format_single_file function
How about now? should I add more changes? 🙌🏼

We can change it later when we get around to it, but example.nu is not a valid script. It's just a dump of all the examples from nushell. So, the syntax isn't correct in it. Although, I think it's a good test to see what nufmt does with an invalid script.

Mayhaps. The tests are below lib.rs and main.rs, to test both you can clone the project and run cargo test --workspace.

ohh wow i just did not see them, my bad :laughing:

The workflows are in main.yml

:ok_hand:


how to insert slide into a recyclerview?

how can I do it? thanks

Hello, may i know what did you do? :)


Pilz examples and update to ROS2

Description
This PR updates the Pilz industrial motion planner example doc, but also adds two actual examples that show Pilz with MoveGroup Interface and MoveIt Task constructor.
Checklist

[x] Required by CI: Code is auto formatted using clang-format
[ ] While waiting for someone to review your request, please consider reviewing another open pull request to support the maintainers

Closes #35

Running the examples works fine for me, but I receive this error message when I run ros2 run moveit2_tutorials pilz_move_group:
[ERROR] [1669380334.983363669] [moveit_kinematics_base.kinematics_base]: Group 'hand' is not a chain
[ERROR] [1669380334.983375070] [kinematics_plugin_loader]: Kinematics solver of type 'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'hand'
[ERROR] [1669380334.983401520] [moveit_kinematics_base.kinematics_base]: Group 'hand' is not a chain
[ERROR] [1669380334.983407822] [kinematics_plugin_loader]: Kinematics solver of type 'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'hand'
[ERROR] [1669380334.983417431] [moveit_kinematics_base.kinematics_base]: Group 'hand' is not a chain
[ERROR] [1669380334.983420266] [kinematics_plugin_loader]: Kinematics solver of type 'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'hand'
[ERROR] [1669380334.983423983] [moveit_ros.robot_model_loader]: Kinematics solver could not be instantiated for joint group hand.
[ERROR] [1669380334.983717360] [moveit_kinematics_base.kinematics_base]: Group 'panda_arm_hand' is not a chain
[ERROR] [1669380334.983725866] [kinematics_plugin_loader]: Kinematics solver of type 'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'panda_arm_hand'
[ERROR] [1669380334.983739692] [moveit_kinematics_base.kinematics_base]: Group 'panda_arm_hand' is not a chain
[ERROR] [1669380334.983743419] [kinematics_plugin_loader]: Kinematics solver of type 'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'panda_arm_hand'
[ERROR] [1669380334.983751284] [moveit_kinematics_base.kinematics_base]: Group 'panda_arm_hand' is not a chain
[ERROR] [1669380334.983753769] [kinematics_plugin_loader]: Kinematics solver of type 'kdl_kinematics_plugin/KDLKinematicsPlugin' could not be initialized for group 'panda_arm_hand'
[ERROR] [1669380334.983756654] [moveit_ros.robot_model_loader]: Kinematics solver could not be instantiated for joint group panda_arm_hand.

It does not seem to prevent the demo from working and doesn't happen with the mtc demo. Does that happen to you too?

The same thing happens with the regular tutorial, e.g. if you run,
ros2 run moveit2_tutorials move_group_interface_tutorial

So it's not unique to this example.


Adds a kexec action

Description
This PR adds the capability to kexec as part of an action
Why is this needed
Much Faster turn around for provisioning
Fixes: #
https://github.com/gianarb/tinkie/issues/16
How Has This Been Tested?

How are existing users impacted? What migration steps/scripts do we need?

Checklist:
I have:

[ ] updated the documentation and/or roadmap (if required)
[ ] added unit or e2e tests
[ ] provided instructions on how to upgrade

@thebsdbox Great job!!! A very valuable addition!!!

This PR is blocked by https://github.com/tinkerbell/tink/issues/434


[WIP] New ChunkLoader and ChunkCache

Description
Fix #1320 by adding asynchronous loading of single-scale Image layers.

[x] New feature (non-breaking change which adds functionality)

ChunkLoader
The new ChunkLoader can load asynchronously or synchronously. By "load asynchronously" we mean asarray is called in a worker thread. We call asarray in a worker thread so if it triggers IO or computation it does not block the GUI thread. When the worker thread finishes loading the chunk, it passes the chunk to the layer that requested it in the GUI thread. We pass via the GUI thread because we don't want worker threads directly calling into model/layer code.
Python's GIL
Python has a Global Interpreter Lock that prevents two threads from running Python bytecode at the same time. This is not as bad as it sounds because there are two common cases where multiple threads can execute at the same time:

One is doing disk or network IO or blocking on almost any system call.
One is doing computation that releases the GIL while doing computation implemented in C/C++. Many CPU intensive numpy / scipy  packages are implemented this way.

If we do need total independence between threads we can switch to processes, we are using concurrent.futures and it supports both threads and processes.
Code Changes

what
type
description

ChunkLoader
new class
Calls asarray in worker threads, has a thread pool. Owns the ChunkCache.

ChunkRequest
new class
Contains the array we want to load and information about it.

ChunkCache
new class
Sizes itself as a fraction of RAM. Stores loaded chunks so re-loading is instant.

QtChunkReceiver
new class
Shuttles newly loaded chunks from worker threads to their layer in the GUI thread.

synchronous_loading()
new context object
Turn async loading on or off.

ImageProperties
new tuple
Information about the Image that's passed into ImageSlice

ImageSlice
modified class
Added new load_chunk() and chunk_loaded() methods.

Image._load_single_scale()
new method
Move the single-scale load to own method.

Image._get_slice_shape()
new method
Is this right?

Test Changes
conftest.py changes

what
type
description

configure_loading
new fixture
Toggle async vs. async loading.

@pytest.mark.sync_only
new mark
Mark tests that cannot be run async.

skip_sync_only
new fixture
Skip sync_only tests when appropriate.

--async_only
new pytest flag
Run only the async tests.

Two test passes
Ideally we'd use a parameterized fixture to run test as sync and async in one invocation of pytest. This is not possible today because we get a segfault as shown in #1390. The PR shows the segfault happens without any async code, it's just from running the pre-existing tests twice.
Current Approach
To run sync tests: pytest
To run async tests: pytest napari --async_only
In .cirrus.yml we run both of these separately.
sync_only tests
14 tests have been marked @pytest.mark.sync_only. These tests will fail if run with async in most cases because they immediately read back data that was just set. With async that data might not be there yet.
TODO for this PR
New Debug menu items:

[ ] Enable/disable async.
[ ] Configure a "delay" in the worker threads for testing purposes.
[ ] View cache usage and set the cache size?

Other items:

[ ] Fix remaining async test failures
[ ] Address Image calling _create_image_slice in init, seems wrong.
[ ] Real world testing, beyond unit tests.
[ ] Finish logging support, flag to turn it on?

TODO for future PRs

Use Dask cache instead of ours. One cache is better than two?
Introduce UI that displays loading status, so user knows when data is done loading.
Introduce UI that can lock layers together, so they display in an "all or nothing" manor.
Async for multi-scale images (#845, #1300)
Async for non-image layers.

Early demo showing 1 second long async loads with 1 worker thread. Since we can only clear pending requests and not in-progress ones, the delay once you rest on a slice is 1-2 seconds. That is you potentially have to wait for one stale request to finish, then for your request to happen.
The loading: N text screens are created on the fly as placeholders, something to show until the real image is loaded. It'd TBD what we want to show in those cases for real long term. The images with just the number on there is the dataset being viewed.

Status
Above roughly works as seen in the GIF.  However currently it break lots of tests and I'm working on cleaning it up and making it 100% correct, in progress.
Futures
Right now the PR uses concurrent.futures but the futures are kept inside ChunkLoader. The ChunkLoader indirectly calls Image.chunk_loaded() in the GUI thread when the chunk has loaded. This 100% meets our needs for rendering. There was no reason to have the Layer hold Future objects for rendering:
https://github.com/pwinston/napari/blob/feature/chunk-loader/napari/utils/chunk_loader.py#L160-L162
Future in Layers
I know there 2 tests the current way won’t pass even if I fix all issues. Both tests are where we read data (image or thumbnail) immediately after creating a Layer or assigning new data to a Layer. With async loading the data simply isn't there yet.
In another thread @jni suggest the Layer could hold the Future. We could do that and then start using dask or something similar we create. So if you ask for an array it’s really a dask.delayed whose body waits on a future. This raises a lot alarm bells for me though. We’re adding two layers of complexity, first one layer to making this async, then a second layer to make them synchronous again!
Sync Model

This Sync Model is what's in master today. The big question mark what's behind an ArrayLike interface: could be regular data or IO or a computation. Accessing that to pull out the data is what causes the GUI to block. Once the data is out it's ndarray since the user can access directly.
Async Model

This Async Model is if we just push the Future object into the Layers with no other changes. Now everything is ArrayLike and it potentially chains all the way back. So if a user grabs a thumbnail and tries to access the bytes, it’s really access this whole chain: resolve the dask, load asynchronously, process the thumbnail.
So this is confusing because the model contains async objects in various states. Also the renderer is sharing objects with the API. And note the renderer will often be cancelling loads, so it's unclear how that will all work.

This Async Slicer design is a WIP not positive here. But it seems to have these desirable properties:

A Slice is an object derived from the model, it's not part of the model.
The renderer creates slices, but these slices are not accessible to the API. In general the renderer will have complex state that optimized and focused on rendering and is not accessible to anyone. For example the renderer will constantly be cancelling async loads.
Asking the API for a slice will block. Although the ChunkCache, not shown, is shared with the rendered. So asking for a slice the renderer as already loaded will be instant.
Asking the API for a slice will return a fully resolved slice with actual ndarray data.

4 seems 100% good for non-multi-scale but we might have to revisit for multi-scale. Because there there people might to receive giant slices but then only access a portion of it. So they don't want to wait for the full slice to load. At that point we are someone heading back to the Async Model diagram but with 2 important changes:

All the async objects are in the slice only, not in the model
The render has its own slice(s) not connected to the API slices

This Async Slicer is an alternative idea with these properties:

A Slice is an object derived from the model, it's not part of the model.
The renderer creates slices, but these slices are not accessible to the API. In general the renderer's state will be private. The renderer is one client of the model, the API is another one, and they shouldn't be mixed. The renderer will constantly be cancelling async loads and these shouldn't affect the API.
Asking the API for a slice will block. The ChunkCache, not shown, is shared so asking for slice from the API that's already being rendered will be fast.
Asking the API for a slice will return a fully resolved slice with actual ndarray data.

I really like this approach and think it dovetails nicely with goals I laid out in #1353 in particular:

After refactors layer model should have no knowledge of:

Where the sliders are
Where the camera is
Where the mouse cursor is
What part of the data has been sliced
What part of the data is being viewed
What part of the data has been clicked on or hovered over
The thumbnail

Looking forward to discussing more in the meeting today!! It definitely relates to the event handler / MVC refactors too

Napari meeting 2020-06-18:

Let's just disable async on those 2 problemated tests.
Long term those tests will not exist, when model/view are decoupled.
For general reasons will have a flag to toggle sync vs. async.

To summarize the goal is:

setting
result

NAPARI_ASYNC_LOAD=0
All tests pass in synchronous mode.

NAPARI_ASYNC_LOAD=1
All tests pass async, except two are forcing into sync mode.

Even with NAPARI_ASYNC_LOAD=0 it's not running the original code, it has changes, it's just that the actual async part is bypassed.

Tests are all passing @pwinston, very nice!! Is this ready for some review now, should @jni @tlambert03, and I do a pass through the code?

Not ready yet. These are sync tests only. I’m still fixing some tests for Async and then need to tidy things up. I will ping everyone when ready for review.

There was this comment on napari-omero:
https://github.com/tlambert03/napari-omero/pull/1#issuecomment-649629470
I'm pretty much restating above here, but it's worth spelling it out more than once I think. This is basically the thought process above:

Pre async everything was static and that was good.
Naively adding async everything can be in all different states all the time, that's bad.
Let's creates slices asynchronously, but the slices are concrete (ndarrays). That's good for non-multi-scale.
4 But for multi-scale we need a blend of 2 and 3. The slice won't be fully resolved with data, it will contain futures or promises of some kind, that only get resolved as needed.

As for what we are actually doing:
A. To solve #1320 I'm really do 3 above, but it's the slice is still wrongly inside the model.
B. We can 3 to factor out the view from the model, but isn't strictly required.
C. Solving #845 and #1300 will require doing 4.

Done:

New ChunkLoader, ChunkRequest, ChunkCache classes.
New synchronous_loading() context object
New ChunkReceiver in layerlist.py uses weakref
ImageSlice has new ImageProperties
ImageSlice has new load_chunk and chunk_loaded methods
Image now creates an ImageSlice every time _set_view_slice is called
New Image._get_slice_shape(), but is it right?
Split out Image._load_single_scale() into its own method

TODO:

[ ] Use EmitterGroup instead of QObject in ChunkLoader
[ ] Add cachetools LRUCatch to ChunkChache
[ ] Two test passes: async and sync working locally
[ ] Two test passes: on CI
[ ] Fix why does Image need to call _create_image_slize in init
[ ] Full support for multiple layers (not yet even tested)

I removed the "status comment" above and updated the main PR description with a nicer accounting of what's done and what's remaining on this PR.

Below is showing 16 image layers each with 0.5 second sleeps, using 6 ChunkLoader threads.  Without async switching slices hangs for around 8 seconds. With async it takes around 400ms to switch slices and around 1.5 seconds for the slice to be fully loaded, and you can interrupt it during those 1.5 seconds.
This is a big improvement, but still slow. The 400ms is 2.5Hz. It looks like the time is spent calling refresh() 16 times and then vispy spends it setting up the 16 textures and drawing them. Speeding that up is probably a follow-on PR.

Added tracing of the ChunkLoader threads. The initial MouseButtonPress event is 438ms. It's calling refresh() 16 times and then a 245ms Paint event. This is really all to load the blank images that are placeholders until the slice is actually loaded. So that's kind of silly since it's blank. I think pre-async we actually put a little 1 pixel/voxel placeholder in there until the real data was in place. We could maybe do that again except it would break tests that check the shape is the same. We probably do need to fix this though, having this 400+ ms frame really destroys the framerate and makes the slider still feel pretty laggy.

This is now using 1x1 pixels placeholders but it's still slow! The MouseButtonPress switching to a new slice is 410ms: 92ms in set_point on the napari side and 310ms in Paint on the vispy side:

Here it is drawing just one 1x1 image. It takes about 18ms, where 12ms is flush_commands which means just waiting on the card, which is hard to speed up:

We either need to optimize the napari and vispy sides so we can create the 1x1 pixel images much faster, or we need to amortize the creation of these placeholders over multiple frames. Say create only 1 new one per frame.

I'm just catching up here @pwinston and will need to take this in during a deeper dive tomorrow, but it does seem like we're hitting some limits of our architecture here with 16 layers present and how we use vispy.

The reason we used the full size blank images was because many tests checked that the layer data was the correct shape. If we change back to 1 pixel/voxel placeholders those tests will break, we'll have to set them to async_only

I think that's fine, it was an assumption that made sense at the time, we can think about better tests moving forward.

so it seems like there some large baseline cost for vispy or opengl to draw a new image regardless of the size.

Indeed!

Image still has a 1 pixel placeholder, but the vispy visual knows this is empty and so it doesn't actual create anything in the scene at all. That should cut out the 300ms.

I think this could be a good thing to try first. I wonder if you can use the node.visible=False parameter here to achieve this. I think with visible False there will be no draw and no overhead, you could turn visible on the node to True only when you needed/ wanted. https://github.com/napari/napari/blob/master/napari/_vispy/vispy_base_layer.py#L147

Go further, the Image layer is in a special empty state while loading so it doesn't have data at all yet. That hopefully can cut down on the 90ms part as well as the 300ms part.

That could make sense too. We might be able to trim down each of those set_point calls too - seems like each one is ~5ms.
Looking forward to discussing more!

I think this could be a good thing to try first. I wonder if you can use the node.visible=False parameter here to achieve this

This worked and was only a few lines. I created a new event Layer.events.loaded. Now VispyBaseLayer will not set the node to visible unless bothself.layer.visible and self.layer.loaded are True. Non-async layers will just be always loaded so no change for them.
This cuts out the 300ms of rendering up front so the slider is more like 10-12Hz instead of 2.5Hz. This does not feel that bad for a slider with 16 layers. More layers will slow it back down though. To fix that I think we need to amortize. I think we need to amortize initiating the loads (what we've been talking about) but also when the loads finish. Right now if N chunks finish loading around the same time, we will draw all N the next frame which will be a slow frame. Really we should draw only M new chunks per frame.
This is the "page into VRAM over time" part of the rendering doc. Although it's really more general, it's "do everything over time" in order to prevent slow frames. Although we might want to let the framerate sink some, because then we can grind through the work faster. So it's a trade-off between framerate and load speed.
But I will try to push off amortizing for now. I'd rather focus on getting this usable by people for real-world work, so that we can prioritize improvements and bugs. Amortization may or may not be high on that list.

Tests

Using the two separate invocations of pytest since there's no solution for #1390 yet. Not a big deal we can have two invocations. Tests that cannot possibly pass with async are marked sync_only.

Multi-layer testing

I've been running 1 thread and 1 layer since day one. Created test shown above with 16 layers and 6 threads.
Changing slices was 2.5Hz even with 100% of the work/sleep in worker threads, very disappointing.
Napari set_point initiating the loads was slow, and then drawing the blank textures was slow, even if they are sized down to 1x1 pixel. Fixed the draw part by marking the nodes invisible until loaded.
This gets us to 10Hz which seemed okay. Have ideas to go much faster but waiting.

Testing #1320 (Jupyter)
Two problems:

Sometimes single-step will step ahead two slices.
Initiating the loads is really slow, like 800ms even with worker threads.

All day debugging 1. Problem is events get all messed up with chunk workers, even though they signal into the GUI thread to do all work. Hoping a queue of loaded chunks that we check in one fixed place will help.
For 2 I suspect the Torch stuff is holding the GIL and we might need to do it in a separate process, but need to do more investigation once 1 is fixed.

Closing now that we have #1495 with only the async portions. The perfmon portions were split out and merged as #1453.


Subcommand and help text

Hi there,
is there any possibility to create a command with a subcommand like this :
cli test:add
while cli is the name of the app, test is the command and :add is the subcommand ?
I'm also wondering if the possibility exists, whether the help text can be formatted like this:
add     #  add a new template
with the hash as a divider.
And maybe i can also add a custom usage text ?

@Synturas currently it expects commands to be space delimited, but this is an interesting idea. I'd be happy to take a look at a PR adding the ability to set the command/subcommand delimiter.
You can override the help print out via the exposed package level variables containing the templates.

Given that this is from last year, I think I'm comfortable closing it 🙂 feel free to re-open / open a new issue / comment in support if there's still interest here!


Wording updates

Project information

[ ] Add "Provide a" to the project title question
"Provide a Project title. Be descriptive about the geographic region. We advise not using years in the title."

Benefits

[ ] Remove the word "Sustainability." from the first question
"~Sustainability~. Please summarize the benefits that the project will bring to the targeted areas..."

Project planning and management

[ ] Change "Completion Date" to "Project Completion Date"

Template uploads

[ ] Rename template 9 to "Template 9 - Backbone and Geographic Names"

Combined with #597


Mention how to factory reset/reset root keys

Hi,
The 'Initializing Root Keys' wiki page mentions that you can factory reset and why you might want to do that, but doesn't mention how to.
For anyone wondering, the command is
python3 precursorupdater.py --factory-reset

There's now a page for that! Thanks for the feedback.
https://github.com/betrusted-io/betrusted-wiki/wiki/Factory-Reset


Whats the point of setting @BuiltValue() annotation?

Question
When you just declare your built value class without any built value annotation, the logs of this prints:

[WARNING] hive_built_value_generator on x/xx/model/model.dart:
no annotation on Model

And if I put it, it prints:

annotation on LoadEvent: true

But I don't understand why do I need to put it, it already works without it
Code sample
This one does not have it and prints the warning:
part 'load_event.g.dart';

@HiveType(typeId: 12, adapterName: 'LoadEventAdapter')
abstract class LoadEvent implements Built<LoadEvent, LoadEventBuilder> {
  factory LoadEvent([void Function(LoadEventBuilder b) updates]) = _$LoadEvent;

  LoadEvent._();

  static Serializer<LoadEvent> get serializer => _$loadEventSerializer;

  @HiveField(0)
  @BuiltValueField(wireName: 'created_at')
  DateTime get createdAt;

  @HiveField(1)
  LoadStatus get code;
}

But when I put it like @BuiltValue() it still prints this:

annotation on LoadEvent: true

part 'load_event.g.dart';

@HiveType(typeId: 12, adapterName: 'LoadEventAdapter')
@BuiltValue
abstract class LoadEvent implements Built<LoadEvent, LoadEventBuilder> {
  factory LoadEvent([void Function(LoadEventBuilder b) updates]) = _$LoadEvent;

  LoadEvent._();

  static Serializer<LoadEvent> get serializer => _$loadEventSerializer;

  @HiveField(0)
  @BuiltValueField(wireName: 'created_at')
  DateTime get createdAt;

  @HiveField(1)
  LoadStatus get code;
}

Version

Platform: iOS, Android, Mac, Windows, Linux, Web: all
Flutter version: 3.22.2
Hive version: 2.3.0

i believe this handles nested builders

Im not sure, we have multiple nested builders, and we never used that tag, it works fine :thinking: