[BUG] Crash "throw er; // Unhandled 'error' event" after docker deployment

Environment
Self-Hosted (Docker)
System
Alpine or Ubuntu LXC on Proxmox, docker engine 27.1.2
Version
3.1.1
Describe the problem
Deploy Dashy 3.1.1 using docker methods in deployment docs (both "docker run" and "docker compose").
Initially the package starts building and such as expected, then crashes out with a yarn error.
Error: ENOENT: no such file or directory, stat '/app/dist/index.html'
Error: ENOENT: no such file or directory, stat '/app/dist/index.html'
Error: ENOENT: no such file or directory, stat '/app/dist/index.html'
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with signal "SIGKILL".
node:events:496
      throw er; // Unhandled 'error' event
      ^

Error: write EPIPE
    at target._send (node:internal/child_process:879:20)
    at target.send (node:internal/child_process:752:19)
    at callback (/app/node_modules/worker-farm/lib/child/index.js:32:17)
    at module.exports (/app/node_modules/terser-webpack-plugin/dist/worker.js:13:5)
    at handle (/app/node_modules/worker-farm/lib/child/index.js:44:8)
    at process.<anonymous> (/app/node_modules/worker-farm/lib/child/index.js:55:3)
    at process.emit (node:events:518:28)
    at emit (node:internal/child_process:951:14)
    at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on process instance at:
    at node:internal/child_process:883:39
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}

Node.js v20.11.1
ERROR: "build" exited with 1.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Additional info
Tested with both Alpine linux in the LXC as well as Ubuntu 22.04 based LXC.
Unusually I can deploy Dashy 3.1.1 in an LXC by using tteck's scrips and it works just fine...
https://tteck.github.io/Proxmox/#dashy-lxc
Please tick the boxes

[X] You have explained the issue clearly, and included all relevant info
[X] You are using a supported version of Dashy
[X] You've checked that this issue hasn't already been raised
[X] You've checked the docs and troubleshooting guide
[X] You agree to the code of conduct

Hi can you share how you run dashy? Your full docker command used?
Also try this:
docker run --pull always -p 8080:8080 lissy93/dashy

Are you now using docker or the tteck script -> non-docker installation?

Hi can you share how you run dashy? Your full docker command used?
Also try this:
docker run --pull always -p 8080:8080 lissy93/dashy

Hi, the original run used the command "docker run -p 8080:8080 lissy93/dashy" (as per the deployment guide).
I have now tested it with the suggested command and I had the same crash.
root@gp-docker:~# docker run --pull always -p 8080:8080 lissy93/dashy
latest: Pulling from lissy93/dashy
Digest: sha256:cefeaf7b04b96e9ce195d393a90ea4da77502724a59f84fee0094c8c6138f584
Status: Image is up to date for lissy93/dashy:latest
yarn run v1.22.19
$ NODE_OPTIONS=--openssl-legacy-provider npm-run-all --parallel build start
$ NODE_OPTIONS=--openssl-legacy-provider vue-cli-service build
$ node server

Checking config file against schema...
✔ Config file is valid, no issues found

SSL Not Enabled: Public key not present

 ██████╗  █████╗ ███████╗██╗  ██╗██╗   ██╗
 ██╔══██╗██╔══██╗██╔════╝██║  ██║╚██╗ ██╔╝
 ██║  ██║███████║███████╗███████║ ╚████╔╝
 ██║  ██║██╔══██║╚════██║██╔══██║  ╚██╔╝
 ██████╔╝██║  ██║███████║██║  ██║   ██║
 ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝   ╚═╝

*******************************************************************************************
Welcome to Dashy! 🚀
Your new dashboard is now up and running with Docker
*******************************************************************************************

Using Dashy V-3.1.1. Update Check Complete
✅ Dashy is Up-to-Date

-  Building for production...
 WARN  A new version of sass-loader is available. Please upgrade for best experience.
error Command failed with signal "SIGKILL".
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
node:events:496
      throw er; // Unhandled 'error' event
      ^

Error: write EPIPE
    at target._send (node:internal/child_process:879:20)
    at target.send (node:internal/child_process:752:19)
    at callback (/app/node_modules/worker-farm/lib/child/index.js:32:17)
    at module.exports (/app/node_modules/terser-webpack-plugin/dist/worker.js:13:5)
    at handle (/app/node_modules/worker-farm/lib/child/index.js:44:8)
    at process.<anonymous> (/app/node_modules/worker-farm/lib/child/index.js:55:3)
    at process.emit (node:events:518:28)
    at emit (node:internal/child_process:951:14)
    at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on process instance at:
    at node:internal/child_process:883:39
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}

Node.js v20.11.1
ERROR: "build" exited with 1.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
root@gp-docker:~#

Are you now using docker or the tteck script -> non-docker installation?
When running dashy without docker:
git clone https://github.com/lissy93/dashy
cd dashy
yarn --ignore-engines
yarn build-and-start

Ok, I thought that tteck was also using docker in his build, but I now see that he is not.
It's the docker install that I am using.
I could do the local build off the git clone if needed, but it's a docker implementation that I'm more keen to use.

Okay, thanks for the clarification, how much ressources foes the LXC have?
Please try with 3GB RAM and 3 Cores to be save.

Okay, thanks for the clarification, how much ressources does the LXC have? Please try with 3GB RAM and 3 Cores to be save.

Alright, that seems to have got over the crash. I upgraded the LXC from 2GB and 2C to 3.5GB and 3C and it completed the build now. Tteck uses 2GB and 2C in his LXC build (but as I now know it's not docker based).
I'll deploy another docker build now with 3GB and 2C and see if deploys ok this time also.
Maybe if that's the true cause then a mention in the deployment docs would be an idea as it's not obvious.

Okay, thanks for the clarification, how much ressources does the LXC have? Please try with 3GB RAM and 3 Cores to be save.

Alright, that seems to have got over the crash. I upgraded the LXC from 2GB and 2C to 3.5GB and 3C and it completed the build now. Tteck uses 2GB and 2C in his LXC build (but as I now know it's not docker based).
I'll deploy another docker build now with 3GB and 2C and see if deploys ok this time also. Maybe if that's the true cause then a mention in the deployment docs would be an idea as it's not obvious.

Yes, a 3GB, 2C LXC built ok while a 2GB, 2C LXC does not.
So yes, good to close this! Thanks for your help!

Yeah it's not intended to use that much ressources, we'll need to fix this, but there is already an open issue for this:
https://github.com/Lissy93/dashy/issues/1585#issue-2296626824
So i'll close this as duplicate.


new workflow to update snapshot in test apps

Goal

Testing

Release Notes

WHAT:
WHY:

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#1008  👈
#1007
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @nelsitoPuglisi and the rest of your teammates on  Graphite


[WIP] Kata Containers shim support

The Kata Containers shim needs the following parameters:

The agent URL (Or the proxy one when there is a proxy)
The container ID
The guest process ID it monitors

As a consequence, the virtcontainers support for the Kata Containers shim needs:

[X] Extension of the agent interface to return the guest PID when possible
[ ] Addition of a new shim type for Kata Containers
[ ] Implementation of the Kata Container shim (i.e. its start() method)
[ ] Moving the shim starting steps from container creation to container start, as we can only start the shim once we know the guest PID

@jodh-intel Good points. I added some comments, let me know if that's clearer now.

@sameo according to https://github.com/kata-containers/agent/pull/83, I think you can remove your first commit agent: Return guest process information when starting a new one.
We need another PR for virtcontainers in order to generate some unique IDs for every processes.


add widevine installation

This PR adds Widevine installation to Chromium environments in Gluon.
It will install it if needed for any Chromium browser window.
If opted out with {widevine: false}, it will not.
It also exports await Gluon.ensureWidevine({forceBrowser, forceEngine}),
to explicitly install it.
Tested platforms:

[x] Linux x64
[ ] Linux x86
[ ] macOS x64
[ ] macOS arm64
[ ] Windows x64
[ ] Windows x86
[ ] Windows arm64

Also note: if the default should be changed to false, index.js:190:86

After discussion, it was agreed this would be better served as a separate "plugin"/dependency rather than in the core of Gluon.


Consider disabling automatic Procfile lookup for deis pull

Currently the deis workflow cli looks for a Procfile in the pwd and uses it to declare proc types when doing a deis pull.
This feature is very error prone, because it can happen very easily that one does a deis create foo --no-remote followed by deis pull while in the git worktree of another workflow app "bar", eg. a rails app with buildpack deploy and a Procfile.
If one makes this error, deis will create the new app "foo", but it wil use the bogus Procfile to setup a "web" process type along with wrong labels on the "foo"-service which will cause routing to be broken. The app will also not start because the "web" proc type is scaled to 1 and cmd to 0.
To fix such an app, one has to manually scale up cmd and scale down web, edit the deis database to remove the bogus proctype and edit the "foo"-service selector to point to the "cmd" type.
In short it is a major pain to fix for a feature that is probably very rarely used and it is hard to even know what caused this without in-depth knowledge of deis workflow and kubernetes.
I propose to instead change the behavior of the --procfile switch to accept either a string or a path to a procfile and remove the automatic lookup for a Procfile in the pwd.

If this gets changed the docs for Declaring Process Types need to be updated.

This issue was moved to teamhephy/workflow-cli#5


Update FindFaces sample code using client sdk 1.0.0b2

Suggest to change some wordings in the parent https://github.com/zhizhoualan/azure-ai-vision/blob/PersonProfileRegistration/face/FindFaces/README.md page:

Q: Should https://github.com/zhizhoualan/azure-ai-vision/blob/PersonProfileRegistration/face/FindFaces/python/find_faces_in_collection.ipynb also need an update?

Somehow the file was skipped.


Fixed the top level CMake file to remove unneeded 'tests' folder

Coverage remained the same at 80.764% when pulling 5ddeb76ea1207f9c1a0b00e6f8d59a66f8223fb8 on lzhan55/ase_tests4 into dd8d9f854f2c3cda4f89ce29fdb5f013e4ec806d on master.


Update example page

Why are these changes needed?

Improve documentation
Related issue number

Checks

[x] I've included any doc changes needed for https://microsoft.github.io/autogen/. See https://microsoft.github.io/autogen/docs/Contribute#documentation to build and test documentation locally.
[ ] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[ ] I've made sure all auto checks have passed.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (7ceee5d) 39.62% compared to head (c757528) 39.46%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1698      +/-   ##
==========================================
- Coverage   39.62%   39.46%   -0.17%
==========================================
  Files          57       57
  Lines        6006     6006
  Branches     1338     1338
==========================================
- Hits         2380     2370      -10
- Misses       3433     3442       +9
- Partials      193      194       +1

Flag
Coverage Δ

unittests
39.46% <ø> (-0.17%)
:arrow_down:

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Support multiple layers in a map visualization

Problem
As we add more visualization types, it will be useful to pull in multiple visualization layers into the same visualization.  To do this, we'll need an API to addLayer to an existing visualization.
For example, users may want to create a heatmap visualization at low zoom levels, and a graduatedCircle visualization at high zoom levels.
A user may also want to add two or more layers to a map from different data sources.
Implementation

[x] Add minZoom and maxZoom properties to each viz type
[ ] Create addLayer function to add a layer to an existing viz object

I'll fork it and try to implement this, never done an open source contribution but see how this goes haha.

@carsnwd awesome, and thank you!  This will be a great feature for data science in Jupyter, because it allows us to use different types of data visualizations and data layers based on user interaction (zoom, a layer selection dropdown, etc)
No need to fork either - please feel free to just
a) Clone this repo git clone git@github.com:mapbox/mapboxgl-jupyter.git
b) Create a new branch git branch my-branch-name
c) Check out the branch git checkout my-branch-name
d) Commit your changes
e) Push your branch git push origin my-branch-name
f) Create a pull request from your branch on this repo
I'd start on this by adding the minZoom and maxZoom layer properties to the mapViz class (https://github.com/mapbox/mapboxgl-jupyter/blob/master/mapboxgl/viz.py#L14), then expose those as layer options in each template (graduatedCricle.html, heatmap.html, etc).
After that, you'd want to create a method that can add/remove layers from an existing visualization.  This is the part that's more work - you'll want to create a way to make a parent mapboxgl.viz object that can accept multiple mapboxgl.viz objects, then create a method that would take the layers and sources from each version and merge them into one style sheet.

