Complete SukiBackground rewrite.

Major Changes

Completely rewrote the background renderer and simplified the associated API.
Background is now rendered entirely on the GPU via SkSL shaders and Skia's rendering API.

This means animations can run at the native framerate of the application completely unrestricted.
As the shader is run per-frame regardless, animated performance is now absolutely identical to static performance.

A set of 4 default shaders have been included to get started with, however these aren't final and just represent a reasonable starting point.

Unfortunately I wasn't able to recreate the precise way the old background looked, but I think the replacements are far nicer.

The API has been simplified massively, now every property related to the background is directly a part of the SukiWindow

New API surface includes BackgroundStyle for the default included ones, BackgroundShaderCode which allows devs to directly supply an SkSL shader string and BackgroundShaderFile which allows devs to give the filename of an embedded resource SkSL file to load and use. The properties take priority in the form File > Code > Style.
These properties are duplicated in SukiBackground without the Background prefix.

The SukiBackground control is now fast enough and generic enough to be used for other purposes, if you want to use it for GlassCard it should be absolutely fine, I haven't stress tested it myself but I see no reason why it would be an issue.

SukiBackground fully supports transparency too, this can even be used in shaders for the window and will work as-expected.

Minor changes

Tweaked the menu bar to account for the new background controls.
Tweaked the theming menu and it's appearance to account for the new background controls.

Important note

The version of Skia Avalonia currently targets has a somewhat more limited version of SkSL and possibly some performance issues, however Skia 3.0 is technically currently compatible with Avalonia 11.1 (though it won't be made the default until Avalonia 12 at least) so there is some scope for SukiUI to target SkiaSharp 3.0 if necessary. Related issue - AvaloniaUI/Avalonia#15503

Outstanding issues

This feature really needs to be tested on multiple machines and OS' to ensure the hardware acceleration is behaving as expected cross-platform, hard one for me to test locally.
SukiBackground/SukiWindow now has an (essentially) entirely duplicated set of properties, but I think this is a worthwhile tradeoff to massively simplify the API for devs.
ManagedFilePicker currently just uses the Flat style for it's background to simplify things.
The shaders are (heavily adapted) versions of suitable things I found on shadertoy and aren't necessarily final.
The colours passed into the shader for dark/light aren't exactly black/white just to offset some shader multiplication issues.
The flat shader doesn't look very good, it just uses the base color passed in instead of making any attempt to look nice -  but as an option for people who want a simple non-busy background I think it's very valuable.
This feature needs to be well documented for devs to take full advantage of it, with the focus being on making sure devs are aware of the data that is passed into the shader that they can use to render effects.

Right now the effects out of the box I think are fairly comprehensive

The uniform data passed into the GPU is currently fixed - iTime, iResolution, iBase, iPrimary, and iAccent are all that are made available to devs, though this should be enough to produce any necessary effect there is some scope for additional data.

A notable example might be the pointer position for creating backgrounds which are reactive to user input in some way, though how useful devs might find this is another question.

As far as I know (which isn't very far I'll admit) Skia's fragment shader doesn't allow you to sample the "texture" of the pixels being rendered "underneath" it, which means it can't be used for blurs unfortunately. Though I could be entirely wrong, the documentation is basically non existent.

Hi doombox !
These are great news. I tried it and it indeed seems to make some things smoother. Weirdly, popups like MenuItem seem to be much smoother.
Isn't it possible to keep the old SukiBackground available as a possibility ? We can't overwrite the old background if we haven't something +/- exactly similar. Either we keep the old background as a possibility, and we add these new background options having time to polish it, or we need to ensure we have the same result as the old one before deleting it.
Except that, the performance gain is super promising and as you said, it opens load of opportunity to use it elsewhere.

I can spend some time trying to recreate the old version in shaders, but honestly the old version has only been available since the start of the preview of 6 so it's quite weird to call it the old version and it was never particularly good anyway in terms of appearance, the colours were always weird. It does sort of exist (the same sort of style) in the Gradient shader. I can probably tweak it some to make it closer to the "old" one.
I think it's a bad idea to hold onto very bad legacy code that has never been out of preview, it's just more time and effort to maintain and the stack is completely different now which would increase complexity a lot trying to support both. The time would definitely be better spent improving on this new correct approach that is actually usable.

I've adjusted the gradient shader so it's a bit closer to the old style gradient shader, but the colours are still not "wrong" enough so I'll need to have a think about that one.
I also fixed a bug that slipped through where new windows weren't detecting the base theme correctly.

I can spend some time trying to recreate the old version in shaders, but honestly the old version has only been available since the start of the preview of 6 so it's quite weird to call it the old version and it was never particularly good anyway in terms of appearance, the colours were always weird. It does sort of exist (the same sort of style) in the Gradient shader. I can probably tweak it some to make it closer to the "old" one.

I guess it's subjective, I think the legacy one is wonderful. But that's why it's a good idea to offer multiple possibilities then !
I tried to tweak the gradient and indeed I'm optimistic that I can recreate the legacy one. I think at the end we should have 3 possibilities. "Bubble", the current legacy one, "Flat" and "Gradient", which would be a softer gradient, maybe without bubble, just with primary color. Something like this maybe :

I will try to tweak Gradient a little more for now, confirming I can recreate the Bubble one I like. So don't worry you don't have to do it for me 😵

One of the big issues I had with recreating the older version was finding a workable simplex noise function, which is what the old one relies on.
Beyond that the code can (mostly) be recreated 1:1, but achieving the precise effect might be a little tricky.


Clarify which versions no-include-email option applies to

It would be handy if the readme mentioned that this option does not apply to AWS CLI versions greater than or equal to 1.17.10.

This was solved by PR #82


[WIP] Language Server Migration

Fixes #4742
On this PR we will adapt editor code introspection and linting functionality to comply with Microsoft/language-server-protocol specifications. During this PR, the following tasks must be accomplished:

[x] Write a simple TCP/ZMQ transport proxy that communicates between an LSP server and our client.
[x] Write a generic TCP v3.0 Language Server Protocol Client (lsp-client) that communicates with any given language server
[x] Improve ZMQ interprocess communication
[x] ~Start specific language LSP server when a file of that language is first opened~
[x] ~Close specific language LSP server when there aren't any files of that language opened~
[x] Integrate lsp-client to our existing introspection calls
[x] Integrate lsp-client to handle linting functionality
[x] ~Handle hover calls~
[x] ~Integrate lsp-client to perform symbol searching~
[x] Integrate lsp-client to retrieve function definitions and documentation
[x] Integrate lsp-client to handle go-to-definition requests
[x] ~Integrate lsp-client to handle code formatting~
[x] Add file save and file close calls
[x] Improve teardown and application exit closing behaviour
[x] ~Add a settings panel to configure and add different Language-servers~
[x] ~Add client/transport tests~

Note: Crossed out features of this list are to be implemented/discussed on subsequent PRs, please see: https://github.com/spyder-ide/spyder/pull/4751#issuecomment-333618640

Plugin configuration page preview:

@andfoy why do we need to expose such fined grained details yo the user via the UI?

Because LSP aims to be a generic framework to handle any language, an use may replace or add new servers to interact with Spyder, that includes the possibility of communicating with remote instances.

Hello @andfoy! Thanks for updating the PR.

In the file spyder/app/mainwindow.py, following are the PEP8 issues :

Line 154:1: E402 module level import not at top of file
Line 155:1: E402 module level import not at top of file

In the file spyder/config/main.py, following are the PEP8 issues :

Line 624:14: E131 continuation line unaligned for hanging indent

In the file spyder/utils/code_analysis/lsp_transport/producer.py, following are the PEP8 issues :

Line 68:13: E722 do not use bare except'

@ccordoba12 @goanpeca I'm proud to present the first LSP migration milestone: Linting notifications!

It seems that highlighting regions are working only with some fonts:

Any ideas @goanpeca @ccordoba12 ?

No idea, but this is a terrific achievement! Nice job @andfoy!

I've decided to highlight the warnings by changing the background color instead of underlining the lines.

That's really nice! But I think it should only be shown only when the mouse is over the error mark.
Also, you need to use the new decorations stuff introduced by @rlaverde in PR #5203.

This is looking pretty neat @andfoy whats next on the plate? Completions?

But I think it should only be shown only when the mouse is over the error mark.

I think we should display the warning regions at all times, this guarantees that all errors and warnings are taken into account and corrected eventually. I don't know if this is the default behaviour for most editors, but at least on Sublime this is true:

@andfoy, Sublime doesn't have as many decorations as we do (line, cell and folding). So please use a transient decoration instead, to not visually bother the user.

This is actually due to the difference between the font employed by TextDecoration and the font defined by the user.

Yes, It's also failing in master when some fonts, thanks for noticing it, I think that setting the user defined font to the TextDecoration will be enough, I'll make a PR with that fix.

That and also snippet suggestions

Language server can provide snippets? or only the completions? how that will interact with #4289 ?
PD: I just take a look and it looks pretty great. 🎉

Language server can provide snippets? or only the completions? how that will interact with #4289 ?

@rlaverde It seems that LSP servers can provide snippets and completion hints. I would take a more careful look into this to see if we can use the solution provided by PR #4289
/**
 * Defines whether the insert text in a completion item should be interpreted as
 * plain text or a snippet.
 */
namespace InsertTextFormat {
	/**
	 * The primary text to be inserted is treated as a plain string.
	 */
	export const PlainText = 1;

	/**
	 * The primary text to be inserted is treated as a snippet.
	 *
	 * A snippet can define tab stops and placeholders with `$1`, `$2`
	 * and `${3:foo}`. `$0` defines the final tab stop, it defaults to
	 * the end of the snippet. Placeholders with equal identifiers are linked,
	 * that is typing in one will update others too.
	 *
	 * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md
	 */
	export const Snippet = 2;
}

@ccordoba12 Is this the expected warning selection highlighting behaviour?

Looks nice but it seems the selection stays forever ? or there is a timeout ?

Looks nice but it seems the selection stays forever ? or there is a timeout ?

Maybe using the leaveFunction in the LineNumeberArea to remove the decoration.

@goanpeca It disappears until another warning is selected, or if the document is updated.

t disappears until another warning is selected, or if the document is updated.

Maybe there should be timeout?

:-|, don't know 2 seconds?

@goanpeca @ccordoba12 I present the second milestone of the LSP migration: Code autocompletion

I've just added a tooltip to display the related documentation each time a completion object is selected:

@andfoy that is pretty cool. I like the idea, but I think we can improve the UI to display this in a more compact nicer way, but do not worry about that too much :-)

