Add Support for Automatic Differentiation via JAX

Add support for automatic differentiation via JAX. JAX can automatically differentiate native Python and NumPy functions. It can differentiate through loops, branches, recursion, and closures, and it can take derivatives of derivatives of derivatives. It supports reverse-mode differentiation (a.k.a. backpropagation) via grad as well as forward-mode differentiation, and the two can be composed arbitrarily to any order.
Example:
from jax._src.dlpack import to_dlpack
import numpy as np
import cupy as cp
import dask.array as da
import jax.numpy as jnp
import types
from typing import Callable, Optional
from jax import jacfwd
import jax.dlpack as jxdl
from warnings import warn

def infer_array_module(decorated_object_type='method'):
  def make_decorator(call_fun: Callable):
    def wrapper(*args, **kwargs):
      if decorated_object_type == 'method':
        arr = args[1] #First argument is self
      else:
        arr = args[0]

      if isinstance(arr, cp.ndarray):
        xp = cp
      elif isinstance(arr, da.core.Array):
        xp = da
      elif isinstance(arr, jnp.ndarray):
        xp = jnp
      else:
        xp = np # Fall back to Numpy backend if unknown array type
      kwargs['_xp'] = xp
      return call_fun(*args, **kwargs)
    return wrapper
  return make_decorator

class FFTOp(object):

  @infer_array_module(decorated_object_type='method')
  def __call__(self, x, _xp: Optional[types.ModuleType] = None):
    return _xp.fft.fft(x)

  @infer_array_module(decorated_object_type='method')
  def jacobian(self, x, _xp: Optional[types.ModuleType] = None):
    if _xp == cp:
      arr = jxdl.from_dlpack(x.astype(_xp.float32).toDlpack()) # Zero-copy conversion from Cupy to JAX arrays only works with float32 dtypes.
      warn('Automatic differentiation with Cupy arrays only works with float32 precision.')
    elif _xp == da:
      raise NotImplementedError('Automatic differentiation does not support with lazy Dask arrays.')
    else:
      arr = jnp.asarray(x)
    jaxobian_eval = jacfwd(self.__call__)(arr)
    return _xp.asarray(jaxobian_eval)

Notes:

Automatic differentiation is an eager transformation and therefore won't work on lazy Dask arrays.
Zero-copy conversion from Cupy to JAX arrays seems to only work with float32 dtypes (to be investigated).
The size of the nonlinear map should be checked to determine whether the Jacobian matrix should be computed row-by-row (jax.jacrev) of column-by-column (jax.jacfwd).
Investigate jax.jvp or jax.vjp for evaluations of Jacobian-vector products without forming the Jacobian.
JAX arrays are created by default on the first GPU available. When copying from Numpy arrays stored on the CPU, one should control explicitly where the JAX array is stored to avoid unnecessary data transfers between CPU and GPU.

This feature has been merged into v2-dev.


Audio Panel/Section Goes Past The Taskbar