I’ve been on and off trying to figure out this problem between classes and work, and wanted to write down what I’m thinking in case anyone else tries to take a stab or just for general thoughts. So when each viz is created, it creates the entire viz with an individual map. Initial idea I had to just create a set of child vizes to a parent...but that child viz is going to create it’s own map object and that’s no good.
My next idea so far is to abstract the map and layers/sources. So each viz starts off with the base.html and also starts off with a base map object the var map = ..... Then, the circle.html/clustered_circle.html/etc will add in layers and sources to the base map object in Jinja. Rather than duplicating code for when each viz type is a parent and to create a map or when each viz type is a child and to just create the layers.
{% extends "main.html" %}

{% block javascript %}
var legend = document.getElementById('legend');
legend.remove();

mapboxgl.accessToken = '{{ accessToken }}';

var map = new mapboxgl.Map({
    container: 'map',
    style: '{{ styleUrl }}',
    center: {{ center }},
    zoom: {{ zoom }},
    transformRequest: (url, resourceType)=> {
        return {
           url: [url.slice(0, url.indexOf("?")+1), "pluginName=PythonMapboxgl&", url.slice(url.indexOf("?")+1)].join('')
         }
    }
});

map.addControl(new mapboxgl.NavigationControl());

map.on('style.load', function() {

	{% block layers %}
	//Iterate through all parent and child vizes to add layer and sources
	{% endblock %}

});
{% endblock %}

Then I realized that each child viz probably will also have it's own legend properties.  Clustered_Circles being calcCircleColorLegend({{ colorStops }}, "Point Density"); or regular circle being calcCircleColorLegend({{ colorStops }}, "{{ colorProperty }}"); and more...supporting future viz types. So to support each legend property that's outside the map.on function...would have to iterate through them and create them.
{% extends "main.html" %}

{% block javascript %}
var legend = document.getElementById('legend');
legend.remove();

mapboxgl.accessToken = '{{ accessToken }}';

var map = new mapboxgl.Map({
    container: 'map',
    style: '{{ styleUrl }}',
    center: {{ center }},
    zoom: {{ zoom }},
    transformRequest: (url, resourceType)=> {
        return {
           url: [url.slice(0, url.indexOf("?")+1), "pluginName=PythonMapboxgl&", url.slice(url.indexOf("?")+1)].join('')
         }
    }
});

map.addControl(new mapboxgl.NavigationControl());

{% block legend %}
//Iterate through each vizes legend
{% endblock %}

map.on('style.load', function() {

	{% block layers %}
	//Iterate through all parent and child vizes to add layer and sources
	{% endblock %}

});
{% endblock %}

So seems like a lot of abstracting the individual parts of each viz (layers/sources and legend) into it's own creation that is iterated through and added for the parent viz and each child viz. Plus also extracting out the creation of the map itself from each viz type html to not duplicate maps. Then also making sure layers and sources don't have conflicting names and such...so variables aren't redefined between vizes.
Just my thoughts on the problem so far picking at it 🤔, open to suggestions and comments. Will see if I make any progress.

That's spot on with how I'd approach it too @carsnwd!  I think you can just tackle the first part in an initial pull request - abstract the mapboxgl.map variable creation from the creation of visualization layers.  The main thing to ensure then is that each viz type contains a unique source_id and layer_id schema.  That should be pretty straightforward:
data-circle
data-graduatedCircle
data-clusteredCircle
Layer names should already be unique.
After that's done, we can tackle the legend stuff 🚀

@carsnwd did you get a chance to look at adding in the next step for this issue - abstracting each viz layer to add to a base map?  Looking at what to include in the next release.

I have, still haven't gotten it done yet though. Today was the first day I've made some progress in a week or so, some other things in life have gotten in the way.
I'll try to get it sorted out and make a PR before the end of the month 😬

@carsnwd no rush here.  If you have a branch that's in progress, please submit a PR - we'd love to get multiple layer functionality into the next release in March.

Let's make this a push to finish for 0.7.0, which we're targeting to release at the end of April 2018.

Hi @carsnwd - just wondering if you managed to make any progress on this since your last update? No hurries or worries if not.
If you're up for it, I'd be more than happy to take a look and see what I can do. Thanks!

@bchowTWC and @carsnwd I've been experimenting with this too though I don't have image or raster layers worked in yet. It's kind of wrapped up in generating layer styles in Python, so still needs some adjustments. I can clean up what I have and share if you're interested :)

@akacarlyann - Definitely interested, if you don't mind. Those are actually the two layers I need most... good timing.
Much appreciated!

Hi all, this seems definitly like a good next step as it comes closer to a more natural way of building up a map: creating a single map instance and adding layers for the stuff you want to see visualized.
Just wanted to check: the initial use-case seems to be about having one single visualisation (layer) turned on at a time:

For example, users may want to create a heatmap visualization at low zoom levels, and a graduatedCircle visualization at high zoom levels.

As well as adding only one layer of each type:

The main thing to ensure then is that each viz type contains a unique source_id and layer_id schema.

This seems imho to be unnecessary restrictive.. why not have multiple layers on at the same time (and of the same type)?

@lucasvw ah, yes, the intention for this feature is to allow a user to add multiple layers to a map at the same time, including of the same layer type (two circle layers, for example).  I'll update the ticket scope to clarify.

@ryanbaumann is this still in progress?

@ryanbaumann I created some very fresh draft, where I managed to visualise two layers on same map
in point-viz-categorical-example.ipynb
https://github.com/mapbox/mapboxgl-jupyter/pull/126
Any feedback is welcomed. Hopefully will have time to finalise it for merge

Excellent, thank you @emakarov!  Will check your your PR.

@ryanbaumann I've checked on several my local examples, layers are working (maybe need more testing)
what I need, and what is missing

Need to re-write the Legend for Multi-layer case. Not clear how to do it better though.
Need to have some menu to toggle layers visibility

@ryanbaumann Any idea when this feature will be released?


Standalone logger example

Should build a standalone logger example, not dependent on expressjs.
It could be extracted from https://github.com/mitra42/frugal-iot/blob/main/html/server/Main.js

Done at examples/standalone


fix JATS tag

Hey this is not an error: when inserting text in Raw blocks the / must be escaped. See this filter for example.

Hey this is not an error: when inserting text in Raw blocks the / must be escaped. See this filter for example.

When I try the filter, I get this output:
<statement>

Everything is.

<//statement>

That's not what we want, right? I think that it might be only \ that needs to be escaped, not /.

When I try the filter, I get this output:
<statement>

Everything is.

<//statement>

That's not what we want, right? I think that it might be only \ that needs to be escaped, not /.

Ah of course my mistake, thanks!

Ah of course my mistake, thanks!


Change/disable header

The Figure ID is shown in the header (Figure 14):

Is there an option to change or remove/hide it?

No, but that could be a nice addition

I did a quick and dirty fix, but still need to check if I didn't miss anything, write tests and see how to do a proper pull request.
--- a/ipympl/backend_nbagg.py
+++ b/ipympl/backend_nbagg.py
@@ -149,6 +149,9 @@ class Canvas(DOMWidget, FigureCanvasWebAggCore):
     toolbar = Instance(Toolbar, allow_none=True).tag(sync=True, **widget_serialization)
     toolbar_visible = Bool(True).tag(sync=True)
     toolbar_position = Enum(['top', 'bottom', 'left', 'right'], default_value='left').tag(sync=True)
+
+    header_visible = Bool(True).tag(sync=True)
+
     _closed = Bool(True)

     # Must declare the superclass private members.