@goanpeca I will leave it as it was presented on the previous GIF, but I agree that a better UI solution can be implemented, however let's leave that for another PR

@goanpeca @ccordoba12 Yet another milestone: Signature hints

Note: I don't know exactly why the title is being splitted

@ccordoba12 @goanpeca @rlaverde What do you think about our new hovering feature:

What do you think about our new hovering feature

I like it, my only concern is that it could be implemented with an EditorExtension instead of adding more code to the CodeEditor

it could be implemented with an EditorExtension

How can I implement it as an EditorExtension?

How can I implement it as an EditorExtension?

Create a new Editor Extension in sourcecode/extensions
Move the request_signature and process_signatures to it (changing references to self for self.editor)
Create a method _on_key_pressed and connect it to CodeEditor.sig_key_pressed, and move the logic that you put into KeyPressEvent, and handle_parentheses to it
Add the extension to the CodeEditor.editor_extensions

You could take a look to https://github.com/spyder-ide/spyder/blob/master/spyder/widgets/sourcecode/extensions/closequotes.py
You could use on_state_changed() or on_install() to connect sig_key_pressed (I don't know if this option could be activated/desactivated)

After an initial discussion with @ccordoba12, we've decided to delay/disable some features (to be) introduced by this PR:

Hover features
Documentation tooltips during auto-completion
Find all symbol references

All the previous UI features and others that are available as part of the LSP protocol shall be discussed before being implemented.

@rlaverde is going to start to review this one. Good luck!

Here it is: Go To Definition

@andfoy yeiii! whats missing now :-p ?

It's only missing clean up and adapting our old tests to run with LSP.

@andfoy I'm trying to test it locally and It isn't working for me, could  you review that there isn't some locals configurations that you haven't committed?
This error happens at startup, and spyder freezes when writing anything that fire a completion call:
Traceback (most recent call last):
  File "/home/rlaverde/code/spyder/spyder/plugins/editor.py", line 615, in report_open_file
    language.lower(), self.lsp_editor_settings[language.lower()])
KeyError: 'python'

@rlaverde Right now, the settings are defined to use an external instance of the server, please check out your configuration at the LSP configuration tab.

@andfoy any chance of trying to use lua as another POC ?

@goanpeca Yes, it should be supported by the Lua LSP server https://github.com/Alloyed/lua-lsp

@andfoy ok, we need to get this plugins going as conda packages!

@ccordoba12 @goanpeca I think we're only missing general code cleanup and fixing the tests

Great! I'll add pyls to Travis and Appveyor this weekend so you can start fixing our tests.

@ccordoba12 I'm ready to start with test adaptation

@ccordoba12 I think I'll need some help to adapt the tests

Note to self: Test and fix incompabilities on Windows

@andfoy, it's great to see that our tests are finally passing in Travis and also in Appveyor for Python 2, Cheers for that!!
However, they are taking now 2 minutes more to finish than before. That's probably because pyls is started on every test but only used on very few.
That's why I added the SPY_TEST_USE_INTROSPECTION env var, i.e. to make our tests use introspection only when that var is True. So please use it to decide when to start or pyls in our tests.

Also, that could be causing the hangs in Appveyor and Python 3.6. I mean, what I noticed with our previous architecture is that our introspection servers consume a lot of memory on their own and they are not killed until our entire test suite finishes.
With 3 servers started per test in test_mainwindow.py and test_editor, that was causing a lot of problems in our CIs.

Also, please revert the blank removals you introduced in several files (e.g. app/mainwindow.py and widgets/mixins.py). Those would make my life really hard when merging with split-plugins.

@ccordoba12 I'm having random stalled tests on Python 3.6 on Appveyor, also, the NO_CONDA setup is failling on Travis, although if you debug manually via SSH, it will work without any problem. Any ideas?

That's why I added the SPY_TEST_USE_INTROSPECTION env var, i.e. to make our tests use introspection only when that var is True. So please use it to decide when to start or pyls in our tests.

Right now, an instance of pyls is launched each time a mainwindow is created, shall I override that behaviour?

Right now, an instance of pyls is launched each time a mainwindow is created, shall I override that behaviour?

Yes, you need to launch pyls only when os.environ.get('SPY_TEST_USE_INTROSPECTION') = True. That env var is set when a test is marked with @pytest.mark.use_introspection.

Yes, you need to launch pyls only when os.environ.get('SPY_TEST_USE_INTROSPECTION') = True. That env var is set when a test is marked with @pytest.mark.use_introspection.

But the env var should be checked directly on mainwindow.py?

@ccordoba12 Is CI set when running on a CI?

Is CI set when running on a CI?

Yes, on Travis and Appveyor. But not by us, by them.

@andfoy, please skip all pyls tests on Windows and Python 3.6 to see if that stops Appveyor from hanging.

@andfoy, this is terrific! Finally all is green, yay!!
However, this PR will add almost 3400 lines! What modules or files do you want us to review in depth?

However, this PR will add almost 3400 lines! What modules or files do you want us to review in depth?

It would be good to review the changes done on codeeditor, as they represent the final achievement of this PR. Also, it would be nice to do some kind of beta testing for the feature replacement on a real scenario, such that we can test the actual performance of the client.

@ccordoba12 Could you please give this PR a try?

@ccordoba12 I've added an option to set LSP options as a JSON object on the LSP configuration panel. With this addition, the PR should be complete.

Tasks before merging this PR:

Revert blank removed spaces.
Remove unwanted dependencies (coloredlogs).
Put lsp logs in Spyder config dir.
Ask to pyls devs why Rope is not taking precedence over Jedi when Rope is faster.
Fix Rope completions on untitled files in pyls (deactivate Rope for now in Spyder).

Also:

Deactivate every plugin except Jedi and pyflakes.

@andfoy, the error in Circle seems valid, unless you prefer to skip testing spyder/utils/code_analysis/lsp_client.py.


fix: update kubectl exec syntax to remove deprecation warning

Proposed changes
Problem: Deprecation warning from kubectl when using exec without the --
❯ kubectl exec -it -n nginx-gateway $NGINX_POD -c nginx /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
E0710 07:52:34.700510   45075 websocket.go:296] Unknown stream id 1, discarding message
/ $

Solution:
add the -- syntax before the command to be executed
Testing:
❯ kubectl exec -it -n nginx-gateway $NGINX_POD -c nginx -- /bin/sh
/ $

Please focus on (optional): If you any specific areas where you would like reviewers to focus their attention or provide
specific feedback, add them here.
Closes #2217
Checklist
Before creating a PR, run through this checklist and mark each as complete.

[ ] I have read the CONTRIBUTING doc
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have checked that all unit tests pass after adding my changes
[ ] I have updated necessary documentation
[ ] I have rebased my branch onto main
[ ] I will ensure my PR is targeting the main branch and pulling from my branch from my own fork

Release notes
If this PR introduces a change that affects users and needs to be mentioned in the release notes,
please add a brief note that summarizes the change.

Thanks @sjberman and @mjang. What is the process to get this merged? I don't have merge permissions.

Thanks @sjberman and @mjang. What is the process to get this merged? I don't have merge permissions.

We can merge @aknot242. Thanks for the fix!


Uninstall java cask failing

General troubleshooting steps

[x] I have checked the instructions for reporting bugs (or making requests) before opening the issue.

[x] None of the templates was appropriate for my issue, or I’m not sure.

[x] I ran brew update-reset && brew update and retried my command.
[x] I ran brew doctor, fixed as many issues as possible and retried my command.
[x] I understand that if I ignore these instructions, my issue may be closed without review.

Description of issue
Trying to uninstall java, but it fails. It says it may require elevated privileges, but never actually asks for my password. Tried all of the above troubleshooting steps. Even restarted the computer (after trying sudo -k) to ensure there could be no credential caching issue.
Output of your command with --verbose --debug
brew cask uninstall java --verbose --debug
==> Uninstalling Cask java
==> Uninstalling Cask java
==> Un-installing artifacts
==> Determining which artifacts are present in Cask java
==> 4 artifact/s defined
#<Hbc::Artifact::Uninstall:0x007fc1af5f7df0>
#<Hbc::Artifact::Pkg:0x007fc1af5f7da0>
#<Hbc::Artifact::PostflightBlock:0x007fc1af5f7d28>
#<Hbc::Artifact::Zap:0x007fc1af5f7cd8>
==> Un-installing artifact of class Hbc::Artifact::Uninstall
==> Running uninstall process for java; your password may be necessary
==> Removing launchctl service com.oracle.java.Helper-Tool
==> Executing: ["/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/bin/launchctl", "remove", "com.oracle.java.Helper-Tool"]
==> Not privileged to remove service.
Error: Command failed to execute!

==> Failed command:
/bin/launchctl remove com.oracle.java.Helper-Tool

==> Standard Output of failed command:

==> Standard Error of failed command:
Not privileged to remove service.

==> Exit status of failed command:
#<Process::Status: pid 2524 exit 1>
Error: Uninstall incomplete.
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb:12:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb:35:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:98:in `run_command'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:168:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `exit'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `rescue in run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:156:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'

