[Docker] Fix gptq dockerfile

Fixes the docker image build that is currently failing on main since the GPTQ PR
The build was failing because auto-gptq was trying to get installed before the cuda install which led to auto-gptq library throwing an error as it is not supported in non-CUDA envs.
The fix is to simply move the install of auto-gptq after the CUDA related packages install, I have also bumped the cuda version to 11.8
can confirm the docker build works locally with these changes

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Thanks! OK let's see through GHA tomorrow if things worked correctly


fix cuda double disassemble

currently the print order with CUDA=1 DEBUG>=6 is:
src -> fail cubin disassembly -> pretty ptx -> assemble ptx and disassemble cubin
with this pr:
src -> pretty ptx -> assemble ptx and disassemble cubin
NV=1 is unaffected:
src -> disassemble cubin

Can you write tests that are currently failing that this fixes?

Not sure how restrictive we want to be with the tests. The print order test tests both changes in this pr.


can't edit expense if already paid

Fixes https://github.com/opencollective/opencollective/issues/733

Changes Unknown when pulling d26fbd8425713dc8101b95cee174af42a179b5ff on fix733 into ** on master**.


Uncaught TypeError: Cannot read property 'results' of undefined

I'm not getting any results any more on my site (I first noticed this yesterday). It looks like it's broken on the demo page, too. It looks like it's not returning any data from Yahoo.

See #174 for info.


Fix bug - delete ocm-role should be hidden in rosa cli

Related: SDA-5558

@zgalor @pvasant PTAL

/lgtm


Upload magic-trace deb package to GitHub releases when tagging

When a release is created, this PR will make it build the .deb package and attach it to the release automatically.
Example: https://github.com/quantum5/magic-trace/releases/tag/v0.0.2-deb-test
Refs #68.

Thank you!


Creating led indicators to go off when "Alexa" is triggered

IMPORTANT: Before you create an issue, please take a look at our Issue Reporting Guide.
Briefly summarize your issue:
 Its not as much an issue as just trying to figure out how to wire 2 led strips to light up when Alexa is triggered.
What is the expected behavior?

When I say Alexa, the blue lights will light up
What behavior are you observing?

I am not sure how to program the pins or whatever I have to do.
Provide the steps to reproduce the issue, if applicable:

I am actually looking at the tutorials for AVS however, that applies to just 2 small leds where I want a whole strip to light up.
Tell us about your environment:

What version of the AVS Device SDK are you using?
  <x.y.z>

Im not sure about my version of AVS but I downloaded it last week, so the latest.
Tell us what hardware you're using:

[ ] Desktop / Laptop
[x] Raspberry Pi
[ ] Other - tell us more:
I am using a Raspberry Pi 3+B

Tell us about your OS (Type & version):

[ ] Linux
[ ] MacOS
[x] Raspbian Stretch
[ ] Raspbian Jessy
[ ] Other - tell us more:
Raspbian Stretch

Hello, thanks for posting.
Unfortunately we do not offer any support in regards to wiring leds or driving led strips using a Raspberry Pi.

Hi @Garretto123, I'm closing this issue since it seems to be out of the scope of the SDK. Please do not hesitate to contact us if you require more information regarding the usage of the SDK or any problems you might find in the future.
Thanks!


Remove diego_docker property