diff --git a/js/src/mpl_widget.js b/js/src/mpl_widget.js
index c8c8585..ee547cd 100644
--- a/js/src/mpl_widget.js
+++ b/js/src/mpl_widget.js
@@ -16,6 +16,7 @@ var MPLCanvasModel = widgets.DOMWidgetModel.extend({
             _view_module: 'jupyter-matplotlib',
             _model_module_version: '^'+ version,
             _view_module_version: '^' + version,
+            header_visible: true,
             toolbar: null,
             toolbar_visible: true,
             toolbar_position: 'horizontal'
@@ -64,6 +65,7 @@ var MPLCanvasView = widgets.DOMWidgetView.extend({

     model_events: function() {
         this.model.on('msg:custom', this.on_comm_message.bind(this));
+        this.model.on('change:header_visible', this.update_header_visible.bind(this));
         this.model.on('change:toolbar_visible', this.update_toolbar_visible.bind(this));
         this.model.on('change:toolbar_position', this.update_toolbar_position.bind(this));
     },
@@ -78,6 +80,11 @@ var MPLCanvasView = widgets.DOMWidgetView.extend({
         this.send_message('initialized');
     },

+    update_header_visible: function() {
+        this.header.style.display = this.model.get('header_visible') ? '': 'none';
+        this.request_resize();
+    },
+

@freethebee That's great! If you push the changes to a new branch on your fork, github will show a button telling you how to make a Pull Request. That'll make it easier for us to see which changes you've made. I think you can go ahead with that even before making tests.

I made the pull request, and will give a bit more info. My code was borrowed from the toolbar_visible option on the figure canvas.
When using it, I run into libpng problems discussed in issue #127.
Here are three cases, I checked.
Removing the header in before rendering the figure results in RuntimeError: libpng signaled error.
fig, ax = plt.subplots()
fig.canvas.header_visible = False
ax.plot([1,2,3], [4,5,3])

Making and rendering the figure in once cell and then hiding header from another, works.
In [1]:  fig, ax = plt.subplots()
 ax.plot([1,2,3], [4,5,3])
In [2]: fig.canvas.header_visible = False

Making rendering, and hiding both the toolbar and the header works.
fig, ax = plt.subplots()
fig.canvas.toolbar_visible = False
fig.canvas.header_visible = False
ax.plot([1,2,3], [4,5,3])

Is there an option to change or remove/hide it?

Just for the record, it is possible to change it doing fig.set_label('Test') and to "kindof" remove it doing fig.set_label(' ').
But now that #135 is merged it will be possible to properly hide it.

This is great; quick question to those familiar: is there a good way to set the flag as a notebook-wide default? It would be better than setting the flag for each figure every time something is plotted.

Unfortunately no... It is a widget specific flag, it is not part of the Matplotlib official API. So it is not possible to pass it to plt.figure() nor put it in the config.

I guess we could create a ipympl.rcParams equivalent?

Indeed that could be a good idea. I'd suggest we open a specific issue for that in order to keep track on this discussion.

Is there any way to keep the Save button while hiding the zoom and pan buttons of fig.canvas.toolbar_visible?


How to define a focused/pre-selected item in showQuickPick?

Is there a way to use showQuickPick and have the same behavior as File / Open Recent, that shows a list of items but the focused/pre-selected item is not the first (in this case, it's the second, because the first is the current folder).
I searched for something in QuickPickItem or QuickPickOptions, but didn't find anything that could do that.
Thanks in advance

No, you cannot do that

Ok, maybe it would be handled like https://github.com/Microsoft/vscode/issues/11468, exposing the API.
Thanks :+1:


Fix Skip Flags

The program raises errors when using --skip-products and skip-fits due to expecting paths to be created.

Completed in #11


Updated libStorage Dependency

This patch updates the libStorage dependency to the latest commit on the libStorage's release branch release/0.5.0.

Codecov Report

Merging #721 into release/0.8.0 will not change coverage.
The diff coverage is n/a.

@@              Coverage Diff              @@
##           release/0.8.0    #721   +/-   ##
=============================================
  Coverage           7.43%   7.43%
=============================================
  Files                 21      21
  Lines               2581    2581
=============================================
  Hits                 192     192
  Misses              2372    2372
  Partials              17      17

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 a5420b5...bf62208. Read the comment docs.


Fix for 1371, 1358

Finally managed to debug why in case there is no server handler assigned or detected, FileExists(...) will ignore the SIZE FEAT and use NLST instead.

Fix for #1371, #1358, and possibly for #1367


add SCIP version compatibility table

I moved the table to INSTALL.md, because I think this is where it should also be, and two locations are more work to update.


Can I overwrite the options in the on of datasets

for example i want to set the yaxes  max value and min value  how to setting it  without the options. because I want to use php to control it

It isn't possible to set the y axis min/max via dataset options. This is because of the fact that many datasets could use the same axis.


Adding ansible role for SonarQube

Adding ansible role for SonarQube
Playbooks:

oah_install.yml
oah_update.yml
oah_remove.yml
oah_validate.yml

@asa1997 Please review

@asa1997 Made all the required changes. Please check

@panickervinod @sumodgeorge  Added the Reset file and README.md too. Please check @asa1997


Duplicate Check Endpoint

[ ] Endpoint to check if a user is a duplicate on first name, last name, DOB, and Zip

[ ] rate limit the endpoint

I think there's some unwritten logic that's important to this endpoint:

If the user is attempting to register at an organization (i.e., organization-wide), the endpoint should check if that user is already registered organization-wide
If the user is attempting to register at a facility, the endpoint should check if that user is registered at that facility or organization-wide.

Does that make sense? cc @nathancrtr @aliciabeckett-gov


feed: invalid links

Every link in the feed is prefixed with https://www.getmonero.org/, resulting in invalid URLs. Example:
<link href="https://www.getmonero.org/https://www.getmonero.org/feed.xml" rel="self" type="application/atom+xml"/>

[..]

<content type="html" xml:base="https://www.getmonero.org/https://www.getmonero.org/2020/09/17/monero-0.17-released.html">

This is a duplicate of #1162. The problem is fixed with #1164, which will be merged soon.


how to render a sample html message using read only mode

Questions:

Is the way mentioned below how I'm supposed to build a sample renderer? I am unsure how to set the content using the useEditorBridge hook, I used initialContent as the suited prop. But is this how I am supposed to implement or is there something I am missing?
Moreover I am mapping RichTextEditor for say a list of messages, this is currently making every message scrollable individually, is there any way to stop this?

Code Sample Screenshot:

Output Screenshot:

hey @prathameshkurunkar7, Im not fully understand what you are asking for bullet 1, can you try to explain yourself better here? for the second one, In case you are not rendering the editor on the whole screen consider to avoidIosKeyboard: false

@GuySerfaty apologies, let me rephrase - I want to build a Renderer using TenTap (basically a component which shows formatted html in read only mode) example - for showing formatted messages in a chat. My question was how am I supposed to provide my message content(text to be rendered) to the useEditorBridge hook? Is there any other way to do this than what I've done?

@GuySerfaty apologies, let me rephrase - I want to build a Renderer using TenTap (basically a component which shows formatted html in read only mode) example - for showing formatted messages in a chat. My question was how am I supposed to provide my message content(text to be rendered) to the useEditorBridge hook? Is there any other way to do this than what I've done?

Oh I see, yeah it looks ok to me to use initialContent, it's a HTML string

Thanks for the feedback!


savefile.sav not being updated

Hello, and thanks for publishing this game server.
I have the server running, but would like to change save game files. I replaced the savefile.sav inside /config/savefile/ with my new world, but the old world keeps being loaded. I searched for other .sav files, but was unable to find any outside of the container. Even after deleting the /config/ data and the container, the old savefile.sav is still loaded.
After reading through the dockerfile, it seems like any /config/savefile/*.sav files are all copied into the GameSave folder on container startup, but that is not the result I am seeing.
Am I missing something obvious? Do you have a suggestion for how I could fix this? Again, thanks for sharing your work.

Update: After doing a complete docker system prune and removing all containers and volumes, the new save file was loaded.
Shouldn't whichever file was placed in the /config/savefile/ folder be the one loaded on container start though?

Hey!
Yeah, the container should pull the file with the latest modified timestamp from your mapped directory. My best guess is that there was a file within the container with a newer timestamp. Easy to fix on my end.
Thank you for bringing this to my attention!


feat(devfile): Update tools component

Signed-off-by: svor<EMAIL_ADDRESS>Remove tail command form the tools component.
Fixes https://issues.redhat.com/browse/CRW-2605

@benoitf could you please merge it when you'll have a chance, I don't have permissions for some reason.

@svor you should have permissions now


Use Fluent::Plugin::Filter instead Fluent::Filter to cover all filter classes

is_a?(Filter) can't detect Fluent::Plugin::Filter and it causes non compat filter is registered as a Output plugin.
I changed test filter classes for testing this case but I'm not sure this is good or not...

Currently, record_transformer doesn't work ;p

I cannot understand why changes on tests are needed. Could you explain it?

Because current test doesn't check Fluent::Plugin::Filter case.
So I added Fluent::Plugin::Filter and Fluent::Filter case to Pipeline test.

I got it.
LGTM.


Replace lru with schnellru

Is there an existing issue?

[X] I have searched the existing issues

Experiencing problems? Have you tried our Stack Exchange first?

[X] This is not a support question.

Motivation
Version of lru used right now is old (0.8 instead of current 0.10), also schnellru was introduced as supposedly faster and more featureful replacement.
Request
Replace all usages of lru with schnellru to de-duplicate dependencies
Solution
No response
Are you willing to help with this request?
Maybe (please elaborate above)

@koute WDYT?

Yeah, sounds good to me. schnellru should be pretty much a drop-in replacement for lru from a practical point of view.
For performance it probably won't make a difference since I don't think lru is used in any significant hot loops, but it's always nice to get rid of some extra dependencies.


Continuous fuzzing

Currently the vopr machine is disabled because the vopr has too many known failures caused by state transfer not being implemented yet. But we have lots of other fuzzers that don't have known failures, are too slow to run in CI and have sometimes regressed. So:

Extend the vopr hub to switch between any of the fuzzers available, not just the vopr.
Comment out the vopr and any fuzzers with known failures.
Reenable the vopr machine.

Done: https://tigerbeetle.github.io/tigerbeetle/


feat: bootstrap command

ℹ Overview

adds bootstrap command
refactors to data directory

When the node isn't running, this file does not exist:
Error: open /var/lib/algorand/algod.net: no such file or directory
Env:

algod installed independently of TUI
algod is not currently running

Repro:
./algorun

When running with an fnet node connected, it errors out with Error: channel not found
the github release channel is set to "dev"

For light-colored terminals, we want to  make sure our colors have enough contrast

replace yellow (e.g. in WARN label) with orange
replace gray in bootstrap test with default color


Add testing for tier1 schema transform (to check orm schema)

Currently there is no test to see whether the schema transform uses valid columns. This would currently only get picked up at run time. Using the orm, we can check this in advance, but we would have to restructure the schema transform files OR use a file naming convention (the latter is probably better)

Similar to #17 this has been resolved by the unit tests in schemas


great work! can you rewrite boltdb backend to use redis?

Instead of keeping two databases of bolt and redis, possible to rewrite backend as redis? there's interface store. hope you can help

Hi @hiqbn ,
It's an interesting idea, but now I'm working on something else.
After that, I will try to develop a plugin that supports Redis experimentally if I have time.

can you help start something? i will help write the redis part. i have no idea how to do the connector.

using it with https://github.com/yongman/tidis as backend

Hello @hiqbn,
This is an example of Bleve storage plugin for Badger.
https://github.com/mosuka/bbadger
Please contact me when finished.
I'll add your plug-in to Blast build option.

i'll work on it but if u can do the initial redis connector will be best. it's good work what u have done. thx

I don't understand the mo store.MergeOperator
can you do a boiler plate for me to work on the rest?

redis does not need file to have mutex r/w lock. no idea how to write it without file accessed, i'm getting this error below:
i think it's easier modifying this
https://github.com/tukdesk/bleve-ledisdb-storage
but a few functions are missing. can you check?
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x846705]
goroutine 1 [running]:
github.com/blevesearch/bleve.(*indexImpl).Index(0x0, 0xa21101, 0x6, 0x94a3a0, 0xab4830, 0x0, 0x0)
/go/src/github.com/blevesearch/bleve/index_impl.go:245 +0x45
main.main()

this is the boilerplate for redis for your reference
https://github.com/mwmahlberg/bleve/tree/feature/kvredis/index/store/redis


Add support for using NSView for platform window handle

I'm using bgfx in my application, along side Qt.
This is needed for interop between bgfx and Qt.
Qt has an API to get the native handle from a UI widget, called QWidget::winId(). However on mac, this returns a NSView and not an NSWindow. My patch updates the bgfx backend, so that it can accept both NSView and NSWindow in bgfx::PlatformData.nwh.

Mentioning @attilaz as possible reviewer.

Yes @attilaz needs to review this.

It works for me.
There are two warnings, but I can fix them in a seperate commit.


Implement Arrays of Arrays containing objects

Hi,
This library is really good, thanks a lot. I have a question:
can we make dynamic forms using this library that caters for 'objects containing arrays, and these array elements themselves will also contain arrays of objects'? I've tried with all the other combinations like arrays of objects and they work like a charm. Just the 'objects containing arrays, and these arrays themselves will also contain arrays of objects' is bugging me for quite some time. I have tried objects with arrays, and arrays with objects (trivial), works fine but I am having issues when the array inside contains arrays of objects.
As an example, how do I build a dynamic form that has the following data:
{
  "id": 1,
  "name": "root value",
  "arrayContainingObjArrays": [
    {
      "id": 1,
      "name": "value1",
      "arrayOfObejctsInsideArrayOfObj": [
        {
          "id": 1,
          "text": "obj inside array contained in array of object"
        }
      ]
    }
  ]
}

Assuming all of these individual fields use basic input types like text box / dropdowns etc.
Any suggestions/pointers will be really appreciated.
Many thanks.

Closing as this is a duplicate of issue id 414


Traceback error

Traceback (most recent call last):
File "/usr/local/bin/catt", line 6, in
from catt.cli import main
File "/usr/local/lib/python2.7/dist-packages/catt/cli.py", line 7, in
from pathlib import Path
ImportError: No module named pathlib

What can I do to fix this??

catt needs python 3.


Switch Back to official istanbul-instrumenter-loader

Coverage decreased (-0.007%) to 95.567% when pulling 63477d486b9063a616e4ab79a47508e9bc7098e8 on switch-back-to-official-istanbul-loader into 9d62095b8358d914e2a00e48d43d274bed825ef2 on master.


Delete unused library code

@mohitsoni and @kow3ns: Could you guys have a look and make sure I haven't deleted anything you were using?


cat: /dev/zero: EPIPE: Broken pipe when running fish shell tests

When I try to build fish-git and use coreutils-hybrid which replaces some of the coreutils with stable uutils, the pipestatus.fish test fails due to a broken pipe. It works fine with regular coreutils though, so I think it's an issue with one of the uutils binaries
89/184 Test  #89: pipestatus.fish...........................***Failed    0.17 sec
Testing file checks/pipestatus.fish ... Failure:

  There were no remaining checks left to match stderr:9:
    cat: /dev/zero: EPIPE: Broken pipe

  Context:
    [...] from line 196 (stderr:6):
    warning: Path '/not' does not exist
    warning: An error occurred while redirecting file '/not/a/valid/path'
    warning: Path '/not' does not exist
    cat: /dev/zero: EPIPE: Broken pipe <= no more checks

  when running command:
    ../test/root/bin/fish checks/pipestatus.fish

Possible related to some of these? https://github.com/uutils/coreutils/issues?q=is%3Aissue state%3Aopen pipe


Add feature to generate APPX packages for submission to the Windows Store

Create a Windows 10 app package with the content generated by ManifoldJS using the SDK tools installed locally, if available, or by invoking a cloud service that receives the app contents and returns the APPX package. Can be used to create packages on platforms that do not support the Windows SDK such as OS X and Linux.

Closed by https://github.com/manifoldjs/ManifoldJS/pull/131


COGReader -> Reader

First, this project looks great 😍, I'm sorry to open an issue (I don't have time to open a PR 😓) but COGReader is kinda deprecated and was replaced by rio_tiler.io.Reader in 4.0 (It's might be deleted at some point)
https://github.com/sogelink-research/ctod/blob/c704908b45b2add020c03cdb1db9d854eff61c76/ctod/core/cog/cog.py#L3
see https://github.com/cogeotiff/rio-tiler/blob/main/rio_tiler/io/init.py#L8-L9

Thanks for the heads up and the positive feedback! COGReader is now updated to rio_tiler.io.Reader.


Nux3 - inject is not a function

Reproduction
none
Steps to reproduce the bug
package.json
  "private": true,
  "scripts": {
    "dev": "nuxi dev --https --ssl-cert ../certs/example.com+5.pem --ssl-key ../certs/example.com+5-key.pem",
    "build": "nuxi build",
    "start": "node .output/server/index.mjs"
  },
  "devDependencies": {
    "@iconify/json": "^2.1.73",
    "@unocss/nuxt": "^0.43.2",
    "@vueuse/core": "^8.9.0",
    "@vueuse/nuxt": "^8.9.0",
    "nuxt": "npm:nuxt3@latest",
    "sass": "^1.53.0"
  },
  "dependencies": {
    "@inkline/inkline": "^3.0.9",
    "@inkline/nuxt": "3.1.4",
    "@pinia/nuxt": "^0.1.9",
    "@vueuse/integrations": "^8.9.0",
    "nuxt-graphql-client": "^0.0.33",
    "pinia": "^2.0.14"
  }
}

Expected behavior
run Pinia in Nuxt3
Actual behavior
[nuxt] [request error] inject is not a function
  at PiniaNuxtPlugin (/C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dist/server/server.mjs:30966:3)
  at fn (/C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dist/server/server.mjs:571:27)
  at Object.callAsync (/C:/Work/xxx/Website/Code/xxx/Frontend/node_modules/unctx/dist/index.mjs:41:19)
  at callWithNuxt (/C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dist/server/server.mjs:573:23)
  at applyPlugin (/C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dist/server/server.mjs:540:29)
  at Module.applyPlugins (/C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dist/server/server.mjs:550:11)
  at async createNuxtAppServer (/C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dist/server/server.mjs:46:7)
  at async Object.renderToString (/C:/Work/xxx/Website/Code/xxx/Frontend/node_modules/vue-bundle-renderer/dist/index.mjs:264:19)
  at async /C:/Work/xxx/Website/Code/xxx/Frontend/.nuxt/dev/index.mjs:473:20
  at async /C:/Work/xxx/Website/Code/xxx/Frontend/node_modules/h3/dist/index.mjs:420:19     ```

### Additional information

Hi,

Sorry for nor providing repro, but so far I cannot get any errors when I try it on Stackblitz. So it must be something in my project.

Basicall I follow those steps:
1. `yarn add pinia @pinia/nuxt` - im on Nuxt3
2. add `modules: ['@pinia/nuxt']` in nuxt.config.ts
3. Then Immediately I get the error. If I remove Pinia from modules, Its back to normal.

Any clues what might be going on?

Thank you

all good, its because of having latest nuxt, instead of RC.
bad
"nuxt": "npm:nuxt3@latest"
good
"nuxt": "3.0.0-rc.4"

It's still an issue waiting to be fixed since rc 5 or production will have it.

If you are using plugins (perhaps injected by a module) that are relying on the Nuxt 2 format of (context, inject) => void then it needs to be updated to the new Nuxt 3 format of (nuxtApp) => void: https://v3.nuxtjs.org/guide/directory-structure/plugins#creating-plugins

https://github.com/nuxt/framework/pull/5630


Fix loaddata bug

Fix loaddata bug
In this PR, a bug was discovered where there was an issue with the IC function for the AGP channel, and the reimaged data had different channel IDs from the original plates. These issues are fixed, and the updated IC functions and LoadData CSVs are added.

@gwaybio I found a bug in the code where I had duplicate code cells, so it looks like my LoadData CSVs changed. I am going to rerun the IC again to make sure that everything is correct! Once that is corrected, I will merge this; thanks for reviewing!


JWT token decode failed

JWT token decode failed appeared during login and fail to login.
src/screens/Auth/helpers.js:128 is having JWT token decode failed. I check back and found out it is because the src/screens/Auth/helpers.js:122 token is not working.
The token in src/screens/Auth/helpers.js:86 doesn't bring an jwt token. Anyone knows how to solve this?
let token = await firebase
    .auth()
    .currentUser.getIdToken()
    .catch((err) => {
      fetchFailure(err);
    });

Reopen this as I initiated both client and server part and still this issue is happening.

@SkyYap Did you add your AUTH_SECRET in the .env file?

@SkyYap Did you add your AUTH_SECRET in the .env file?

Yupp. I have found the issue. I didn't initiate my backend so it doesn't communicate.

@SkyYap Did you add your AUTH_SECRET in the .env file?

Yup. I did add AUTH_SECRET.

Closed as I found no issue running on render.com.


Multi-platform tracking

I was thinking on a way to track alerts/anything from multiple platforms using the /platform command to change platform but not tracking, like you use /track reactor then /platform ps4 and then /track reactor again but this time it adds PS4 alerts to the channel along with the PC alerts.
I don't know if that's even possible but just an idea (this would be useful with updates and maybe news)

That flow is too complicated and people would get lost very fast trying to know what platform they were on with what is being tracked.


add image origin uri for android platform

You put the path into origURL...

Looks like these added commits have derailed this one. Open a new focused PR if you'd like to propose some changes.


Fix pasting multiple nested pages with internal links pointing to a subpage

Now, as first step all PageTreeNodes are created and then the documents are created.
With that all PageTreeNodes already exist and can be referenced by links.
Fixes COM-113

@nsams Please fix the conflicts

@nsams only the last commit is relevant for this PR... Maybe try git rebase --onto here?


Docker build failing on MacOS - FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

Issue Description
Excalidraw docker local build is failing for me due to FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory (full logs below).
Environment
OS and version: macOS 14.1.1 (23B81) arm64 (Apple M1)
Docker Desktop: 4.21.1 (114176)

Engine: 24.0.2
Compose: v2.19.1
Credential Helper: v0.7.0
Kubernetes: v1.27.2

Excalidraw HEAD: 23b24ea5

Full logs
✗ docker-compose build
[+] Building 90.6s (12/13)
 => [excalidraw internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [excalidraw internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 416B                                                                                0.0s
 => [excalidraw internal] load metadata for docker.io/library/nginx:1.21-alpine                                                                        2.1s
 => [excalidraw internal] load metadata for docker.io/library/node:18                                                                                1.9s
 => [excalidraw build 1/6] FROM docker.io/library/node:18@sha256:7ce8b205d15e30fd395e5fa4000bcdf595fcff3f434fe75822e54e82a5f5cf82                      0.0s
 => CACHED [excalidraw stage-1 1/2] FROM docker.io/library/nginx:1.21-alpine@sha256:a74534e76ee1121d418fa7394ca930eb67440deda413848bc67c68138535b989   0.0s
 => [excalidraw internal] load build context                                                                                1.0s
 => => transferring context: 52.24MB                                                                                1.0s
 => CACHED [excalidraw build 2/6] WORKDIR /opt/node_app                                                                                0.0s
 => CACHED [excalidraw build 3/6] COPY package.json yarn.lock ./                                                                                0.0s
 => CACHED [excalidraw build 4/6] RUN yarn --ignore-optional --network-timeout 600000                                                                  0.0s
 => [excalidraw build 5/6] COPY . .                                                                                0.9s
 => ERROR [excalidraw build 6/6] RUN yarn build:app:docker                                                                                86.4s
------
 > [excalidraw build 6/6] RUN yarn build:app:docker:
0.824 yarn run v1.22.19
0.868 $ cross-env VITE_APP_DISABLE_SENTRY=true VITE_APP_DISABLE_TRACKING=true vite build
3.113 vite v4.4.2 building for production...
3.310 transforming...
16.67 Browserslist: caniuse-lite is outdated. Please run:
16.67   npx update-browserslist-db@latest
16.67   Why you should do it regularly: https://github.com/browserslist/update-db#readme
31.89 Browserslist: caniuse-lite is outdated. Please run:
31.89   npx update-browserslist-db@latest
31.89   Why you should do it regularly: https://github.com/browserslist/update-db#readme
85.36
85.36 <--- Last few GCs --->
85.36
85.36 [36:0x3d0d0210]    82241 ms: Mark-sweep (reduce) 989.3 (1011.6) -> 988.5 (1012.1) MB, 2422.6 / 0.0 ms  (average mu = 0.193, current mu = 0.057) allocation failure; scavenge might not succeed
85.36 [36:0x3d0d0210]    84229 ms: Mark-sweep (reduce) 989.7 (1012.1) -> 989.0 (1012.6) MB, 1972.1 / 0.0 ms  (average mu = 0.117, current mu = 0.008) allocation failure; scavenge might not succeed
85.36
85.36
85.36 <--- JS stacktrace --->
85.36
85.36 FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
85.41  1: 0xb72e9c node::Abort() [/usr/local/bin/node]
85.42  2: 0xa93f08  [/usr/local/bin/node]
85.42  3: 0xd3de10 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
85.42  4: 0xd3dfe0 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
85.43  5: 0xf1c5d4  [/usr/local/bin/node]
85.43  6: 0xf2e56c v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
85.44  7: 0xf0a6f0 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
85.46  8: 0xf0b6c8 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/usr/local/bin/node]
85.46  9: 0xeee358 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/usr/local/bin/node]
85.47 10: 0x1294914 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/usr/local/bin/node]
85.47 11: 0x16794cc  [/usr/local/bin/node]
86.01 error Command failed with exit code 1.
86.02 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
------
failed to solve: process "/bin/sh -c yarn build:app:docker" did not complete successfully: exit code: 1

I increased the resources allocation (CPU from 4 to 8, memory from 2 to 4 and swap from 1 to 1.5) and it worked.
Would it be possible to specify the resources needed in the docker compose?
According to https://stackoverflow.com/a/57135933 and https://docs.docker.com/compose/compose-file/compose-file-v3/#resources this may achieved with a configuration like:
version: "3.8"
services:
  excalidraw:
    build:
      context: .
      args:
        - NODE_ENV=development
    container_name: excalidraw
    # ....
    deploy:
      resources:
        limits:
          cpus: '<TBC>'
          memory: <TBC>M
        reservations:
          cpus: '<TBC>'
          memory: <TBC>M


sync_base.hpp/connection_delegate_factory.hpp: unused parameter warnings

/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:250:16: warning: unused parameter 'always_verify_peer' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:251:51: warning: unused parameter 'certificate_filename' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:253:40: warning: unused parameter 'verify_path' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:254:40: warning: unused parameter 'certificate_file' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:256:40: warning: unused parameter 'private_key_file' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:258:40: warning: unused parameter 'ciphers' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:259:40: warning: unused parameter 'sni_hostname' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/sync_base.hpp:260:16: warning: unused parameter 'ssl_options' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:37:58: warning: unused parameter 'always_verify_peer' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:38:29: warning: unused parameter 'certificate_filename' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:39:29: warning: unused parameter 'verify_path' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:39:64: warning: unused parameter 'certificate_file' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:40:29: warning: unused parameter 'private_key_file' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:40:69: warning: unused parameter 'ciphers' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:41:29: warning: unused parameter 'sni_hostname' [-Wunused-parameter]
/usr/home/vagrant/slave/kovri-static-freebsd64/build/deps/cpp-netlib/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp:41:48: warning: unused parameter 'ssl_options' [-Wunused-parameter]

As spammed here with branch 0.13-release when bool https is false.
https://github.com/cpp-netlib/cpp-netlib/blob/master/boost/network/protocol/http/client/connection/sync_base.hpp#L261-L277
https://github.com/cpp-netlib/cpp-netlib/blob/master/boost/network/protocol/http/client/connection/connection_delegate_factory.hpp#L36-L57
Complete build information / compiler versions for all affected platforms can be seen here.

Thanks for the report @anonimal -- is this something we can actually fix? Or will this just make the code uglier just to silence these warnings?

is this something we can actually fix?

Hi @deanberris. I imagine so - but I don't have the time to look into a fix. If a fix ends up making the code uglier but also improves the design then, IMHO, the design should be improved.

@deanberris how would you advise to fix this issue? The warning spam is making development unbearable - and disabling warnings is not an option.


Develop

Update of Accumulated CO2 data

Hi @olavurellefsen ,
I think your merge of the 'master into the develop before merging the develop into master overwrote the switch from the co2 intensity to the accumulated co2 emissions.
Could you revert that?

Yes, it looks like I messed it up. I will look into it.

It looks like it is ok now. @HauHe, please check.

Yes, looks good to me too.
I guess we should create a new release. Could you do that?

Done. See https://github.com/olavurellefsen/reeemgame/releases/tag/v1.1.0


drivers: sensor: Fix DHT20 build failure with CRC configured

Fixes the build error: 'crc' undeclared for DHT20 sensor with CONFIG_DHT20_CRC option enabled.

Sensor tested with CRC option enabled after changes:

commit msg fixed, PR rebased


contrain_op error when not using lct

I am using the LTC network for my data and everything works fine. However, when I am trying to use LSTM, CTRNN or CTGRU, this error appears:
  File "seq.py", line 248, in fit
    if(len(self.constrain_op) > 0):
TypeError: object of type 'NoneType' has no len()

Do you have any idea why is this happening? Thank you in advance for your time.

There is no file seq.py in our repository. Please provide a reference to a file that is included in the repo

We use gesture.py for classyfing inputs with one feature (instead of 32) based on 4 classes

The file gesture.py does not contain the expression if(len(self.constrain_op) > 0):


[FEATURE] Upgrade path enforcement & downgrade prevention

Is your feature request related to a problem? Please describe (👍 if you like this request)
Currently, Longhorn does not enforce the upgrade path, even though we claim Longhorn only supports upgrading from the previous stable release, for example, upgrading to 1.4.x is only supported from 1.3.x or 1.4.0.
Without upgrade enforcement, it allows users to upgrade from any previous version to a later version and it will cause deprecated features to be unable to remove from the later version.
Describe the solution you'd like

Enforce the upgrade path to disallow users to upgrade from an unsupported source version. After rejecting the user upgrade, the user longhorn setup should be intact w/o any impacts.
Also not allow users to do the downgrade.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
#2865
cc @longhorn/dev

@mantissahz Do we have LEP? We should LEP first to see the whole design.

Moved back to implement due to missing doc PR.

I am working on https://github.com/longhorn/longhorn/issues/4997 to remove a deprecated setting that is still referenced in an upgrade.go file. I can modify that file to remove the reference to the setting or make the setting name local to the file, but these approaches are kind of hacky. Now that we are enforcing an upgrade path, it makes more sense to me to entirely remove illegal upgrade paths from the upgrade folder/package. For example, in v1.5.x, remove upgrade/v070to080 ... upgrade/v120to121 and remove the corresponding UpgradeResources calls in upgrade/upgrade.go. This would make current and future dead code removal easier. WDYT?
https://github.com/longhorn/longhorn-manager/tree/master/upgrade

Exactly, we should remove unsupported paths from 1.5.0. @mantissahz Please help with that.

@innobead, @ejweber
https://github.com/longhorn/longhorn-manager/pull/1902
Removed the upgrade patch codes older than upgrading from v1.4.x to v1.5.0

@innobead, @ejweber longhorn/longhorn-manager#1902 Removed the upgrade patch codes older than upgrading from v1.4.x to v1.5.0

There are some old codes
if isCLIAPIVersionOne {
    ....
}

Is it possible to remove these codes after introducing the upgrade enforcement feature?

Sounds good. @mantissahz Can you help with this as well?

There are some old codes
if isCLIAPIVersionOne {
    ....
}

Is it possible to remove these codes after introducing the upgrade enforcement feature?

It isn't immediately clear to me why upgrade path enforcement allows us to get rid of these code paths (since newer versions of Longhorn can and do generally run with older engines until the user manually upgrades them). Is it related to the fact that MinCliVersion = 3 since Longhorn v1.1.0, so we assume the user is definitely not running with an old engine by now?

There are some old codes
if isCLIAPIVersionOne {
    ....
}

Is it possible to remove these codes after introducing the upgrade enforcement feature?

It isn't immediately clear to me why upgrade path enforcement allows us to get rid of these code paths (since newer versions of Longhorn can and do generally run with older engines until the user manually upgrades them). Is it related to the fact that MinCliVersion = 3 since Longhorn v1.1.0, so we assume the user is definitely not running with an old engine by now?

Yeah, you're right. isCLIAPIVersionOne is for the engine part rather than longhorn-manager, so they are independent.
I'm thinking when we can remove the logicsif isCLIAPIVersionOne {...}  in longhorn-manager.

Yeah, you're right. isCLIAPIVersionOne is for the engine part rather than longhorn-manager, so they are independent.
I'm thinking when we can remove the logicsif isCLIAPIVersionOne {...} in longhorn-manager.

Would we need to add a check in upgrade.go at some point for engine images that use cliAPIVersion = 1 and refuse to upgrade if any are found? I don't know that we have a clearly defined policy for what engines versions are allowed to be running in an up-to-date cluster.

Good point @ejweber !
We should only focus on longhorn/longhorn-manager part (upgrade path w/ migration path for CRs). Currently, there is no clear boundary for if the version of the engine should not be supported since we allow users to do so by themselves. (we can do some enforce check for that, but this is not what we should at the moment, especially it's related to volume directly)
The version support of different engines should be tackled well when we have a fully backward-compatible gRPC protocol between the manager/IM proxy and engine process instead of some still relying on CLI. (JFYI. for now, the new stack of data plane is purely relying on gRPC instead)
@mantissahz sorry for incomplete misleading info, I think we don't need to do any changes related to engine part.

Verified passed on master-head (longhorn-manager 9cc40a4) following the test steps.


feature: Add cache to avoid repeatly calculation in DPhyp

Signed-off-by: xiejiann<EMAIL_ADDRESS>Proposed changes
To calculated edges efficiently, we can only process these newly added node .
Issue Number: close #xxx
Problem summary
In DPhyp, we need to calculation neighborhood and edges that connected csg and cmp.
Checklist(Required)

Does it affect the original behavior:

[ ] Yes
[x] No
[ ] I don't know

Has unit tests been added:

[x] Yes
[ ] No
[ ] No Need

Has document been added or modified:

[ ] Yes
[x] No
[ ] No Need

Does it need to update dependencies:

[ ] Yes
[x] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[x] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 34.93 seconds
load time: 441 seconds
storage size:<PHONE_NUMBER>9 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20221125095424_clickbench_pr_52967.html


Nested dict-of-jitclass throws pickling error

Numba 0.52.0, 64-bit Python 3.7.3 on Windows
Discourse discussion is here
The code below doesn't work, but seems like it ought to
from numba import types, typed, njit
from numba.experimental import jitclass

@jitclass([
    ("x", types.int64),
])
class Level1:
    def __init__(self):
        self.x = 12

level1 = Level1()  # Okay, I can create a Level1 instance
level1_instance_type = Level1.class_type.instance_type
level1_kv = (types.int64, level1_instance_type)

@jitclass([
    ("level1s", types.DictType(*level1_kv)),
])
class Level2(object):
    def __init__(self):
        self.level1s = typed.Dict.empty(*level1_kv)
        self.level1s[0] = Level1()

level2 = Level2()  # Okay, I can create a Level2 instance
level2_instance_type = Level2.class_type.instance_type
level2_kv = (types.int64, level2_instance_type)

@jitclass([
    ("level2s", types.DictType(*level2_kv)),
])
class Level3(object):
    def __init__(self):
        self.level2s = typed.Dict.empty(*level2_kv)

# _pickle.PicklingError: Can't pickle <class 'numba.experimental.jitclass.base.Level1'>: it's not found as numba.experimental.jitclass.base.Level1
# level3 = Level3()

Thanks for reporting this @nelson2005, pretty sure this is a bug. CC @sklam, who might have an idea why without having to debug what's going on, else it'll need some digging around in the source. The direct problem is likely from trying to pickle a decorated class (@jitclass) and that in turn comes from boxing/unboxing which needs serialisation to work. This is why instantiating a Level3 instance in a jit compiled function would work, there's no box/unbox needed.

Thanks for reporting this @nelson2005, pretty sure this is a bug. CC @sklam, who might have an idea why without having to debug what's going on, else it'll need some digging around in the source. The direct problem is likely from trying to pickle a decorated class (@jitclass) and that in turn comes from boxing/unboxing which needs serialisation to work. This is why instantiating a Level3 instance in a jit compiled function would work, there's no box/unbox needed.

This still reproduces, on OSX even with current master (cbb4301852d0950f15eef0a2b8c0478db5d57201):
 💣 zsh» python issu6640.py                                                                                :(
Traceback (most recent call last):
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1371, in serialize_object
    gv = self.module.__serialized[obj]
KeyError: DictType[int64,instance.jitclass.Level2#7fcb5b38c610<level1s:DictType[int64,instance.jitclass.Level1#7fcb54ac9fd0<x:int64>]<iv=None>>]<iv=None>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "issu6640.py", line 41, in <module>
    level3 = Level3()
  File "/Users/vhaenel/git/numba/numba/experimental/jitclass/base.py", line 124, in __call__
    return cls._ctor(*bind.args[1:], **bind.kwargs)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 440, in _compile_for_args
    raise e
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 373, in _compile_for_args
    return_val = self.compile(tuple(argtypes))
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 911, in compile
    cres = self._compiler.compile(args, return_type)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 80, in compile
    status, retval = self._compile_cached(args, return_type)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 94, in _compile_cached
    retval = self._compile_core(args, return_type)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 107, in _compile_core
    cres = compiler.compile_extra(self.targetdescr.typing_context,
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 675, in compile_extra
    return pipeline.compile_extra(func)
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 419, in compile_extra
    return self._compile_bytecode()
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 483, in _compile_bytecode
    return self._compile_core()
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 462, in _compile_core
    raise e
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 453, in _compile_core
    pm.run(self.state)
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 343, in run
    raise patched_exception
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 334, in run
    self._runPass(idx, pass_inst, state)
  File "/Users/vhaenel/git/numba/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock
    return func(*args, **kwargs)
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 289, in _runPass
    mutated |= check(pss.run_pass, internal_state)
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 262, in check
    mangled = func(compiler_state)
  File "/Users/vhaenel/git/numba/numba/core/typed_passes.py", line 398, in run_pass
    lower.create_cpython_wrapper(flags.release_gil)
  File "/Users/vhaenel/git/numba/numba/core/lowering.py", line 242, in create_cpython_wrapper
    self.context.create_cpython_wrapper(self.library, self.fndesc,
  File "/Users/vhaenel/git/numba/numba/core/cpu.py", line 183, in create_cpython_wrapper
    builder.build()
  File "/Users/vhaenel/git/numba/numba/core/callwrapper.py", line 123, in build
    self.build_wrapper(api, builder, closure, args, kws)
  File "/Users/vhaenel/git/numba/numba/core/callwrapper.py", line 188, in build_wrapper
    obj = api.from_native_return(retty, retval, env_manager)
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1398, in from_native_return
    out = self.from_native_value(typ, val, env_manager)
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1412, in from_native_value
    return impl(typ, val, c)
  File "/Users/vhaenel/git/numba/numba/experimental/jitclass/boxing.py", line 139, in _box_class_instance
    box_subclassed = _specialize_box(typ)
  File "/Users/vhaenel/git/numba/numba/experimental/jitclass/boxing.py", line 122, in _specialize_box
    fast_fget = fget.compile((typ,))
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 911, in compile
    cres = self._compiler.compile(args, return_type)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 80, in compile
    status, retval = self._compile_cached(args, return_type)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 94, in _compile_cached
    retval = self._compile_core(args, return_type)
  File "/Users/vhaenel/git/numba/numba/core/dispatcher.py", line 107, in _compile_core
    cres = compiler.compile_extra(self.targetdescr.typing_context,
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 675, in compile_extra
    return pipeline.compile_extra(func)
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 419, in compile_extra
    return self._compile_bytecode()
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 483, in _compile_bytecode
    return self._compile_core()
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 462, in _compile_core
    raise e
  File "/Users/vhaenel/git/numba/numba/core/compiler.py", line 453, in _compile_core
    pm.run(self.state)
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 343, in run
    raise patched_exception
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 334, in run
    self._runPass(idx, pass_inst, state)
  File "/Users/vhaenel/git/numba/numba/core/compiler_lock.py", line 35, in _acquire_compile_lock
    return func(*args, **kwargs)
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 289, in _runPass
    mutated |= check(pss.run_pass, internal_state)
  File "/Users/vhaenel/git/numba/numba/core/compiler_machinery.py", line 262, in check
    mangled = func(compiler_state)
  File "/Users/vhaenel/git/numba/numba/core/typed_passes.py", line 398, in run_pass
    lower.create_cpython_wrapper(flags.release_gil)
  File "/Users/vhaenel/git/numba/numba/core/lowering.py", line 242, in create_cpython_wrapper
    self.context.create_cpython_wrapper(self.library, self.fndesc,
  File "/Users/vhaenel/git/numba/numba/core/cpu.py", line 183, in create_cpython_wrapper
    builder.build()
  File "/Users/vhaenel/git/numba/numba/core/callwrapper.py", line 123, in build
    self.build_wrapper(api, builder, closure, args, kws)
  File "/Users/vhaenel/git/numba/numba/core/callwrapper.py", line 188, in build_wrapper
    obj = api.from_native_return(retty, retval, env_manager)
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1398, in from_native_return
    out = self.from_native_value(typ, val, env_manager)
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1412, in from_native_value
    return impl(typ, val, c)
  File "/Users/vhaenel/git/numba/numba/typed/typeddict.py", line 242, in box_dicttype
    dicttype_obj = c.pyapi.unserialize(c.pyapi.serialize_object(typ))
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1373, in serialize_object
    struct = self.serialize_uncached(obj)
  File "/Users/vhaenel/git/numba/numba/core/pythonapi.py", line 1344, in serialize_uncached
    data = serialize.dumps(obj)
  File "/Users/vhaenel/git/numba/numba/core/serialize.py", line 57, in dumps
    p.dump(obj)
  File "/Users/vhaenel/git/numba/numba/cloudpickle/cloudpickle_fast.py", line 563, in dump
    return Pickler.dump(self, obj)
  File "/Users/vhaenel/git/numba/numba/core/serialize.py", line 185, in reducer_override
    _no_pickle(obj)  # noreturn
  File "/Users/vhaenel/git/numba/numba/core/serialize.py", line 164, in _no_pickle
    raise pickle.PicklingError(f"Pickling of {type(obj)} is unsupported")
_pickle.PicklingError: Failed in nopython mode pipeline (step: native lowering)
Failed in nopython mode pipeline (step: native lowering)
Pickling of <class 'numba.experimental.jitclass.base.JitClassType'> is unsupported

@esc does this still need triage? It seems to clearly be a bug.

I'm seeing something similar on 0.53.1 with nested list-of-jitclass:
from typing import List
import numba
from numba.experimental import jitclass

@jitclass
class Grandchild:
    def __init__(self):
        print("ok")

@jitclass
class Child:
    grandchildren: List[Grandchild]

    def __init__(self):
        self.grandchildren = numba.typed.List([Grandchild()])

@jitclass
class Parent:
    children: List[Child]

    def __init__(self):
        self.children = numba.typed.List([Child()])

Child()
# ok

Parent()
# Can't pickle <class 'numba.experimental.jitclass.base.Grandchild'>: attribute lookup Grandchild on numba.experimental.jitclass.base failed

I'm using poetry to install numba which makes it hard to try master because of having to compile llvmlite, but willing to try if there's a chance of a fix.

@tombh thanks I can confirm I am seeing this on master (5f6859908e7b73f7e1baf30381bac9e863640210) too.

For those that missed the discourse link mentioned in OP's report, a workaround is to always access the jitclass from a jitted function/method. As long as it never needs to be boxed for the python interpreter, the pickling error won't occur. Following @nelson2005's idea,  you can put a jitclass in a typed List and pass it around without it getting boxed.
Here is an example where I have nesting A->B->C, but then I add an additional pure python class CProxy. The CProxy utilizes the workaround, wrapping C in a typed List and proxying all the methods for it. As long as we don't access the C instance directly, no errors are thrown. Theoretically it is possible to proxy any operation or member access you wish to perform from the interpreter (though perhaps not practical for very complex data structures).
from numba import uint64, njit
from numba.types import ListType, DictType
from numba.typed import List, Dict
from numba.extending import as_numba_type
from numba.experimental import jitclass

@jitclass
class A:
	def __init__(self): pass

@jitclass
class B:
	a: ListType(A)
	def __init__(self): pass

BDictType = (uint64, as_numba_type(B))
@jitclass
class C:
	b: DictType(*BDictType)
	def __init__(self):
		self.b = Dict.empty(*BDictType)
	def length(self):
		return len(self.b)

class CProxy:
	def __init__(self):
		self._ref = List.empty_list(as_numba_type(C))
		CProxy._wrap(self._ref)
	@njit
	def _wrap(ref):
		""" construct class of interest inside jitted function;
			as long as we don't try to access ref[0] from interpreter, pickling error won't arise
		"""
		ref.append(C())
	@njit
	def _length(ref):
		""" calls C through jitted layer to avoid python interpreter boxing """
		return ref[0].length()
	def length(self):
		""" proxy the actual method """
		return CProxy._length(self._ref)

c = CProxy()
print(c.length())

I've written a function which can auto-generate such a Proxy class. Note that it only creates proxies of instance methods:
import inspect
from inspect import Parameter, Signature
from numba import njit
from numba.typed import List
from numba.extending import as_numba_type

def make_jitclass_proxy(cls, njit_signatures:dict=None):
	""" Create a proxy class to provide indirect access to a jitclass. This can be used as a
	 	workaround for a bug in numba where nested jitclass's triggers a pickling error when trying
	  	to access via the python interpreter. This uses reflection to wrap all the instance
		function-style methods, including ``__init__`` and any dunder methods. Attribute/property
		access is not proxied, but this function could be enhanced to add such.

		See https://github.com/numba/numba/issues/6640#issuecomment-1784009756

		:param cls: class to make a proxy of
		:param njit_signatures: optional signature objects to pass to @njit when creating proxied
			methods; the first argument will always be ListType(as_numba_type(cls))
		:returns: proxied class
	"""
	class Proxy:
		__slots__ = ["_ref"]
		_methods = {}

	methods = Proxy._methods
	def attach_method(k, v):
		sig = inspect.signature(v)

		# strip defaults/annotations for the jitted method signature;
		# replaces "self" arg with __numba_proxy;
		# constructs arguments to pass to jitted method
		sig_python = []
		sig_proxy = []
		sig_args = []
		self_kind = Parameter.POSITIONAL_OR_KEYWORD
		for p in sig.parameters.values():
			if p.kind == Parameter.POSITIONAL_ONLY:
				self_kind = p.kind
			# ignore first positional, which is the "self" arg
			if not sig_proxy and (
					p.kind == Parameter.POSITIONAL_ONLY or
					p.kind == Parameter.POSITIONAL_OR_KEYWORD
			):
				continue
			sig_python.append(p)
			sig_proxy.append(p.replace(
				default=Parameter.empty,
				annotation=Parameter.empty
			))
			# build argument to be passed to actual method
			prefix = ""
			name = p.name
			if p.kind == Parameter.VAR_POSITIONAL:
				prefix = "*"
			elif p.kind == Parameter.KEYWORD_ONLY:
				prefix = name+"="
			elif p.kind == Parameter.VAR_KEYWORD:
				prefix = "**"
			sig_args.append(prefix+name)
		sig_python = Signature(sig_python)
		# used in place of "self" argument
		sig_proxy.insert(0, Parameter("__numba_proxy_ref", self_kind))
		sig_proxy = str(Signature(sig_proxy))
		sig_args = ', '.join(sig_args)

		# build proxy method
		fn = f"def {k}{sig_proxy}:"
		if k == "__init__":
			fn += f"\n\t__numba_proxy_ref.append({cls.__name__}({sig_args}))"
		else:
			fn += f"\n\treturn __numba_proxy_ref[0].{k}({sig_args})"
		#print(fn) # can use to debug complex signatures
		exec(fn, None, methods)
		# manual signature specified for use?
		if njit_signatures is not None and k in njit_signatures:
			decorator = njit(njit_signatures[k])
		else:
			decorator = njit()
		methods[k] = decorator(methods[k])

		# python interface for the method
		if k == "__init__":
			def interface(self, *args, **kwargs):
				ba = sig_python.bind(*args, **kwargs)
				ba.apply_defaults()
				self._ref = List.empty_list(as_numba_type(cls))
				self.__class__._methods[k](self._ref, *args, **kwargs)
		else:
			def interface(self, *args, **kwargs):
				ba = sig_python.bind(*args, **kwargs)
				ba.apply_defaults()
				return self.__class__._methods[k](self._ref, *args, **kwargs)
		setattr(Proxy, k, interface)

	# find instance methods of the raw class which jitclass wraps
	attrs = cls.__mro__[1].__dict__
	for k,v in attrs.items():
		if inspect.isfunction(v):
			# closure
			attach_method(k, v)

	return Proxy

Use it like so:
CProxy = make_jitclass_proxy(C)
c = CProxy()
print(c.length())

I'm getting this error too, but get it when I try to use nb.objmode() and use a list of jitclasses. It seems the workaround will not help me because I get the error immediately on entering objmode. (Unless someone can thing of a way around?)
@nb.njit  # type: ignore
def load_intermediates(
    runner_id: np.int64,
    intermediates: list[TDataRingFloat32],
):
    """
    Load intermediates into datarings.

    Used in restart mode.

    Args:
        runner_id: id to find runner.
        intermediates: list of intermediates to load.
    """
    with nb.objmode():  # type: ignore
        TrainingRunner.instances[runner_id].load_intermediates(intermediates)

where intermediates is a list of jitclass instances.

Modify the dumps function on line 52 of numba/core/serialize.py:
def dumps(obj):
"""Similar to pickle.dumps(). Returns the serialized object in bytes.
"""
pickler = NumbaPickler
with io.BytesIO() as buf:
# p = pickler(buf, protocol=4)
p = pickle._Pickler(buf, protocol=4)
p.dump(obj)
pickled = buf.getvalue()
return pickled

and the program will run successfully


[2.1]: Include scaffolding packages in the patch

Resolves #935 by bumping scaffolding to 2.1.2 and including them in the patch .
cc @vijayrkn @muratg

@muratg - I have already requested the approval

I'm back from vacation. I dug out of my email mountain, but didn't see resolution on this. Was this change approved for 2.1.2?

This is approved for 2.1.3. I have updated the status.

Thanks. Closing for now as this will need to be redone after rebasing on 2.1.3 changes.


Refactor EbayIcon/EbayProgrambadge

Now EbayProgramBadge uses EbayIcon under the hood using name={name as any} which is a workaround. We should extract something like BaseIcon and use it in both components. Or do something more elegant.

not relevant with Skin 16 anymore


SecurityManager is planned to be deprecated for removal

JEP 411 (JDK-8264713), currently proposing to target Java 17, plans to deprecate the Security Manager system for removal - this includes java.security.AccessController and java.security.PrivilegedAction which are used in quite a few locations (50+).

I think there are still platforms that use this, so we can't remove them until we bump the minimum required Java version to 17.

Agree with @chrisvest

@kashike Thanks for this link. I'm a bit sad because we invested ~2years to get the SecMan run productive on enterprise level with a huge app.
From the JEP:

In future JDK releases, we will degrade the Security Manager APIs so that they remain in place but have limited or no functionality. For example, we may revise AccessController::doPrivileged simply to run the given action, or revise System::getSecurityManager always to return null. This will allow libraries that support the Security Manager and were compiled against previous Java releases to continue to work without change or even recompilation.


Semantics for batched Diagrams?

This is actually a pretty interesting question that I'm stuck on. In Jax, I'm thinking of a diagram as a https://jax.readthedocs.io/en/latest/pytrees.html . A pytree is basically a tree of arrays. When you call vmap, and return a diagram, Jax returns a diagram where there is an extra dimension on all the arrays.
@jax.vmap
def draw(i):
    return circle(i)
draw(np.arange(10))

This object is a Primitive where the transform/style has a batch of 10 in front of it. By default I am interpreting this as a concat of 10 primitives. However one might also interpret it as an animation with 10 frames.
The question is what happens if you try to compose this with another object?  Think in this case you just have 15 composed elements.
draw(np.arange(10)) + draw(np.arange(5))

But is that the same as this case? Here you have a Compose node that also has a Batch dimension on it that applies to both its children.
@jax.vmap
def draw(i):
    return circle(i) + circle(i+10)
draw(np.arange(10))

You also have the case where there are multiple vmaps, in this case I think the concat should just flatten them and draw them in order.
@jax.vmap
def draw(i):
    @jax.vmap
    def draw(j):
        return circle(i) + circle(j+10)

However I think it would be nice if whatever we do here works both for animation and drawing. Like there is some notion of a composable sequence of diagrams either in z-space or time that corresponds to this tree idea.

Hmm, I guess the more correct way to do this is to consider a batched diagram like a list of diagrams. You could then apply cat or chat or tcat along the batched axes.
You would then need to do:
concat(draw(np.arange(10)), axis=0) + hcat(draw(np.arange(5)), axis=0)

Maybe internally though this could still store it as 2 arrays instead of flattening to 15.
Need to think if this works for the other cases.

I ended up going with the following design.
@jax.vmap
def outer(j):
    @jax.vmap
    def inner(i):
        return (circle(0.3 * i / 6).fill_color(np.ones(3) * i / 6) +
                square(0.1).fill_color("white")).scale(1)
    inside = inner(np.arange(2, 5))
    return vcat(inside).scale(1)
out = outer(np.arange(1, 6))
print("My Size", out.size())
d = hcat(out)

I think this solve my issue without adding too much complexity to the system. The main difference is that now diagrams can have a .size() like (4, 3). This corresponds to the fact that they may have an internal batch dimension. You can only render diagrams of size (), meaning it is one diagram. You can now call hcat directly on diagrams with size != () and it will compose the inner dimension. So if it was (4,3) it becomes (4,). Internally it does the same thing that we do before but in jax it can do it all on matrices since they have a built in associative reduce https://jax.readthedocs.io/en/latest/_autosummary/jax.lax.associative_scan.html
There are a couple core change to the system to make this work. One is a new node ComposeAxis which should be identical to compose but runs along the inner axis of the tree. Second is a Size visitor which determines the size by walking down the tree and taking ComposeAxis nodes into account. Finally think might try replacing the functional versions of Envelope/Trace with a Visitor pattern over diagram. Think it is roughly the same, but it's hard to debug the repeated function call thing, and it doesn't play nice with jax.
(I'll add to the PR when stable).

Yup, that's a good summary. Still working out the details, but I think the semantics make sense.

I can even imagine the render method working similarly by saving each diagram in the array.

Yeah! I think the trick here is kind of cool. If you render batched primitives, you have a List[Prim] but they may no longer be in order (elements of the prim 2 may need to be in front of prim 1). But you can have an array .order of size size() on Primitive that has the z-order of the primitives and then sort before calling Cairo. Contructing order is really neat algorithm. I'm sure it has some clever functional name, but I hadn't seen it before.

The original Compose node also caches the envelope of the composition. I wonder whether this is needed for the ComposeAxis, since we treat the diagrams independently.

Right good point. This was exactly the hard part since having functions on the trees is not allowed in Jax. So instead I was thinking an envelope "function" could just a remember what node it is at, and then tree walk from there. Instead of the function being a monoid, the EnvDistance is just a monoid. We don't really do too many crazy things with Envelopse/Traces so this seems to be fine (I think pad / frame is the only place we play with the implicit form).
If you want to override the envelope on a Compose node, you need to pass in a new diagram. I think this is already the user facing semantic diagram.with_envelope(new_diagram_for_envelope)
@dataclass
class EnvDistance(Monoid):
    d: Scalars

    def __add__(self, other: Self) -> Self:
        return EnvDistance(tx.X.np.maximum(self.d, other.d))

    @staticmethod
    def empty() -> EnvDistance:
        return EnvDistance(tx.X.np.asarray(-1e5))

    def reduce(self, axis=0):
        return EnvDistance(tx.X.np.max(self.d, axis=axis))

class Envelope(Transformable, Monoid):
    diagram: Diagram
    affine: Affine

    def __call__(self, direction: V2_t) -> Scalars:
         self.diagram.accept(ApplyEnvelope(), EnvDistance.empty())

...
class ApplyEnvelope(DiagramVisitor[EnvDistance, V2_t]):
    A_type = EnvDistance

    def visit_primitive(self, diagram: Primitive, t: V2_t) -> EnvDistance:


The possibility of setting a Second PTT key

First, your firmware is very interesting and practical.
Can you set the custom 1 key as the second PTT key? The original PTT key controls the frequency above, and the custom 1 key controls the frequency below, so there is no need to frequently switch frequencies

People use that key for various other things, I use myself use it for monitor on/off.

I've received a request to do this as well. I was thinking of using both SIDE1 and SIDE2 to TX on top or bottom VFO respectively and using KEY_PTT as the monitor. Last time I tried it was a tad messy, maybe there's a better way to do it.

I would love that as an option too, it doesn't have to be fixed. Buttons could stay configurable, but PTT2 could replace e.g. Alarm function.

Am lagging behind bug fixes at the moment, need to catch up with them before adding more options I think, need to keep on top of them.

An update on this.
#134 is something that may affect my progress on this feature request. I believe it's possible to build this on the cross-band functionality that exists, but I'm understanding it's a bit of a mess currently. For now, I can only apologise for the delay.

I've added 4 new menu items tonight, they allow the user to configure the 2 side buttons without needing the PC.
An option could be added to set a chosen side button to be your 2nd PTT.

I've added 4 new menu items tonight, they allow the user to configure the 2 side buttons without needing the PC.
An option could be added to set a chosen side button to be your 2nd PTT.

Your crystal ball's on point this evening. I'll delve into it tomorrow. Sleep well.


Added prompting for actions which will remove system stable version o…

…f application;
Added flag 'force' for 'install' and 'remove' command.

You need to add check like that:
from genestack_client.utils import isatty
If not isatty() and not force:
    raise GenestackException('... you cant call promt ... ')

Should we add check to stable command too?


Jest Validation Error

Describe the bug
Jest is vallidating hence cannot perform tests properly.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Solved the Jest issue by recreating a new react build

Solved the Jest issue by recreating a new react build


Adjust Entry-point to CHECK^PASSWORD

this is a normal call to a functtion aka. method (At least in my tests)
I have adjusted mainly README + the screenshots (hope the link works)
In addition, ai added the new SuperSeverPort and removed the out of date license link
just for comfort coloring for .mac was added
and BTW - excellent to present this rather unknown feature for the current contest

please accept a big thanks


not using mpv.conf

i'm using mpv-shim on linux via flatpak. mpv doesn't seem to be using the mpv.conf in var/app/com.github.iwalton3.jellyfin-mpv-shim/config/
for example, if i take a screenshot with s hotkey, it doesn't save to the designated location or with the correct filename.

screenshot with s hotkey, it doesn't save to the designated location

flatpak has restrictions on where files can be saved. You may have to manual specify the path to be allowed.


Addition of linters and gitignore file

Add Html file.
Add Css file.
Make correction to where it is needed.
Write descriptive pill message

Add Html file.
Add Css file.
Make correction to where correction is needed.
Writ descriptive pill message

@Uchenna-ibute  This Pull request is already merged. There is no way to review it

please what can i do as to regard to my merge pull request? should i open
another pull request?
On Fri, Oct 28, 2022 at 9:39 AM Oyebade Priscilla @.***>
wrote:

@.**** commented on this pull request.
Hi @Uchenna-ibute https://github.com/Uchenna-ibute ,
While you made a great effort in this project, unfortunately, I cannot
proceed to review your code. You've already merged this Pull Request.
Invalid Code Review Request
You have submitted a project, that
Your Code Review Request will be marked as invalid in your Dashboard, so
please submit a new one once you are ready 🙏
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something
is not 100% clear.
Please, remember to tag me in your question so I can receive the
notification.
Please, do not open a new Pull Request for re-reviews. You should use the
same Pull Request submitted for the first review, either valid or invalid
unless it is requested otherwise.
Invalid Code Review Request does not count into the code reviews limit.
—
Reply to this email directly, view it on GitHub
https://github.com/Uchenna-ibute/my-portfolio/pull/1#pullrequestreview-1159687583,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASOG7VMRC63EEZSNDDAIQXTWFOGLPANCNFSM6AAAAAARPCCYC4
.
You are receiving this because you were mentioned.Message ID:
@.***>

@Uchenna-ibute This Pull request is already merged. There is no way to review it

What should I do next?


cython 0.29.xx broken for python 3.9rc2

Describe the bug
The previously deprecated tp_print is now finally gone.
Environment (please complete the following information):

OS: Linux
Python version 3.9rc2
Cython version 0.29.21

  src/llfuse.c:50290:36: error: ‘PyTypeObject {aka struct _typeobject}’ has no member named ‘tp_print’
    __pyx_type_6llfuse_VoidPtrCapsule.tp_print = 0;

E.g. there: https://travis-ci.org/github/borgbackup/borg/jobs/731883687

My impression is that this should have been fixed in https://github.com/cython/cython/commit/aa56a6b108de18138dfcf8722610327024b11dd9. Although I could be wrong

It looks to me like llfuse includes a pre-cythonized llfuse.c (presumably made with an earlier version of Cython before this change was made) and by default uses this file rather than rebuilds it.

Oh crap, there is a llfuse.c from 2019 in the pypi src package. :-(

I'll close this as being a 3rd party problem. If you decide otherwise as you investigate it then I can re-open this, but I'm pretty sure it's fixed in Cython.

Yeah, looks like it is a llfuse issue (and llfuse is not maintained any more).


Clean imports and getAPIFileType

Clean imports
Fix variable shadowing in getAPIFileType + no need to call toUpperCase twice + no need to type hint

[x] npm run test succeeds.
[x] npm run lint succeeds.
[x] Appropriate changes to README are included in PR.

This is a prelude to an other PR coming soon (my IDE was complaining), i'm looking into enhancing the push --watch command by fixing 'TODO: Only push when a non-ignored file is changed'

I signed it!

Thanks. Hopefully VS Code won't undo the formatting changes for me.