Output of brew cask doctor
brew cask doctor
==> Homebrew-Cask Version
Homebrew-Cask 1.2.3-25-gb05545a3b
caskroom/homebrew-cask (git revision 857b7; last commit 2017-06-18)
==> Homebrew-Cask Install Location
<NONE>
==> Homebrew-Cask Staging Location
/usr/local/Caskroom
==> Homebrew-Cask Cached Downloads
~/Library/Caches/Homebrew/Cask (9 files, 646.6MB)
==> Homebrew-Cask Taps:
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask (3639 casks)
/usr/local/Homebrew/Library/Taps/caskroom/homebrew-fonts (1106 casks)
==> Contents of $LOAD_PATH
/usr/local/Homebrew/Library/Homebrew/cask/lib
/usr/local/Homebrew/Library/Homebrew
/Library/Ruby/Site/2.0.0
/Library/Ruby/Site/2.0.0/x86_64-darwin16
/Library/Ruby/Site/2.0.0/universal-darwin16
/Library/Ruby/Site
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0/x86_64-darwin16
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby/2.0.0/universal-darwin16
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/vendor_ruby
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/x86_64-darwin16
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin16
==> Environment Variables
LANG="en_US.UTF-8"
PATH="/usr/local/bin:~/.dotfiles/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:~/.fzf/bin:/usr/local/Homebrew/Library/Taps/homebrew/homebrew-bundle/cmd:/usr/local/Homebrew/Library/Homebrew/shims/scm"
SHELL="/usr/local/bin/bash"

This looks like it is already running as privileged:
==> Executing: ["/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/bin/launchctl", "remove", "com.oracle.java.Helper-Tool"]

Should be:
==> Executing: ["/usr/bin/sudo", "-E", "--", "/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/usr/bin/sudo", "-E", "--", "/bin/launchctl", "remove", "com.oracle.java.Helper-Tool"]

Can you please try:
brew cask uninstall java --force --verbose --debug

And if that doesn't work:
brew cask install java --force

brew cask uninstall java --verbose --debug

Both install and uninstall should prompt you for a password. If they don't I suspect that it is an issue with you setup.

Note I executed the commands in the order you provided in one login session of the bash shell.
Output of brew cask uninstall java --force --verbose --debug (which did not ask for password):
brew cask uninstall java --force --verbose --debug
==> Uninstalling Cask java
==> Uninstalling Cask java
==> Un-installing artifacts
==> Determining which artifacts are present in Cask java
==> 4 artifact/s defined
#<Hbc::Artifact::Uninstall:0x007f9099dc4598>
#<Hbc::Artifact::Pkg:0x007f9099dc4548>
#<Hbc::Artifact::PostflightBlock:0x007f9099dc44f8>
#<Hbc::Artifact::Zap:0x007f9099dc44a8>
==> Un-installing artifact of class Hbc::Artifact::Uninstall
==> Running uninstall process for java; your password may be necessary
==> Removing launchctl service com.oracle.java.Helper-Tool
==> Executing: ["/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/bin/launchctl", "remove", "com.oracle.java.Helper-Tool"]
==> Not privileged to remove service.
Error: Command failed to execute!

==> Failed command:
/bin/launchctl remove com.oracle.java.Helper-Tool

==> Standard Output of failed command:

==> Standard Error of failed command:
Not privileged to remove service.

==> Exit status of failed command:
#<Process::Status: pid 5285 exit 1>
Error: Uninstall incomplete.
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb:12:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb:35:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:98:in `run_command'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:168:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `exit'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `rescue in run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:156:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'

Output of brew cask install java --force (which did ask for password):
brew cask install java --force
==> Caveats
This Cask makes minor modifications to the JRE to prevent issues with
packaged applications, as discussed here:

  https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361

If your Java application still asks for JRE installation, you might need
to reboot or logout/login.

Installing this Cask means you have AGREED to the Oracle Binary Code
License Agreement for Java SE at

  https://www.oracle.com/technetwork/java/javase/terms/license/index.html

==> Downloading http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-macosx-x64.dmg
Already downloaded: /Users/nsa/Library/Caches/Homebrew/Cask/java--1.8.0_131-b11,d54c1d3a095b4ff2b6607d096fa80163.dmg
==> Verifying checksum for Cask java
==> Installing Cask java
==> Running installer for java; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
==> installer: Package name is JDK 8 Update 131
==> installer: Upgrading at base path /
==> installer: The upgrade was successful.
🍺  java was successfully installed!

Finally output of brew cask uninstall java --verbose --debug (which did not ask for a password):
rew cask uninstall java --verbose --debug
==> Uninstalling Cask java
==> Uninstalling Cask java
==> Un-installing artifacts
==> Determining which artifacts are present in Cask java
==> 4 artifact/s defined
#<Hbc::Artifact::Uninstall:0x007f8bf7dabe18>
#<Hbc::Artifact::Pkg:0x007f8bf7dabdc8>
#<Hbc::Artifact::PostflightBlock:0x007f8bf7dabd50>
#<Hbc::Artifact::Zap:0x007f8bf7dabd00>
==> Un-installing artifact of class Hbc::Artifact::Uninstall
==> Running uninstall process for java; your password may be necessary
==> Removing launchctl service com.oracle.java.Helper-Tool
==> Executing: ["/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/bin/launchctl", "remove", "com.oracle.java.Helper-Tool"]
==> Not privileged to remove service.
Error: Command failed to execute!

==> Failed command:
/bin/launchctl remove com.oracle.java.Helper-Tool

==> Standard Output of failed command:

==> Standard Error of failed command:
Not privileged to remove service.

==> Exit status of failed command:
#<Process::Status: pid 5847 exit 1>
Error: Uninstall incomplete.
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb:12:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb:35:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:98:in `run_command'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:168:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `exit'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `rescue in run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:156:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'

What happen if you run the command manually?
sudo launchctl remove com.oracle.java.Helper-Tool

It seems to succeed without error:
> sudo launchctl remove com.oracle.java.Helper-Tool
Password:

Subsequently, if I try to uninstall java again it fails, but at least it sees that some commands need sudo:
> brew cask uninstall java --verbose --debug
==> Uninstalling Cask java
==> Uninstalling Cask java
==> Un-installing artifacts
==> Determining which artifacts are present in Cask java
==> 4 artifact/s defined
#<Hbc::Artifact::Uninstall:0x007fee40cdbd98>
#<Hbc::Artifact::Pkg:0x007fee40cdbd48>
#<Hbc::Artifact::PostflightBlock:0x007fee40cdbcd0>
#<Hbc::Artifact::Zap:0x007fee40cdbc58>
==> Un-installing artifact of class Hbc::Artifact::Uninstall
==> Running uninstall process for java; your password may be necessary
==> Removing launchctl service com.oracle.java.Helper-Tool
==> Executing: ["/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/usr/bin/sudo", "-E", "--", "/bin/launchctl", "list", "com.oracle.java.Helper-Tool"]
==> Executing: ["/usr/bin/sudo", "-E", "--", "/bin/rm", "-f", "--", "/Library/LaunchDaemons/com.oracle.java.Helper-Tool.plist"]
==> Removing launchctl service com.oracle.java.Java-Updater
==> Executing: ["/bin/launchctl", "list", "com.oracle.java.Java-Updater"]
==> Executing: ["/bin/launchctl", "remove", "com.oracle.java.Java-Updater"]
==> Not privileged to remove service.
Error: Command failed to execute!

==> Failed command:
/bin/launchctl remove com.oracle.java.Java-Updater

==> Standard Output of failed command:

==> Standard Error of failed command:
Not privileged to remove service.