[#95275686]
Removed in favor of diego_docker feature flag that ensures consistent behavior across multiple CC nodes.
Signed-off-by: Georgi Sabev<EMAIL_ADDRESS>

@hsiliev Next time make sure you are

Branching off of develop
On the latest code

Hi there!
We use Pivotal Tracker to provide visibility into what our team is working on. A story for this issue has been automatically created.
The current status is as follows:

[ ] #99824316 Remove diego_docker property

This comment, as well as the labels on the issue, will be automatically updated as the status in Tracker changes.


zstd install question: what should the user set HDF5_PLUGIN_PATH to?

A user has asked me this:

Trying to install netcdf on macos clang 14 and when I use the flags that I have used in the past in linux they are not working on clang.  Any ideas?  Or is there a installation guide for mac?
this is the message i'm getting:
configure: WARNING: libnetcdf was built with zstd support, but HDF5_PLUGIN_PATH is not set. Either set the HDF5_PLUGIN_PATH environmental variable if zstandard tests fail, or use --disable-zstandard-plugin when running configure.

Good morning NETCDF community,
I am the user that Ed wrote about.  I wanted to share my commands and log files to help debug this issue.
Below you will find the bash commands and log files for each command in a .zip file.
Thank you for all your help.

export CC=gcc
export CXX=g++
export FC=gfortran
export F77=gfortran
export CFLAGS="-fPIC -fPIE -O3"

echo " "

#############################zlib############################
#Uncalling compilers due to comfigure issue with zlib1.2.13
#With CC & CXX definied ./configure uses different compiler Flags

cd $WRF_FOLDER/Downloads
tar -xvzf v1.2.13.tar.gz
cd zlib-1.2.13/
./configure --prefix=$DIR/grib2 | tee zlib.configure.log
make | tee zlib.make.log
make install | tee zlib.make.install.log
#make check

echo " "
#############################libpng############################
cd $WRF_FOLDER/Downloads
export LDFLAGS=-L$DIR/grib2/lib
export CPPFLAGS=-I$DIR/grib2/include
tar -xvzf libpng-1.6.38.tar.gz
cd libpng-1.6.38/
./configure --prefix=$DIR/grib2 | tee libpng.configure.log
make | tee libpng.make.log
make install | tee libpng.make.install.log
#make check

echo " "
#############################JasPer############################

cd $WRF_FOLDER/Downloads
unzip jasper-1.900.1.zip
cd jasper-1.900.1/
autoreconf -i
CFLAGS="-Wno-implicit-function-declaration" ./configure --prefix=$DIR/grib2 | tee jasper.configure.log
make | tee jasper.make.log
make install | tee jasper.make.install.log
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include

echo " "
#############################hdf5 library for netcdf4 functionality############################

cd $WRF_FOLDER/Downloads
tar -xvzf hdf5-1_13_2.tar.gz
cd hdf5-hdf5-1_13_2
CFLAGS="-Wno-implicit-function-declaration" ./configure --prefix=$DIR/grib2 --with-zlib=$DIR/grib2 --enable-hl --enable-fortran | tee hdf5.configure.log
make | tee hdf5.make.log
make install | tee hdf5.make.install.log
#make check

export HDF5=$DIR/grib2
export LD_LIBRARY_PATH=$DIR/grib2/lib:$LD_LIBRARY_PATH

echo " "
##############################Install NETCDF C Library############################
cd $WRF_FOLDER/Downloads
tar -xzvf v4.9.0.tar.gz
cd netcdf-c-4.9.0/
export CPPFLAGS=-I$DIR/grib2/include
export LDFLAGS=-L$DIR/grib2/lib
CFLAGS="-Wno-implicit-function-declaration" ./configure --prefix=$DIR/NETCDF --disable-dap --enable-netcdf-4 --enable-netcdf4 --enable-shared | tee netcdf-c.configure.log
make | tee netcdf-c.make.log
make install | tee netcdf-c.make.install.log
#make check

export PATH=$DIR/NETCDF/bin:$PATH
export NETCDF=$DIR/NETCDF
echo " "

##############################NetCDF fortran library############################

cd $WRF_FOLDER/Downloads
tar -xvzf v4.6.0.tar.gz
cd netcdf-fortran-4.6.0/
export LD_LIBRARY_PATH=$DIR/NETCDF/lib:$LD_LIBRARY_PATH
export CPPFLAGS=-I$DIR/NETCDF/include
export LDFLAGS="-L$DIR/NETCDF/lib -L$DIR/grib2/lib"

CFLAGS="-Wno-implicit-function-declaration" ./configure --prefix=$DIR/NETCDF --enable-netcdf-4 --enable-netcdf4 --enable-shared | tee netcdf-fortran.configure.log
make | tee netcdf-fortran.make.log
make install | tee netcdf-fortran.make.install.log
make check

echo " "

Archive.zip

wills-Mac:OBSGRID will$ gcc --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: x86_64-apple-darwin22.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

wills-Mac:OBSGRID will$ g++ --version
Apple clang version 14.0.0 (clang-14<IP_ADDRESS>)
Target: x86_64-apple-darwin22.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

I'm seeing a warning message re: HDF5_PLUGIN_PATH.  A few questions.
First, is there an error? Does the test fail? Or are you seeing a new warning? You can modify the WRF script to specify --enable-plugins and --with-plugin-dir=<plugin directory of your choice>; set HDF5_PLUGIN_PATH to the same <plugin directory of your choice> passed to --with-plugin-dir.

Good afternoon,
The error messages are attached in the log files (zipped in original message).
Looking at the installation HDF5 and NETCDF-C appear to install correctly but the NETCDF-Fortran has the error.
I have tried setting the flags and variables you mentioned and still get the same result each time.

Where (which file and approximate line number) are the errors to which you refer?

Where (which file and approximate line number) are the errors to which you refer?

So sadly my desktop has suffered a fatal non repairable motherboard failure.  So I cannot open the files to get the line number.
If I remember correctly it is in the netcdf-fortran-make.log file (if I remember the name correctly) at the end of the file. There are Error 1 and Error 2 messages when trying to make netcdf fortran.
One possible issue that might be the cause is that the Mac is using clang gcc and g++ compilers and homebrew gfortran compilers instead of all the same compiler.
I was testing all homebrew GCC/G++/GFORTRAN compilers and got through netcdf-C before my motherboard died.  At that time it was working. So not sure if using two different compiler suites was the issue.

I believe all this got sorted out, and the current 4.9.0 release seems to be installing with zstandard everywhere OK. I will close this issue. Thanks all for your assistance.


Fix vulnerabilities

Update the package-lock.json to fix vulnerabilities in the backend

got
minimist
undici

Only dev dependencies. Will be addressed before release 1.0.0.

Done in https://github.com/secvisogram/csaf-validator-service/commit/5d9d524abe308c2f848002e75c7d0a7b84f9c866


Comparison with equinox

First, sorry to put it in issues, but there is no discussion tab. Second, I don't want this to sound negative or critical, rather I am genuinely interested in the reasoning (and it looks like your library has some nice unique features e.g. visualising PyTrees).
There are already a number of mature JAX libraries such as Equinox that handle the idea of constructing classes as PyTrees and layering on top convenient methods to manipulate them (plus I notice you written a NN library which then builds further). I was wondering why another set of libraries? What are the advantages of PyTreeClass and Serket over something like Equinox?

Hello Adam, thank you for your question.
For background, there are a couple of libraries with similar ideas (Pytorch-like API) that predate Treex and Equinox and as you have seen, libraries with seemingly similar ideas that postdate them, each of these libraries has their reason to exist. Similarly, The landscape of neural network libraries is even more diverse, with Google and DeepMind alone having several such libraries, including objax, flax, haiku, and oryx.nn. Each of these libraries represents a slightly different conceptual model. Therefore, as you delve deeper into this landscape, you will likely discover a variant that aligns with your specific needs and preferences.
Now, let me explain why PyTreeClass exists when Equinox/Treex/simple_pytree/ exists; since you mentioned Equinox, I will try to focus more on it.
1- One of the core ideas of  equinox is filtered transformations, where you filter your pytrees on the function level, while in PyTreeClass, you filter on the pytree level by masking. This is a deliberate decision, and doing this prevents me from creating automatic decorators like equinox.filter_{...} that parallels jax API.
I believe that mirroring an API can be a risky strategy (although it can be cleverly implemented like in jax.numpy) because it can lead to confusion and errors due to inconsistent behaviour. Additionally, it requires meticulous maintenance to keep up with updates to the original API (you can see examples of filter_ related issues in the Equinox issue tab). Moreover, debugging can be more challenging because you need to understand which nodes have been frozen and which are under training beforehand. If not handled carefully, this approach can introduce bugs and unexpected behaviours when interacting with pure Jax or other libraries. For these reasons, I prefer a more explicit method through masking, where it's possible to see which nodes are frozen before passing them to a function. This helps prevent any unforeseen outcomes.
2- IMO, PyTreeClass has better functional tree manipulation than what equinox offers; I encourage you to try .at[] indexing to manipulate your trees. Tree manipulation functions in Equinox could be more intuitive, especially for composable manipulation.
3- Debugging, all my viz tools are geared towards debugging; for example, you always have helpful information whenever you interact with trees.
import equinox as eqx
import jax
import pytreeclass as pytc
import jax.numpy as jnp

class Eqx(eqx.Module):
    a:jax.Array = jnp.array([1.,2.,3.])

class PyTc(pytc.TreeClass):
    a:jax.Array = jnp.array([1.,2.,3.])

e = Eqx()
p = PyTc()

print(str(e))
print(repr(e))
# Eqx(a=f32[3])
# Eqx(a=f32[3])

print(str(p))
print(repr(p))
# PyTc(a=[1. 2. 3.])
# PyTc(a=f32[3](μ=2.00, σ=0.82, ∈[1.00,3.00]))

more advanced features, like tree_map_with_trace, let you filter based on type path; this is useful if you want to freeze leaves with certain parent types ( Dropout layer leaves, for example). This is a unique feature of PyTreeClass

Data model, pytreeclass blend the idea of pytree of arrays with array.

import pytreeclass as pytc
import jax.numpy as jnp

class Tree(pytc.TreeClass, leafwise=True):
    a:int = 1
    b:tuple[float] = (2.,3.)
    c:jax.Array = jnp.array([4.,5.,6.])

tree = Tree()

print(pytc.bcmap(jnp.where)(tree>2, tree+100, 0))
# Tree(a=0, b=(0.0, 103.0), c=[104. 105. 106.])

print(tree.at[tree>1].apply(lambda x:x+100))
# Tree(a=1, b=(102.0, 103.0), c=[104. 105. 106.])

Module design, this is where all other PyTree libraries have their flavour; I will focus on Equinox to explain my point; I will use the example I found here

class CNN(eqx.Module):
    layers: list

    def __init__(self, key):
        key1, key2, key3, key4 = jax.random.split(key, 4)
        # Standard CNN setup: convolutional layer, followed by flattening,
        # with a small MLP on top.
        self.layers = [
            eqx.nn.Conv2d(1, 3, kernel_size=4, key=key1),
            eqx.nn.MaxPool2d(kernel_size=2),
            jax.nn.relu,
            jnp.ravel,
            eqx.nn.Linear(1728, 512, key=key2),
            jax.nn.sigmoid,
            eqx.nn.Linear(512, 64, key=key3),
            jax.nn.relu,
            eqx.nn.Linear(64, 10, key=key4),
            jax.nn.log_softmax,
        ]

    def __call__(self, x: Float[Array, "1 28 28"]) -> Float[Array, "10"]:
        for layer in self.layers:
            x = layer(x)
        return x

In equinox, you need to declare your trainable params  as type hinted fields on top of your class, so if you want the previous example to have nn.conv1 to point to the first convolution layer, for example, then you have to do something like this:

class CNN(eqx.Module):
   conv1:eqx.nn.Conv2d
   pool1:eqx.nn.MaxPool2d
   linear1:eqx.nn.Linear
   linear2:eqx.nn.Linear

   def __init__(self, key):
       key1, key2, key3, key4 = jax.random.split(key, 4)
       # Standard CNN setup: convolutional layer, followed by flattening,
       # with a small MLP on top.
       self.conv1 = eqx.nn.Conv2d(1, 3, kernel_size=4, key=key1)
       self.pool1 = eqx.nn.MaxPool2d(kernel_size=2)
       self.linear1 = eqx.nn.Linear(1728, 512, key=key2)
       self.linear2 = eqx.nn.Linear(512, 10, key=key3)

   def __call__(self, x: Float[Array, "1 28 28"]) -> Float[Array, "10"]:
       x = self.conv1(x)
       x = self.pool1(x)
       x = jax.nn.relu(x)
       x = jnp.ravel(x)
       x = self.linear1(x)
       x = jax.nn.sigmoid(x)
       x = self.linear2(x)
       x = jax.nn.log_softmax(x)

IMO, This is a repetitive design. The example above escapes this repetition by using a mutable container(list) to wrap all the layers, but you must use something like nn. layers[0] instead of nn.conv1 to fetch your first layer which hurts ergonomics. moreover, by doing so, you lose the immutability (try nn.layers.pop() ) essential to correct behaviour under Jax.
In pytreeclass, all class variables are leaves by default. If you want to filter non-trainable parameters, use a mask, as seen in the readme.

finally, I am a  user Equinox. I use Equinox's internal tools equinox.internal and i think my library must play nicely with others in the jax ecosystem, This is why pytreeclass does not have any special treatment for non-pytreeclass instances. You can use all these tools with any library you like (e.g. flax/equinox/haiku).

so for the CNN example, you can  inherit all pytreeclass pros by doing something like this:
import pytreeclass as pytc
import equinox as eqx

class CNN(pytc.TreeClass):
   def __init__(self, key):
       key1, key2, key3, key4 = jax.random.split(key, 4)
       # Standard CNN setup: convolutional layer, followed by flattening,
       # with a small MLP on top.
       self.conv1 = eqx.nn.Conv2d(1, 3, kernel_size=4, key=key1)
       self.pool1 = eqx.nn.MaxPool2d(kernel_size=2)
       self.linear1 = eqx.nn.Linear(1728, 512, key=key2)
       self.linear2 = eqx.nn.Linear(512, 10, key=key3)

   def __call__(self, x):
       x = self.conv1(x)
       x = self.pool1(x)
       x = jax.nn.relu(x)
       x = jnp.ravel(x)
       x = self.linear1(x)
       x = jax.nn.sigmoid(x)
       x = self.linear2(x)
       x = jax.nn.log_softmax(x)

For serket, you inherit the tools and mental model of pytreeclass, while being 100% compatible with other libraries including equinox. If you are a user of eqx.nn, you can use serket layers that does not exist in equinox like fft convolution  within equinox if you like.
Let me know if this answers your question.

Thank you for the extremely in-depth response. It will take me some time to consider all that has been stated, but my interest has definitely been peaked.
One other quick question. Do you have any benchmarking for your implementation vs say Equinox for a range of uses? Obviously, I saw your charts for flatten / unflatten, which look very good. I wonder how it performs in terms of memory / speed, when it comes to various common NN architectures (as I have found over the years, JAX can be very sensitive in which small changes in code when it comes to using things like vmap's - this is obviously down to how JAX / XLA optimisation is being conducted).

Except flax.struct, I think most Pytree libraries should behave similarly regarding memory/speed.
PytreeClass is slightly faster because no logic (for static fields) is done when flattening/unflattening.

For reference:
[1] Pytree-based implementation : one that predates equinox/treex flax PyTreeNode, another one that postdate it pax
[2] equinox tree_at sample issue
[3] filter inconsistent behavior-sample issues 1,  2


Blank screen after starting the docker image on port 8080

Hello
I get a blank image when I try to access the url
This is what is in the source, but all that comes up is just a background colour
`

|
-- | --

`

Hmm, the source should be a little bit more than just a script tag. The web UI was written against the most updated versions of Firefox & Chrome. I'd check to make sure your browser is up to date and if it is, check the console for any errors.

Yeah, fair bit in the console log.
Also during the install I got these:
npm WARN deprecated<EMAIL_ADDRESS>this library is no longer supported
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future
npm WARN deprecated<EMAIL_ADDRESS>This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
DevTools failed to load source map: Could not load content for chrome-extension://hnmpcagpplmpfojmgmnngilcnanddlhb/browser-polyfill.min.js.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME
index.ts:12 The main 'lit-element' module entrypoint is deprecated. Please update your imports to use the 'lit' package: 'lit' and 'lit/decorators.ts' or import from 'lit-element/lit-element.ts'. See https://lit.dev/msg/deprecated-import-path for more information.
(anonymous) @ index.ts:12
ConfigOption.js:7 Uncaught TypeError: Cannot assign to read only property 'name' of function 'class ne extends X{static name="ConfigOption";static properties={label:{},name:{},value:{}};static styles=[ee,n......}}'
at Function.<static_initializer> (ConfigOption.js:7:16)
at ConfigOption.js:6:43

Docker logs in your first part are related to the SQLite3 library which has some dependencies that need patching. I'm hopeful those maintainers will update their dependencies soon.
The browser console errors you are seeing are most likely that your browser is out of date.

Uncaught SyntaxError: private fields are not currently supported index.6d84bb1f.js:136:5

Your browser doesn't support private fields in objects. I would consider updating it.

hm...
Updated FF and Chrome to the latest.
Chrome still gives an erorr:
index.ts:12 The main 'lit-element' module entrypoint is deprecated. Please update your imports to use the 'lit' package: 'lit' and 'lit/decorators.ts' or import from 'lit-element/lit-element.ts'. See https://lit.dev/msg/deprecated-import-path for more information.
(anonymous) @ index.ts:12
ConfigOption.js:7 Uncaught TypeError: Cannot assign to read only property 'name' of function 'class ne extends X{static name="ConfigOption";static properties={label:{},name:{},value:{}};static styles=[ee,n......}}'
at Function.<static_initializer> (ConfigOption.js:7:16)
at ConfigOption.js:6:43
FF loads =) Had an issue with cross origin, but that was due to URL was left as default. Needs a bit more documenting what that is for =)