Godot version: 3.1.1
OS/device including version:
Windows 10
Issue description:
Audio panel at the bottom of the screen (while working on project) goes past the taskbar, not allowing the user to switch back from audio unless they hide the taskbar. (and maybe due to low res monitor?).
Steps to reproduce:
While inside of a project click the audio section of the bottom panel (the section that says "output, debugger, search results... " Doing this on a low res monitor (mine is 1366x768) will cause the audio panel to go lower than the taskbar.
It seems to ignore the taskbar and just lock to the bottom of the monitor below the taskbar.
Minimal reproduction project:
Happens in all projects, so the report doesn't need any project files?

Is this related to #33155

Is this related to #33155
It may be, but it only happens on the audio panel, not output, debugger, or animation. For the other panels it works perfectly fine.

It seems to have fixed itself. It was happening for several days, then it just stopped... weird but as long as it works I'm good lol.

Closing as fixed then. Feel free to reopen this if it starts happening again.


Is it possible to assing a pattern for both the root folder and it's subpaths?

What I'm trying to achieve is a pattern that will match a default exported module or any submodule.
Eg: next or next/link will be matched
Currently I have duplicate groups just for matching the root module and recursive

Globbing only allows next and next/** - there's no pattern that could match both, afaik.

Globbing only allows next and next/** - there's no pattern that could match both, afaik.
I thought so.

Yeah... regex would be so much better. Appreciate your help :)


Don't error out on compressed files or on non-Unicode files

Dodgy ignored the second element of mimetypes.guess_type's result, so it would try to process files that were gzipped, bzipped, etc.
In Python 3, trying to read from a text file may throw a UnicodeDecodeError if any encoding errors are encountered.
These two issues together meant that Dodgy would throw an exception and abort when it ran on my Django project, which had some gzipped CSS. This PR offers a (fairly minimal) fix for these issues.

I am also running into this issue...in a bundled .c file of all places! file identifies the encoding of the .c file as ISO-8859, and it can't be successfully decoded as UTF-8.


Unable to use custom IP.

So, I'm trying to use this command.
sudo ./setup-network.sh --install-upgrade --ap-ssid="SSID" --ap-password="PASSWD" --ap-password-encrypt --ap-country-code="ES" --ap-ip-address="<IP_ADDRESS>" --wifi-interface="wlan0"
I want to use <IP_ADDRESS>, my network is 192.168.1.X and there's absolutely nothing else in my network using that IP, but the script refuses to work with any IP I tell it. It only works by not passing the option --ap-ip-address, which creates an AP using IP <IP_ADDRESS> which has no use for me.
Any idea?
I know this project is abandoned, but if anyone knows please let me know.

OK I know what was wrong.
# Read WiFi Station(${wlanInterfaceName}) IP, Mask and Broadcast addresses:
    read wlanIpAddr wlanIpMask wlanIpCast <<< $( echo $( ifconfig ${wlanInterfaceName} | grep 'inet ' ) | awk -F " " '{print $2" "$4" "$6}' )

This line gets the IP address, the mask and the broadcast address of an interface... but it get the first interface it finds, regardless of how useful it is.
Turns out, the first interface listed in my ifconfig is an internal address for a docker container, and my eth0 interface is listed second. That's why it doesn't get the correct numbers.
The fix? fairly simple. Add "eth0" after "ifconfig". @idev1 should add something smarter than that, of course. For instance, passing an option telling the ethernet inferface like we already pass the wireless interface, or something like that.
I hope this helps anyone!

But anyway, this script keeps complaining about passing the --ap-ip-address option that I'm already passing.
If only you'd made the error output more user friendly...

After enclosing the following block with set +x and set -x to see what the hell is going on, it suddenly accepted my IP.
192)
     set +x
            [[  ( $ip != $wlanIpAddr && ! $ip =~ ${wlanIpStartWith}* ) && \
                ("${ipi2}" != 0* && ${ipi2} -eq 168) && \
                ((${#ipi3} -eq 1 && ${ipi3} -le 255) || (${#ipi3} -gt 1 && "${ipi3}" != 0* && ${ipi3} -le 255)) && \
                ((${#ipi4} -eq 1 && ${ipi4} -le 255) || (${#ipi4} -gt 1 && "${ipi4}" != 0* && ${ipi4} -le 255))
             ]]
      set -x
            status=$?
        ;;

My phone's IP is <IP_ADDRESS>... ok, the Access Gateway is <IP_ADDRESS>, that's OK too, and now I only need to change the DNS from <IP_ADDRESS> to <IP_ADDRESS>, which is my PiHole pi and the only device that should be doing DHCP.


return_stt_ghost_noeq

@bollu has been writing a data collection script on F* checked files. This uncovered that while we have:
lib/steel/pulse/Pulse.Reflection.Util.fst:let return_stt_ghost_noeq_lid = mk_steel_wrapper_lid "return_stt_ghost_noeq"
and elaborate Pulse terms to actually use this symbol, the symbol doesn't exist in Pulse.Steel.Wrapper.
This would have been caught eventually by a check on the input environment in the DSL checker to make sure that all the symbols needed in the top-level environment are present. But, for now, in the absence of that check, this slipped through.
Thanks Sid!

Fixed.


Mincer 1.2.5 broke $$ interpolation for scss files

With Mincer 1.2.5, $$ expression $$ no longer evaluates to anything in scss files.
app.js
mincer.MacroProcessor.configure ([ ".js", ".scss", ".cjsx", ".coffee" ])

static.css.scss
background: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 17%),
			url('$$ image("home.jpg") $$');	background-size: cover;

In Mincer 1.2.4 the url css property is properly expanded out, while in Mincer 1.2.5 it doesn't so anything.

Can you please provide an example? I was unable to reproduce with examples:
 examples/assets/stylesheets/{app.css.ejs => app.css.scss} | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/assets/stylesheets/app.css.ejs b/examples/assets/stylesheets/app.css.scss
similarity index 69%
rename from examples/assets/stylesheets/app.css.ejs
rename to examples/assets/stylesheets/app.css.scss
index 129c5ed..b221d75 100644
--- a/examples/assets/stylesheets/app.css.ejs
+++ b/examples/assets/stylesheets/app.css.scss
@@ -3,7 +3,7 @@
  **/

 body {
-  background: url('<%= image_path('stripes.png') %>');
+  background: url('$$ image_path("stripes.png") $$');
   transition: transform 1s;
 }

So the example worked - after some digging if you change MacroProcessor config to
mincer.MacroProcessor.configure ([ ".js", ".scss", ".cjsx", ".coffee" ])

it won't work.
diff --git a/examples/environment.js b/examples/environment.js
index 04fbd06..bdc44c5 100644
--- a/examples/environment.js
+++ b/examples/environment.js
@@ -112,8 +112,8 @@ if (process.env.NODE_ENV === 'production') {
 //

-Mincer.MacroProcessor.configure([ '.js', '.css' ]/*, true */);
-
+// Mincer.MacroProcessor.configure([ '.js', '.css' ]/*, true */);
+Mincer.MacroProcessor.configure ([ ".js", ".scss", ".cjsx", ".coffee" ])

 //
 // Mincer rebuilt assets on any dependency file change. But sometime result

Now I'm not sure what the right value should be (using .scss as the MacroProcessor configure worked for me up until 1.2.5), and I'm not sure what extensions need to be specified. If I had to guess though, if for whatever reason I was serving straight up scss, then the I think the $$ interpolation wouldn't work?

Tried different variants - neither reproduced bug:
Mincer.MacroProcessor.configure ([ ".js", ".css", ".scss" ])
Mincer.MacroProcessor.configure ([ ".js", ".css", ".scss", ".cjsx", ".coffee" ])
Mincer.MacroProcessor.configure ([ ".js", ".scss", ".cjsx", ".coffee" ])

node-sass version I tried with:
{
  "name": "node-sass",
  "version": "3.1.2",
  "libsass": "3.2.4",
}

@nemothekid , please create a separate repo with example.

@ixti That explains it, I was going to list our dependencies, but I checked node-sass first - ours is at  "node-sass": "~0.9.3", and upgrading to 3.1.2 solves the issue.

closing?

The same problem here. Macros work just fine in .js files, but not in .scss files. I'm using mincer 1.4 , node-sass 3.4.2. and connect-asset 5.0.1

@eruanntion please, create a repo with example, or PR new test, then open a new issue.


[FR] metadata improvements

export_libraries could be optional (actually the whole module.json could be optional).
abi.json could contain an optional 'link' to the binary (relative to the AAR root). This way, a conventional AAR could be reused for prefab by adding a fixed prefab tree. That would be as easy as building a prefab tree structure under src/main/resources of a library module.

Well, include files may require special effort to be in sync with the source tree, but there are some tricks that make this easy on Android Studio.

The first we can do (and I think we can do it without a schema rev).
The second we can't without really breaking the encapsulation here. The AAR is an implementation detail of how AGP uses Prefab. Prefab knows (and should know) nothing about them. There are other ways we can solve that issue though, so not a problem (I mentioned them on the AGP bug).

The AAR is an implementation detail of how AGP uses Prefab

You mean, Prefab does not have access to the AAR contents outside the prefab tree?

Correct. The input to prefab is the prefab directory itself (the one containing the prefab.json file). We can't rely on anything outside that directory having any particular layout.
It's not all that relevant right now, but my hope is that we can extend this to other platforms. AARs are an incredibly convenient distribution method for Android, but that's about their limit. Keeping prefab packing-agnostic keeps it portable.

But that extension will be Android-specific, as it is inside abi.json file.

That's a good point. I still don't like the idea of relying on the contents outside the directory though. The current implementation of AGP would allow it, but it's very much an implementation detail.
Less importantly, I imagine not all Android users of this will necessarily want an AAR. There are certainly other options.

I imagine not all Android users of this will necessarily want an AAR

What do you mean by that? People who will use prefab with a build tool other than AGP?

I am afraid your approach is too puristic. Yes, in the ideal world nobody should care if a library distribution packages is twice as large as it could be. This is still much lower than the real capacity of the internet broadband or of the storage services, which are often available free of charge.
But same applies to AAR compression, doesn't it? Why don't we distribute libraries as uncompressed tarballs? Why don't we keep separate copies for all possible triplets in NDK distribution, but rather reuse same files, with all the headache of conditional statements?
Same applies to prefab AAR, IMO. If an AAR is 'dual purpose', i.e. both distributes the native shared libs to be included in an app, and supplies these libs for the linker to build some custom native code around them, there should be a single copy of each file in the archive.

I imagine not all Android users of this will necessarily want an AAR
What do you mean by that? People who will use prefab with a build tool other than AGP?

Yeah. AGP is a bad match for building things that aren't either CMake or ndk-build, which still includes a lot of third-party code. A trivial sysroot backend for prefab is something I intend to write, and is something we'll use in ndkports. An AAR is useless here.

https://github.com/google/prefab/pull/106 makes module.json optional.

As for the other part here, I think it might make sense to invert what you recommended. Rather than making it possible for prefab to look outside of its package, we could probably teach AGP to look for jnilibs from prefab. I don't exactly know what that would look like off the top of my head, but it would remove the duplication and keeps AGP and prefab from needing to know much about each others' implementation details.

A trivial sysroot backend for prefab is something I intend to write, and is something we'll use in ndkports. An AAR is useless here.

AAR in this context is but a zip filesystem. It doesn't make a difference which of the two copies of a binary is a 'real' one, and which is a link. I'd say that the way AGP expects to see the binaries (all in a single directory like jni/x86) is easier to handle than putting each one of them in their own directory. If the 'link' is not handled by zip, but rather a part of the abi.json, as I proposed above, the advantage is that generation of the whole prefab package can be done (in Android Studio) by simply adding some text files (easily backed by git) to an 'com.android.library' project. No extra scripts required to create a double-purposed AAR, that can be used either as an Android library dependency, or as a prefab dependency.
… or both, as I do in https://github.com/alexcohn/ndk-samples/tree/prefab/unified-aar/prefab/hello-libs. There is still a caveat with Android Studio 4.0: the gradle dependency must be specified as implementation files('../gen-libs/build/outputs/aar/gen-libs-debug.aar'). Unfortunately,
implementation project(':gen-libs') does not trigger prefab.

On the second thought, if Prefab could get involved for 'regular' library dependency, then it would generate the jniLibs folder for the dependent module, built according to all the metadata rules of prefab (e.g. matching the NDK version and STL variation).
In the long run, this would be more powerful than relying on the current jni/ directory of an AAR.

the advantage is that generation of the whole prefab package can be done (in Android Studio) by simply adding some text files (easily backed by git) to an 'com.android.library' project. No extra scripts required to create a double-purposed AAR, that can be used either as an Android library dependency, or as a prefab dependency.

There's no need to do any of that when Studio can build these for you anyway: https://developer.android.com/studio/preview/features#4.1-prefab-publish

On the second thought, if Prefab could get involved for 'regular' library dependency, then it would generate the jniLibs folder for the dependent module, built according to all the metadata rules of prefab (e.g. matching the NDK version and STL variation).
In the long run, this would be more powerful than relying on the current jni/ directory of an AAR.

I don't think I understand what you're describing here. It sounds like you're saying prefab should be responsible for installing all native libraries to APKs/AARs, even when the user isn't using the NDK themselves. For example, if I depend on com.foo:whatever because I use its Java API in my app, prefab should be the thing that deals with installing the JNI implementation of com.foo:whatever into my APK.
I don't think that's what you're suggesting, but maybe my misunderstanding makes it easier for you to clarify :)

I am rather skeptical about prefab-pubish. If a library is built within Gradle, it's probably easier to distribute it as source code. Prefab is important for tricky setups, like ffmpeg.
As for the second thought, the idea is exactly that: the com.foo.whatever.aar does not need the jni/ folder for all ABI's. Instead, Android Studio will pick the native libraries from the prefab/ folder.


Minimal api iform

Pull request for this issue https://github.com/dotnet/AspNetCore.Docs.Samples/issues/8#issuecomment-1185996721

For some reason when you access the, endpoint (singlefile). It doesn't bind to IForm but the endpoint (/multiplefiles) binds well to IFormCollection

@Rick-Anderson

I get the same error with /singleFile and /multipleFiles
BadHttpRequestException: Support for binding parameters from an HTTP request's form is not currently supported if the request contains a "Cookie" HTTP request header. Use of an HTTP request form is not currently secure for HTTP requests in scenarios which require authentication.

@sammychinedu2ky  the code works with FF developer but fails in Chrome with the above error. Like you said, /singleFile returns BadHttpRequestException: Required parameter "IFormFile file" was not provided from form file.
@martincostello wrote all this code, maybe he can explain what's going on.

@sammychinedu2ky the code works with FF developer but fails in Chrome with the above error. Like you said, /singleFile returns BadHttpRequestException: Required parameter "IFormFile file" was not provided from form file.
@martincostello wrote all this code, maybe he can explain what's going on.
UPDATE Edge also works fine and Chrome when I browse as guest to get rid of the request cookie. The offending request header in chrome is ai_user=JKUwS|2022-02-11T18:47:13.976Z which I think is application insights.

Hmmm..🤔 Would try it out in guest mode

Doesn't still work for me in guest mode on Edge

Doesn't still work for me in guest mode on Edge

That's expected, see https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-7-preview-1/#minimal-api-improvements

The code that blocks requests with authentication cookies was recently removed, so I think it should work as expected in the next preview.

The code that blocks requests with authentication cookies was recently removed, so I think it should work as expected in the next preview.

Ooh ok

Doesn't still work for me in guest mode on Edge

That's expected, see https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-7-preview-1/#minimal-api-improvements

Alright.. so that means the progress would be paused until the next preview right?

Yeah I think you'll need to wait until preview 7. This was the change: dotnet/aspnetcore#42586

alright thanks Martin🥂

@sammychinedu2ky S&M for now but we won't publish it until it's ready.

@sammychinedu2ky S&M for now but we won't publish it until it's ready.

Alright Rick thanks🍸


What's the easiest way to implement acceptance/unit tests for generated Flask app?

I'm currently in the process of writing acceptance tests for a connexion based API in Flask. As a Flask user i'm used to test stuff with py.test and the pip modules: pytest-flask and / or Flask_Testing
Both have helpers to provide some config and start a live server when needed. This doesn't seem to work with the Flask app created by Connexion. This also makes it nearly impossible to use Flask's config system and the url_for() methods.
Is there a way to use the testing plugins or to create a more Flask compliant app?
Possibly related to #489 and #364

This is how I use it now:
I added a construction to the place where the app is inited, so that it can return a flask app when needed, something like:
def run(actually_run=True):
    app = connexion.App(__name__, specification_dir='./swagger/')
    api = app.add_api(swagger_file)
    if actually_run:
        app.run(host=HOST, port=PORT, ...)
    else:
        return app.app

Then a live server can be started from tests that need it:
import requests
from flask_testing import LiveServerTestCase
from main import run_application

class MyTest(LiveServerTestCase):

    def create_app(self):
        app = run(False)
        return app

    def test_server_is_up_and_running(self):
        response = requests.get(f"{self.get_server_url()}/an_endpoint_for_your_api")
        self.assertEqual(response.status_code, 200)

I had a good experience using the WebTest library in the past (pip install webtest): https://docs.pylonsproject.org/projects/webtest/en/latest/
It will test your application on WSGI level which has some benefits:

It is independent of the underlying implementation framework - your tests will work now with connexion/Flask and keep working if you decide to go for the gevent or tornado or any other WSGI-compatible backend in the future.
Everything works on the WSGI-API level, no need to start a "real" webserver in the background and shut it down again after your tests.
The tests can be run with all usual Python unittest runners (the built-in one, py.test, nose etc.)

The documentation of WebTest is quite extensive and covers all major use cases. A quick example to get started:
from webtest import TestApp
import unittest

from main import app # the connexion Flask app object

class TestEndpoints(unittest.TestCase):
    # could also be set up globally outside of this class
    @classmethod
    def setUpClass(cls):
        cls.app = TestApp(app)

    def test_some_endpoint(self):
        response = self.app.get('/some/endpoint').json()
        expected_response = dict(foo='bar', baz='buz')
        self.assertDictEqual(response, expected_response)

are there any updates on writing unit tests for controllers?

I found this repo immensely helpful for getting going with testing connexion: https://github.com/hirose31/connexion-tiny-petstore
(it also uses WebTest, as recommended by @dirkschneemann)

There may be a way to get testing working with using flask's internal test client. I have created a PR showing it as an example:  #957
Let me know what you think, or if I am missing something that you are looking for.

Closing in favor of https://github.com/spec-first/connexion/issues/489


Goog

:blush:

Hi there,
it looks like you opened this issue by accident and I'm going to close it.
If you encounter an issue, please make sure to fill out the issue template with as much information as you have. Thanks.


long metadata values overwrite next line in metadata table, so that next value is unreadable

this is Firefox 31.8.0

I see similar things on IE and on Chrome.

Hello, I have the same problem with long metadata. Is it somehow fixable?


Add support for Azure Service Bus

Storage Explorer Version: 1.0.0
Platform: macOS
Architecture: x64
Build Number: 20180415.2
Commit: 5d603052
Regression From: N/A
It would be handy if Azure Storage Explorer supports Service Bus. There is Service Bus Explorer tool, but it's Windows only, while I want it on macOS.

Would love this as well!


Display time from 00:00 to 07:00

How can i display time from 00:00 to 07:00[No need of showing 08:00 to 23.59]?

The feature supports is incrementing and decrementing by certain number of minutes. Directly going to 07:00 is not possible with this component. But you can fork and customise as per ur  need.

Can i display time 00.00 to 07.00 (Means i can select time from 00.00 to 07.00).I dont want to take time from 08.00 to 23.59?Is it possible?

I have already mentioned that such feature is not possible with the existing component.


Replace system default malloc with mimalloc

Implements https://github.com/godotengine/godot-proposals/issues/11190
Simply replacing malloc/free in core/os/memory.cpp with mi_malloc/mi_free, and add a flag in scons to switch between them.
Choose mimalloc because it is small and easy to integrate.
Performance
build option: scons production=yes, projects come from godot issues which I think will benifit from this change.
Binary Size
master: 130,965,504 bytes
mimalloc: 131,048,448 bytes
About 81KB size increase, I think that's ok for editor.
Instantiate with Many Properties
from #97829
Run 10 loops calculate average time:

master
Average: tt1: 333.500000ms, tt2: 454.000000ms, diff: 1.361858
mimalloc
Average: tt1: 300.800000ms, tt2: 397.100000ms, diff: 1.32032

Time reduced: 9.8% and 12.5%
Node Duplicate
from #91230

master: 2226 ms
mimalloc: 1731 ms

Time reduced: 22.2%
Loading RichTextLabel with lots of Text
from #96475
command: time .\godot.windows.editor.x86_64.exe --path ".\RichTextLabel\" --quit

master: 10.52 s
mimalloc: 8.80 s

Time reduced: 16.3%
Button and Label Instantiate
from #71182
increase button count to 10000

master: 3000 +- 15ms
mimaloc: 2565 +- 10ms

Time reduced: 14.5%
Empty Project Open
command: time .\godot.windows.editor.x86_64.exe --editor --path "./emptyProject" --quit

master: 6.84 s
mimalloc: 6.31 s

Time reduced: 7.7%
All tests repeated at least 3 times and ensure results are stable.
Edit: Test Projects: TestProjects.zip

Cleanup unused files.
Some test failed, no idea what's going wrong.

Also @Calinou I want to point out that godot-benchmark's results are quite unstable. Easily detect 10%-20% diff between identical runs, and barely converge even running multiple times. That's why I take these MRPs.

Taking into account that benchmarks are not stable [^1], it's hard to analyze benchmarks results (especially as they are just are unsorted json).
I tried to represent this huge bunch of text into something more suitable for analyze, but also failed.
Anyway here is results.xlsx with some poorly made diagrams.

Summary results
It is better overall in most situations, but as it is just summary, it is not taken into account how significant every benchmark is. So performance gain may be only in non-important benchmarks.

CPP, Core and Math
Allocation and string manipulations operate much better.
But array operations mostly suffer (max loss - 33%).
Ignore Core->Crypto as unstable/unreliable.

GDScript
Array operations mostly suffer again.

Actually the only real contribution of this comment is just putting @Calinou data into xlsx file. All "analysis" most likely should be ignored as I'm not statistical analyst and made bad graphs.
[^1]: As I remember, crypto is least stable, so maybe it could be completely ignored.

I took the liberty to edit @Calinou 's review because I almost had a panic attack

I'm wondering if MIMALLOC_ENABLED is the right term for this. How about ALLOC_MIMALLOC? Because maybe there will be other allocators in the future following your PR?

Changed.
By the way anybody knows why the CI fail? I really have no idea what it's complaining about.

Something thread safety related, can't quite tell, but I suspect something with this library isn't thread safe in some way

I tried mimalloc v1, v2, dev branch, enable secure mode, build with/without optimizations and manually add a lock around malloc. None of them eliminate the warning. I suspect it is either a false positive or some godot code relying on undocumented ptmalloc features to work. It is quite weird for malloc to involved in deadlock, because neither it expose lock nor accept lock from user.
Give up for now, waiting for somebody familiar with multi-threading.

Close this as #99686 is a better alternative.

Thanks for your hard work, @YYF233333 ! Really, your proposal and subsequent PR (even closed) seems to lead to a Godot upgrade!


docs: Fix simple typo, numer -> number

There is a small typo in test/vendor/mocha.js.
Should read number rather than numer.

Thanks @timgates42!
I've got to ask though, how come you checked line 8147 of a vendored third-party testrunner library?
Some automated tooling perhaps?

Yes it was, if you are interested it is at https://github.com/timgates42/meticulous and the online documentation is at https://meticulous.readthedocs.io/en/latest/ let me know if you try it out and thanks for merging the pr!

Interesting, thanks for sharing! ☺


CodeTrans READMEs updated

Description
The summary of the proposed changes as long as the relevant motivation and context.
Issues
Updated the READMEs for Code Translation.
Type of change
List the type of change like below. Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would break existing design and interface)

Dependencies
List the newly introduced 3rd party dependency if exists.
Tests
Describe the tests that you ran to verify your changes.

Canceling this because of a unified one


[CVE-2018-19763] heap-based buffer over-read at writer.c (function: write_png_to_file)

Re-posting this here to make sure you are aware.
https://nvd.nist.gov/vuln/detail/CVE-2018-19763
https://bugzilla.redhat.com/show_bug.cgi?id=1649201

@nluedtke Thank you for your efforts. I appreciate it.

Fix for this problem #95 is merged into v1.8.3. Thanks.


9 dots icon

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Summary 💡
I was looking for the 9 dots icon
on your website but couldn't find anything.
Any chance you can introduce that to the mui-icons package?
Side note: (not sure if this intentional) Googles Apps icon has 9 dots, MUIs App icon has 9 squares.
Thanks
Examples 🌈
Link to Google fonts in Summary above.
Motivation 🔦
I am building a clone of https://docs.google.com/forms/ and want to copy pasta Google's Design. 🤣

Dunno about your definition of round 😁

@tippfelher Thanks for reporting this!
The icons package downloads svgs directly from material.io/resources/icons as part of the build process.
It turns out the "Rounded" variant is not really rounded at the source either 😅 – https://fonts.google.com/icons?selected=Material+Icons+Round:apps:&icon.style=Rounded&icon.query=apps

Duplicate of #32846

@mj12albert Note the difference between "Material Icons" and "Material Symbols".


Make B.E.N.J.I. compatible with Linux

Currently, the digital assistant is compatible only with Windows.

Should a new file be created for the linux version? Because the imports and functions could vary!
Eg. benji-linux.py
Or do we continue on the same file and make it compatible for linux.

Making a new file is better. You can name it as linux/benji.py and mention about this in the readme

Made a PR. I used pyttsx which is supposed to be cross-platform. So the file I wrote is platform-independent. (is supposed run on a mac too, haven't tested it).
I feel keeping the Linux version in a separate file may be a problem, as the features added to the main file are not reflected here.

Closing this issue for now


Fixed typo you -> your

Thanks for reporting this. We renamed the files and thus this conflicts with the current master. I've update the new article and fixed the typo. Hence, closing the PR.


Exception in payload.errorHandler if error is thrown from non-collection endpoint and config.afterError hook is defined

Link to reproduction
https://github.com/franciscolourenco/payload/commit/71fe96c79155ad0c7d59e51b63919413623f9e9c
Describe the Bug
When an error is thrown from a config.endpoints endpoint, and a  config.afterError hook is defined, the following error is thrown in this line because req.collection is undefined:
.(..)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/layer.js:71
    fn(error, req, res, next);
    ^
TypeError: Cannot read properties of undefined (reading 'config')
    at .(..)/payload/packages/payload/src/express/middleware/errorHandler.ts:59:24
    at Layer.handle_error ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/layer.js:71:5)
    at trim_prefix ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/index.js:326:13)
    at .(..)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/index.js:286:9
    at Function.process_params ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/index.js:346:12)
    at next ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/index.js:280:10)
    at next ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/route.js:136:14)
    at Layer.handle [as handle_request] ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/layer.js:97:5)
    at next ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/route.js:144:13)
    at Route.dispatch ((...)/payload/node_modules/.pnpm/express@4.18.2/node_modules/express/lib/router/route.js:114:3)