==> Exit status of failed command:
#<Process::Status: pid 8664 exit 1>
Error: Uninstall incomplete.
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/uninstall.rb:12:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli/abstract_command.rb:35:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:98:in `run_command'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:168:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'
Error: Kernel.exit
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `exit'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:173:in `rescue in run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:156:in `run'
/usr/local/Homebrew/Library/Homebrew/cask/lib/hbc/cli.rb:132:in `run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:8:in `cask'
/usr/local/Homebrew/Library/Homebrew/brew.rb:93:in `<main>'

Do the same for the next one (java only has two), I'd like to see if the uninstall if successful after it gets past launchctl.
sudo launchctl remove com.oracle.java.Java-Updater

It is successful after running sudo launchctl remove com.oracle.java.Java-Updater. The output is quite verbose; I'm happy to add it if that will help diagnose the issue.

The output is quite verbose; I'm happy to add it if that will help diagnose the issue.

Thank you for offering but it is not needed.

Would you mind posting the output of brew config, I'm curious as to if this was something specific to your setup?

> brew config
HOMEBREW_VERSION: 1.2.3-25-gb05545a3b
ORIGIN: https://github.com/Homebrew/brew
HEAD: b05545a3bf5e22bcf845d0c2f58cae745431c98c
Last commit: 3 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: c680634dae71484bce0a4fe9972b54521682cddd
Core tap last commit: 3 days ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_REPOSITORY: /usr/local/Homebrew
HOMEBREW_CELLAR: /usr/local/Cellar
HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
CPU: octa-core 64-bit haswell
Homebrew Ruby: 2.0.0-p648
Clang: 8.1 build 802
Git: 2.11.0 => /usr/local/bin/git
Perl: /usr/local/bin/perl => /usr/local/Cellar/perl/5.24.0_1/bin/perl
Python: /usr/local/bin/python => /usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Ruby: /usr/local/bin/ruby => /usr/local/Cellar/ruby/2.4.0/bin/ruby
Java: N/A
macOS: 10.12.5-x86_64
Xcode: N/A
CLT: <IP_ADDRESS>.1.1492020469
X11: 2.7.11 => /opt/X11

Thank you.


Add support for computed columns

If computed columns are present, an error is generated:
2019/09/20 17:44:06.317|ERROR> Task 7: The column "IsFinalized" cannot be modified because it is either a computed column or is the result of a UNION operator.

Fixed in 1.4.1


fix(stream topn): fix pk indices of TopN and GroupTopN

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
This is part of the efforts to ensure pk indices consitency (https://github.com/risingwavelabs/risingwave/issues/12310).
This PR:

Refactors TopN-related plan nodes to make stream key derivation clearer and more reasonable;
Makes TopNExecutor amd GroupTopNExecutor use correct ExecutorInfo passed in. (Previously when limit is 1, executor will derive different pk from optimizer.)

Checklist

[x] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[x] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

Is this a refactor or fix? (It seems #12304 fixed the problem where backend pk is different from frontend pk. What problem does this PR solve?) 👀 Could you elaborate the changes?

This is both a fix and a refactoring. The bug to fix is pk inconsistency happened on TopN when limit is 1. I think #12304 was to fix GroupTopN.

BTW, I would appreciate it if you could describe what's changed in more details in the PR description. i.e., what exactly becomes "clearer and more reasonable" 😄

This looks like a flaky test


0.0.13

Browse the posts offline.

merge into branch 选错啦~ 再新建一个 pr 到 merge 到 tuchong:objective-c 吧~~

找到BUG, 修复了先


Disable change portrait for RenderView

If I rendering my image in image view, image it has norm portrait orientation, than I render image in render view, I have image with change orientation.
Second image render in RenderView

Check this out: http://stackoverflow.com/a/43093865/1485367


Engine.GetSingleton() fails to resolve auto loaded nodes in C#

Godot version:
master / 0e6e98a65f26c915b5717992ba881cf33406c8bf
OS/device including version:
Manjaro Linux 17.1-rc2
Issue description:
If I have an auto loaded node named RootContext, running the following code fails to resolve the node instance with an error, "Failed to retrieve non-existent singleton 'RootContext'":
var context = Engine.GetSingleton("RootContext");

However, the following code correctly resolves and retrieves the node correctly in the same settings (invoked inside another Node instance):
var context = GetNode("/root/RootContext");

I'm not entirely sure if it's the correct way to resolve singletons in C# though.

What has to be done about this? Engine.GetSingleton(name) only returns the engine singletons (Input, OS, ProjectSettings, Engine itself, etc).
As it can be seen in the documentation page GetNode("/root/RootContext") is indeed the correct way of accessing the node. However, GDScript has the syntax sugar of using an identifier for accessing it as an alternative to get_node.

Perhaps something like a GetAutoLoad("RootContext") method in Node?

@neikeq Revisiting this issue, I'm amazed at how clueless I was about Godot back then :sweat_smile:
But yeah, something like that would be good to have, because /root/RootContext is not that intuitive and you don't always have a node reference in your code.


Docs Spelling mistake

Summary
Spelling mistake
Reproduction Steps
https://discordpy-self.readthedocs.io/en/latest/api.html#discord.on_required_action_update
Called when Discord requires you to do something to verify ypur account.
Code
/

Expected Results
/
Actual Results
/
System Information
/
Checklist

[X] I have searched the open issues for duplicates.
[X] I have shared the entire traceback.
[X] I am using a user token (and it isn't visible in the code).

Additional Information
/

Would've been less effort to PR it 💀

next time


merge pull request into multiple branches

I have 6 branches and these 6 branches have same code so whenever I change the code or add anything one of the branches, I want to affect the changes into remaining branches with single Pull Request
is there anyway for this?

Hi, your question is more of a usage question about git/GitHub in general and less about the tool in this repository, which is called hub. As such, you are asking in the wrong place.
I would suggest that you look into GitHub Actions. With Actions, you could react to all pushes to a specific branch and have the commits copied to your 6 other branches.


File manager list button

At the top of the file manager there are two buttons.  One looks like a list view and the other a thumbnail view with multiple images across the screen.  I can't get the view to change by clicking from one of these to the other.

I'm seeing it too. Seems broken. I wonder if the list view has much utility anyway?


Update versions

Updates versions of all relevant parts.

Raise minimum Go version to 1.14, and test against 1.14 and 1.15
Update Go version in Docker image from 1.13 to 1.15
Update Docker Alpine base images from 3.11 to 3.13
Also build on Windows, and fix tests

Coverage remained the same at 91.419% when pulling a2138ae9bc38881fd48502c836a2e7a878a7fd9b on kernle32dll:update-versions into f706ac96de65bc6cf2e873b7ff5e626dc9012a05 on tarent:master.


[FEATURE] Direct TCP: Port support for recording important events in the lifetime of a request

This is a port from v4 to v2.6.X. See https://github.com/Azure/azure-sdk-for-java/issues/6580.

Withdrawn.


[Sema] NFC: Re-phrase @preconcurrency import warning from "is unuse…

…d" to "has no effect"

@swift-ci please test


[Improve]Scala hashcode code optimization

Scala hashcode code optimizatio
What is changed and how it works?
Proposal: xxx
Feel free to ping committers for the review!
Contribution Checklist

Make sure that the pull request corresponds to a GITHUB issue.

Name the pull request in the form "[Feature] [component] Title of the pull request", where Feature can be replaced by Hotfix, Bug, etc.

Minor fixes should be named following this pattern: [hotfix] [docs] Fix typo in README.md doc.

-->
Purpose of this pull request

LGTM


Release 2.8.4 does not have an ARM64 image on DockerHub

Is there an existing issue for this?

[X] I have searched the existing issues

Kong version ($ kong version)
2.8.4
Current Behavior
Release 2.8.4 does not contain an ARM64 image in the manifest, unlike 2.8.3 and below.
docker manifest inspect kong:2.8.4

returns:
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.oci.image.index.v1+json",
   "manifests": [
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 1710,
         "digest": "sha256:4252ac9254855225aeba185ab3cf7fa1891af5d37ab322cdeafa1527d323dfdf",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 841,
         "digest": "sha256:47b415407a511369247571010551aa6c30ee3c052cc63dde0312e4d9980ecde5",
         "platform": {
            "architecture": "unknown",
            "os": "unknown"
         }
      }
   ]
}

Expected Behavior
Release 2.8.4 should have an ARM64 image in the manifest
Steps To Reproduce
No response
Anything else?
No response

We are no longer providing docker images for older versions of the Community Version of Kong Gateway.  If you need support for 2.8.x, consider moving to Kong Gateway Enterprise edition.  You can review the support policy for Kong Gateway Enterprise here: https://docs.konghq.com/gateway/latest/support-policy/#supported-versions

@hanshuebner really? Why did we go and remove an existing and working Docker image of our Community Version? Kong 2.8.4 had deployed and working images on DockerHub with arm64 support. My team built infrastructure around this image, only for it to suddenly stop working one day. If the decision was to stop supporting these editions with ARM64 going forward, that would be fine. However, to actively remove working images with no warning really hurt my team. This decision has made my faith in the Kong project falter.
I would highly recommend reconsidering restoring the 2.8.4 images on DockerHub. This would ensure that those who were dependent on these images and their support of the ARM64 platform can continue to use the versions that they may have been dependent on.

@jaxtonw Your frustration is understandable, but we have to weigh our ability to support older versions of Kong Gateway with our engineering capacity.  Going forward, we recommend that you upgrade your Kong Gateway installation to depend on the latest release images.  We do not support older releases of the open source version of Kong Gateway and hence won't provide mitigations for security issues and critical bugs for images of older versions.
For the time being, you may be able to reference the 2.8.4 arm64 image by its SHA256 digest.  To find that, use docker images on one of your local repositories into which you've pulled it and docker inspect to determine its SHA256.
Again, we're sorry that you are affected by this.  Please consider upgrading to our latest release.


Fix potential assignee query for repo

Fix #18992

@zeripath I think you should check this.

Time to add a test for this function? 😅

If someone would like to assist me there, I'm not yet familiar with the test system for Gitea ...

@fnetX https://github.com/fnetX/gitea/pull/3 The code should be relatively self-exploinatary. The "mocked" database files are loaded from models/fixtures/<table_name>.yml, I've chosen for Repo 21 explicitly as there are 2 collaborates with write access added via models/fixtures/collaboration.yml so that should avoid regression for that part(not for the team part...)

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@3c72016). Click here to learn what that means.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main   #18994   +/-   ##
=======================================
  Coverage        ?   46.59%
=======================================
  Files           ?      854
  Lines           ?   122819
  Branches        ?        0
=======================================
  Hits            ?    57227
  Misses          ?    58676
  Partials        ?     6916

Impacted Files
Coverage Δ

models/repo.go
53.36% <100.00%> (ø)

Continue to review full report at Codecov.

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

wait https://github.com/fnetX/gitea/pull/3

@lunny has been merged.

make lgtm work


Tesseract creates output for missing input

If Tesseract is called with a non-existing image file, it creates an empty output file.
I'd expect that no output is created in that case.
Examples:
# Empty output.txt is created.
tesseract nonexisting_image.tiff output
# Empty output.hocr is created.
tesseract nonexisting_image.tiff output hocr

The source of the problem:
https://github.com/tesseract-ocr/tesseract/blob/master/api/renderer.cpp

@stweil  for https://github.com/tesseract-ocr/tesseract/issues/1423

Problem is that output file is created during initialization of renderer and it happens before starting of OCR...
Maybe we can implement simple check if input file exists....

Done.
But there could be scenarios where empty output is created. E.g. if input file exists but is malformed or leptonica can not process. That could be solved only by changing logic of renderer: create file only when we have something for writing to file. Or remove file if OCR output is empty.


MultiGPU GAN Colocation Issue.

Fixed bug with collocation of gradients in Tensorflow 1.1. It won't colocate the gradients because it complains /GPU: is not the same as /device:GPU . Changing this line fixes the spurious warning messages when training on multiple GPUs.

Opened an issue in tensorflow/tensorflow#11484.

A (better) work around is easy so I also pushed one.


fix for #333

Looks good. Behavior is now as expected: Publisher is still sending, when empty topic is subscribed.


Server: fix incorrect $schema in original self-desc

It is http://json-schema.org/draft-04/schema# while should be http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#.

Is this to match: https://github.com/snowplow/iglu-central/blob/master/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#L2

Right. Sorry.

I didn't follow the rationale for closing?

Agh. Didn't check a link, for a second thought this is supposed $schema.

@chuwy this is fixed in #434 - https://github.com/snowplow/iglu/blob/release/0.6.0/2-repositories/iglu-server/src/main/scala/com/snowplowanalytics/iglu/server/model/Schema.scala#L53

Cool. Closing.


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/75221

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/75497

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/84298

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.

Triggering TagBot for merged registry pull request
This extra notification is being sent because I expected a tag to exist by now, but it doesn't.
You may want to check your TagBot configuration to ensure that it's running, and if it is, check the logs to make sure that there are no errors.


Unable to debug python extension when using new analysis engine

VS Code (debugger) just hangs when launching the extension in debug mode.

Not an issue anymore.


Add MySQL Go/Tinygo example

Ref: https://github.com/fermyon/spin/pull/1794
Would depend on the next SDK (Spin) release.  Unsure if this would be 1.6 or 2.0.

Example and docs/links added in https://github.com/fermyon/developer/pull/986


Support using wasm-pack in Worklets (particularly AudioWorklet)

💡 Feature description
One of the key use cases for WebAssembly is audio processing. wasm-pack doesn't currently support AudioWorklets (purportedly the future of custom audio processing on the web) with any of its current --target options.
The web and no-modules targets get close, but error out during instantiation because the AudioWorklet context is lacking several browser APIs which the JS wrappers expect. This problem may extend to other Worker/Worklet contexts, but I've only attempted this with AudioWorklets.
💻 Basic example
my_processor.worklet.js
class MyProcessor extends AudioWorkletProcessor {
  constructor() {
    super()
    import("../pkg/audio").then(module => {
      this._wasm = module
    });
  }

  process(inputs, outputs, parameters) {
    if (!this._wasm) {
      return true
    }

    let output = outputs[0]
    this._wasm.exports.process(this._outPtr, this._size)
    for (let channel = 0; channel < output.length; ++channel) {
      output[channel].set(this._outBuf)
    }

    return true
  }
}

Thanks for the report! Can you clarify why web and no-modules don't work in the audio worklet context? They're intended to be usable for this use case (and I think I've used no-modules there before...), but if there's assumptions baked in which prevent their usage in these locations that's bad!

Sure. Thanks for the quick response!
Using --target web, the following error occurs when trying to call the init function from an AudioWorklet:
audio.js:11 Uncaught ReferenceError: URL is not defined

Using --target no-modules, a very unhelpful DOMException is thrown on import, but it's reasonable to assume the problem is similar. From what I've heard, global variable can't be defined in an AudioWorklet context, and self is undefined.
There is a another problem, considering the Javascript wrapper code would be set up in the AudioWorklet context, and neither classes nor functions can be passed across the AudioWorklet's MessagePort. It would be really cool if wasm-pack included a protocol for calling its exported functions across a MessagePort boundary (maybe with a new --target worklet option). But I would understand if that's out of scope.
If I could at least use the wrapper code within the worklet, I think it would be a reasonable task for me to write some bridge code to load the generated wrappers in both the worklet and main thread, and pass arguments + function names as well as return values through the MessagePort, which supports sending number, string, array, and object types.
I've successfully implemented such an interface using raw FFI, and it seems to work quite well. However, not being able to import the generated javascript within the worklet thread means missing out on all of wasm-bindgen's type conversion goodness and being limited to numeric arguments & return types. It also means I have to maintain my own Typescript api interface rather than being able to use auto-generated types. This introduces a big point of failure if the exported Rust functions and wrapper typings get out of sync.

Oh the problem with URL is probably one that we should fix and just check for its existence before trying to use it. Is that the only blocker for --target web?
I agree that we could perhaps explore more extensive integration with audio worklets, but if --target web works that's at least a good start :)

The --target web cannot be used with audioworklet without important modification of the generated file .

import.meta is not handle well by webpack (See issue 6719)
instantiateStreaming call  throws Mimetype error:
 WebAssembly.instantiateStreaming failed because your server does not serve wasm with application/wasm MIME type`