Thanks for the feedback. I believe all of the errors/warnings you mentioned above to be resolved. If you could be so kind, please pull down sclaflin/plate-minder-web:latest to validate? Both Chrome & Firefox should be working correctly.
Regarding the cross origin issue, the following wasn't sufficient?
    # By default, Web UI looks for plate-minder's REST service at
    # http://localhost:4000. You can override this by setting a PLATE_MINDER_URL
    # environment variable
    environment:
      - PLATE_MINDER_URL=http://localhost:4000

Would you be willing to create a pull request or suggest some other means of making this more clear?

For PLATE_MINDER_URL=http://localhost:4000 - no, it did not work, as host name/IP must match that of where you access on port 8080

For PLATE_MINDER_URL=http://localhost:4000 - no, it did not work, as host name/IP must match that of where you access on port 8080

The default configuration assumes docker is running on the same machine you're viewing the web UI with. If you're accessing the service from a different computer, you should set the PLATE_MINDER_URL to whatever host & port Plate-Minder is accessible from.

just was not very clear. I run it on the same machine as HA, but manage it from my computer, that is different


[ci] Remove ios32 tests

https://github.com/flutter/flutter/issues/97148
Pre-launch Checklist

[X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
[X] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
[X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
[X] I signed the [CLA].
[X] I listed at least one issue that this PR fixes in the description above.
[X] I updated/added relevant documentation (doc comments with ///).
[X] I added new tests to check the change I am making, or this PR is [test-exempt].
[X] All existing and new tests are passing.

@jmagman @zanderso do we still want to keep those two test dart files? If not, we may also need to clean up the TESTOWNERS.
/dev/devicelab/bin/tasks/native_ui_tests_ios.dart
/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_e2e_ios32.dart

We should remove flutter_gallery__transition_perf_e2e_ios32 but native_ui_tests_ios is still used in the non-32 bit Mac_ios native_ui_tests_ios test.

@zanderso should we do this before the 32-bit iOS devices are only supported as part of the “Best Effort” tier announcement?

This can happen as soon as we no longer need to test the 2.10 beta/stable release. /cc @godofredoc for when that will be.

pen as soon as we no longer need to test the 2.10 beta/stable

We can land this change, next Friday.

Now that 2.10 has shipped, should we remove these tests?

This still needs the TESTOWNERS change, but other than that @godofredoc says it's good to land, and the change will get cherry-picked in the next hotfix.

Here:
https://github.com/flutter/flutter/blob/ba01ec8faae9a9be3cd90ee2b7357a803b7a7178/TESTOWNERS#L169-L171

Google testing looks stuck, there's nothing in FRoB for this PR...

Google testing looks stuck, there's nothing in FRoB for this PR...

\cc @renyou @angjieli I tried creating it from the FRoB UI, but it says the check already existed for the commit

Feel free to manually merge it. I will take a look at the internal issue.


Start using the Erlang/OTP standard logging facility.

Configuring Kernel Logger to log events as much as closer to those configs used in Java and Clojure microservice implementations.
Start logging messages through the specially configured Kernel Logger.

She looks promising ! :+1: — Approved. :blue_heart:


Great work, but too complicated

I really admire your efforts to make it a real commercial-style package. But it's too complicated to read and modify. I just want to change it to pytorch dataloaders, and it has took me a lot of time...
Great work anyway. I just don't know why spend so much time on this research proj code

Hi,
Thanks for your feedback. I agree that the code is now quite complicated, but this is exactly because it is research code. We use this codebase for many types of experiments and research projects, and so many features have been added over time. For your specific application, most of it is likely to be useless and only confusing matters.
However, you are very welcome to just pick and choose parts of the code that you need (e.g., the models and then use your own data loaders, training pipeline etc.). I am not forcing you to use this framework :-) I just made it all available in case someone found it useful.

Respect!


Switched yaml to toml for Issue #16

Don't merge until 0.13.0 release of alacritty

Hi, thanks for the PR!
I just added an option for output format (--output-format or -o) so that I can already merge your Toml output changes while keeping Yaml as the default. Could you please rebase your branch on main while keeping the to_yaml function and use your new to_toml function here?
Then we can change the default output to Toml once Alacritty 0.13 is released.

Unfortunately I wouldn't know how, as I said, I don't know rust. Sorry!


Cannot build indy-cli on MacOS

... le-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib/libcompiler_builtins-635ac2664b5ede2a.rlib" "-lindy" "-lncurses" "-lSystem" "-lc" "-lm" "-L" "/Users/tdiesler/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/lib" "-o" "/Users/tdiesler/git/indy-sdk/cli/target/debug/deps/indy_cli-5a5d5b15d9696ff2" "-Wl,-dead_strip" "-nodefaultlibs"
  = note: ld: library not found for -lindy
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

I successfully built libindy before (and DYLD_LIBRARY_PATH points to that), but the indy-cli build cannot find/use that.
Perhaps its a naming issue (i.e. indy vs. libindy ???)

I've had issues with DYLD_LIBRARY_PATH ...  I link the generated libraries under /usr/local/lib and that seems to work
o$ ls -l /usr/local/lib  | grep -i indy
lrwxr-xr-x    1 icostanzo  wheel      83 16 Dec  2020 libaries_askar.dylib -> /Users/icostanzo/Projects/indy-shared/aries-askar/target/debug/libaries_askar.dylib
lrwxr-xr-x    1 icostanzo  wheel      69 30 Mar  2020 libindy.dylib -> /Users/icostanzo/Projects/indy-sdk/libindy/target/debug/libindy.dylib
lrwxr-xr-x    1 icostanzo  wheel      77 14 Dec  2020 libindy_vdr.dylib -> /Users/icostanzo/Projects/indy-shared/indy-vdr/target/debug/libindy_vdr.dylib
lrwxr-xr-x    1 icostanzo  wheel     111 30 Mar  2020 libindystrgpostgres.dylib -> /Users/icostanzo/Projects/indy-sdk/experimental/plugins/postgres_storage/target/debug/libindystrgpostgres.dylib
lrwxr-xr-x    1 icostanzo  wheel      75 30 Mar  2020 libnullpay.dylib -> /Users/icostanzo/Projects/indy-sdk/libnullpay/target/debug/libnullpay.dylib
lrwxr-xr-x    1 icostanzo  wheel      71 30 Mar  2020 libvcx.dylib -> /Users/icostanzo/Projects/indy-sdk/vcx/libvcx/target/debug/libvcx.dylib


SecurityGroupRule not creating when only sourceSecurityGroupId specified

What happened?

The SecurityGroupRule resource can take a CIDR or sourceSecurityGroupId as source. When only sourceSecurityGroupId is defined  I am having an error :
1.6642110888967266e+09	DEBUG	events	Warning	{"object": {"kind":"SecurityGroupRule","name":"demo-cwc4d","uid":"c1798984-1a3a-4690-bb86-1d9b6f2ef146","apiVersion":"ec2.aws.crossplane.io/v1alpha1","resourceVersion":"7421806"}, "reason": "CannotCreateExternalResource", "message": "operation error EC2: AuthorizeSecurityGroupIngress, https response error StatusCode: 400, RequestID: 52c724d2-9224-49a9-b167-12807695cf4a, api error MissingParameter: Missing source specification: include source security group or CIDR information"}

How can we reproduce it?

apiVersion: ec2.aws.crossplane.io/v1alpha1
kind: SecurityGroupRule
metadata:
  name: demo
spec:
  forProvider:
    description: rds
    fromPort: 5432
    protocol: tcp
    region: us-west-2
    securityGroupId: <dbSgId>
    sourceSecurityGroupId: <eksSgID>
    toPort: 5432
    type: ingress
  providerConfigRef:
    name: default
  writeConnectionSecretToRef:
    name: demo
    namespace: demo

What environment did it happen in?
Crossplane version: 1.9.0
provider-aws version: 0.31.0

I think, this got fixed with this merged PR and should be available with the coming version v0.32.0.

this issue is fixed in v0.32.0 - just released =)


run_udf: "locally stored UDF"?

from https://github.com/Open-EO/openeo-processes/blob/75059c6566a7c8951d04467665252e74d5bb9c3a/run_udf.json#L4:
The process can either:

   1. load and run a locally stored UDF from a file in the workspace of the authenticated user. The path to the UDF file must be relative to the root directory of the user's workspace.

The use of "locally" and "workspace" is quite confusing here I think. This read like the user can work with a UDF file locally on their laptop/computer, and just send the (relative) path, which makes no sense
"workspace" is also quite ambiguous in this context: it could also be interpreted as the "work environment" the user is working in (e.g. local laptop or a remotely hosted jupyter notebook).
I think we have to find a more precise name for "workspace" to avoid ambiguity in these kind of docs. e.g.: "backend workspace"?

Ouch, I meant to make a PR, but accidentally pushed to the wrong branch.
@soxofaan Could you please verify that commit 3f3460e4 works better for you?

yes, the explicit "server-side user workspace" leaves no room for ambiguity


xADComputer disabled computer account after the initial set

When creating AD resources, including the Computer account often they are used for Cluster Name Objects (CNO).
Often we pre-stage computer accounts for the CNO in a particular OU in ActiveDirectory, so that when the cluster comes only it has permissions to reset the cluster account password and enable the account.
The ability to create a computer account that is not enabled was added to this resource a while ago, however ideally you wouldn't want a Test-DSCResource to fail because the account was enabled later on.
Currently that is the way the resource has been implemented. .
I would like to propose that we remove the Enabled check from the Test.

This is being worked on in PR #170. I haven't had the time to take it up again yet (a lot of maintainer work keeps me busy 🙂 ). Feel free to continue the work on that PR.

I don't think we can remove the Enabled check. Please look at the PR #170 and see if it solves this issue.

@johlju right I saw that one. . . I felt like that matched with how the current default is right. so I wasn't sure if it was abandoned.
I will test that code and follow up over there.

This is resolved in the latest release.


Update Documentation

Move Authors section into it's own file for clarity
Add Getting Started Steps in README.md
Add Open Source Contributor column
Added what technologies are used within which development stage.

Closes #51

@tonypearson Can you please review this one?


RPi4 power supply corrected to USB-C

Nice catch and thanks for the contribution @sqweelygig.
Our CI is failing due to some missing commit footers that are required. You can see more in the contributing guides but essentially just adding the below to the commit body and force pushing back up.
Change-type: patch
Signed-off-by: Joe Soap<EMAIL_ADDRESS>
If that's an issue just let me know and I can add those footers on your behalf.

I added those commit footers on your behalf (retaining your commit ownership) and rebased onto master so we can get this change in. Thanks again for your contribution.

@balena-ci retest


chore(deps): update common-dev-assets digest to cc4c9c2

This PR contains the following updates:

Package
Update
Change

common-dev-assets
digest
d9e733d -> cc4c9c2

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

:tada: This PR is included in version 1.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Fix user image

Used typed import for user image so it shows up when deployed.
Might need to figure out a different way if we implement multiple users, but at least this unbreaks it.

good call 👍


Fix/relax constraint

In general, we shouldn't ever need Sync at the program level. It should be isolated to the algebra layer

Codecov Report

Merging #269 into master will decrease coverage by 0.03%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #269      +/-   ##
==========================================
- Coverage   90.59%   90.56%   -0.04%
==========================================
  Files         136      136
  Lines        2851     2851
  Branches      140      140
==========================================
- Hits         2583     2582       -1
- Misses        268      269       +1

Impacted Files
Coverage Δ

.../main/scala/hydra/core/bootstrap/CreateTopic.scala
100% <100%> (ø)
:arrow_up:

...scala/hydra/kafka/ingestors/KafkaTopicsActor.scala
96.42% <0%> (-3.58%)
:arrow_down:

Continue to review full report at Codecov.

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


Docker image 8.6.0

After upgrading to cypress/included:8.6.0 I see a lot of errors in my shell
[18:1012/181354.036924:ERROR:bus.cc(392)] Failed to connect to the bus: Address does not contain a colon

The issue is reproducible for Docker image 9.0.0
FYI

same in cypress/included:9.5.3

See this comment for an update on this issue.

Closing this as a duplicate of #555. Please direct any comments to that issue.


[Bug] Only the first hashtag is included (Facebook)

First of all I want to thank you for the awesome component.
I've noticed that only one hashtag is added when trying to share on Facebook.
The problem can be reproduced on your multiple-share-networks demo.

yes... I´m getting the same issue. Only the first hash tag is being included in facebook. I´ve tested in linkedin, and no hashtags are showing... Is there a fix to this already? This is great component

Hello @AbdallahAlhaddad and @adrielwerlich, this is a limitation imposed by Facebook, it's written in the documentation that only one hashtag can be shared on Facebook. There's nothing we can do about it.


Force to android-O target for AAudio sample

this should fix this one:
https://github.com/googlesamples/android-audio-high-performance/issues/47
@bbilodeau, @dturner @GunNan please take a quick look?  thanks

LGTM


possible memory leak

Memory leak on simple application
The attached app, appears to leak memory consistently as tabs are opened and closed to view the page.  In my tests the memory went up from 40.1MB to 40.9MB after opening and closing 20 or 30 tabs.  In my production app it is in the 10's of megabytes.
You need to install memory_profiler to see the increased usage, the increase is small on only Text elements (for instance) but adding ElevatedButton appears to make the leak bigger.
I have left the app running for hours to test if the GC collects this memory later, but it does not appear to.
Code example to reproduce the issue:
import logging
from memory_profiler import profile

import flet as ft

import flet as ft

@profile(precision=6)
def on_connect(e):
    logging.debug("Connected")

@profile(precision=6)
def on_disconnect(e):
    logging.debug("Disconnected")

@profile(precision=6)
def on_click(e):
    print( "Clicked" )

@profile(precision=6)
def main(page: ft.Page):
    page.on_connect = on_connect
    page.on_disconnect = on_disconnect
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.update()

ft.app(target=main, view=ft.WEB_BROWSER)

This is the memory dump on first connect:
Line #    Mem usage    Increment  Occurrences   Line Contents
=============================================================
    23  40.140625 MiB  40.140625 MiB           1   @profile(precision=6)
    24                                         def main(page: ft.Page):
    25  40.140625 MiB   0.000000 MiB           1       page.on_connect = on_connect
    26  40.140625 MiB   0.000000 MiB           1       page.on_disconnect = on_disconnect
    27  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    28  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    29  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    30  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    31  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    32  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    33  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    34  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    35  40.140625 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    36  40.140625 MiB   0.000000 MiB           1       page.update()

This is the memory dump 20 or 30 tabs later (all opened tabs are closed and a single connection is made again):
Line #    Mem usage    Increment  Occurrences   Line Contents
=============================================================
    23  40.906250 MiB  40.906250 MiB           1   @profile(precision=6)
    24                                         def main(page: ft.Page):
    25  40.906250 MiB   0.000000 MiB           1       page.on_connect = on_connect
    26  40.906250 MiB   0.000000 MiB           1       page.on_disconnect = on_disconnect
    27  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    28  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    29  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    30  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    31  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    32  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    33  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    34  40.906250 MiB   0.000000 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    35  40.921875 MiB   0.015625 MiB           1       page.controls.append(ft.Text(value="Hello, world!", color="green"))
    36  40.921875 MiB   0.000000 MiB           1       page.update()

Describe the results you expected:
Expected memory to climb on new tab but to drop to original levels on close tab.

Additional information you deem important (e.g. issue happens only occasionally):
Flet version (pip show flet):
Name: flet
Version: 0.3.2
Summary: Flet for Python - easily build interactive multi-platform apps in Python
Home-page:
Author:
Author-email: Appveyor Systems Inc<EMAIL_ADDRESS>License: MIT
Location: /Users/gregor.brandt/Documents/Startbridge/web-app2/fe_env/lib/python3.11/site-packages
Requires: beartype, oauthlib, packaging, repath, requests, watchdog, websocket-client
Required-by:

Operating system:
MacOS 13.1, using Firefox as browser
Additional environment details:

Thanks for bringing up this subject! I'm going to take a look and then we can discuss it here.

@FeodorFitsner When exactly is on_disconnect called.  The docs say when a tab is closed (for instance).  But is it related to the web socket, if the web socket disconnects the message is fired?

Also, you would think that you can delete controls on the on_close handler, but simply doing a clear on the controls list does not work, you also have to call update which throws an exception in the on_close hander.
What does work is to clear the control list in on_disconnect and call page.update but that means you have to rebuild the controls on the next on_connect which is not idiomatic flet. (and on_connect is not called on first connection so all kinds of special handling has to be put in place)

what error do you get when calling update() in on_close handler?

This is the error received when call page.update() in the on_close handler.

Right, as the session is already deleted on Flet web server side.
So, the solution would be in on_close going through the page controls recursively and calling will_unmount, right?

I think that would work. I think that maybe a helper function clear_controls or something like that.  It could take in a page or control and walk the control tree and call unmount.  But the on_close should do it automatically.  That would allow a user to clear the controls on a page or inside another control and have it work as expected without having to call update.

What also has to occur is that whatever is holding the reference to the control needs to lose the reference so that the control can be garbage collected.

A reference to a Page instance is removed from a holding dict on session close: https://github.com/flet-dev/flet/blob/main/sdk/python/packages/flet/src/flet/flet.py#L294-L296
I don't know, is there anything else preventing it from proper garbage-collecting?

I have to test after this first fix is out...but I think that that the on_xxx handlers are not cleared and keep their references.  My main is a class and I have to manually unsubscribe my on_xxx before the class will GC.

I'm currently looking into that. Want to check it for 0.5.0 release.

I've managed to fix it! Will be in tomorrow's release.

To verify that memory is released when a user session is "closed" I used the following application:
import logging

import flet as ft
from memory_profiler import profile

@profile(precision=6)
def on_connect(e):
    logging.debug("Connected")

@profile(precision=6)
def on_disconnect(e):
    logging.debug("Disconnected")

@profile(precision=6)
def on_close(e):
    logging.debug("Closed")

@profile(precision=6)
def on_click(e):
    print("Clicked")

@profile(precision=6)
def main(page: ft.Page):
    page.on_connect = on_connect
    page.on_disconnect = on_disconnect
    page.on_close = on_close
    page.controls.append(
        ft.Text(data=f"a" * (1024 * 1024 * 128), value="Hello, world!", color="green")
    )
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.ElevatedButton("Click me", on_click=on_click))
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.controls.append(ft.Text(value="Hello, world!", color="green"))
    page.update()

ft.app(target=main, view=ft.WEB_BROWSER)

The trick there is Text.data value which "eats" 128 MB of RAM for each user session.
Additionally, I set session lifetime to 1 minute via environment variable:
export FLET_APP_LIFETIME_MINUTES=1

Running the app and opening 5 tabs I can see python process takes 669 MB:

Closing all 5 tabs and waiting for 1 minute I can observe "close" event handler called for all 5 sessions:
python process takes 29 MB (669 - 128 * 5):


Added object init to StorageService.

@ttomsu FYI
@ajordens please review.
The main point is adding a hook to the StorageService interface to initialize a DAO so I can avoid logging errors that were causing concern for some customers while still keeping the errors should the files be deleted during execution.

Redid this. Simplified it by just taking the message from error to info.
We have instrumentation around the cache sizes and I have refinements around adds and deletes so if someone were to delete the directory, those gauges and counters would pick up on it. The timestamp errors in the log file were another signal into that before those metrics were in place. It's still a little squirely to write some errors when the creates fail, but those errors are tolerated rather than propagated up since the timestamp is just an optimization.

LGTM