To Reproduce
Prerequisites:

A config.afterError hook as been defined, for example by using the Sentry plugin
An error is thrown from an endpoint without a collection associated

See reproduction for more info. Run the tests or navigate to /api/test
Payload Version
2.10.0
Adapters and Plugins
No response

Fix incoming, thank you for the easy recreation @franciscolourenco


Add .npmignore

Additions

Added a .npmignore file which excludes the src directory and tsconfig.json, tslint.json files to be uploaded to npm

So basically it's only gonna publish dist folder or the out dir to the npm so it would reduce the package size is what i am thinking right now

Yes now you get it. You previously thought that this wont push those files to GitHub too :joy:

Yes now you get it. You previously thought that this wont push those files to GitHub too

I thought it was gitignore xd


Update Gradle plugin, WorkManager and add new Android-Job version

PR for issue #567

Closing as it is already covered in PR #575


questions re: nordic seas TMI

These may not actually be issues, just questions I have while thinking about the Nordic Seas TMI, specifically the sourcemap test.

[ ] Should PO_4true (boundary conditions, propagated through A), as computed in the sourcemap test, be similar to yPO_4 (just the full PO_4 field from the netcdf)? They are significantly different, and I was wondering if this was expected and what the explanation is for it. Is the yPO_4 field basically just cleaned-up real-world observations? Does the mismatch between these two variables just demonstrate that the A matrix doesn't perfectly solve for the phosphate?
[ ] Is the Q^- variable associated with the u or q? Based on this line https://github.com/ggebbie/TMI.jl/blob/7c6f31a5d7d0cb492ddf7ad45466c1efb676b8c1/src/TMI.jl#L2112 it seems like it's associated with u, but calling it Q makes it seem like it's associated with q.
[ ] the output of sparsedatamap is the Optim.jl output out. At one point, we look at the quantityout.minimum - Optim.jl says this is the "minimum of the objective function", is this different from the cost function? It has a different value than $\tilde{J} as far as I know
[ ] what's the logic behind providing uvec and $u_0$ as arguments to costfunction_point_obs! and sparsedatamap? In costfunction_point_obs!, an unvec is immediately performed, so I'm not sure why, uvec is required. Is there some logic somewhere where one variable is being modified but not the other?
[ ] more of a stylistic code thing: in costfunction_point_obs! there's a conditional where guvec != nothing. Would it make more sense for guvec to just be an optional argument?
[ ] all of the functions that are g[some other function] (e.g. gobserve, 'gsteadyinversion) - are these just the version that is propagating a gradient? What's the basic difference between these and their original version? (these functions are all used in sparsedatamap`, I think I just don't quite understand what's happening in this function.

PO_4true and yPO_4: I find that the two are basically the same (10^-14 difference) except on the north-surface intersection strip. This strip has boundary conditions applied twice, but it should only happen once. Numerically, there is no impact on the interior ocean.

The cost function has a term u^T Q^-1 u. This is a clash between control theory and biogeochemical notation.

objective function = cost function

uvec is required by Optim.jl unfortunately. The structure of u_0 is currently needed to properly unpack/pack the vector. There are ways around this but this information will need to be passed to the cost function somehow.

Stylistically this is a good idea. The issue is satisfying the requirements of Optim.jl. I was unable to reconcile both constraints but it might be possible.

Yes, g functions are used to calculate gradients. They are the adjoint functions of the forward functions which do not have an extra g at the front. These functions have been hand-coded following the recipes in books like Griewank and Walther 1995. Enzyme.jl appears to be the preferred way to try to generate them automatically but I have not tried it for these cases yet. The gradients could also profitably included as part of the original Field and BoundaryCondition structs. Another approach would be to use Dual Numbers.

I double-checked, I think they are different at all surface - edge boundaries: is this still expected? I made a quick plot comparing the elementwise differences between the two for the surface layer.

I double-checked \tilde{J} and it does have the same value as out.minimum. I think I had run something in the wrong order originally.

the rest of this all makes sense! thanks for clarifying.

It does make sense for all lateral-surface boundary condition intersections to have a problem. UnicodePlots made it appear like only the north-surface intersection had an issue. This must be an artifact of using heatmap instead of contourf.  None of these points affect the interior, but it should still be fixed nonetheless. One solution is to define the lateral boundaries after the surface boundary has been defined, and then to check that the boundaries are not doubly-defined.

I will close this discussion. The outstanding work item is in #106


Editing default MRTK profiles doesn't seem possible through unity inspector

Overview
Configuring the MRTK seems to add a default mixed reality toolkit profile to the scene that can be viewed in the inspector. However, its unclear how to edit the default profile for contributing back to the MRTK/unblocking your own local work
Expected Behavior
Inspector allows users to edit the default mrtk profiles.
Actual Behavior
Inspector dithers the mrtk default profiles. This didn't personally instill confidence in using the MRTK. It ends up seeming like everything is hard coded/default behaviors are enforced even though things are intended to be editable.
I can understand that we want to make sure that the default MRTK profiles remain stable in the repo, but not being able to edit them in the inspector makes for a bad contributing experience. Its non-intuitive to open an asset file in a text editor to make changes.
Steps to reproduce

Open Unity project and configure scene
Select Mixed Reality Toolkit component and view in Unity's inspector

Unity Editor Version
n/a
Mixed Reality Toolkit Release Version
v2 work/mrtk_development

It is possible to edit the default profiles for contributions back into the MRTK repo.
Edit/Project Settings/MRTK/Uncheck Lock SDK Profiles

Do we have documentation calling out our settings pages? Is this lock flag something that should be viewable in the inspector?

I don't recommend this lock flag should be viewable from the inspector or else developers will attempt to unlock and edit the default profiles.

What's the main incentive in adding additional steps to prevent consumers from editing default profiles in their local setup? Is it to maintain a more stable repo? Does that outweigh the benefits to new consumer productivity? In my opinion, this flag isn't discoverable in its current state. And I would guess that its not documented?
In the past I've received feedback on code reviews that we shouldn't hinder consumer productivity (I was asked not to check in a .gitignore change that prevented checking in APK's because it could detract from consumer productivity even though it would help maintain a cleaner repo). Here it seems like we are promoting the opposite saying that we don't want consumers to be able to easily do as they please?

I don't believe this would hinder consumer productivity at all as it's expected they copy/clone the default or start from scratch. The goal here was to make sure that everything worked out of the box, and if we made any changes/edits to the profiles that users wouldn't all of the sudden have their custom edits disappear when they imported/pulled an update. That imho would hider consumer productivity more than anything. In the past, I've received lots of feedback about how changing a prefab, or it's serialization would stomp many HTK adopters from wanting to update for fear that their customization would evaporate. That my friend is the benefit.
Now as for undocumented, yes there's isn't anything specifically in the docs and I apologize for not specifically adding it, but it was very publicly tasked, discussed, and reviewed here on GitHub. I know that isn't great documentation, but we do have a record and great discussions we can reference for the documentation we can add. Hope this helps.

Thank you for sharing this context around prefabs/serialization and update stories.
It seems like this issue should be renamed 'Inspector UX appears to require usage of hard coded default MRTK configuration profile when customization is possible'. Was there any previous thought around having all settings hidden until after a user had decided to copy and customize the profile? Seeing a dithered wall of fields in the inspector menu (as well as missing copy and customize buttons filed in #3605) seems to generate the bulk of my confusion/frustration with first using the profile system.

Maybe we should also add a flag to the inspector window with a warning stating that using said flag can result in broken updates in the future?

Generally the first profile most people encounter is the main one. There's two convenience buttons at the top to get started quickly with your own, or start from a blank slate with everything disabled.
The "copy/clone" </> button isn't immediately obvious what it does, (even with the tooltip). I think updating this from text to an actual copy icon or something similar would go a long way to help people immediately recognize its function.
Unless this was removed, this warning should show up at the top of each default profile:

I think adding a flag to the inspector window is unnecessary as most of the time the default profiles will not need to be edited much once a feature is complete. It's also something only contributors should really know about, and giving consumers the ability to unlock them may add confusion or ruin their projects if they used the edited default profiles, then grab an update.

One other thing I was looking into was the problem where doing a actual copy/paste of the selected asset in the project window (either via ctrl + c, ctrl + p or ctrl + d) will render the copied profile locked as well.
Not sure how to work around this one, as we'd need intercept the commands and check the if the selected object is a default profile, copy the asset, then disable the lock.

@Jarodshow and @Ecnassianer do you guys have any thoughts on whether this flag to enable editing defaults should be added to the inspector window? I can now understand that editing the default profile is not a great practice for developers building applications that will take MRTK updates. But, what have your twos' experiences been with the default mrtk profile inspector?
I don't necessarily agree that there should be anything in the MRTK that 'only contributors should really know about'. A consumer one day may be a contributor the next, but adding lesser known items like this flag makes the transition more difficult. It also generates more potential for regression if different contributors don't know that this functionality exists.
But back to my original UX confusion, is there any reason why these dithered subsystems are all shown when first selecting the default configuration profile? Could hiding these dithered items behind a drop down menu cut some of the cognitive load associated with first starting to use the profile system?

I don't necessarily agree that there should be anything in the MRTK that 'only contributors should really know about'. A consumer one day may be a contributor the next, but adding lesser known items like this flag makes the transition more difficult.

It was not my intent to say that it's not something we want to intentionally hide, but that is why contribution, and feature guidelines checklists exist. That's likely the best places this kind of documentation should be.

dithered

I don't understand what you mean when you say this. It's Unity's own feature to show that a gui is disabled or inactive.

Could hiding these dithered items behind a drop down menu cut some of the cognitive load associated with first starting to use the profile system?

You mean how it is now with the nested foldouts?

Yeah, nested foldouts may be the correct term. Similar to how sub profiles are only shown after digging into the inspector.

I thought that's how it currently is/looks?

@chrisfromwork I think the desire to more easily change the Lock Default Profiles setting is a feature request in the service of an ugly workaround, so I'd rather take a step back and look at what's generating the desire to change that setting.
On the one hand, the way I think about the data in the default profiles is "These are the settings we'll use by default if our users don't customize the toolkit". (Same as the default value specified in a monobehavior variable declaration is used when a prefab hasn't had that value set in the inspector). This leads me down a road that says there is no justification for a user to edit this data. All they're going to do is end up with merge conflicts on their next upgrade. A pretty sound argument for obfuscating them.
On the other hand, every person I know who has discovered the Lock Default Profiles setting has immediately unlocked them and proceeded to abuse the Default Profiles as their own. Later on they deal with the merge conflicts. That's not to say the merge conflicts make it not worth it: since if a user creates their own customized profiles, then we add a field to the profile class and set that to reasonable defaults in MRTK's Default Profiles, the customized user profiles now are likely to have null or some other junk value, rather than the reasonable defaults we recommend. Might as well just fix your old abused profiles. That user behavior is a pretty sound argument for the profile inspector to allow users to edit values immediately and directly.
So the real question is: how do we let users view and edit their customized profiles immediately upon importing MRTK, while keeping the default state of the toolkit ready-out-of-the-box? I think there are a few approaches we could take.
In the past I have advocated for a system where the "reasonable defaults" are not stored in "profiles" at all. Instead they are stored in some other format* which is clearly not intended to be edited by MRTK users. Values in profiles serve only as overrides to the "reasonable defaults". If they are absent (for example, immediately after a user imports MRTK for the first time), all the "reasonable defaults" are used. When the user begins customization (in this world, this could be as effortless as clicking a field in the MixedRealityToolkit scene object inspector), we generate the necessary profiles and set them to override the "reasonable default" of the fields the user customizes.
*From an implementation perspective, we could save work by making it a readonly child of the profile class, but that detail is irrelevant to the larger goal.
When it's time to update, we add a new field to the profile class, and a new "reasonable default" value to our hidden format, and ship a release. The user's profiles don't have an override for that value, and so they fall back to the "reasonable default", and they new feature is automatically enabled.
When a new contributor realizes they need to add a new default value for something in a profile, they are left with a very actionable question to seek in help chat or documentation: "Where are the default values for configuration settings stored?" There's no misleading thoughts about editing readonly default profiles.

@StephenHodgson by dithered i just mean grayed out/disabled.
There are nested foldouts per setting. Default behavior post configuration seems to be for all of them to be open with some sub profiles closed. It ends up looking like a wall of unchangeable text for the first naive glimpse at the inspector window, which I personally struggled with understanding.
It may be worth having one nested folder that contains all settings that're closed by default for the default configuration profile. We could also choose to have each high level settings nested foldout closed post initial configuration. It may also be that what we have today is the best experience for developers and I am in a minority group that wants things simpler. :)
@Ecnassianer thank you for sharing your experience. I am going to spend some time digesting this information before trying to suggest a potential solution/course of action.

Great stuff @Ecnassianer.
I also thought about just serializing this stuff in a json file someplace as a "default" configuration as well, but thought that it'd be a lot more work to maintain. Keeping the serialized values in the class' fields made more sense, and if we make sure to use attributes like FormerlySerializedAs we should generally be able to make changes without too hassle.
One last option I don't think anyone really touched on was the Presets. I briefly looked into using these, but couldn't figure out an easy way to utilize them them in code the way I wanted with the "One click configuration" scenario.

@StephenHodgson and @Ecnassianer if either of you feel that you'd like to pick up some of these improvements feel free to speak up. :)
I'm going to get some tasks filed internally in our backlog calling out these sorts of inspector/editor ux changes so that there's more hope of getting a formal owner to drive the integration/coordination of these improvements. I'll reference this issue here as well so that we don't end up duplicating work/so that external contributors can pick up the work if they would like.


Minor changes to make a cleaner repository

I have made some changes to make a cleaner repository, here is the list:

Renamed the gui_v1 -> realtime-gui
Removed unused files
Mixed licenses into one
Moved requirements to a folder
Removed notebooks from google colab (they are banned)
Set as main readme the english readme (to better welcome new users)
Improved model downloader

Ok, so you are free to add the useful things


Preserve customize glob order.

Description:
Preserve customize glob order.
If the code does not interact with devices:

[x] Local tests with tox run successfully. Your PR cannot be merged unless tests pass

Should we add a test to verify that we won't break this in the future?

Added tests

Awesome, thanks. For the future, prefer to use test functions instead of test classes.

Cherry-picked into the 0.42 branch


Add conditions for setting -source-path option

-source-path and -module-source-path are exclusive, so only set a value
for the first if the second is not present.
We also no longer overwrite what the user may have configured in
-source-path.
Fixes #21399
From playing around to create the reproduce test, looks like -module-source-path has strong enforcement of module name in source folder hierarchy, which -source-path does not have. So we should aim at supporting both options first class in an upcoming version.
The fix here unblocks usage of -module-source-path in user build scripts without changing the feature released in Gradle 7.5

@bot-gradle test this

OK, I've already triggered the following builds for you:

PullRequestFeedback build

Replaced by #21446


add desmos graphing.

pushed public demos api, which triggered GitGuardian. Reimplement in https://github.com/branyang02/notie/pull/39.


Base Apply and Elementwise Function

Is there a way to use base::apply and a CVXR elementwise function to apply an elementwise function to every column of a matrix?  Assuming the length of the vector matches the number of rows of the matrix, I'd like to be able to make my objective function the following:
new_matrix <- apply(constant_matrix, 2, function(x) x * variable_vector)
objective <- sum_entries( max_entries( as.matrix(new_matrix), axis = 2 ) )
I get the following error when solving the problem:
Error in min(constant) : invalid 'type' (list) of argument
(In case my code is unclear, my goal is to multiply a variable vector by every column of a constant matrix, then get the max of each of those scaled columns, and then sum all of those maxes.)
Thanks!

The short answer is yes, you can.  If you post the question to SO as noted in the FAQ we will be happy to answer this for the larger community.


FlxSound

Describe your problem here.
I was downloading all the psych 0.6.3 requirements and changing all the system.Flxsound to sound.FlxSound
but this error appears in FlxSound and I don't know how to fix it

Are you modding a build from source or with Lua?
Source
What is your build target?
Windows x64
Did you edit anything in this build? If so, mention or summarize your changes.
No response

Well it seems that I just had to delete the Flxsound from the flixel/system/ folder


Don't process the full resolution image, instead scale it down first.

This improves processing speed and the result shouldn't be too far off.
const main = () => {
  const imgFile = document.getElementById("imgfile");
  const image = new Image();
  const file = imgFile.files[0];
  const fileReader = new FileReader();

  // Whenever file & image is loaded procced to extract the information from the image
  fileReader.onload = () => {
    image.onload = () => {
      // Set the canvas size to be the same as of the uploaded image
      const canvas  = document.getElementById("canvas");
      const dw      = 64;
      const dh      = 64;
      canvas.width  = dw;
      canvas.height = dh;
      const ctx = canvas.getContext("2d");
      ctx.drawImage(image, 0, 0, dw, dh);

      /**
       * getImageData returns an array full of RGBA values
       * each pixel consists of four values: the red value of the colour, the green, the blue and the alpha
       * (transparency). For array value consistency reasons,
       * the alpha is not from 0 to 1 like it is in the RGBA of CSS, but from 0 to 255.
       */
      const imageData = ctx.getImageData(0, 0, dw, dh);

      // Convert the image data to RGB values so its much simpler
      const rgbArray = buildRgb(imageData.data);

      /**
       * Color quantization
       * A process that reduces the number of colors used in an image
       * while trying to visually maintin the original image as much as possible
       */
      const quantColors = quantization(rgbArray, 0);

      // Create the HTML structure to show the color palette
      buildPalette(quantColors);
    };
    image.src = fileReader.result;
  };
  fileReader.readAsDataURL(file);
};

Noticed that my mobile browser (Samsung Internet) would show a page not responding dialog whenever I tried to load an image. Scaling it down would be a great way to save computing resources.


[ISSUE #6797]Support batch ack when reput buffer ak to store in PopBufferMergeService

Which Issue(s) This PR Fixes

Fixes #6797
Brief Description
see ISSUE #6797

Codecov Report

Merging #6798 (aad1f61) into develop (c5fec3a) will decrease coverage by 0.22%.
The diff coverage is 43.84%.

@@              Coverage Diff              @@
##             develop    #6798      +/-   ##
=============================================
- Coverage      43.08%   42.86%   -0.22%
- Complexity      8920     8984      +64
=============================================
  Files           1105     1105
  Lines          78002    78471     +469
  Branches       10151    10227      +76
=============================================
+ Hits           33604    33638      +34
- Misses         40180    40615     +435
  Partials        4218     4218

Impacted Files
Coverage Δ

...a/org/apache/rocketmq/common/ControllerConfig.java
0.00% <0.00%> (ø)

...va/org/apache/rocketmq/common/PopAckConstants.java
0.00% <ø> (ø)

.../impl/heartbeat/DefaultBrokerHeartbeatManager.java
82.27% <ø> (ø)

...cketmq/broker/processor/PopBufferMergeService.java
30.29% <1.92%> (-3.04%)
:arrow_down:

.../java/org/apache/rocketmq/common/BrokerConfig.java
27.97% <25.00%> (+0.01%)
:arrow_up:

...ava/org/apache/rocketmq/store/pop/BatchAckMsg.java
33.33% <33.33%> (ø)

...he/rocketmq/broker/processor/PopReviveService.java
36.47% <35.48%> (-1.70%)
:arrow_down:

...tmq/controller/impl/manager/BrokerReplicaInfo.java
61.11% <45.45%> (-9.86%)
:arrow_down:

.../apache/rocketmq/controller/ControllerManager.java
49.66% <53.84%> (+1.46%)
:arrow_up:

...he/rocketmq/controller/impl/DLedgerController.java
71.68% <79.31%> (+5.02%)
:arrow_up:

... and 3 more

... and 139 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

LGTM～


Update ComfortCloud.ts with additional Headers

possible solution for https://github.com/bisand/node-red-contrib-panasonic-comfort-cloud/issues/19
couldnt get the test to work, untested but hope it helps a bit

@mc02  Thanks for the contribution and sorry for the delay!


Apply localization to all hard coded text in the Expensify.cash app

Details
Fixes some issues that were discovered in this pull-request.

this reference is lost in showDocumentPicker
No such key common.settings in languages/en
The error in showDocumentPicker is only printed on the console, it's not intended to be seen by the end user
and it does not need translated prefix

Fixed Issues
Fixes https://github.com/Expensify/Expensify.cash/issues/2408

🚀 Deployed to staging in version: 1.0.65-4🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Anything that needs to be QAd here? CC @Jag96 @eVoloshchak

Ah no, we can check this off @isagoico!

🚀 Deployed to production in version: 1.0.68-4🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


localstorage is shared in a shared browser

Got a nostr DM from someone who logged into another account in the same browser and their new account had access to their other account's NWC.
Given we store NWC in localstorage this makes sense. Can we create authenticated localstorage? If not, we should at least clear localstorage when someone logs out.
I don't expect this to be a common problem, but it's worth not letting this happen.

Since the problem is similar to the "remember me" login functionality (except it's related to wallet credentials instead of actual login), I think the solution is to have a setting that asks if this wallet should be "remembered". If this is not checked, we delete the wallet credentials on logout.
We can still prefix the storage keys with account ids so credentials from accounts don't conflict if the same device is used.

I think the solution is to have a setting that asks if this wallet should be "remembered"

I kind of dislike adding things a person has to think about to serve an edge case. Why not just delete them on logout?

Why not just delete them on logout?

I thought it would be annoying to configure wallets again if you logged out once

How "dangerous" is this localStorage leak? if its not I guess just changing the name as a prefix is simple enough
const storageKey = `{$userID}__webln:provider:nwc`

const configStr = window.localStorage.getItem(storageKey).split("__")[1]

Otherwise would some encryption of the config json be worth the effort if we still don't really want to delete it?

How "dangerous" is this localStorage leak?

It gives access to spend external user funds so pretty dangerous. That's why we recommend to set budgets in the wallet setup page:

Otherwise would some encryption of the config json be worth the effort if we end up deciding deleting it is a hassle?

I think encryption and deleting on logout are separate issues. If you're logging out on a device, I think it's a reasonable expectation that everything about your session is deleted (encrypted or not).
Regarding encryption: We're open for ideas! We definitely want to improve the security around these credentials. All we did so far was to add CSP (nonce-based strict policy) in #770 to make XSS more difficult.
For example, we've discussed storing the credentials on the server but that makes us more of a target. Also, I think it's a reasonable expectation from stackers that we don't store them in plain text. They should be encrypted in some way that we cannot decrypt. But I would consider them always a liability.
So the question comes down to: How should this encryption scheme look like?
Should it use a password or PIN from which we derive a key? Should it be more like 2FA where we store a decryption key on the server and the encrypted content is in their local storage which gets decrypted and stored in memory (never store decrypted credentials in local storage)? How safe is storing the decrypted credentials in memory? Should we not use local storage at all? How much can we trust the Web Crypto API? How safe is it against XSS? How much can we trust ourselves to develop a secure encryption scheme with it? See warning on the Web Crypto API page:

Warning: This API provides a number of low-level cryptographic primitives. It's very easy to misuse them, and the pitfalls involved can be very subtle.
Even assuming you use the basic cryptographic functions correctly, secure key management and overall security system design are extremely hard to get right, and are generally the domain of specialist security experts.
Errors in security system design and implementation can make the security of the system completely ineffective.
Please learn and experiment, but don't guarantee or imply the security of your work before an individual knowledgeable in this subject matter thoroughly reviews it. The Crypto 101 Course can be a great place to start learning about the design and implementation of secure systems.

So imo there is a lot to consider but we should also avoid analysis paralysis.


"npm install webrtc-native --save" doesn't work

I get  throw new Error('prebuilt module not found. See the instructions from https://github.com/vmolsa/webrtc-native/wiki/Getting-started#building-from-source for building module from source.');       ^ Error: prebuilt module not found. See the instructions from https://github.com/vmolsa/webrtc-native/wiki/Getting-started#building-from-source for building module from source.
when i try to run npm install webrtc-native --save

I receive the same error, it seems like the http://cide.cc:8080/webrtc/ is not available...

@timur-han Did you end up finding a workaround?

@swangyal nope, the project seems to be inactive and not maintained anymore

me too

any update on this guys ?


[getAll] Support precision, closes #542

It's based on an outdated main branch. Close it for now so I can resend it later.


Install WP-CLI in Dockerfile

Hi, thanks for contributing to this project.
Im going to close this pull request since we are trying to be a "general" development environment. WP-Cli is very wordpress specific and not "general purpose" in my view.

@MrOffline77 I agree. It is built for general PHP development.
@w7089 You can clone/fork this and modify it as per your framework's need.


Support setting allow-nondistributable-artifacts option on Docker daemon

When working with air gapped installations, it's impossible to run Windows images due to the foreign layers. This enables setting the --allow-nondistributable-artifacts option on the Docker daemon to include the repository where the image will be pushed. https://github.com/containerd/containerd/issues/7676 has a more in depth discussion as to some of the rationale.

Thanks @drcapulet for contributing the change. It's useful to have the option to disable the layers if needed. But also, can we've a warning printed mentioning that created images are to be used only with air-gapped situations?

@ibabou Funny enough, the day I opened this Microsoft dropped the usage of foreign layers, I'm inclined to just close this out? We're now using the existing main without issue.

@drcapulet Sounds good! Agree, let's then close it in this case. Thanks again!

Closing the PR.


[FEATURE] Add metadata for archives

Describe the solution you'd like
Add metadata support with the ComicInfo 2.0 standard
Additional context
https://anansi-project.github.io/docs/introduction

added with release 2.3.0


Built-in regular expressions

What are the common or useful regular expressions?
For builtin.yaml.

Add some useful regular expression in builtin.yaml.

Do you have something particular in mind? I love the idea and would like to work on this.
Can I work on it ?
I start with the following:
Operators:

logical operators
logical & arithmetic
logical OR arithmetic

Data Type Match:

Binary
Hexadecimal
Octal
alphanumeric without space or tabs
alphanumeric with space/ tabs

Digit Match:

Whole Numbers
Decimal Numbers
whole+Decimal
Fraction
Integer

Email Match
UserName Type Match - Alphanumeric but only  1 type of special character( _ )
Password Type Match

Strong
Moderate
Weak

Different Time Format Matches
HTML tag Type match

Thank you for working on it.
Importance of Regex
Regular expressions are used to extract tokens from source code.
Simply, manipulating such tokens is overall working of LangTrans.

Do you have something particular in mind? I love the idea and would like to work on this. Can I work on it ?

Regular expressions for extracting tokens that are common in source codes will be in builtin.yaml.
Adding such regular expression will be helpful for future use. Examples are present in that file.

I start with the following:
Operators:

logical operators
logical & arithmetic
logical OR arithmetic

Data Type Match:

Binary
Hexadecimal
Octal
alphanumeric without space or tabs
alphanumeric with space/ tabs

Digit Match:

Whole Numbers
Decimal Numbers
whole+Decimal
Fraction
Integer

These regular expressions become helpful.

Email Match
UserName Type Match - Alphanumeric but only 1 type of special character( _ )
Password Type Match

Strong
Moderate
Weak

Different Time Format Matches HTML tag Type match

These regular expressions are not necessary. Thus it need not be in builtins.

Email validation<EMAIL_ADDRESS>Phone number validation: ^\d{10}$|^\d{3}-\d{3}-\d{4}$|^\d{3}-\d{4}-\d{4}$
URL validation: ^(http://www.|https://www.|http://|https://)?[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(:[0-9]{1,5})?(/.)?$
IP address validation: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
Date validation: ^(0[1-9]|1[0-2])/(0[1-9]|1\d|2\d|3[01])/(19|20)\d{2}$

Add some useful regular expression in builtin.yaml.:
Time validation: ^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
Alphabetic characters only: ^[a-zA-Z]+$
Alphanumeric characters only: ^[a-zA-Z0-9]+$
Numeric characters only: ^[0-9]+$
Password validation (minimum 8 characters, at least 1 uppercase and 1 lowercase letter, and 1 number): ^(?=.[a-z])(?=.[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

I learnt this topic this month. Let me try this one out

I learnt this topic this month. Let me try this one out

Just sent my PR.

Hello! I am interested in working on this issue and would like to request the assignment. I have experience with regular expressions and believe that I can contribute to this project. Could you please assign this issue to me? Thank you!

hey can I work on this issue

Hey Can I work on this issue?

Would love to try this.

Anyone can submit their pull request if they understand the use of regular expressions in LangTrans.

Since no one is assigned, can i work on this?

Hello I'm Aditi, will you please check the pull request that I have created

@B-R-P will you please try to run test again on my updated builtin.yaml file.


Message on note delete

The message on note(s) delete is always in English, irrespective of chosen language. Please, refer to screenshots:

I'll fix it by next release, thanks for mentioning

@SankethBK can i work on this?

@AliYar-Khan sure

It's 3.13.0

@SankethBK let me know if there is any problem regarding the translation. I used the Google translator for translating it

@SankethBK it's been two weeks since I have created the pull request. Let me know when you will be merging it

Solution: https://github.com/SankethBK/diaryvault/pull/202#discussion_r1577236600


Fix invalid feed error

This PR:

Fixes the case when there is an invalid feed, exceptions are now catched and logged.
Also add test for normal, valid but empty and invalid feeds use cases.

fixes #1

@guyboertje your thoughts here are welcome.

@purbon - looks good so far.  Please make one of the failure fixtures an atom feed.

@guyboertje can do that, will look for examples.

@guyboertje added atom test as requested, also helped fixing a few issues 👍 , let me know what do you think.

LGTM


may fix the bug in game-dev wrong error message

i think in one of tome:cast we update the spells at the same time with God.createWorld, so the new world get the wrong(old) spells.
now try to delay 100ms(a time guessed by myself) to make it run well. while it maybe better to make a robust fix
PS: this pr is conflict with https://github.com/codecombat/codecombat/pull/6254, i think it is better to review that first.

close due to this fix is naive and won't really work.


Update API to v4

Kickbase deprecated all API endpoints prior to v4 and therefore added a lot of new ones in v4.
In typical Kickbase style, they couldn't name the response parameters in human readable text but rather in egypt hyroglyphs...

Yeah that is really annoying. If you need any help maybe my changes can help. Workes some hours on it yesterday.
Take a look here: https://github.com/phenze/kickbase-calculator/pull/6

I've added some endpoints I found to be working there:
https://github.com/phenze/kickbase-calculator/pull/6

Could you share your endpoints please? I haven't found any others besides the one I posted above. :(

90% done. Only gift collection and player live points needs to be updated to v4.


python311Packages.tplink-omada-client: 1.2.5 -> 1.3.0

Changelog: https://github.com/MarkGodwin/tplink-omada-api/releases/tag/release%2Fv1.3.0
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 235046 run on x86_64-linux 1

5 packages built:

home-assistant-component-tests.tplink_omada
python310Packages.tplink-omada-client
python310Packages.tplink-omada-client.dist
python311Packages.tplink-omada-client
python311Packages.tplink-omada-client.dist


[isal] Update

What does your PR fix?
Update to current release.
Enable CI for x64-linux, instead of the conflicting, outdated spdk-isal.

Which triplets are supported/not supported?
I am still working on this PR.

Needs #25862 for windows.

Successfully tested usage on my local machine

Thanks!


feat: clang-tidy: collect "note" items into relatedLocations

This PR adds parsing of clang-tidy "note" items. Since notes follow the error/warning/info items, iteration logic becomes a bit more complex. I have tried to keep it readable, but not sure how idiomatic the code is.
I've also updated sarif-fmt to print the optional message fields of relatedLocations and extended the existing test case to cover this feature.

clang-tidy test output
warning: 'atoi' used to convert a string to an integer value, but function will not report conversion errors; consider using 'strtol' instead [cert-err34-c]
  ┌─ /Users/ivan/p/sarif-rs/sarif-fmt/tests/data/cpp.cpp:4:10
  │
4 │   return atoi(num);
  │          ^^^^^^^^^^

warning: Array access (from variable 'str') results in a null pointer dereference [clang-analyzer-core.NullDereference]
   ┌─ /Users/ivan/p/sarif-rs/sarif-fmt/tests/data/cpp.cpp:8:10
   │
 8 │   return str[0];
   │          ^^^^^^^
   │
   ┌─ /Users/ivan/p/sarif-rs/sarif-fmt/tests/data/cpp.cpp:12:25
   │
12 │   return get_first_char(nullptr);
   │                         --------- Passing null pointer value via 1st parameter 'str'
   │
   ┌─ /Users/ivan/p/sarif-rs/sarif-fmt/tests/data/cpp.cpp:12:10
   │
12 │   return get_first_char(nullptr);
   │          ------------------------ Calling 'get_first_char'
   │
   ┌─ /Users/ivan/p/sarif-rs/sarif-fmt/tests/data/cpp.cpp:8:10
   │
 8 │   return str[0];
   │          ------- Array access (from variable 'str') results in a null pointer dereference

warning: calling 'system' uses a command processor [cert-env33-c]
   ┌─ /Users/ivan/p/sarif-rs/sarif-fmt/tests/data/cpp.cpp:16:3
   │
16 │   system("ls");
   │   ^^^^^^^^^^^^^

warning: 3 warnings emitted

Closes https://github.com/psastras/sarif-rs/issues/346

@psastras Could you please trigger the workflow if the changes look okay?

Codecov Report

Merging #406 (3ee1a21) into main (b01af0e) will increase coverage by 2.90%.
The diff coverage is 98.70%.

@@            Coverage Diff             @@
##             main     #406      +/-   ##
==========================================
+ Coverage   67.45%   70.35%   +2.90%
==========================================
  Files          11       11
  Lines        1143     1174      +31
==========================================
+ Hits          771      826      +55
+ Misses        372      348      -24

Impacted Files
Coverage Δ

serde-sarif/src/sarif.rs
77.94% <ø> (ø)

serde-sarif/src/converters/clang_tidy.rs
94.11% <98.43%> (+1.26%)
:arrow_up:

sarif-fmt/src/bin.rs
55.06% <100.00%> (+5.34%)
:arrow_up:

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

Thanks for the quick review!
GitHub says

Only those with write access to this repository can merge pull requests.

so I'll leave this part to you :)


test/throw away PR to validate current state of main branch

/hold

cluster setup / ci fail
/test jvm-build-service-in-repo-e2e

gitops fail - different than last failure
/test jvm-build-service-in-repo-e2e

e2e https://prow.ci.openshift.org/view/gs/origin-ci-test/pr-logs/pull/redhat-appstudio_jvm-build-service/146/pull-ci-redhat-appstudio-jvm-build-service-main-jvm-build-service-in-repo-e2e/1553070007007580160 passed
this has served its purpose


[Gateway SDK] Migrate to the unified version

What it solves
Resolves #2524 and safe-react-gateway-sdk#1 #2533
How this PR fixes it
It changes all types to latest version gateway types to make it compatible. It also changes the configuration to point to the unified instances of the gateway service
How to test it
A full regression will be needed to confirm this swap.
All kinds of tokens (ERC20, ERC721) should be checked.
Transaction list with all types of transactions should be checked
Safe settings should be checked.
Creating all kinds of transactions with a 1-out-1 and 2-out-2 policy.

On the SDK side: https://github.com/gnosis/safe-react-gateway-sdk/pull/3

A ERC721 from a safe is called "null" in the PR when in prod it actually has a name
Safe: 0xB88F61E6FbdA83fbfffAbE364112137480398018
PR:

Mainnet prod:

0xB88F61E6FbdA83fbfffAbE364112137480398018

Should have been a backend issue. I see the token name correctly

Something about apps tx:
They work fine, but they are listed weirdly in the tx list:
Idle, Tx builder and Compound app are not showing the correct icons.
Txs 17 and 18 were from Sablier and "Gnosis custom market maker" respectively , they worked just fine (they executed with no issues) but they are labeled as "Contract interactions" and both of them throw a 803 Error shown in the console

Safes for testing:
https://pr2616--safereact.review.gnosisdev.com/rinkeby/app/#/safes/0x83888130c1A0a2D00c647bcA700d8886069de46E/transactions
Mainnet safes for read only: (Not ours safes)
0xB88F61E6FbdA83fbfffAbE364112137480398018
0x4dEBDD6CEe25b2F931D2FE265D70e1a533B02453
Besides my last comment, I didn't had issues signing, checking ERC20, signing tx with 1 owner or multiple owners or using WC and trezor, trying a few apps and a dummy contract for contract interaction and Tx builder
Note that I cannot use ledger for now.
Also I dont have that many ERC721 with different categories, but the ones I had worked fine. I also checked the 2 safes on mainnet that have a ton of NFT's and they seem to show just fine
What is missing:
Check Polygon and BSC, and sign with a ledger device.

@dasanra could you check if we can restore the Tx Builder and WC icons?

@dasanra and @katspaugh ,
The logo for the safe apps txs are returned:
From queue (https://safe-client.staging.gnosisdev.com/v1/chains/4/safes/0x1230B3d59858296A31053C1b8562Ecf89A2f888b/transactions/queued)
safeAppInfo":{
"name":"Compound",
"url":"https://cloudflare-ipfs.com/ipfs/QmX31xCdhFDmJzoVG33Y6kJtJ5Ujw8r5EJJBrsp8Fbjm7k",
"logoUri":"https://cloudflare-ipfs.com/ipfs/QmX31xCdhFDmJzoVG33Y6kJtJ5Ujw8r5EJJBrsp8Fbjm7k/Compound.png"
}
"svg"  and "png" logos are returned for some of the safe apps.
Example: https://cloudflare-ipfs.com/ipfs/QmTvrLwJtyjG8QFHgvqdPhcV5DBMQ7oZceSU4uvPw9vQaj/logo.svg.  / https://cloudflare-ipfs.com/ipfs/QmdVaZxDov4bVARScTLErQSRQoxgqtBad8anWuw3YPQHCs/tx-builder.png
Are we supporting png and svg ?

@katspaugh ,
Descriptio: trycatch.ts:281 POST https://safe-client.staging.gnosisdev.com/v1/chains/4/transactions/0x960B57662C1328C418e4E7a199d7E0aF552f5A1f/propose 422 (Unprocessable Entity) appears in console each time during a tx execution
Steps:

execute any tx ( number of required confirmation doesn't matter )
Current result: the tx is executed but the error 422 for the propose appears in the console

Verified.
Txs list, tx details, assets and tx signing/execution ( diff cases: 1 of 1/ 3 of N/ + MM/Ledger/Coinbase) were checked

The issue with 422 errors for estimation ( on contract update) and for /propose request before tx execution still exists.
Update about error

422responce for /estimation request on Update contract:
in the first estimation request data: "0x" is sent , as we don't have the full set of the required information
on the second estimation request the correct data is sent
Impact on UI for the user: Gas estimation issue is displayed for a few sec and disappear. The update tx is created and executed without any problems

422 response for  /propose request on tx Execution
The error appears in the console on each tx execution for any safe. No impact on UI for the user - tx is executed without the problem
The request doesn't contain " signature: Option" , maybe it should be sent as null to pass without 422 code?


[ Feature Request ] An image built to work with kasm

Appreciate the time you've put into this. I am currently trying to build a Frakenstein image to get your docker container to work with kasm. It would be awesome if it could just be added to kasm workspaces from the kasm admin panel.

I was able to get a hashcat working inside of  kasm. Leaving this here in case it helps anyone in the future.
FROM kasmweb/core-ubuntu-jammy:1.13.1
USER root

ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,display
WORKDIR $HOME

######### Customize Container Here ###########

RUN apt-get update && apt-get install -y \
    hashcat \
    nvidia-cuda-toolkit

RUN mkdir -p /etc/OpenCL/vendors && \
    echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd

######### End Customizations ###########

RUN chown 1000:0 $HOME
RUN $STARTUPDIR/set_user_permission.sh $HOME

ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME

USER 1000

Thanks for sharing the code.
I don't work with kasm, in fact, I've never heard of it. Perhaps, you can create and publish an image there with the code you've already supplied? Since you're using it and I'm not, it'd be more appropriate if you maintain it. I can set up credentials for you if that is required on their website (though I imagine you can easily fork this repo).


Release GOV.UK Prototype Kit 13.0.1 🚀

What
Release v13.0.1 of the kit with bugfixes only.
Why
We have a lot of bugfixes in the main branch, which we want to get out to users.
It would also be good to test the new update process.
Who needs to work on this
Developer
Who needs to review this
Developer
Done when

[x] Draft release notes
[x] Release bugfixes following process
[x] Release is available on npm
[x] Users can see there is an update available in the manage prototype page

As this is only bugfixes, I think we can get away with just using the current changelog as the release notes.

13.0.1 is out on npm, I've verified that the information about the update being available is visible on the 'Manage your prototype' page if you're using v13.0.0:

Oh I forgot, @joelanman to do comms for this


clear encryption conditions when there is no work to be done

It turns out that the new precondition checker added in 4.8 might prevent the encryption controllers from running and clearing the stale conditions.
This can happen especially on upgrades from 4.7 to 4.8.
This PR changes the encryption controllers to clear stale conditions when the preconditions are not fulfilled.

/assing @sttts

/cherry-pick release-4.8

/lgtm
/approve

/bugzilla refresh


Support validation for more types from typing

Working on robotframework-browser library, I've noticed some missing pieces in the currently supported type conversions in RF.
Depending on the usage profile supporting some of the newer higher order types from typing should be quite easily implementable and with good improvements to user experience on validation of keyword argument inputs.
I personally would consider TypedDict and Optional high priority, both because of their relatively high usage in modern typed python and the fact that they should be quite easily implementable. (Optional doesn't actually do anything to the type since robot literal_eval:s most values.) TypedDict is just a Dict with specified permitted keys.
Literal's should be easily supportable, since they can be easily validated. Sometimes they are a much more elegant solution on the developer's side, and they would probably be easier to in-line in type signatures compared to Enum contents.
Union types could be nice to have but probably hard to implement (would need to check if the argument fits into one of the possible types, and make some decisions if there's overlap).

[ ] Optional
[ ] TypedDict
[ ] Literal
[ ] Union

All this sounds good to me. Should we have separate issues for different types or just have this one for all? Implementation is probably easiest so that one type is handled by one commit or PR.
I'd be fine adding trivial/easy features in RF 3.2.2 in August but anything bigger needs to wait for 3.3 (ater this year.

I wouldn't mind either way, whichever is easier to organize. Maybe list them here and create own issues if they require design / other significant discussion. I added a list of the proposed new converted types to the main message.
Waiting for feature release for bigger changes makes sense. In theory some of these could change behaviour of existing RobotFramework libraries if they use these types and currently to the converision from string to any of these types by hand.

This is too broad issue. I submitted #3738 about Union support and separate issues can also be submitted for other types.


Support AzureOpenAI configuration

The AzureOpenAI LLM is functionally identical to the OpenAI LLM but requires different parameters.
Azure OpenAI
It would be great to be able to use this configuration!

Hey, we are adding it in our next release. It might some more testing but should work.

Just FYI this would also make it possible to use any llama.cpp compatible models (llama, alpaca, gpt4al, etc) via https://github.com/abetlen/llama-cpp-python#web-server

This looks very interesting. I have started working on it. It requires a few extra parameters other than the API key. In the case of llama-cpp-python is it exactly the same as the docs?
In LangFlow, if you don't pass the API key, LangChain will still try to find it in the environment but according to the example in the docs, there are a few variables you need to set to be able to use it. What is your opinion on that?
Are those variables normally set in the environment of the average Azure user?
The deployment_name param is now really simple to add, but we must have a clear template of the node and how it is used.

What do you think of this approach?

@ogabrielluiz woops, after looking into it a little deeper it looks like this was actually already possible with the just the regular OpenAI llm. I missed that you could just change the OPENAI_API_BASE environment variable. This is actually preferrable as the azure endpoints seem to be using an older version of the OpenAI API.
Anyways, sorry for the confusion. Great tool btw!

Oh, nice!
Maybe we could put that functionality into the OpenAI node to allow the person to chose.
I've been thinking about dynamic nodes that change depending on params. Maybe this would be a good use case to explore.
Anyway, with what you described it is possible to use your project?

Yes it should, I'm trying to make it as interoperable as possible with existing tools that already are built against the OpenAI API.
Currently switching between models doesn't actually do anything as the server only supports a single llama.cpp model loaded in at once but I'm working on allowing the user to provide aliases so e.g. gpt-3.5-turbo -> llama-7b or text-davinci-003 -> llama-30b

What do you think of this approach?

Nice, ¿but what about these?
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_KEY"] = ""
os.environ["OPENAI_API_BASE"] = ""
os.environ["OPENAI_API_VERSION"] = ""

What do you think of this approach?

Nice, but right now the OpenAI node takes the OPENAI_API_KEY. Azure OpenAI requires 4 values: OPENAI_API_TYPE, OPENAI_API_KEY``, OPENAI_API_BASEandOPENAI_API_VERSION`. The user should also be able to provide them.

In addition we'd also need an Azure Open AI Embedding node.

I got an Azure OpenAI account and can test if necessary.
Is the code already written? Do you need help?

Same here I have an Azure Account, I can help with testing.
El mar, 18 abr 2023, 20:03, Michel Hua @.***> escribió:

I got an Azure OpenAI account and can test if necessary.
Is the code already written? Do you need help?
—
Reply to this email directly, view it on GitHub
https://github.com/logspace-ai/langflow/issues/85#issuecomment-1513588841,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACRLWWTUAUBKTP34XR3D73XB3JODANCNFSM6AAAAAAWNPWKJQ
.
You are receiving this because you commented.Message ID:
@.***>

Me too!

Just bumping this one, I feel it will enable a lot of users. And indeed, I can also help test.

bump!


fix: layout shifting after terminal loads

fixes #445.

Preview
Screencast from 06-03-2024 02:17:14 PM.webm

Cool — I didn't know this technique. Can you please revert the autoformatting changes? It's difficult to review otherwise

I love it — thank you! Is this supported by major brower (version)s, or would we face compatibility problem with some older browsers?

 I don't think there's anything too fancy here; major browsers should support these changes.
I manually tested it on Firefox, and Brave (Chromium), without any issues, and it works on mobile Safari 15 and 17.

Awesome. The new version is live: https://numbat.dev/


Replace the HTML parser with pkg/angular_ast

This behavior is now enabled by default. We haven't removed the old parser yet, which we want to do before 5.0 final, but I'll go ahead and mark this issue as closed.


Support of multi-AZ standby enabled OpenSearch cluster when creating log pipelines

Describe the feature
The OpenSearch has launched multi-AZ standby feature. The multi-AZ standby requires index has a replica=2, 5, 8. Namely the copy must be a multiply of 3.
Use Case
Support multi-AZ standby
Proposed Solution
Set replica=2 for OpenSearch with multi-AZ standby enabled automatically when creating log ingestion pipeline
Other Information
No response
Solution version used
v1.0.3

implemented in v2 https://github.com/aws-solutions/centralized-logging-with-opensearch/releases/tag/v2.0.0


Integration @mediapipe/hands in React JS

I have that problem using React JS, any help ?
My code:
import {useEffect, useRef} from "react";
import {Hands} from "@mediapipe/hands";
import {Camera} from "@mediapipe/camera_utils";
const SignalToText = () => {
const hands = new Hands()
const videoElement = useRef(null)
const onResult = (resp) => {
if (resp.multiHandLanmarks)
console.log(resp.multiHandLanmarks)
else
console.log("error", resp)
}
useEffect(() => {
hands.setOptions({
maxNumHands: 2,
minDetectionConfidence: 0.5,
minTrackingConfidence: 0.5
});
hands.onResults(onResult)
}, [])
useEffect(() => {
if (videoElement) {
const camera = new Camera(videoElement.current, {
onFrame: async () => {
await hands.send({image: videoElement.current});
},
width: 1280,
height: 720
})
camera.start()
}
}, [videoElement])
return (

Signal to Text

)
}
`

Hi @devewok, Could you please check whether the imports are loaded appropriately. Thanks!

i checked the imports and i changed it to import {Hands} from<EMAIL_ADDRESS>import {Camera} from<EMAIL_ADDRESS>but that doesnt worked.
I removed those librarys and i installed @tensorflow-models/handpose and that works fine.

Hi @sgowroji , sorry... i'm not looking resolution for this already, thanks

I got it working on react by importing it as
import * as Hands from "@mediapipe/hands";
later, for usage I would do
new Hands.Hands(...
or
Hands.HAND_CONNECTIONS
for example.
Hope this helps anyone stuck.

@karen-pal  Thank you for providing your solution. This is very helpful to the community who are looking our for similar queries.

I am trying to detect my hand using mediapipe i am getting below error

Uncaught (in promise) RuntimeError: Aborted(native code called abort())
at abort (hands_solution_simd_wasm_bin.js:9:25546)
at abort (hands_solution_simd_wasm_bin.js:9:163781)
at hands_solution_simd_wasm_bin.wasm:0x51ad24
at hands_solution_simd_wasm_bin.wasm:0x51abc9
at hands_solution_simd_wasm_bin.wasm:0x51ad99
at hands_solution_simd_wasm_bin.wasm:0x1f191
at hands_solution_simd_wasm_bin.wasm:0x198f7
at SolutionWasm$send [as send] (eval at new (hands_solution_simd_wasm_bin.js:9:140730), :9:1)
at pa.h (hands.js:73:1)
at G (hands.js:14:1)
at sa.next (hands.js:15:1)
at b (hands.js:15:1)
My code:
import React, { useRef, useEffect } from "react";
import * as Hands from "@mediapipe/hands";
import * as cam from "@mediapipe/camera_utils";
import Webcam from "react-webcam";
function App() {
const webcamRef = useRef(null);
const canvasRef = useRef(null);
const connect = window.drawConnectors;
var camera = null;
function onResults(results) {
// const video = webcamRef.current.video;
const videoWidth = webcamRef.current.video.videoWidth;
const videoHeight = webcamRef.current.video.videoHeight;
// Set canvas width
canvasRef.current.width = videoWidth;
canvasRef.current.height = videoHeight;

const canvasElement = canvasRef.current;
const canvasCtx = canvasElement.getContext("2d");

canvasCtx.save();
canvasCtx.clearRect(0, 0, canvasElement.width, canvasElement.height);
canvasCtx.drawImage(
  results.image, 0, 0, canvasElement.width, canvasElement.height);

if (results.multiHandLandmarks) {

    for (const landmarks of results.multiHandLandmarks) {
    console.log(landmarks)
    window.drawConnectors(canvasCtx, landmarks, Hands.HAND_CONNECTIONS,{color: '#00FF00', lineWidth: 5});
    window.drawLandmarks(canvasCtx, landmarks, {color: '#FF0000', lineWidth: 2});
  }
}
canvasCtx.restore();

}
// }
// setInterval(())
useEffect(() => {
const hands = new Hands.Hands({
locateFile: (file) => {
return https://cdn.jsdelivr.net/npm/@mediapipe/hands/${file};
},
});
hands.setOptions({
  maxNumFaces: 1,
  minDetectionConfidence: 0.5,
  minTrackingConfidence: 0.5,
});

hands.onResults(onResults);

if (
  typeof webcamRef.current !== "undefined" &&
  webcamRef.current !== null
) {
  camera = new cam.Camera(webcamRef.current.video, {
    onFrame: async () => {
      await hands.send({ image: webcamRef.current.video });
    },
    width: 640,
    height: 480,
  });
  camera.start();
}

}, []);
return (

<Webcam
ref={webcamRef}
style={{
position: "absolute",
marginLeft: "auto",
marginRight: "auto",
left: 0,
right: 0,
textAlign: "center",
zindex: 9,
width: 640,
height: 480,
}}
/>{" "}
<canvas
ref={canvasRef}
className="output_canvas"
style={{
position: "absolute",
marginLeft: "auto",
marginRight: "auto",
left: 0,
right: 0,
textAlign: "center",
zindex: 9,
width: 640,
height: 480,
}}
>

);
}
export default App;


Add console argument to ThemeManager

Allow user to pass their own console object for list, preview, etc.

I've refactored the preview code so it doesn't need to set the console theme thus this can now be implemented.


Merge pull request #11039 from SvenDowideit/fix-missing-compose-docs

Missed to added doc files
(cherry picked from commit 7a93d52ea44405cd8e6c2644a3f849c00b327cc6)

Can you please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "fix-missing-docs-cherry-pick" git@github.com:SvenDowideit/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

This will update the existing PR, so you do not need to open a new one.

Looks like we would not be able to merge this PR because of merge conflicts. Please fix them and force push to your branch.

cherrypick to docs from master, the DCO is in the master commit


How to do the prettier last as in the cli ?

How is it possible with the vscode extension to do the same as https://github.com/prettier/prettier-eslint#prettierlast-boolean  with the cli?
Id does not product the same result with this option

@MatthD The option is not available as I have not had anyone request the feature as of yet. Feel free to create a PR if you can. I've been thinking about adding Format on Paste and Format on Type support.