When i call postMessage to pass wasm instance to the worklet i ve got another error:
Failed to execute 'postMessage' on 'MessagePort': #<Memory> could not be cloned

Workarounds:

pass the exact path of the audioWorkletProcessor to init function from generated_by_wasm_pack.js generated with --target web
Use instantiate instead instantiateStreaming which doesn't throw (i don't know why but it works)
instantiate wasm module inside the AudioWorkletGlobalScope.

Ideally, i would like to be able to implement all the patterns from this article (audioworklet and wasm)

[x] Wasm module instantiation inside AudioWorkletGlobalScope (pattern A)
[ ] Wasm module instantiation inside main.js (pattern B)
[ ] shared memory: not tested yet (pattern C)

I've decided to continue on this issue. But if preferred, i can open another issue. thx
ps: I think dynamic import are not allowed inside AudioWorkletGlobalScope (See issue 506)

@BenoitDel Could you elaborate a little bit on the workarounds?
Or do you maybe have an example of how they work?
I'm having a hard time with audio worklets and wasm-pack too. Currently I can only directly instantiate a WebAssembly.Instance by passing the raw bytes of the wasm file (fetched on the main thread) via the postMessage function on the AudioWorkletProcessor subclass, like in this example. This is very limiting, since strings don't work and calling JS functions from Rust is also impossible.
I would love to learn some more about your workarounds!
Thanks in advance.

I do it the same way as you do. ( I am not working on this part of my project for now, but i will in 2-3 weeks. If i find how to implement the other pattern i will tell you about it).
Wasmpack --target web instantiates the wasm module inside the main thread by default (if i remember correctly). I just modify the glue code to return ArrayBuffer and communicate via channel message with the processor part.
I am not sure that calling JS functions from the audioworklet is a good idea, this would certainly involve the garbage collection and so deteriorates performance.
I hope this help

Interesting, thanks for the quick reply!   It kinda works, but only for functions that use numeric types only.
My main hope is to get string passing to work, since it would enable easier parameter control.
I'm still a little bit fuzzy on how exactly you modify the code.
If you could show me an example of how you did it (when you get to it of course), I would be very interested!

What a coincidence. I started to work on my first project in the audio domain, including rust and wasm. I have not enough experience with rust, wasm and wasm-pack to really help with this issue.
I'm happy to contribute if I can and learn more about the topic and architecture. @w-ensink here is a sample project https://github.com/the-drunk-coder/ruffbox. He uses enums to map parameters. This might be an option for you instead of using strings.

@CConnection Hey man! I had indeed seen that example, it was one of my goto's to get things working with Rust and AudioWorklets. Enums are a good option for small processors, but I'm trying to build a bigger, more dynamic project and then they're not a real option unfortunately.
Today I have made some real progress and I'm now able to pass strings. Unfortunately I had to say goodbye to Rust for that and fall back on C++ and Emscripten. I love Rust and I really tried for 3 days, but at this point it seems that C++ will be the only tool that can get the job done for me.
If you manage to make any progress with Rust and AudioWorklets, please let me know! :-)

I have started to experiment with the wasm-pack build --target web output.
The main problem is that we aren't allowed to fetch wasm code asynchronously inside the audio worklet, so we have to fetch the wasm file outside of the worklet and send it to the worklet via postMessage().
When you look on the generated code generated by wasm-pack build --target web, you see that the init function does everything for us to use it in a regular thread: first fetching with input = fetch(input); and then initiating via WebAssembly.initiate with const { instance, module } = await load(await input, imports); Because of the fetch, we can't use the init function in our audio worklet.
async function init(input) {
    // if (typeof input === 'undefined') {
    //     input = import.meta.url.replace(/\.js$/, '_bg.wasm');
    // }
    const imports = {};
    imports.wbg = {};
    imports.wbg.__wbg_alert_8e68ff37e2340cd2 = function(arg0, arg1) {
        alert(getStringFromWasm0(arg0, arg1));
    };

    if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {
        input = fetch(input);
    }

    const { instance, module } = await load(await input, imports);

    wasm = instance.exports;
    init.__wbindgen_wasm_module = module;

    return wasm;
}

async function load(module, imports) {
    if (typeof Response === 'function' && module instanceof Response) {

        if (typeof WebAssembly.instantiateStreaming === 'function') {
            try {
                return await WebAssembly.instantiateStreaming(module, imports);

            } catch (e) {
                if (module.headers.get('Content-Type') != 'application/wasm') {
                    console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);

                } else {
                    throw e;
                }
            }
        }

        const bytes = await module.arrayBuffer();
        return await WebAssembly.instantiate(bytes, imports);

    } else {

        const instance = await WebAssembly.instantiate(module, imports);

        if (instance instanceof WebAssembly.Instance) {
            return { instance, module };

        } else {
            return instance;
        }
    }
}

Currently, I try to split out the fetch function from the init, so that I can fetch the wasm file outside the worker and do the rest of the init process  in the worklet with all wasm-pack / wasm-bindgen features. A first prototype looks like this
wasm-pack.js
let wasm;

let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });

cachedTextDecoder.decode();

let cachegetUint8Memory0 = null;
function getUint8Memory0() {
    if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
        cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
    }
    return cachegetUint8Memory0;
}

function getStringFromWasm0(ptr, len) {
    return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
}
/**
*/
export function greet() {
    wasm.greet();
}

async function load(module, imports) {
    if (typeof Response === 'function' && module instanceof Response) {

        if (typeof WebAssembly.instantiateStreaming === 'function') {
            try {
                return await WebAssembly.instantiateStreaming(module, imports);

            } catch (e) {
                if (module.headers.get('Content-Type') != 'application/wasm') {
                    console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);

                } else {
                    throw e;
                }
            }
        }

        const bytes = await module.arrayBuffer();
        return await WebAssembly.instantiate(bytes, imports);

    } else {
        const instance = await WebAssembly.instantiate(module, imports);
        if (instance instanceof WebAssembly.Instance) {
            return { instance, module };

        } else {
            return instance;
        }
    }
}

export function getImports() {
    const imports = {};
    imports.wbg = {};
    imports.wbg.__wbg_alert_8e68ff37e2340cd2 = function(arg0, arg1) {
        alert(getStringFromWasm0(arg0, arg1));
    };

    return imports
}

export async function fetchWasm(input) {
    if (typeof input === 'undefined') {
        input = import.meta.url.replace(/\.js$/, '_bg.wasm');
    }
    console.log(input);
    if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {

        input = fetch(input);
    }

    return input;
}

async function init(imports, bytes) {
    console.log(imports, bytes);
    const { instance, module } = await load(bytes, imports);

    wasm = instance.exports;
    init.__wbindgen_wasm_module = module;

    return wasm;
}

export default init;

Now I can use it like this in the index.html and audio.js
////////////// index.html
<script type="module">
    import { fetchWasm } from './wasm-pack.js';

    async function run() {
        const binary = await fetchWasm('debug/wasm-pack.wasm?)
        const arrbuf = await binary.arrayBuffer();
        await context.audioWorklet.addModule('audio.js');
        const audioNode = new AudioWorkletNode(context, 'audioNode');
        audioNode.port.postMessage({type: 'loadWasm', data: arrbuf});
        audioNode.connect(context.destination);
    }

    run();
</script>

///////////////
import init, {getImports} from './wasm-pack.js';

class Processor extends AudioWorkletProcessor {
    static get parameterDescriptors() {
        return []
    }

    constructor(options) {
        super(options);
        this.port.onmessage = message => {
            switch (message.data.type) {
                case 'loadWasm': {
                    const instantiate = async () => {
                        try {
                            const imports = getImports();
                            this._wasm = await init(imports, message.data.data)

                        } catch(e) {
                            console.log("Error in loading backend: ", e)
                        }
                    }

                    instantiate();
                }
            }
        }
    }

    process(inputs, outputs, parameters) {
      // processing
    }
}

registerProcessor('audioNode', Processor);

Now I run into one problem. I get the following message:
Uncaught (in promise) TypeError: WebAssembly.instantiate(): Import #0 module="__wbindgen_placeholder__" error: module is not an object or function

First I thought that it is related to audio worklet, but actually I get the same error when using the normal output from wasm-pack --target web. Is this is a bug?

I think there is no notion of import in worklet.
You have to use channel messaging to pass data between main and worklet process or use shared memory.
import init, {getImports} from './wasm-pack.js'; // this is false

The import works, I can call getImports and see console.logs. same for the init.

What also might be interesting to note, is that the import works with the Emscripten version too, as can be seen in this example from Google.
@CConnection have you managed to get full string functionality with your method?

Yes, you re right it is just dynamic import (i hope this time i am right) that is not supported. Static import is in the specs and works in chromium (at least). Sorry for the mistake.
But it should be avoided in a real time thread as most as possible. https://github.com/WebAudio/web-audio-api/issues/2194

I just got a prototyp working, including strings. At the end, wasm-pack generates glue code which decodes the uint8array coming from rust to a javascript string in UTF-8. Currently, it's a very manual setup because I just modified the generated files manually, so next step would be to include it into wasm-pack, so that the generated code.

Ah if worklets have such a restrictive environment then yes, we'd need to add a new target to wasm-bindgen which included the above shim or somehow referenced it.

@alexcrichton how do we continue here? Should we open an issue in the wasm-bindgen repo? Is it possible to help integrating it into wasm-bindgen?

Yeah I think it's best to have either an issue or a PR to wasm-bindgen to figure out the best way to move forward.

Well, is there any real workaround for this?

Unfortunately, I was not able to use wasm-pack due to this issue. What I ended up doing is:

Run cargo build && wasm-bindgen --target web --omit-default-module-path as a manual build step.
Polyfill TextEncoder and TextDecoder in my worklet.ts processor definition, and import the wasm-bindgen typescript output there.
Configure my bundler to build a separate JS file for the worklet.ts entrypoint, and return a URL where it can be fetched.
In the main thread:

add the AudioWorklet module using that URL, and then initialize a node.
Fetch the .wasm output of wasm-bindgen, and send it in a load message across the node's MessagePort, as an ArrayBuffer.

In the worklet thread, handle this load message by passing the wasm data to wasm-bindgen's init() default export.
Create message handlers in the worklet thread to provide an interface between the main thread and wasm-bindgen generated typescript. I'm using Comlink for this, which greatly simplifies communication between the threads, and lets me define the message handlers as simple (typed) methods on the worklet processor class.

While this was pretty painful to figure out, it does give you all the benefits of wasm-bindgen in an AudioWorklet context, and the DX is pretty good once everything's set up. Hopefully this can provide some inspiration for a new wasm-pack mode for AudioWorklets, but there's some more work needed to arrive at an implementation that's generic enough to provide in a library, and supports all the various bundlers people might be using.

I also got things working similarly to how @Smona describes. I tried to package it up to make this process easier for myself in the future https://github.com/Marcel-G/waw-rs


Implement ranges

Implement the ability to call for a range to be cut. For example, -v 4-6 would cut verses 4 though 6.

duplicate of issue #9


Margin on success alert is off

There's a bottom margin of 1em - should be 0.

Also top margin for the whole box is too small – it should be 16px - 1em?

@scye09 do you think you could take a quick look?


Design Issues - User Preferences Page

Overall, can we layout it out to be prettier?

[x] "Theme"

Heading seems very close to "Preferences"

[ ]. Theme - Can we add in the icons of the sun and moon like we did in the old UI?

[x] Formatting Section - Can we fix the alignment of these dropdowns?

[ ]. Can we add an explanation of what enabling developer tools does?

[ ] In light mode, the white text on these grey buttons is hard to read

@deniseschannon -- in pr @vincent99 says we probably don't need to explain dev tools


Added generator

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@2be3035). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master       #1   +/-   ##
=========================================
  Coverage          ?   63.75%
=========================================
  Files             ?        2
  Lines             ?       80
  Branches          ?        0
=========================================
  Hits              ?       51
  Misses            ?       23
  Partials          ?        6

Flag
Coverage Δ

1.18.x
63.75% <0.00%> (?)

1.x
63.75% <0.00%> (?)

macOS-latest
63.75% <0.00%> (?)

ubuntu-latest
63.75% <0.00%> (?)

unit
63.75% <0.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

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


build NB registration script to be called from the NB OS USB plugin script

This script must be:

publicly available from nuvla.io
inline with the corresponding version of the api-server
accept an api key/secret/expiration as inputs
authenticate with Nuvla, register a new NB and give back the NB ID

at nuvla.io/api/downloads/nuvlabox-self-registration.py


Add logs

@ironman-machine for fun

Hello @LaurenSpiegel
Starting end to end procedure using the following payload:
{"REPO_NAME": "S3", "DEFAULT_BRANCH": "rel/6.3", "SCALITY_S3_BRANCH": "logs/streamingV4Auth"}
Please follow http://ci.ironmann.io/gh/scality/Integration/12902 for CI status.


output JSON with timings

After the run is completed

done in https://github.com/bahmutov/cypress-split/commit/3d4d946c8a49b659d38b21623c53abedc457409e


feat(epsagon-node): update epsagon depn to 1.117.1

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


fix(transport): fall back to raw data when incoming message is not in expected format

The transport plugins are (incorrectly) assuming that every message would be a JSON-encoded Grav message type. This PR gives them a fallback to use raw message data in the likely case the data has another shape.

In the immediate term this seems fine however we are mixing library and application level concerns here which will likely lead to more complications as we scale out.
Long-term we may want to consider separating dataplane and control plan transports or at the very least introduce multiple streams (one for control message one for application messages)
The intent is for Grav to be application message agnostic (pushing deserialization off to the application) while still being able to communicate with other instaneces using the Grav Message format.
Right now we are mixing concerns which will only continue to cause issues as we scale out this solution and increase adoptions.


Bug or supported device missing?

Describe the bug
I have 2 LG devices, a dishwasher and a brand new LG Washtower WKEX300HBA (washer/dryer combo). The washer and dryer are listed separately in the LG app. In HA I only see the dishwasher. I've tried reloading the integration, deleting and re-adding it, and even restarted HA. Nothing is working. I can see both devices in the LG ThinQ app but only the dishwasher in the integration.
Expected behavior
Expecting to see all LG devices that are tied to my LG account.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment details:

Environment (HASSIO, Raspbian, etc): HASSIO
Home Assistant version installed: 2023.6.1
Component version installed: v0.31.8
Last know working version: N/A
LG device type and model with issue: LG WashTower WKEX300HBA
LG devices connected (list): Dishwasher, LG Washtower (in LG app) (dishwasher only in HA)

Output of HA logs
Logger: custom_components.smartthinq_sensors.wideq.device_info
Source: custom_components/smartthinq_sensors/wideq/device_info.py:192
Integration: SmartThinQ LGE Sensors (documentation, issues)
First occurred: 6:28:52 PM (2 occurrences)
Last logged: 7:31:16 PM
Device 321039aa-588b-1f9b-8bba-1c3929895eef: unknown device type with id 223
Additional context
I assumed that deleting and re-adding the integration and restarting HA would have caused any supported LG devices in my account to be added automatically. This is a fairly new product. Is it possible that although it works perfectly in LG's app that it's just not supported in this integration?

It appears that this device isn't even fully supported by the LG ThinQ app yet which explains why I don't see anything. Closing this issue.


make rpm is failing for configshell-fb in RHEL 7.1

Hi,
We are seeing error in compiling configshell-fb on RHEL 7.1. Most recently similar issue(https://github.com/agrover/rtslib-fb/issues/61) is resolved in rtslib-fb. I have done  code changes in configshell-fb and these code changes are made by referring the fix done as part of rtslib-fb(https://github.com/agrover/rtslib-fb/issues/61).
make_configshell-fb_patch.txt
Could someone please find the attached patch and let me know your inputs on this?
Thanks,
Ravindar

Hi Andy,
Do you have few free mins to review the code changes mentioned above?
Thanks for your help on this!!
Regards,
-Ravindar

Sorry for the delay, I missed seeing this in my Github feed...
Thanks for your contribution! It looks fine.
Do you want to make a PR for these changes that I can merge, or would you like me to merge the patch manually?

Thanks for your review Andy!!
Yes you can merge the patch manually.
-Ravindar

Merged. Thanks!


fixed spelling (#254)

See PR #254.
Contribution by @nnadeau

We've been debugging the issue causing the failure of the stage 3 Travis test all day and found a solution to it. It will be merged into master soon, and then will update this branch for quick approval.

Coverage remained the same at 41.417% when pulling 128a07d0c7a05d0ee58a3a2c96470c7e1539e338 on pr254 into 5799e73c3a685bdd15d12f8514f65dc86d8cd938 on master.


BUG: On Windows, binaries are installed in the wrong location

On Windows, the globally installed CLI is placed in the {npm_config_prefix} directory, not the {npm_config_prefix}/bin directory.

When in global mode, executables are linked into {prefix}/bin on Unix, or directly into {prefix} on Windows. Ensure that path is in your terminal's PATH environment to run them.
--- folders | npm Docs

However, the current installation logic seems to always install in the bin directory:
https://github.com/go-task/go-npm/blob/5b4b644df7ad8e5564885a514f57fe3d3999ad9b/src/common.js#L41-L43
I think this code needs to be fixed like this:
       if (env && env.npm_config_prefix) {
-        dir = join(env.npm_config_prefix, 'bin');
+        if (process.platform === 'win32') {
+          dir = env.npm_config_prefix;
+        } else {
+          dir = join(env.npm_config_prefix, 'bin');
+        }
       } else if (env && env.npm_config_local_prefix) {

If this is granted, I would like to create a pull request to reflect this fix.

Hi @sounisi5011,
Yes, a PR would be helpful!


Stream starves in browser environment

@BenjaminHofstetter this was Angular related, is this still relevant or can we close that? Not sure we can even do something on our side.

You can close it. The problem is related to this https://github.com/angular/angular/issues/31730


[UART] Add integer read and write support to UART device service

🚀 Feature Request
Relevant Package [REQUIRED]
UART device service
This feature request is add integer read and write support to UART device service.
Description [REQUIRED]
Current UART device service implementation supports only string datatype in HandleReadCommands() and HandleWriteCommands().
Refer: https://github.com/edgexfoundry/device-uart/blob/main/internal/driver/driver.go#L84
rxbuf := hex.EncodeToString(s.generic[key_dev_value].rxbuf)
s.lc.Infof(fmt.Sprintf("Driver.HandleReadCommands(): Received Data =  %s", rxbuf))

Can this be enhanced to support read and write integer values?
Describe the solution you'd like
Add integer read and write support to UART device serice.
Int8 datatype
vediyappan@vediyappan-desktop:~$ curl -X GET http://localhost:59882/api/v2/device/name/DUT_ID1/ReadInt_UART | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   410  100   410    0     0  38342      0 --:--:-- --:--:-- --:--:-- 41000
{
   "apiVersion" : "v2",
   "event" : {
      "apiVersion" : "v2",
      "deviceName" : "DUT_ID1",
      "id" : "c4177bd0-0b3a-4c82-9b1e-c4025630eabf",
      "origin" :<PHONE_NUMBER>076792853,
      "profileName" : "DUT_ID1",
      "readings" : [
         {
            "deviceName" : "DUT_ID1",
            "id" : "1e651ead-04e3-4604-ace7-3fe19af3bccd",
            "origin" :<PHONE_NUMBER>076792853,
            "profileName" : "DUT_ID1",
            "resourceName" : "ReadInt_UART",
            "value" : "23",
            "valueType" : "Int8"
         }
      ],
      "sourceName" : "ReadInt_UART"
   },
   "statusCode" : 200
}
vediyappan@vediyappan-desktop:~$

Int16 datatype
vediyappan@vediyappan-desktop:~$ curl -X GET http://localhost:59882/api/v2/device/name/DUT_ID1/ReadInt_UART | json_pp
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   412  100   412    0     0  35025      0 --:--:-- --:--:-- --:--:-- 37454
{
   "apiVersion" : "v2",
   "event" : {
      "apiVersion" : "v2",
      "deviceName" : "DUT_ID1",
      "id" : "44437b87-7e9a-44f6-8446-56b9c6734683",
      "origin" :<PHONE_NUMBER>818702173,
      "profileName" : "DUT_ID1",
      "readings" : [
         {
            "deviceName" : "DUT_ID1",
            "id" : "2f1aec59-c805-4357-b7e4-11d2e816fe94",
            "origin" :<PHONE_NUMBER>818702173,
            "profileName" : "DUT_ID1",
            "resourceName" : "ReadInt_UART",
            "value" : "255",
            "valueType" : "Int16"
         }
      ],
      "sourceName" : "ReadInt_UART"
   },
   "statusCode" : 200
}
vediyappan@vediyappan-desktop:~$

Describe alternatives you've considered
N/A

@lindseysimple The changes for int8, int16 and int32 datatype done on top of V3 for this enhancement. I will commit the changes once #14 and #15 are merged.

Sounds good to me. Thanks @vediyappan-hcl!


[add-resource] New Plugin

I would like to add my new plugin to the Grav Repository.
Here are the project details: aricooperdavis/grav-plugin-custom-banner

@aricooperdavis, I've taken a look at your proposed plugin...
It seems function onOutputGenerated() is quite error prone when the user doesn't provide all fields or provides fields without proper values in custom-banner.yaml. An Exception will then be thrown to the user, who might not understand the default error message, let alone know how to fix it.
Missing values:
One way to prevent errors for missing values is to provide default values for each field in blueprint.yaml and collect these defaults using Config::getDefaults().
The defaults and the values in custom-banner.yaml can then be merged.
$config = $this->config();                                             <-- values from 'custom-banner.yaml'
$defaults = $this->config->getDefaults()['plugins']['custom-banner'];  <-- values from 'blueprint.yaml'
$mergedConfig = array_merge($config, $defaults);

Invalid exclude-pages:
You might consider testing if the value of exclude-pages is either a string, or an array.
Default value for exclude-pages
The value for button-url might be added to exclude-pages at runtime. It seems logical that the banner is not visible on the page for 'Read more'.

Thanks for your tips pamtbaau, that's really helpful!
Missing values:
I've implemented a merge with the defaults as you've suggested. As such I have made the defaults more complex to reduce the likelihood of collisions (for example if the exclude-pages is left blank the merge will use the default value of ['/route-to-page/you-want-to/exclude'] which is very unlikely to be an in-use route). We also now validate the merged config against the plugin blueprint to catch mistakes like 'false' being evaluated as true (which will show the error message, but it's a sensible message and I can't think of a better way to feed that back to the user).
Invalid exclude-pages:
The config value for exclude-pages is now cast to an array.
Defualt value for exclude-pages:
I can see why this could be sensible but I consider that to be unintuitive behaviour - if you've got an exclude-pages field in the config then I expect only the pages in there to be excluded. I guess I could add another boolean config option to exlude the linked-to page but this feels over-complicated when users could just select the page they're linking to. There's also no guarentee that users are linking to a page on the site rather than an external link.
Thank you again, do you have any other changes you'd like to see?

Great! Do I have any other changes I would like to see? Sure...

While testing the banner it annoyed me I couldn't dismiss it. It seems it's already on your todo list...
Option to have banner on top or at bottom?
You might be a bit more specific in the README about the term 'banner'. This is a very generic term. My first thought was a kind of inline ad at the top of the page.

Maybe you could add a few example use-cases when to use it and when not?
Maybe add a screenshot?

Thanks again for the excellent feedback. I have made some of those changes. I think we should probably do further feature-request style discussion on the repo itself to keep this issue clean?

Yes, we should move over to your repo...
By the way, nice plugin! Simple, clean, effective...

Anything I need to do to facilitate the plugin being added @mahagr?

I've added this to GPM so should be available soon.


feat: dim ignored fields

closes #689

Replaced by https://github.com/prisma/language-tools/pull/1285


[core] Jadx not work with JRE 8 221

Describe error
After upgrade to jre 8 221, i cannot run jadx, i always get a "Could not create the Java Virtual Machine. Error: a fatal exception has occured. Program will exit."
I have to roolback to JRE 8 152 to get it launch.
jadx release version 1.0.0
Thanks
regards

https://stackoverflow.com/questions/18459945/how-to-solve-could-not-create-the-virtual-machine-error-of-java-virtual-machine
Edit jadx launchers and specify less memory

before:
set DEFAULT_JVM_OPTS="-Xms1024M" "-XX:MaxRAMPercentage=70.0" "-XX:+UseG1GC" "-Dawt.useSystemAAFontSettings=lcd" "-Dswing.aatext=true" "-Djava.util.Arrays.useLegacyMergeSort=true"
after modification：
@set DEFAULT_JVM_OPTS="-Xms1024M" "-XX:MaxRAMPercentage=70.0" "-XX:+UseG1GC" "-Dawt.useSystemAAFontSettings=lcd" "-Dswing.aatext=true" "-Djava.util.Arrays.useLegacyMergeSort=true" set DEFAULT_JVM_OPTS="-Xms128M" "-Xmx10g"
Notice：
annotate with "@"  defalut

@Eeyhan Can you please post the exact version string of the used Java runtime (including build version). As far as I know the parameter -XX:MaxRAMPercentage was not included in the first (now ancient) Java 8 versions.


It is not possible to evaluate the expression [System.IO.Path]::GetDirectoryName

Hello,
I'm trying to open the source code and compile it with vs2019, but all the projects are not loaded, and report the following error:
"it is not possible to evaluate the expression [System.IO.Path]::GetDirectoryName invalid path format. ".
Can you help me?
Thanks.

@stefanobenedetti88 Do you have the .Net Core 3.1 SDK installed? wiki

Thanks, now works!


how to use query-params in link-to helper?

@machty I can not make this work. All linked jsbins (here and in the README) broke because link to Ember build no longer works; even when it's replaced with correct url, Handlebars compilation still breaks.


add automatically isCrossRef=true when using reverse engineering

Propel should add automatically the isCrossRef flag when using the reverse propel-gen command on a valid many to many relationship with cross reference table.

This would be a nice feature to have. I can see how this can set the isCrossRef to true for non-cross-reference-tables in some cases (possibly the reason why this isn't implemented yet), but it certainly is possible. For example, adding an extra flag for the generation, and everytime the schema parser hits a table which is a candidate for a cross-reference table the user has to manually confirm it. This still takes -some- manual effort, but it's still way easier then manually editing the reverse generated schema again and again. Additionally, users who don't need this at all simply don't use the flag, so no one is actually hindered by it.


Offset BodyAddon

The offset of body addons was changed, from front/back/side to north/east/south/west. I have no idea which direction is actually meant and the wiki is not adjusted. Please fix that?

Oh yeah, wiki isn't adjusted.. will fix that.
In general, it was changed to go along with the vanilla change of directions in graphics. It is the view direction, so front is south, back is north etc.

First of all: Thanks a lot, that helped immensely, but some things aren't clear: I changed front->south, back->north, side->east and added west inside the xml. Then I renamed every head file without adding west and did the same to my body addon textures. Heads worked just fine, body addons were invisible from both sides. Changed the east->west in the filenames and everything worked.
So why do I only need east for the head and only west for the body addon textures? Also, please change the wiki for the graphic paths, too.

only needing east is the default because it was the old "side". It is a possibility to use west if something needs a different graphic/offset. It would be news for me that you would only require west for the body addons, especially as these use the same method as the normal Graphics.

Well, I dunno...

My heads are all _east, _north and _south, which works and my addons are all _north, _south and _west which works for both sides, which was not the case with _east, _north and _south.


Issue Create Function

Does this occur consistently?
Repro steps:

Action: azureFunctions.createNewProject
Error type: Error
Error Message: Failed to run "python3" command. Check output window for more details.
Version: 0.24.1
OS: linux
OS Release: 4.19.0-10-amd64
Product: Visual Studio Code
Product Version: 1.49.2
Language: en

Call Stack
Object.<anonymous> extension.bundle.js:48:71496
fulfilled extension.bundle.js:48:70379

Please check the output window and add repro steps if that doesn't help


Documenting Solr version + instructions how to change it

The Problem/Issue/Bug:
How this PR Solves The Problem:
Manual Testing Instructions:
Automated Testing Overview:

Related Issue Link(s):
Release/Deployment notes:

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

thanks!


[Snyk] Security upgrade MessagePack from 1.9.3 to 2.5.187

Snyk has created this PR to fix 1 vulnerabilities in the nuget dependencies of this project.
Snyk changed the following file(s):

src/REstate.Engine.Repositories.EntityFrameworkCore/REstate.Engine.Repositories.EntityFrameworkCore.csproj

Vulnerabilities that will be fixed with an upgrade:

Issue
Score

Use of Weak Hash SNYK-DOTNET-MESSAGEPACK-8229907
  631

[!IMPORTANT]

Check the changes in this PR to ensure they won't cause issues with your project.
Max score is 1000. Note that the real score may have changed since the PR was raised.
This PR was automatically created by Snyk using the credentials of a real user.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
📜 Customise PR templates
🛠 Adjust project settings
📚 Read about Snyk's upgrade logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Use of Weak Hash

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


2 reference locations of the model

Hello, just a heads up warning:
I think it's looking for the model in two different locations

model_zoo/llama\7B\
model_zoo\llama_7B_hf
If I copy the model to both locations the demo server comes up.

(ichat) E:\ai\InternGPT>python -u app.py --load "HuskyVQA_cuda:0,SegmentAnything_cuda:0,ImageOCRRecognition_cuda:0" --port 3456
[05/17 20:42:38] bark.generation WARNING: torch version does not support flash attention. You will get faster inference speed by upgrade torch to newest nightly version.
Initializing InternGPT, load_dict={'HuskyVQA': 'cuda:0', 'SegmentAnything': 'cuda:0', 'ImageOCRRecognition': 'cuda:0'}
Für das Windows-Subsystem für Linux wurden keine Distributionen installiert.
Distributionen zur Installation finden Sie im Microsoft Store:
https://aka.ms/wslstore
Traceback (most recent call last):
  File "app.py", line 221, in <module>
    bot = ConversationBot(load_dict=load_dict)
  File "E:\ai\InternGPT\iGPT\controllers\ConversationBot.py", line 141, in __init__
    self.models[class_name] = globals()[class_name](device=device)
  File "E:\ai\InternGPT\iGPT\models\husky.py", line 368, in __init__
    download_if_not_exists(base_path="model_zoo/llama",
  File "E:\ai\InternGPT\iGPT\models\husky.py", line 351, in download_if_not_exists
    write_model(
  File "E:\ai\InternGPT\iGPT\models\husky_src\convert_llama_weights_to_hf.py", line 93, in write_model
    params = read_json(os.path.join(input_base_path, "params.json"))
  File "E:\ai\InternGPT\iGPT\models\husky_src\convert_llama_weights_to_hf.py", line 79, in read_json
    with open(path, "r") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'model_zoo/llama\\7B\\params.json'

(ichat) E:\ai\InternGPT>python -u app.py --load "HuskyVQA_cuda:0,SegmentAnything_cuda:0,ImageOCRRecognition_cuda:0" --port 3456
[05/17 20:44:16] bark.generation WARNING: torch version does not support flash attention. You will get faster inference speed by upgrade torch to newest nightly version.
Initializing InternGPT, load_dict={'HuskyVQA': 'cuda:0', 'SegmentAnything': 'cuda:0', 'ImageOCRRecognition': 'cuda:0'}
Loading base model
Traceback (most recent call last):
  File "app.py", line 221, in <module>
    bot = ConversationBot(load_dict=load_dict)
  File "E:\ai\InternGPT\iGPT\controllers\ConversationBot.py", line 141, in __init__
    self.models[class_name] = globals()[class_name](device=device)
  File "E:\ai\InternGPT\iGPT\models\husky.py", line 368, in __init__
    download_if_not_exists(base_path="model_zoo/llama",
  File "E:\ai\InternGPT\iGPT\models\husky.py", line 359, in download_if_not_exists
    apply_delta(output_dir, new_path, delta_path)
  File "E:\ai\InternGPT\iGPT\models\husky_src\load_ckpt.py", line 11, in apply_delta
    base = AutoModelForCausalLM.from_pretrained(base_model_path, torch_dtype=torch.float16, low_cpu_mem_usage=True)
  File "C:\Users\Sasch\.conda\envs\ichat\lib\site-packages\transformers\models\auto\auto_factory.py", line 441, in from_pretrained
    config, kwargs = AutoConfig.from_pretrained(
  File "C:\Users\Sasch\.conda\envs\ichat\lib\site-packages\transformers\models\auto\configuration_auto.py", line 916, in from_pretrained
    config_dict, unused_kwargs = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs)
  File "C:\Users\Sasch\.conda\envs\ichat\lib\site-packages\transformers\configuration_utils.py", line 573, in get_config_dict
    config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
  File "C:\Users\Sasch\.conda\envs\ichat\lib\site-packages\transformers\configuration_utils.py", line 628, in _get_config_dict
    resolved_config_file = cached_file(
  File "C:\Users\Sasch\.conda\envs\ichat\lib\site-packages\transformers\utils\hub.py", line 380, in cached_file
    raise EnvironmentError(
OSError: model_zoo\llama_7B_hf does not appear to have a file named config.json. Checkout 'https://huggingface.co/model_zoo\llama_7B_hf/None' for available files.

Thanks for the feedback.
By default, we only need one of them to build the husky ckpt. Did you have those two llama folders created but without the actual ckpt?
In that case, you could remove the folders. Then rerun the code would automatically download the ckpt and perform the conversion.
Let me know if this is your case and if there are any issue remain.

Hi,@Zeqiang-Lai ,I have a similar problem, please help me solve it.
FileNotFoundError: [Errno 2] No such file or directory: 'model_zoo/llama/7B/params.json'
Besides, I found that in the script llama_download.sh, PRESIGNED_URL="" is empty and the comment says replace with presigned url from email , which url should I write for PRESIGNED_URL?
Looking forward to your reply, thanks!

Due to the license issue, we could not provide the original checkpoint of LLAMA, there you need to fill a form to request a url from facebook. Please refer to here for more instructions https://github.com/facebookresearch/llama

@tinaYA524 Due to the license issue, we could not provide the original checkpoint of LLAMA. Therefore, you need to fill a form to request a url from facebook. Please refer to here for more instructions https://github.com/facebookresearch/llama

Thanks for the quick reply, I will try to figure this out, thanks again!

@tinaYA524 Due to the license issue, we could not provide the original checkpoint of LLAMA. Therefore, you need to fill a form to request a url from facebook. Please refer to here for more instructions https://github.com/facebookresearch/llama

Thanks for the quick reply, I will try to figure this out, thanks again!

You are welcome. Thanks for the attention.

你好，我也遇到这个问题了，请教一下是怎么解决的？


Support hx-on

https://htmx.org/attributes/hx-on/

Hi @Smithx10. I'm currently on paternity leave and will have a proper look at this in a few weeks.

Sounds good, congratulations!!!
Wondering if we should enum all the different event types / modifiers etc.

@Smithx10 thanks. 😊
I don't think I'll add string constants at this point, because there are many and I'd rather not have to keep up with any changes. I've come to the same conclusion in the core gomponents library, and I don't really mind the string literals too much. They're quite readable IMO, and typos are often spotted quickly. Users are of course free to create their own constants.