Drawing text and shapes in pyglet is slow only achieving 30fps what pygame can do at over 60fps

Basically, it seems pyglet can either draw only shapes at 60fps or only text at 60fps, but as soon as the two are combined it is unable to keep up and something starts queueing up causing rending to lag behind current system state.
Here's more detail:
I've written a program that scans my display in real-time and has an overlay window that draws bounding boxes and confidence labels on objects of interest. The positions, sizes, and confidence labels can fluctuate with every frame. In pygame I can accomplish this with no lag, but in pyglet I max out at 30fps and then rendering starts to lag.
Using pyglets app.run() and a timer updating at 60fps resulted in pyglet maxing out at 30 fps, so I abandoned it and used my own loop controlled by the pace of my detection process populating an event queue.
If I were to speculate, I would question whether pyglet is using one frame cycle rendering shapes a second to render text. Of additional note is that I do already have vsync=False to reduce lag, but it doesn't matter.
So, what is pyglet doing that it cannot keep pace when the 'inferior' pygame has no trouble?
Here's an example of the code:
q_detections = Queue()
engine = Process(target=p_engine, args=(q_detections))
engine.start()

dark_red = (255, 100, 0, 255)
batch = pyglet.graphics.Batch()
config = pyglet.gl.Config(double_buffer=True, depth_size=24, alpha_size = 8)
window = pyglet.window.Window(vsync=False, config=config, style=pyglet.window.Window.WINDOW_STYLE_OVERLAY)

while not finished:
    fpsCount+=1
    window.dispatch_events()
    detections = q_detections.get()
    shapes = []
    for d in detections:
        x1, y1, confidence, width, height = d
        shapes.append(pyglet.shapes.Line(35+x1, 685-y1, 45+x1+width, 685-y1, color=dark_red, width=1, batch=batch))
        shapes.append(pyglet.shapes.Line(35+x1, 675-y1-height, 45+x1+width, 675-y1-height, color=dark_red, width=1, batch=batch))
        shapes.append(pyglet.shapes.Line(35+x1, 685-y1, 35+x1, 675-y1-height, color=dark_red, width=1, batch=batch))
        shapes.append(pyglet.shapes.Line(45+x1+width, 685-y1, 45+x1+width, 675-y1-height, color=dark_red, width=1, batch=batch))
        shapes.append(pyglet.text.Label(text=str(int(confidence * 20)*5), color=dark_red, font_size=18, x=30 + x1, y=690 - y1, batch=batch))

    window.clear()
    batch.draw()
    window.flip()

Pygame and Pyglet are two different libraries and the same approaches aren't always going to translate in the same manner for the same result.
In this case, you are creating objects every frame and constantly uploading them to to the GPU, then deleting them after. This is highly inefficient and expensive. While you can get away with it with shapes (within reason), as they are pretty generic, Labels are going to be more expensive as there is much more logic involved.
Generally the correct the approach is going to be to create all of your objects on initialization (after window creation), then update them when needed. This can be accomplished with a pool implementation, to create objects, grab an unused object  already in memory, update it's attributes (visibility, position, size, or, in a Label's case, text). Then when it's not longer in use, change visibility, put it back in the pool, and repeat. In your case, since the number of objects are unknown, you would probably start off with a larger pool to make the initial detections more smooth.
Right now, the slowest part is going to be the Label, if you comment that out, it should be much faster, that should be the first thing you should pool. If your lines make a Rectangle, you should try just using the Rectangle shape as well.

It's a very common mistake if you're not used to GPU based libraries. I see people do this in arcade and moderngl all the time.

@caffeinepills Thanks for the response. I don't have enough understanding of how pyglet, gl, and the GPU interact to understand why sending a new object would be so much slower than updating the shape of an existing object. It sounds like what I would need to do is use another library to draw all my objects to a png image and then load that image in pyglet and blit it to my window.

use another library to draw all my objects to a png image

To my understanding, you can rasterize your text into a texture from within pyglet. This avoids the overhead of disk access or complexity of adding another library. I also recommend avoiding pillow/PIL's text rendering if you can help it.


Missing import in generated dart file

There are some bugs with missing imports in generated Dart files If bridge is consist of multiple Rust files containing struct declarations that are used between these files. Below is an example of such situation.
I also encounter a similar bug with missing import but in frb_generated.rs if struct declared in api/feature_a.rs has additional impl FeatureA { ... } in other bridge file api/feature_b.rs.
Steps to reproduce
flutter_app/rust/lib/api/feature_a.rs
#[frb(opaque)]
pub struct FeatureA;

flutter_app/rust/lib/api/feature_b.rs
use super::feature_a::FeatureA;

#[frb(opaque)]
pub struct FeatureB

impl FeatureB {
    pub async fn get_feature_a(&self) -> FeatureA { ... }
}

flutter_app/lib/src/rust/api/feature_b.dart

import './feature_a.dart'; // <= this import is missing after generation
// other imports

@sealed
class FeatureB extends RustOpaque {
  ...
  Future<FeatureA> getFeatureA({dynamic hint}) => ...
  ...
}

Logs
-

Expected behavior
No response
Generated binding code
No response
OS
MacOS
Version of flutter_rust_bridge_codegen
2.0dev14
Flutter info
No response
Version of clang++
No response
Additional context
No response

Looks like a bug, and feel free to fix it! Alternatively, I will fix it in the next batch (hopefully within a few days)

The generator is like a magic box for me, not sure i can fix it)

Sure, then I will fix it :) Btw, this is the inside of the box: https://cjycode.com/flutter_rust_bridge/guides/contributing/overview


Documentation

Let's create proper documentation ie. licence, readme, and holistically what the high level data flow for this verifier looks like.

To be added to the README


'-o --coverage' should only show the coverage of changed files.

🚀 Feature Proposal
Combining -o, --onlyChanged, or --watch with --coverage should first run the changed files only, then display coverage for the changed files only, and then rerunning automatically on a save or when Enter/Return is pressed.
Motivation
Jest CLI would work better if it allowed quick limited tests. You should be able to have it running the background as you're writing tests. "--watchAll --coverage" is convenient if you type 'o' or 'f' after the initial run. At that point coverage will only be shown for the files that were tested. However, if you're testing a large enough project, you will end up stuck in that initial run for a while. That's not convenient at all. --watch --coverage doesn't provide that same functionality. After the files are tested, coverage is calculated for the entire project.
Example
Before writing tests, I would start jest --watch --coverage. The program would inform me that there are no changed files. Then I'd write my first test and save it. Jest would automatically run it and show me the remaining coverage on the specific file I was testing only. This would make it easier to continuously test one specific file and see the remaining coverage without pouring over a massive table of values
Pitch
This feature already exists in the platform as part of the flow of --watchAll but it isn't consistent across similar CLI tools. --watch and -o should use --coverage as an alias of --collectCoverageFrom, just like --watchAll does. It's likely a very simple fix and would greatly help users of Jest.

I recall we fixed that in master, but can't find the commit. Can you check jest@beta?

https://github.com/facebook/jest/commit/6a77ee37ec2d46ece7e9cfd0f891d11c113cc4c4#diff-9523ac5aa456fb73fc8008d14432dfff
I found the commit, and it worked the first time around using watchAll, but ever since hitting q to back out of that first run, it no longer works. The only one that's working properly is --changedSince= but of course you need to create a new branch to use that.

I think the problem only appears when comparing against your own branch, even the remote branch you cloned. It works fine when comparing against a parent or sibling.

Sounds like a bug, would you mind investigating and maybe send a PR with a fix? Or at least provide a repro :)

Was this fixed?


Create ucas.txt

last time i create cn/ac/ucas/ucas.txt doesn't work, and i try it again with added a dir mails. our mail is like @mails.ucas.ac.cn

This should be lib/domains/cn/ac/ucas/mails.txt.

@bigsquirrel Flagging as inactive.


Import Dashboard via JSON?

In the Dashboard view, there is a button "Export to JSON". How to "Import" it back to ADX Dashboard?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: a4be1640-3699-8fdf-07a2-c9b922499c90
Version Independent ID: 55027537-6af4-541d-da8d-e2cdc2b5fa92
Content: Visualize data with the Azure Data Explorer dashboard
Content Source: data-explorer/azure-data-explorer-dashboards.md
Service: data-explorer
GitHub Login: @orspod
Microsoft Alias: orspodek

Thanks for the ask  . At this time we are reviewing the ask and we will reply back as soon as we can .

That's a great question @wangyuantao .  So far I have not found the import dashboard button either.  Escalating to @orspod .

Thank you for your question!
Import json file is not supported today, but it is on our backlog for the mid term.

Thanks @Gabilehner
Closing this issue now.
@wangyuantao thanks for reaching out, we're always here for questions.

#please-close


Spyder 5.3.3 not showing plots

Issue Report Checklist

[x ] Searched the issues page for similar reports
[ x] Read the relevant sections of the Spyder Troubleshooting Guide and followed its advice
[x ] Reproduced the issue after updating with conda update spyder (or pip, if not using Anaconda)
[N/A ] Could not reproduce inside jupyter qtconsole (if console-related)
[ X] Tried basic troubleshooting (if a bug/error)

[ X] Restarted Spyder
[ ] Reset preferences with spyder --reset
[ X] Reinstalled the latest version of Anaconda
[X ] Tried the other applicable steps from the Troubleshooting Guide

[ ] Completed the Problem Description, Steps to Reproduce and Version sections below

Problem Description
Running SPYDER-IDE (version 5.3.3) from the Annoconda Distribution for Python 3.9 on a Mac Pro (2019, Intel processor) under Mac OS X ver. 13.0.1 (Ventura). The provided below will not run. The only output I get is the message:
runfile('/Users/user/Various_Python_Examples/temp.py', wdir='/Users/user/Various_Python_Examples')

in the console window.
What steps reproduce the problem?

Running on a Mac under Max OS X ver. 13.0.1 (Ventura) with the Intel Processor
Installing the Mac OS X Intel processor version of the Anaconda Distribution for Python ver. 3.9
Startup Anaconda-Navigator
Run SPYDER ver. 5.3.3
Use the test program provided below (you'll need to adjust the first line for your system)

What is the expected output? What do you see instead?
I ran the following test program:
#!/Users/user/opt/anaconda3/bin/python3
import matplotlib.pyplot as plt
import numpy as np
#plt.switch_backend('QT5Agg')
plt.style.use("ggplot")

t = np.arange(0.0, 2.0, 0.1)
s = np.sin(2 * np.pi * t)
s2 = np.cos(2 * np.pi * t)
plt.plot(t, s, "o-", lw=4.1)
plt.plot(t, s2, "o-", lw=4.1)
plt.xlabel("time (s)")
plt.ylabel("Voltage (mV)")
plt.title("Simple plot $\\frac{\\alpha}{2}$")
plt.grid(True)

plt.savefig("test.png")

plt.show()

expecting to see my plot appear in the IDE plot window.
Please advise.
Sam Dupree.

Hey @OrbitalMechanic, thanks for reporting. You said

expecting to see my plot appear in the IDE plot window.

Plots in Spyder are displayed by default in our Plots pane, as described in our documentation.
If that pane is not visible in the interface, please go to the menu
View > Panes > Plots

to show it again. Let us know if it works for you.

I got the following message in the console window instead:

That is the command used to run a file in Spyder's IPython console.

The plot pane is set correctly. The problem is that SPYDER displays the message
runfile('/Users/user/Various_Python_Examples/temp.py', wdir='/Users/user/Various_Python_Examples')

but the script is never executed.
Sam Dupree.

The problem is that SPYDER displays the message

As I said, that is the command used by Spyder to run files. And this is what I get when running the code you posted above (you can see that the plot is shown just fine):

However, I see that you have this line
plt.title("Simple plot $\\frac{\\alpha}{2}$")

which requires Latex to work. Do you have Latex installed? If not, please comment it and try again.

Ok, please post a screenshot of what you're seeing that includes the Editor, IPython console and Plots panes (like my screenshot above) to better understand what's happening in your case.

After several tries, I finally got pressing the red button at the top right of the console to work by exiting Spyder, re-entering it, starting the Python script, and then interrupting the console (red button at the top right of the console). No error message appeared.

Ok, I see that you have both the Pylab and Sympy options enabled in
Preferences > IPython console > Graphics > Support for graphics

and
Preferences > IPython console > Advanced settings > Symbolic mathematics

So, please disable them and try again. Perhaps that will solve your problem.

I disabled the Pylab and Sympy options, and still, nothing happened.

Ok, then please close Spyder, open a terminal and run these commands there
conda create -n spyder-env -c conda-forge python=3.9 spyder matplotlib
conda activate spyder-env
spyder

After Spyder is up again, run your code there to see what happens.

I created spyder-env per your procedure.
The dependencies table follows.

Chromium on macOS will fall back to software rendering in this case.
Hardware acceleration and features such as WebGL will not be available.
fromIccProfile: failed minimal tag size sanity

Lastly, I got the same results as before:

Ok, please close Spyder, open a terminal, run there
spyder --reset

and try again.

From the terminal:
*** Reset Spyder settings to defaults ***
removing: /Users/user/.spyder-py3/help
removing: /Users/user/.spyder-py3/onlinehelp
removing: /Users/user/.spyder-py3/path
removing: /Users/user/.spyder-py3/temp.py
removing: /Users/user/.spyder-py3/template.py
removing: /Users/user/.spyder-py3/history.py
removing: /Users/user/.spyder-py3/history_internal.py
removing: /Users/user/.spyder-py3/workingdir
removing: /Users/user/.spyder-py3/langconfig
removing: /Users/user/.spyder-py3/spyder.lock
removing: /Users/user/.spyder-py3/config/spyder.ini
removing: /Users/user/.spyder-py3/config/transient.ini
removing: /Users/user/.spyder-py3/plugins
(spyder-env) user@Mac-Pro ~ % spyder
The available OpenGL surface format was either not version 3.2 or higher or not a Core Profile.
Chromium on macOS will fall back to software rendering in this case.
Hardware acceleration and features such as WebGL will not be available.
fromIccProfile: failed minimal tag size sanity
2022-12-17 21:44:38.756 python[9418:2063155] +[CATransaction synchronize] called within transaction
(spyder-env) user@Mac-Pro ~ %

This time Spyder showed a splash page for the online tutorial. Closing that and continuing to execute, I got the following splash page:

Clicking Run, I got no change from before:

Sorry, I'm out of ideas. Perhaps this is an odd issue only present in Ventura, something not uncommon on Mac and a reason why you should wait at least six months before updating to a new OS version for the next time.
@mrclary, could you take a look at this one, of course, if you're in Ventura?

Sorry, I'm out of ideas. Perhaps this is an odd issue only present in Ventura, something not uncommon on new Mac versions and a reason why you should wait at least six months before updating to a new OS version for the next time.
@mrclary, could you take a look at this one, of course, if you're in Ventura?

I'll take a look at it as soon as I have Ventura installed on my iMac. Perhaps this week.

@ccordoba12, FYI, matplotlib has its own LaTeX rendering engine, so LaTeX is not required to be installed on the users system.

Yep, I know, but it's only able to render a subset of Latex, so I thought that could the problem in this case.

I'll take a look at it as soon as I have Ventura installed on my iMac. Perhaps this week.

Great! Thanks for your help.

Unfortunately, I cannot reproduce the OP.

Apple M1 chip
macOS 13.1 (Ventura)

I've tried several different launch scenarios:

Spyder v5.3.3 standalone
conda install (Python 3.9.15 and 3.10.8, Spyder 5.3.3)
Anaconda Navigator (Spyder 5.3.3)

I mentioned previously that when the splash screen for Spyder appears, there is no indication that it is loading anything. Could this be a clue as to what is happening? Furthermore, is there a way to find out what Spyder loaded on startup?

@OrbitalMechanic, one thing you could try is running Spyder in debug mode. Using the spyder-env conda environment again
(spyder-env) $ spyder --debug-info=verbose

Then run your script. Afterward, you may quit Spyder. The debug log messages will appear in the Terminal, but also sent to ~/.spyder-py3/spyder-debug.log. Attach this file to a comment or copy and paste the contents into the comment. This may give us a clue as to what is going on.

Attached is the log file, as you requested.
spyder-debug.log

Well, unfortunately I don't see anything amiss in the log file...
@ccordoba12, do you have any other ideas?

@OrbitalMechanic maybe try updating from macOS 13.0.1 to 13.1?

do you have any other ideas?

According to @OrbitalMechanic's logs, the comm channel was never connected, which should be the cause for this problem. Since the kernel appears to be connected, that could be a proxy, firewall or VPN issue. @OrbitalMechanic, please try to disable them (if you have them enabled) and try again.

It was the VPN that caused the problem. However, once I disabled it, both spyder-env and spyder under Anaconda-Navigator ran fine.
The issue now is how to get spyder and my VPN to work together, so let me ask this question: would there be a problem between a standalone version of spyder installed in the application folder versus the spyder installed under Anaconda-Navigator? If I can get a standalone version of spyder installed in the Application folder, then I can add the standalone spyder to my VPN split tunnel list.

@OrbitalMechanic, the latest Spyder releases can be downloaded here:
https://github.com/spyder-ide/spyder/releases/tag/v5.4.0
I recommend the Spyder.dmg standalone installer.
I don't know if this will resolve your issue or not. What VPN service and/or settings are you using? I must use a VPN for my day job and have not had any issues with Spyder.

I'm running hide.me The setting I'm using follows.

Protocol: IKEv2 (recommend for Mac OSX)
VPN Tunnel Internet Protocol: IPv4 Preferred

Are there particular settings that would impact spyder?

hide.me does not seem to have a free trial so I could not test with it, but I was able to use Proton VPN without any affect on Spyder. My employer requires me to use another VPN which also does not affect Spyder. So I wonder if it is something unique to hide.me.

From what I can see, it's something about hide.me that impacts spyder. There is a free version of hide.me, as depicted in the screen snap below.

As for Proton VPN, do you know if their implementation of split tunneling works for Mac OSX Ventura?

@OrbitalMechanic I cannot reproduce the OP, even with hide.me.
I've tried several different settings:

Kill Switch enabled and disabled
Split Tunnel = "All apps use the VPN"
Stealth Guard at various settings
VPN Protocol = IKEv2 and WireGuard

Where would I find a version of spyder compatible with Mac OSX Ventura for the Intel processor to install?

Spyder 6 should solve this by not setting a special port for comms. Instead, we'll use a regular Jupyter port for that.
We'll release the first Spyder 6 alpha in two months or so. Other than that, I think there's little we can do about this.

Here is what I've observed.

The stand-alone version of Spyder and the version of Spyder installed under Anaconda-Navigator will run under a VPN (hide.me, ExpressVPN, and Proton VPN) using Mac OSX Ventura provided "split tunneling" is not used.

Of the three VPNs I tested, hide.me has a split tunneling capability for applications that reside in the Applications folder. I added the stand-alone version of Spyder to hide.me's list of applications that are not to use the VPN. hide.me causes the stand-alone version of Spyder to crash. I got a similar result when I attempted to run Spyder under Anaconda-Navigator.

The takeaway here is to run Spyder (stand-alone or installed under Anaconda-Navigator) in "full tunneling" mode for the time being.

Gentlemen, I sincerely appreciate your help in isolating this problem and identifying a solution.
Please inform me when Spyder 6 alpha becomes available.
Once again, thanks for all your help.
Sam Dupree.

@OrbitalMechanic, I assume that you did not have any problems with hide.me split-tunneling and Spyder in previous versions of macOS. Is this correct?
Also, even with split tunneling ("Only allow selected apps to use the VPN", Spyder not listed), I still cannot reproduce the OP. But I'm glad you've found a work-around for now.

Please inform me when Spyder 6 alpha becomes available.

Will do

But I'm glad you've found a work-around for now.

Agreed.


feat: localize plugin provider to mitigate supply chain attacks

This pull request localizes plugin provider instances within plugins to mitigate the possibility of dependency supply chain attacks. This is done by exposing a new top-level registerPlugin API; this seemed like less of a hack than relying on internal (possibly changing) semantics of immutability within SES.
Note: Once this lands, the following updates should be made:

[ ] Update plugin examples
[ ] Update plugin skeleton

Resolves https://github.com/MetaMask/metamask-plugin-beta/issues/53

I'd like to get an open examples PR open so that we can merge it at the same time as this, to minimize time where we're hosting an incompatible set of tools.

How does this reduce the risk?

@kumavis Per #53, the concern was that injecting a wallet global would expose that (permissioned) global to all of the module's dependencies, making plugins more susceptible to supply chain attacks.
By passing the sensitive/permissioned API as an argument, the plugin has a controlled scope around the variable, and so other dependencies would not have access to it.
Maybe we should have verified the attack first: In your opinion, is a SES container already adequately scoped?

We're now running the experiment:
Can entry index.js require a second module attacker.js that can then access wallet globally?

Closing for now since some questions were raised about the efficacy of this approach.


Upgraded to .NET Standard 2.0

Upgraded Swashbuckle.AspNetCore.Examples project to .NET Standard 2.0.
Upgraded WebApi project to use .NET Core 2.0.

@mattfrear please review this PR and consider to merge. Thanks!

This PR also includes update to newer version of Swashbuckle.AspNetCore.SwaggerGen -> 1.1.0

As discussed, I prefer to have the package use the oldest versions possible for maximum backwards compatibility.


Support encoding/decoding to/from JSON in parity_scale_decoder

rename parity_scale_decoder to parity_scale_codec or something similar
add support to encode/decode SCALE to/from JSON

atm, we're supporting only decoding to Rust debug format. I think we should just replace that with JSON, but we can also support different formats with some flag

also this small cli app should take input from stdin and return output to stdout. This is what we need atm

also this small cli app should take input from stdin and return output to stdout. This is what we need atm

@mversic when converting from JSON to SCALE, should it print binary data (SCALE) to stdout?

also this small cli app should take input from stdin and return output to stdout. This is what we need atm

@mversic when converting from JSON to SCALE, should it print binary data (SCALE) to stdout?

yes, but support optional -o to print to a file


Consider using std::simd or core::simd to accerlerate computation

Since the basics of SIMD has arrived in Rust 1.27 stable: https://blog.rust-lang.org/2018/06/21/Rust-1.27.html#simd, we should consider to replace our basic::cell::U64x4 with std::simd::u64x4. Although std::simd is still in nightly, I think it will be stabilized very quickly.
Pros:

SIMD is fast
it also in the core library which means "no-std
it provides handful APIs, and we don't have to maintain these by ourselves

Cons:

still not stabilized, we should use nightly Rust to compile
not sure it's compatibility
we should rewrite some code

Thanks for the suggestion. But I believe there are no APIs for addition (nor multiplication) with carrying. Our implementation for U64x4 represents a 256-bit number, which does not fit into the original purpose of std::simd::u64x4 (being only a vector of 4 u64's). Therefore we cannot quite use the APIs for our big integers implementation (not in a direct and efficient way). What is your opinion on this problem?

Do you suggest to use basic SIMD ops (https://github.com/rust-lang/rust/pull/49664/) to speedup the code?

Not really. I mean they are suitable when the additions can be run in parallel, but in our situation (big number addition) we need to consider various cases for handling carrying of the different blocks. So std::simd::u64x4 cannot replace our implementation for U64x4 in a direct way.

Yes, forget about std::simd::u64x4. I mean we can use basic SIMD primitives to accelerate other operations.

Yes, SIMD might be used in the following use cases.
//ecc_group.rs L.364 - 367
let lambda3 = lambda1 - lambda2;
let lambda6 = lambda4 - lambda5;
let lambda7 = lambda1 + lambda2;
let lambda8 = lambda4 + lambda5;

However, if we swtich to SIMD, we may need to provide other APIs (for 4-way parallel addition) and/or breaking the U64x4 abstraction.

Right, this is one potential way for optimization.


add:Royal-Dragon

Description
added new profile abhiram
Related Issues
no issues
Changes Proposed

Checklist

[x] I have read and followed the Contribution Guidelines.
[x] All new and existing tests passed.
[x] I have updated the documentation to reflect the changes I've made.
[x] My code follows the code style of this project.
[x] The title of my pull request is a short description of the requested changes.

Screenshots
Note to reviewers

Closing. Not active since long time.


example fails: "Error trying to build"

Hi Marcos 👋,
This might not be surprising but when I paste in this linuxkit example on http://play-with-moby.com/, I get this alert:
Error trying to build

The network log and JS console are pretty informative actually.
Under the hood, it looks like play-with-moby successfully starts a play-with-docker session and then fails getting an instance:
cat ~/play-with-moby.com.har \
    | jq '.log.entries[] | "\(
            .request | "\(.method)\t\(.url)\n\t\(.postData.text)"
        )\n\(
            .response | "\(.status)\t\(.content.mimeType)\n\t\(.content.text)"
        )\n"' \
    | egrep -v '\.(svg|css|js|png)|/css|webfont|text/html|OPTIONS' \
    | gsed -e 's,\\t,\t,g' -e 's,\\",",g' -e 's,\\n,\n,g' | gsed -e 's,^",,g' \

POST	https://labs.play-with-docker.com/
	session-duration=90m
200	application/json
	{"session_id":"bhtmk24pkul000f82u80","hostname":"labs.play-with-docker.com"}

GET	https://labs.play-with-docker.com/sessions/bhtmk24pkul000f82u80
	null
200	text/plain
	{"id":"bhtmk24pkul000f82u80","created_at":"2019-03-03T05:45:44.299Z","expires_at":"2019-03-03T07:15:44.299Z","pwd_ip_address":"<IP_ADDRESS>","ready":true,"stack":"","stack_name":"pwd","image_name":"","host":"<IP_ADDRESS>","user_id":"ba37f0atlt8g00bna6cg","playground_id":"490c0c31-2304-54c0-ac38-97bf80b045b0","instances":{}}

POST	https://labs.play-with-docker.com/sessions/bhtmk24pkul000f82u80/instances
	{"Hostname":"node1","ImageName":"franela/pwm"}
500	text/plain

Perhaps we have a breaking API change on labs.play-with-docker.com?
Hopefully it's a simple fix 🤞

Hey there!,
PWM is not supported anymore as it didn't get the expected attention. I'll bring the site down shortly


Slides - add onInit EventEmitter

Ionic version:  (check one with "x")
[x] 2.x
I'm submitting a ...  (check one with "x")
[ ] bug report
[x] feature request
[ ] support request => Please do not submit support requests here, use one of these channels: https://forum.ionicframework.com/ or http://ionicworldwide.herokuapp.com/
Current behavior:
Until now its quite hard to get notified if a slider is fully initialized (to do something with the idangous swiper instance).
Expected behavior:

We should get notified when the slider is initialized
Other information:
More infos in the PR --> https://github.com/driftyco/ionic/pull/9479
Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
ordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.14
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.45
ios-deploy version: 1.9.0
ios-sim version: 5.0.8
OS: OS X El Capitan
Node Version: v6.4.0
Xcode version: Xcode 8.1 Build version 8B62

Unfortunately it didn't make it into the RC5 docs (my fault), but you can do this.
http://ionicframework.com/docs/v2/nightly/api/components/slides/Slides/#advanced


Update logits array in-place

What behavior of the library made you think about the improvement?
The current structured generation code is creating a -inf copy of the logits array and setting the allowed token ID indices to the corresponding values in the original logits array.  See here.
How would you like it to behave?
When possible, the original logits array should be updated in-place and completely avoid creating a new array.  This change would likely require the set of disallowed token IDs instead of the allowed ones.

@rlouf @lapp0

This is dead code which should be cleaned up after
https://github.com/dottxt-ai/outlines/pull/1010

This is dead code which should be cleaned up after
#1010

The relevant code now seems to be here; is that what will be updated in #1010?

No, that is a problem, thanks for pointing it out. I'll look at it once my current task is complete.

#1192 does not appear to update the logits arrays in place.

Looks like this might need to be moved after https://github.com/dottxt-ai/outlines/issues/1206.


bug: Robot OS fails to self-assign an IPv4 link-local address

Overview
Note: this ticket is for tracking purposes. Fixes should be directed at the Opentrons/buildroot repository
Current behavior
Certain networking conditions can cause the Robot OS to bring up it's link-local wired interface without an IPv4 address, rendering the robot unconnectable.
See CPX discovery documentation for more details.
Steps to reproduce
One way to reproduce this failure is (on macOS) to connect your robot to your computer and allow your computer to go to sleep. If you are also able to connect to your robot via another network interface (e.g. Wi-Fi), you can observe the logs as the wired interface fails to come up properly
Expected behavior
The Robot OS should never consider the link-local wired interface to be "up" if it has no IPv4 address

Current status:

Exploring changes to the wired-linklocal connection configurations to see if issue can be resolved that way
Exploring using avahi-autoipd rather than network-manager to self-assign the link-local address

If either of those solutions do not work, we will fallback to this brute-force solution:

Create a network connection monitor service that checks in on the wired-linklocal connection and, if it notices the connection is in a bad state, tells network-manager to bring the connection down and back up

This service needs to coexist peacefully with the wired dhcp connection

We've identified a probable root cause in a race condition between Network Manager and systemd-networkd competing over control of the eth0 interface. Opentrons/buildroot#93 is tracking the fix


[base-ui][menu] Create the checkbox menu item

Create a component that acts as a selectable menu item. It should follow the spec for the ARIA menuitemcheckbox role (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/menuitemcheckbox_role).

Hi @michaldudak, I would like to work on this issue.

We need to create the useCheckbox hook first (#38036), as the checkbox item will likely require it.
Creating new components is currently not high on our priority list (we're focusing on stabilizing the library to release the stable version), so I won't be able to spend much time defining the specs for it.

@michaldudak let me know if there's something i can contribute to the project.

We don't have community-friendly issues in Base UI at the moment. For other projects, you can browse the "ready to take" issues: https://github.com/mui/material-ui/labels/ready to take


Revert "chore(deps): bump rxjs from 6.6.0 to 6.6.2"

Reverts Health-Education-England/TIS-REVALIDATION-V2#310

Thought this woud resolve broken build. will pull down branches and test locally


Why does piston have such a long frametime? (20ms)

Steps to reproduce

Run the quick example (red cube) with software capturing rendering performance such as using GALLIUM_HUD
notice the irregularity in performance

Part of research for https://github.com/RXT0147/RXT0147/issues/2

Invalid, seems to be a system noise that i forget to handle

Invalid, seems to be a system noise that i forget to handle


Python 2.7 compatibility

I wanted to play around with this package but due to some constraints with other tooling, couldn't upgrade to Python 3. I spent a little bit of time making a few modifications such that the test suite passes under both Python 2.7 and 3.5. I'm happy to open a pull request, but wanted to know if you were open to possibly merging it or if you'd prefer to keep it Python 3 only for code purity (which I totally understand).

Hi, could you not use virtualenv? I think the only library limiting it to 3 is the use of Enum's which I want to remove soon anyway. Out of interest how many changes did you have to make?
If it's simple could be persuaded to merge...

Closed by #22


upsertGraph with m2m's not triggering $afterInsert/Delete

Using version 1.6.6
I have a many to many relationship between Assignment and Position through AssignmentPosition. I'm calling upsertGraph with the relate and unrelate options set to true. It correctly associates the assignment to the position and prying on knex, it does insert and delete the assignment_position rows, but does not trigger the AssignmentPosition $afterInsert when it's related nor $afterDelete when unrelated.
The upsertGraph call looks something like this:
models.Assignment.query().upsertGraph({
  id: 1,
  positions: [{ id: 2 }]
}, { relate: ['positions'], unrelate: ['positions'] });

The models:
class Assignment extends Model {
  static tableName = 'assignment';
  static get relationMappings() {
    return {
      positions: {
        relation: Model.ManyToManyRelation,
        modelClass: models.Position,
        join: {
          from: 'assignment.id',
          through: {
            from: 'assignment_position.assignment_id',
            to: 'assignment_position.position_id'
          },
          to: 'position.id'
        }
      }
  }
}

class Position extends Model {
  static tableName = 'position';
}

class AssignmentPosition extends Model {
  async $afterInsert(context) {
    await super.$afterInsert(context);
    // Doesn't reach here...
  }
  async $afterDelete(context) {
    await super.$afterDelete(context);
    // Doesn't reach here...
  }
}

Calling an insert directly on the AssignmentPosition does trigger the hook as well as the upsert graph directly to assignment.assignmentPositions.

Actually, $afterDelete doesn't appear to trigger even when directly relating through assignment.assignmentPositions

You need to specify the model class in through.modelClass property of the relationmapping

That did solve the $afterInsert problem but the $afterDelete still does not appear to trigger.

Read the docs. Affterdelete doesn't work like that.

You're right, the docs do specify that $afterDelete is only for instance calls:

Note that this method is only called for instance deletes started with $query() method..

I assumed the insert and delete hooks worked the same. That makes sense though that you're not doing extra db calls just for a hook. Thanks for your time!

For future travelers, this is my work around to avoid making another call to figure out which rows are being deleted:
class AssignmentPositionQueryBuilder extends Model.QueryBuilder {
  // Override
  delete() {
    return super.select('id').runAfter(async results  => {
      // Perform "afterDelete" logic here...
      await AssignmentPosition.query()
        .whereIn('id', results.map(r => r.id))
        .hardDelete();
      return results;
    });
  }

  hardDelete() {
    return super.delete();
  }
}

export default class AssignmentPosition extends BaseModel {
  static tableName = 'assignment_position';

  static QueryBuilder = AssignmentPositionQueryBuilder;
}

Thanks @jarommadsen, your idea saved me time!
But I wonder if it does support transactions?

@adefrutoscasado You can bind the model to the transaction and then the hardDelete would be included. Since delete is now your method to do with as you wish you could also pass a transaction object into it.
delete(trx) {
  return super.select('id').runAfter(async results  => {
     // Perform "afterDelete" logic here...
    await AssignmentPosition.query(trx)
      .whereIn('id', results.map(r => r.id))
      .hardDelete();
    return results;
  });
}

// Call it like this
await transaction(AssignmentPosition, async (AssignmentPosition, trx) => {
  // `trx` is the knex transaction object.
  await AssignmentPosition.query(trx).delete();
});

Thanks @jarommadsen, but Im using upsertGraph method so I think cannot pass it in delete() param:
await model.query(trx).upsertGraphAndFetch(data)
I think trx should be accesible somewhere in the QueryBuilder class:
class CustomQueryBuilder extends QueryBuilder {
  delete() {
    return super.select('*').first().runAfter(async old => {
      // Since the delete operation is called from an instance of a model, now $afterDelete should be called
      return await old.$query().nativeDelete()
    })
  }

  nativeDelete() {
    return super.delete()
  }
}

Ok so I found the transaction of the context at builder._context.userContext.transaction so the CustomQueryBuilder would be:
class CustomQueryBuilder extends QueryBuilder {
delete() {
return super.select('*').first().runAfter(async (olds, builder) => {
// Since the delete operation is called from an instance of a model, now $afterDelete should be called
return await Promise.all(olds.map((old) => old.$query(builder._context.userContext.transaction).nativeDelete()))
})
}
nativeDelete() {
return super.delete()
}
}
But since _context is private, how bad is this idea? Is it okay since Im extending the QueryBuilder? I suppose some internal change in objection.js or knex.js can break it

@adefrutoscasado You can access the query context using the getter method queryBuilder.context().

In addition to properties added using this method (and mergeContext) the query context object always has a transaction property that holds the active transaction. If there is no active transaction the transaction property contains the normal knex instance. In both cases the value can be passed anywhere where a transaction object can be passed so you never need to check for the existence of the transaction property.

https://vincit.github.io/objection.js/api/query-builder/other-methods.html#context

Objection 2.0 will have a static afterDelete and beforeDelete hooks that work in all situations. This will be a lot easier to implement then.

Couldnt reply before @jarommadsen , its finally working well with queryBuilder.context()
Thank you very much!

Objection 2.0 will have a static afterDelete and beforeDelete hooks that work in all situations. This will be a lot easier to implement then.

It does not work.

@adefrutoscasado @adefrutoscasado
Just to confirm I got everything right in this thread. I use a custom delete() method that overrides my BaseModel while reimplementing my nativeDelete with a runAfter middleware.
At the same time I use the queryBuilder.context().transaction from my runAfter builder to run everything in one transaction.

class MyTable extends Base {
  static tableName = 'my_table';
  static relationMappings = { ...  };
}

class MyTableQueryBuilder extends Base.QueryBuilder {
  delete() {
    return super.select('*').runAfter(async (results, queryBuilder) => {

      // Perform "afterDelete" logic here...

      await AnyOtherTableInstance.query(queryBuilder.context().transaction)
        .whereIn( ... )
        .nativeDelete();

      return results;
    });
  }

  nativeDelete() {
    return super.delete();
  }
}

OrderVouchers.QueryBuilder = OrderVoucherQueryBuilder;

export default OrderVouchers;


Missing Resources POST /api/resources/{id}/contracts at Swagger UI

I have deployed the App Store and followed the example deatiled at (https://github.com/International-Data-Spaces-Association/IDS-AppStore/blob/main/scripts/tests/create_resources_and_upload_app_local.py)
When I try to do lines 283 and 284 of the above file at the Swagger UI there is no POST /api/resources/{id}/contracts call to execute.
Is this a necessary call in order to have a complete resource at the App Store? so that the created Example App could be requested from another connector.
Could you please provide documentation explaining the necessary steps in order to create a complete resource at the App Store?
Could you also document how to consume those created Apps?
Thanks in advance,

Hi @jfernandezsqs,
Yes, the documentaion of the appStore is started, from time to time, it will be updated.
Please find the link https://international-data-spaces-association.github.io/IDS-AppStore/deployment

Hi,
I have tried to execute the python scripts located at IDS-AppStore/scripts/tests and both of them gave errors.
In the deployment with maven the Tests are skipped.
I have configured the App Store config.json to use a FH provided certificate and set the connector deploy mode to Productive.

sqs@Virtual-Ubuntu-20:/IDS-AppStore/scripts/tests$ python3 contract_negotiation_allow_access.py
Traceback (most recent call last):
File "contract_negotiation_allow_access.py", line 4, in
import tqdm
ModuleNotFoundError: No module named 'tqdm'

sqs@Virtual-Ubuntu-20:/IDS-AppStore/scripts/tests$ python3 contract_negotiation_allow_access.py
{'error': 'Not Found',
'path': '/api/ids/description',
'status': 404,
'timestamp': '2022-01-13T14:42:54.796+00:00'}
Traceback (most recent call last):
File "contract_negotiation_allow_access.py", line 263, in
obj = offer["ids:contractOffer"][0]["ids:permission"][0]
KeyError: 'ids:contractOffer'
sqs@Virtual-Ubuntu-20:/IDS-AppStore/scripts/tests$ python3 contract_negotiation_allow_access.py
Traceback (most recent call last):
File "contract_negotiation_allow_access.py", line 4, in
import tqdm
ModuleNotFoundError: No module named 'tqdm'

sqs@Virtual-Ubuntu-20:/IDS-AppStore/scripts/tests$ python3 contract_negotiation_allow_access.py
{'error': 'Not Found',
'path': '/api/ids/description',
'status': 404,
'timestamp': '2022-01-13T14:54:07.901+00:00'}
Traceback (most recent call last):
File "contract_negotiation_allow_access.py", line 263, in
obj = offer["ids:contractOffer"][0]["ids:permission"][0]
KeyError: 'ids:contractOffer'

sqs@Virtual-Ubuntu-20:/IDS-AppStore/scripts/tests$ python3 create_resources_and_upload_app_local.py
Traceback (most recent call last):
File "create_resources_and_upload_app_local.py", line 77, in post_request_check_response
response_tmp.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error:  for url: http://localhost:8080/api/catalogs
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "create_resources_and_upload_app_local.py", line 477, in
catalog = create_catalog()
File "create_resources_and_upload_app_local.py", line 121, in create_catalog
loc = post_request_check_response(f"{combined_host}/api/catalogs", json)
File "create_resources_and_upload_app_local.py", line 92, in post_request_check_response
pprint(f"HTTP ERROR OCCURED: {http_error}")
TypeError: 'module' object is not callable

Could you please let us know if you still have those problems. I think we have sent you the updated version of the documentation?
Hope that helps you. Also please use the latest version of appstore and check if you still measure some issues.

@jfernandezsqs The scripts need pythons tqdm module to be installed within your python environment.
This can be done via pip (pythons package manager):
pip install tqdm
Then give it another try ;-)

After the follow up meeting, we were able to fix the issue with the python script create_resources_and_upload_app.py and we were able of uploading the app.
It is necessary to update the documentation for the configuration of the Python script so that an end user knows exactly the configuration required for an example set-up.
I close this issue because an update of the App Store documentation is coming and the issue #47 has been fixed.


Update Timer parameter doesn't apply to Markdown files

I'm including some D2 in a .md file and it is rendering correctly, but I can't find a way to make re-renders behave as they do with .d2 files. It re-renders very frequently, mid-keystroke, which seems to hang and/or block keyboard input. Is it possible to have this property apply to .md files as well as .d2 files, or should I handle this some other way?

In VsCode, the extension 'in charge' of a file is based on the file extension, which is why our preview update speed (1.5 seconds from the last keystroke, adjustable via preferences) works with .d2 files, since we're 'in charge' of it.  In a markdown file, the built in (or external) extension is responsible for update speed.  We only get involved in the markdown file when it finds an embedded 'thing' that it can ask someone else to render.
I can't find a setting in the markdown preferences to change the update speed, or lag from the last keystroke.

@cameronpickham Can I close this? There's nothing we can do about it, but you could open an issue against the markdown extension as a feature request.

Sorry, yes! Thank you for the response 😄


Added 09.6 Nested RecyclerView (issue #1407)

Description 📜
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
Fixes issue #1407

Type of change 📝

[x] Doc#umentation (Content Creation in the form of codes or tutorials)

Domain of Contribution 📊

[x] Android Dev #(Kotlin)

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

@rahulsain I have fixed all bugs ....


Support for anonymous comments

We would like to support anonymous comments for our application.
In order to make it work with acts_as_commentable_with_threading, we had to add a dummy user to the database, which is quite hacky. (We also added the column "username" to the comment model, which is used if the comment.user_id = 1 (dummy user).)
Wouldn't it be a nice feature to optionally allow anonymous users?

I had the same issue and I got a simple solution.
When you generate your migration, the plugin mades a copy of the file comment.rb into you app/models. Inside this model there is a validation for the presence of user, just like this:
validates_presence_of :user
I just remove that line and I now I have comments without users


CFE-648: Upgrade aws load balancer controller to v2.4.4

Description
Bumps aws-load-balancer-controller to v2.4.4 and the corresponding default controller image  to quay.io/aws-load-balancer-operator/aws-load-balancer-controller:95d71cc4e7e5 (pins to https://github.com/openshift/aws-load-balancer-controller/tree/2c04703264566be3608cbbf4145929b549fe320a).
Docs and Release notes: https://github.com/openshift/openshift-docs/pull/52292, https://github.com/openshift/openshift-docs/pull/52309

Operand image bump, wait until https://github.com/openshift/aws-load-balancer-controller/pull/11

/label docs-approved

/test e2e-aws-operator
operator_test.go:425: failed to create aws wafv2 acl due to operation error WAFV2: CreateWebACL, https response error StatusCode: 400, RequestID: 3c11b418-0e59-46d4-8595-f5b55dad04a7, WAFDuplicateItemException: AWS WAF couldn’t perform the operation because some resource in your request is a duplicate of an existing one.

Maybe failure in clean up?

@thejasn : I think checking for existence won't harm here. If we end up in the situation when Web ACL is already there - we need to remove it anyway, so failing at creation needs to be skipped. PTAL: https://github.com/openshift/aws-load-balancer-operator/pull/81.

rebase to include #81

/lgtm

/hold
To let NetEdge folks to have a look.

/lgtm

/label qe-approved

The default value for the --image flag still has an old pullspec:
https://github.com/openshift/aws-load-balancer-operator/blob/50017e40bed7766ec1cdc52f2ad880bff9bd2354/main.go#L88
It isn't a critical issue, since the bundle manifest specifies --image with an explicit pullspec, so the default value for --image only matters if someone manually deploys the operator outside of a supported context.  However it does look weird that the operator still has a reference to the old v2.4.1 tag.  More importantly, once #80 merges, I believe the operator will fail to start aws-load-balancer-controller if the operator is started with the default --image and tries to set the --feature-gates=EnableIPTargetType=false flag that only exists in newer aws-load-balancer-controller versions, right?  So it would be good to update the default value for --image in this PR, or in a follow-up.
Other than that,
/lgtm

/lgtm

/unhold
As Miciah gave his LGTM.

/label px-approved
As per Chris Fields: docs are enough for this ALBO release.


How to debug using Xdebug

Hi,
I ran into the following issue which I have resoved, but not in a satisfactory way.
I use Netbeans to start the debug client on port 9000. But since port 9000 is used by the docker-proxy process there's no way to have the xdebug to connect to my Netbeans debug client. How can I get  xdebug to connect to my debugger client? It seems to me that IF you bind the host port 9000 to the container port 9000 there's no way to listen for the xdebug server "connect back".
I resolved the issue in the end by using net : "host" in the docker-compose file. This also requires me to drop the 'links' section which is pretty ugly imho.
Greetz,
Sander

It's been a long time since I've last used Xdebug so I'm afraid I don't have anything to add. I do remember it working smoothly when used with PhpStorm.

same question,is anybody success?
what's your config in PhpStorm and php.ini

I don't have them anymore I'm afraid.

Don't use 9000 port.
xdebug.ini example config:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
xdebug.remote_enable=on
xdebug.remote_port=9001
xdebug.remote_host=<IP_ADDRESS>
xdebug.remote_connect_back=0
xdebug.remote_handler=dbgp
xdebug.remote_log=/var/log/php-fpm/xdebug-remote.log

xdebug.remote_host don't set <IP_ADDRESS>
http://jamescowie.me/blog/2016/12/all-hail-xdebug-and-lets-let-var-dump-die/

Cheers!


Can backlinks be sorted?

I'd love an option to modify the sort-order of backlinks. Preferably by multiple criteria, such as:

Folder name ASC
Modified Date DESC
etc.

Ideally I'd like to be able to group backlinks. The backlinks core plugin does this in with two "groups":

linked mentions
unlinked mentions

But I'd like the rich footer to be more configurable, allowing grouping by any criteria. I'd particularly like my backlinks to be grouped by folder.
It's a great plugin - just wish there were more features.

i have the same need.i am using rich foot to organize my drama collection，and find that the backlinks are not in correct episode order.it would be great if the plugin can sort backlinks in some way automatically.maybe allowing us to drag and drop them manually is another way(just dreaming).

Thanks for the suggestions, I'll take a look!


Memory leak using compute shaders on Windows 10

Version of vulkano: 0.22.0
OS: Windows 10
GPU: GTX 1050Ti
GPU Driver: 466.11

event_loop.run(move |event, _, control_flow| {
     match event {
        Event::WindowEvent {
            event: WindowEvent::CloseRequested,
            .. } => {
            *control_flow = ControlFlow::Exit;
        }
        Event::WindowEvent {
            event: WindowEvent::Resized(s),
            .. } => {
            resized = true;
            minimized = s.width == 0 || s.height == 0;
        },
        Event::RedrawEventsCleared => {
            if minimized { return; } // Don't try anything if the window is minimized, this prevents the errors when creating images with 0 sizes

            previous_frame_end.as_mut().unwrap().cleanup_finished();

            if resized { // Rebuild the output_img and the swapchain
                ...
            }

            let (swap_index, suboptimal, acquire_future) = match swapchain::acquire_next_image(swapchain.clone(), None) {
                ...
            };

            if suboptimal { // Rebuild if suboptimal
                resized = true;
            }

            let dest_image = images[swap_index].clone();

            let mut cb_builder = AutoCommandBufferBuilder::primary(device.clone(), queue.family()).unwrap();

            cb_builder
                .dispatch(dispatch, compute_pipeline.clone(), descriptor_set.clone(), (), std::iter::empty()).unwrap()
                .blit_image(
                        output_img.clone(),
                        [0, 0, 0],
                        output_dim,
                        0,
                        0,
                        dest_image,
                        [0, 0, 0],
                        dest_dim,
                        0,
                        0,
                        1,
                        Filter::Nearest
                ).unwrap();

            let cb = cb_builder.build().unwrap();

            let future = previous_frame_end
                .take().unwrap()
                .join(acquire_future)
                .then_execute(queue.clone(), cb).unwrap()
                .then_swapchain_present(queue.clone(), swapchain.clone(), swap_index)
                .then_signal_fence_and_flush();

            match future {
                Ok(future) => {
                    previous_frame_end = Some(future.boxed());
                },
                Err(e) => println!("Failed to flush future: {:?}", e)
            }
        }
        _ => ()
    }
})

Issue
There is a memory leak, memory usage keeps climbing until there is a OomError. This occurs only on windows though, no problem on Ubuntu running on the same PC with the proprietary v460 nvidia drivers.
I have found that not dispatching the compute shader results in a normal behavior so the problem probably is that way

Seems like the problem was that I wasn't managing the vulkano::sync::FlushError::OutOfDate correctly, you need to recreate the swapchain if it occurs after the .then_signal_fence_and_flush call:
match future {
    Ok(future) => {
        previous_frame_end = Some(future.boxed());
    },
    Err(vulkano::sync::FlushError::OutOfDate) => {
        resized = true;
        previous_frame_end = Some(sync::now(device.clone()).boxed());
    },
    Err(e) => println!("Failed to flush future: {:?}", e)
}


Value range constraints

https://www.w3.org/TR/shacl/#core-components-range
minExclusive/maxExclusive minInclusive/maxInclusive

Only support for numbers and dates.
Throw exception in constructor, chain() in fromRdf.
Type validationExpressions: value => expression that checks value and returns a boolean. Can convert this to constructor throws and fromRdf chains.


Support pyproject.toml metadata (PEP 621)

Python projects are standardizing on pyproject.toml for project configuration data storage.
Documentation in PEP 621 – Storing project metadata in pyproject.toml:
https://peps.python.org/pep-0621/

I'm going to close this as a duplicate of https://github.com/microsoft/vscode-python/issues/20278 , but if there is some other integration you have in mind, please open a new issue or let us know what you were specifically looking for.


RSV: structural viewer pulldown for the post-fusion PDB ID

Dave wants a pulldown for the post-fusion PDB ID

what's the post-fusion ID?

I think we decided against this because putting in the dropdown would stop users from putting in custom PDB.
The old issue was: "Please create dropdown "5UDE prefusion" and "3RRR postfusion""


Automated index creation

Description
We could employ some simple heuristics to ease the need for manual index creation to support slow queries. The basic idea is that the LoadManager is aware of the load in each shard, and which queries (by shape hash) cause what percentage of the load there.
We could therefore use this information to trigger automatically creating indexes to speed up the query/queries that are causing most of the load. Once a decision has been made to improve a particular GraphQL query, we would run that query in trace mode to identify the slowest SQL query (corresponding to a specific part of the GraphQL query) and then use some heuristics to try and improve the query. For example, those heuristics could use

if the table has a lot of versions/entity: set table to account-like
if the query filters by one attribute with = and orders by another attribute or filters by another attribute with < etc: create a BTree on those two attributes
if most of the query are executed against a recent block: create a partial index

There's lots of experimentation we could do with these heuristics, but they could lower the load for operators considerably.
This issue is in complementary to #4325 as it covers very similar functionality, but could reduce the need for creating indexing rules, too.
Are you aware of any blockers that must be resolved before implementing this feature? If so, which? Link to any relevant GitHub issues.
Issue #4262 needs to addressed first to ensure that the LoadManager has accurate statistics about query execution
Some information to help us out

[ ] Tick this box if you plan on implementing this feature yourself.
[X] I have searched the issue tracker to make sure this issue is not a duplicate.

Related request shared with me during this week's IOH

automate creating indexes and deleting shitty ones
-Payne


Cross build on both sbt 0.13 and 1.0.0-RC2

Hi, what's the status of this PR? Does the latest release support for sbt 1.0? If not, is there anything I can help with?

https://github.com/sbt/sbt/wiki/sbt-1.x-plugin-migration#completed
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")

sbt-assembly was one of the first to get migrated on to sbt 1. I haven't looked into what was up, but I think there were some details in the tests I had to deal with. If you want to fork the branch and send another PR with more commits, that'd be cool.

@xuwei-k Thanks!


In IPFS, a partial change to the original data will generate a new hash. There is a problem here. Is this a reasonable content change or a malicious cheating attack?

In IPFS, a partial change to the original data will generate a new hash. There is a problem here. Is this a reasonable content change or a malicious cheating attack?

Hey @MANHUN, this isn't related to the topic of this repository. The best would be to ask for that on discuss.ipfs.io! Certainly there will be more people there capable of answering you.


pLDDT Scores in the Boltz-1 Output .pdb File

In AlphaFold and Chai-1, the pLDDT scores are recorded in the B-factor column of the .pdb file output.
However, in Boltz-1 (ver. 0.4.0), there is no such functionality. I find this feature extremely helpful for checking the reliability of predicted structures. Do you have any plans to implement it in Boltz-1 in the future?

I vouch for it as well!!

Hi, @jwohlwend just added this in the recent commits, it will also be available in the package from version 0.4.1 that will be out soon!

Great, I have tested it, and already added a small comment to have it in the range of 0-100 instead of 0-1 https://github.com/jwohlwend/boltz/commit/d2a91c0ec6033d35231e38ad9db08c6b43107c23#commitcomment-150762371 😊


Add ability to mix in config when creating a task (webpack, jest, others?)

For certain task factories (especially webpack and jest, maybe others), it should be possible to pass in config options which are mixed in with the defaults. Some possible ways to do this:

If relevant config file exists in the project dir, just loads the file and mixes its options in with defaults
Add a utility in just for merging config with default, then call the utility in each project's relevant config file

We should also consider whether the default config for any tasks could be improved.
Possible inspiration: Fabric's webpack-resources.js and jest-resources.js

So we've added this stuff for webpack, but not jest. I think we already added the options arg for those tasks. Hopefully that's good enough? Please re-open if that didn't get addressed as I think this bug might have been created before those options were added to the tasks.


Compatible with version py3.7

:tada: This issue has been resolved in version 0.0.17 :tada:
The release is available on:

v0.0.17
GitHub release

Your semantic-release bot :package::rocket:


Triton Inference Slower Than Torch On RTX 3090('sm_86' is not a recognized processor for this target (ignoring processor))

Environment
Package                  Version        Editable project location

accelerate               0.19.0
aiohttp                  3.8.4
aiosignal                1.3.1
aniso8601                9.0.1
antlr4-python3-runtime   4.9.3
anyio                    3.7.0
apache-libcloud          3.7.0
appdirs                  1.4.4
argcomplete              3.0.8
arrow                    1.2.3
async-timeout            4.0.2
asyncio                  3.4.3
attr                     0.3.2
attrs                    23.1.0
backoff                  2.2.1
bcrypt                   4.0.1
bitsandbytes             0.39.0
blinker                  1.6.2
boto3                    1.26.145
botocore                 1.29.145
Brotli                   1.0.9
certifi                  2023.5.7
cffi                     1.15.1
cformers                 0.0.4
charset-normalizer       3.1.0
circuitbreaker           1.4.0
click                    8.1.3
cmake                    3.26.3
coloredlogs              15.0.1
composer                 0.14.1
contourpy                1.0.7
coolname                 2.2.0
cryptography             39.0.2
cycler                   0.11.0
datasets                 2.10.1
decorator                5.1.1
deepspeed                0.9.2+e0e80850
deepspeed-mii            0.0.5+e440f83
dill                     0.3.6
docker                   6.1.3
docker-pycreds           0.4.0
einops                   0.5.0
evaluate                 0.4.0
exceptiongroup           1.1.1
fastapi                  0.95.2
filelock                 3.12.0
flash-attn               1.0.3.post0
Flask                    2.3.2
Flask-RESTful            0.3.10
flatbuffers              23.5.26
fonttools                4.39.4
frozenlist               1.3.3
fsspec                   2023.5.0
gitdb                    4.0.10
GitPython                3.1.31
gql                      3.4.1
graphql-core             3.2.3
grpcio                   1.54.2
grpcio-tools             1.54.2
h11                      0.14.0
hjson                    3.1.0
huggingface-hub          0.14.1
humanfriendly            10.0
idna                     3.4
importlib-metadata       6.6.0
itsdangerous             2.1.2
Jinja2                   3.1.2
jmespath                 1.0.1
kiwisolver               1.4.4
lit                      16.0.5
llm-foundry              0.1.0          /tmp/llm-foundry
markdown-it-py           2.2.0
MarkupSafe               2.1.2
matplotlib               3.7.1
mdurl                    0.1.2
mosaicml-cli             0.4.5
mosaicml-streaming       0.4.1
mpmath                   1.3.0
multidict                6.0.4
multiprocess             0.70.14
mypy-extensions          1.0.0
nest-asyncio             1.5.6
networkx                 3.1
ninja                    1.11.1
numpy                    1.24.3
nvidia-cublas-cu11       <IP_ADDRESS>
nvidia-cuda-cupti-cu11   11.7.101
nvidia-cuda-nvrtc-cu11   11.7.99
nvidia-cuda-runtime-cu11 11.7.99
nvidia-cudnn-cu11        <IP_ADDRESS>
nvidia-cufft-cu11        <IP_ADDRESS>
nvidia-curand-cu11       <IP_ADDRESS>
nvidia-cusolver-cu11     <IP_ADDRESS>
nvidia-cusparse-cu11     <IP_ADDRESS>
nvidia-nccl-cu11         2.14.3
nvidia-nvtx-cu11         11.7.91
nvidia-pyindex           1.0.9
oci                      2.104.0
omegaconf                2.3.0
onnx                     1.13.1
onnxruntime              1.14.1
onnxruntime-gpu          1.15.0
optimum                  1.8.7.dev0
packaging                22.0
pandas                   2.0.2
paramiko                 3.2.0
pathtools                0.1.2
Pillow                   9.5.0
pip                      22.0.2
polygraphy               0.47.1
prompt-toolkit           3.0.38
protobuf                 3.20.3
psutil                   5.9.5
py-cpuinfo               9.0.0
pyarrow                  12.0.0
pycparser                2.21
pydantic                 1.10.8
Pygments                 2.15.1
PyNaCl                   1.5.0
pyOpenSSL                23.2.0
pyparsing                3.0.9
pyre-extensions          0.0.29
python-dateutil          2.8.2
python-snappy            0.6.1
pytorch-ranger           0.1.1
pytz                     2023.3
PyYAML                   6.0
questionary              1.10.0
redis                    4.5.5
regex                    2023.5.5
requests                 2.31.0
responses                0.18.0
rich                     13.4.1
ruamel.yaml              0.17.31
ruamel.yaml.clib         0.2.7
s3transfer               0.6.1
safetensors              0.3.1
sentencepiece            0.1.97
sentry-sdk               1.24.0
setproctitle             1.3.2
setuptools               59.6.0
six                      1.16.0
slack-sdk                3.21.3
smmap                    5.0.0
sniffio                  1.3.0
starlette                0.27.0
sympy                    1.12
tabulate                 0.9.0
timm                     0.9.2
tokenizers               0.13.3
torch                    2.0.1
torch-optimizer          0.3.0
torchaudio               2.0.2
torchdata                0.6.1
torchmetrics             0.11.3
torchtext                0.15.2
torchvision              0.15.2
tqdm                     4.65.0
transformers             4.28.1
triton                   2.0.0
triton-pre-mlir          2.0.0
typing_extensions        4.6.2
typing-inspect           0.9.0
tzdata                   2023.3
Unidecode                1.3.6
urllib3                  1.26.16
uvicorn                  0.22.0
validators               0.20.0
wandb                    0.15.3
wcwidth                  0.2.6
websocket-client         1.5.2
websockets               10.4
Werkzeug                 2.3.4
wget                     3.2
wheel                    0.37.1
xentropy-cuda-lib        0.1
xformers                 0.0.20
xxhash                   3.2.0
yarl                     1.9.2
zipp                     3.15.0
zstd                     <IP_ADDRESS>
I am also using RTX 3090 inside of a Cuda 11.7 docker container
To reproduce
Steps to reproduce the behavior:

Install llm-foundry from source using README and install for GPUs
Try using Triton attention as well as stock torch attention
Generate a large number of tokens, say 2048 tokens, and notice that time to generate is larger for Triton.

I am seeing 45 seconds for torch and 48-52 for triton.  I am turning use_cache to True, as it is False by default, not sure if that makes a difference.  If left to False both are MUCH slower as expected
Expected behavior
Triton is supposed to be faster.  It does not seem that it is.
Additional context
The first time inferencing using Triton it says something like this: 'sm_86' is not a recognized processor for this target (ignoring processor)
This is a message I have seen in the past I believe when my 3090s where new and the hardware was not yet supported.  Considering that RTX 3090s are coming up on 3 years old, is this still the case?
import transformers
import time
import torch
import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-t","--use_triton",action="store_true",help="Use triton")
    args = parser.parse_args()
    config = transformers.AutoConfig.from_pretrained(
    'mosaicml/mpt-7b',
    trust_remote_code=True
    )
    if args.use_triton:
        config.attn_config['attn_impl'] = 'triton'
    config.use_cache = True

    model = transformers.AutoModelForCausalLM.from_pretrained(
    'mosaicml/mpt-7b',
    config=config,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True
    )
    model.to(device='cuda:0')
    tokenizer = transformers.AutoTokenizer.from_pretrained("mosaicml/mpt-7b")
    print("Model loaded")
    model.eval()
    start = time.time()
    input_ids = tokenizer.encode("Hello", return_tensors="pt").cuda()
    output = model.generate(input_ids, max_length=2048, do_sample=False, num_return_sequences=1)
    print(f"Time taken: {time.time()-start}")

'sm_86' is not a recognized processor for this target (ignoring processor)
is an inconsequential warning
This note is being added to our FAQ (where the FAQ should be corrected to say sm86+ GPUs)

The comments made here about throughput improvements are training specific. I'm not 100% sure about the inference implications of the different attention implementations.

Ah, I had the wrong impression.  There is no impact on inference and so what I am seeing is normal.  Some other comments suggest that there may be a difference for large inputs.  I will share those results and then close this issue.
Thanks!

Using an input of 1500 tokens and generating the remaining 548, I got a generation time of 14.4 seconds for torch implementation and a time of 16 seconds when using Triton implementation.
The only other thought that I have is that while is seems Triton is slower than Torch for inference, perhaps it uses less memory for inference as well(because it does while training).  Perhaps this would be useful then for generating really long sequences where there are not enough resources otherwise.
Thanks!


Added spotify URI handler

This is still very WIP, I managed to register the spotify URI.
I ran into a problem with ownership that I'm not sure how to tackle, when the open signal is called the activate signal isn't, so if in the open closure we need to open/focus the window. The problem is the closure in Application::connect_activate and closure in Application::connect_open both need to take ownership of window and sender because they have static lifetimes and the compiler thinks they might be able to outlive main (even though they can't).

Nice work!!
The easiest way to proceed is to clone the sender and use it to dispatch a new action (AppAction::OpenURI(..) perhaps) that in turn leads to some AppEvent::OpenedURI event. This event can then be handled by any EventListener, and more specifically by the window component (which holds a reference to the actual Gtk window).
You might need another EventListener to dispatch the needed actions.

initial support for this in added in 917fdee2aa9e2bb72fab5a4b459670eadbb0b618 closing this for now! thanks a lot @bbb651 :)

closing this for now


[UI] Fixes select/multiselect option colors

Notes

Updates light theme colors (instead of relying on browser default for multiselect) per discussion w/ @lil-kim
Adds new css reference images for light theme
Screenshots of open selects are difficult to capture on windows, some of them below were captured while it was closing (after the screenshot click)
Tested in: IE11, Edge and Firefox (on macOS and Windows 10)
Fixes #1853

Before

IE11
Edge
Firefox

After

IE11
Edge
Firefox
Signed-off-by: Matt Hippely<EMAIL_ADDRESS>
Signed-off-by: Matt Hippely<EMAIL_ADDRESS>

Quick question: Why didn't we test this on Chrome and Safari?

Also have you verified the multi select colors? I don't see any demo/examples of that in the screenshots you pasted.

The default behavior for selects/multi-selects in Chrome and Safari worked, the bug was filed for Firefox I think but it was also broken in IE/Edge.
btw I did test it, just didn't take screenshots but I can take some and post them if you think its needed.

No as long as you tested, I am fine. Just wanted to check once because I didn't see that in the PR description.


SQL to JSON example bug

There seems to be a bug in the SQL to JSON example on the site:
"name": "Africa');"
The '); part should not be in there.

Yes, you are correct. I will investigate and fix that.


Why pyinstaller_versionfile.create_versionfile(version='1.0.0',...) throws template file not found exception?

My function looks like the following
def create_exe_version_info(program,python_projects_path,version_number,file_name,company,cp_right,release_date):     pyinstaller_versionfile.create_versionfile(         output_file=f"{python_projects_path}\{program}\{program}_VersionFile.txt",         version=version_number,         company_name=company.split(" ")[0],         file_description="A Simple GUI for version managing.",         internal_name=program,         legal_copyright=cp_right,         original_filename=f"{program}.exe",         product_name=program     )
Actually the above function do create the required version file text and pyinstaller successfully updates the exe properties from
this text file.
My problem is beyond this scenario. What I am trying to do with this function is that, my application creates version file for other applications at the same time it creates exes and update their properties. When I perform this task by running my code from cmd, it works fine agian. But the problem starts appearing when I run my application from its executable. This is what I am expected to share to my co-workers.
To fix this issue, I have tried the pyinstaller spec_file with one file mode and I have added pyinstaller_versionfile as add data.
the following is my .spec file content suspecting the problem is due to missing pyinstaller_versionfile  package from _MEIxxxxxx temporary folder. Unfortunately didn't fix the the issue.
data = [('C:\\Work\\Python\\VersionUI\\assets\\images\\add_btn.png','.'),
('C:\\Work\\Python\\VersionUI\\assets\\images\\reload_btn.png','.'),
('C:\\Work\\Python\\VersionUI\\assets\\images\\empty.ico','.'),
('C:\\Work\\Python\\VersionUI\\VersionManagerUI.config','.'),
('C:\\Work\\Python\\VersionUI\\VersionManagerSchema.sql','.'),
('C:\\Work\\Dev\\Lib\\site-packages\\customtkinter','customtkinter/'),
('C:\\Work\\Dev\\Lib\\site-packages\\pyinstaller_versionfile','.')]
a = Analysis(
    scripts=['C:\\Work\\Python\\VersionUI\\VersionUI.py',
	'C:\\Work\\Python\\VersionUI\\Constants.py',
	'C:\\Work\\Python\\VersionUI\\SQLiteConnection.py',
	'C:\\Work\\Python\\VersionUI\\version_history.py',
	'C:\\Work\\Python\\VersionUI\\VersionUIUncompress.py'],
    pathex=[],
    binaries=[],
    datas=data,
    hiddenimports=['babel.numbers'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='VersionUI',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=False,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
	version='C:\\Work\\Python\\VersionUI\\VersionUI_VersionFile.txt',
)

Here is the exception thrown
Traceback (most recent call last):
  File "tkinter\__init__.py", line 1892, in __call__
  File "customtkinter\windows\widgets\ctk_button.py", line 553, in _clicked
    self._command()
  File "VersionUI.py", line 203, in process_entries
  File "VersionUI.py", line 299, in generate_application_version_file
  File "Utils.py", line 34, in create_exe_version_info
  File "pyinstaller_versionfile\__init__.py", line 36, in create_versionfile
  File "pyinstaller_versionfile\__init__.py", line 55, in __create
  File "pyinstaller_versionfile\writer.py", line 42, in render
  File "codecs.py", line 905, in open
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\username\\AppData\\Local\\Temp\\_MEI129722\\pyinstaller_versionfile\\version_file_template.txt'

Hi @fufatujuba, great you figured it out on your own!
Indeed pyinstaller-versionfile will look for the template file inside its own package directory. That's where the file is located when you install pyinstaller-versionfile as a site package (e.g. via pip).
PyInstaller itself needs to be told which non-source code files have to be included in the bundle.
Thank you for sharing the solution to the problem as well.

@DudeNr33  Please mention this in the documentation because no way one can know that the package needs version_file_template.txt.  Thank you!


[Bug]: Security vulnerabilities on Documentation dependencies

Relevant scope
Other: describe below
Description
There are current security vulnerabilities due to dependencies used for the Documentation website.
By trying to fix them by updating Docusaurus, I realized a lot of breaking changes were introduced meanwhile.
These changes break the current build : https://github.com/gothinkster/realworld/pull/908
Rather than spending time updating the project for such basic documentation, I'll invest some time to challenge Docusaurus alternatives for a more stable solution.

fixed by #942


Release Google.Cloud.Iap.V1 version 2.4.0

Changes in this release:
New features

Adding programmatic_clients attribute to UpdateIapSettings API request (commit 31934fa)

Documentation improvements

Few minor changes on doc description came out of cl/512701532 (commit 48f33ea)

Created release for Google.Cloud.Iap.V1-2.4.0


ListObjectsV2 etags should be quoted, but are not

From real S3, the ETag value is surrounded by quotes (ie the java string looks like "\"99f2fdceebf20fb2e891810adfb0eb71\"") when calling ListObjectsV2, but S3Mock does not include quotes.
For other methods, eg GetObjectRequest, S3Mock does correctly put the quotes in the ETags.
Possibly related: https://github.com/adobe/S3Mock/commit/7f578e56a8b1e626d923efb7ea547b625f2900da
Also: https://github.com/aws/aws-sdk-java-v2/issues/1417#issuecomment-531992054

@robd thanks for the report - I thought I caught them all in 7f578e5 ;)
Will release in a couple of minutes.

Just released 2.6.1 for your convenience. :)


Preview: UI inconsistencies for Multi-Tailed Arrow Tool

Steps to Reproduce

Click on Arrow Tool
Hover on the last element

Actual behavior

"Multi-Tail Arrow" is displayed

Expected behavior

"Multi-Tailed Arrow Tool" is displayed as for other arrows

Select the last tool
Click on Canvas to add Multi-Tailed Arrow
Also add Arrow Filled Triangle to Canvas and compare two arrows

Actual behavior

Head arrow and ends of tails aren't rounded as for Arrow Filled Triangle Tool:

Expected behavior

Head arrow and ends of tails are rounded as for Arrow Filled Triangle Tool

Put Arrow Filled Triangle on the first tail and compare the hover region

Actual behavior

Hover area for Multi-Tailed Arrow is greater than for Arrow Filled Triangle (hover is presented in the red region and multi-tailed arrow can be taken):

Expected behavior

TBD Areas should be the same and work as for overlapping of existing arrows (perhaps it will be implemented in scope of https://github.com/epam/ketcher/issues/5057)

Click on Save as..., select KET format and check the default size of Multi-Tailed Arrow:

Actual behavior

Default sizes are the following: spine: 2.5, tail - 4.1(6), head - 8.(3)

Expected behavior

Default sizes should be updated: spine - 2.5, tail - 0.4, head - 0.8;
Minimal sizes should be like that: spine - 0.5, tail - 0.4, head - 0.5, if user tries to open .ket with smaller size - error should be displayed, also head can be positioned only between rounded regions of the spine 0.5 - 0.15 - 0.15 = 0.2, also validation should be added for this case

Environmental details:

Preview testing is performed on polymer env with 5104-save-load-multitail-arrow branch
Ketcher [Version 2.24.0-rc.1] Build at 2024-08-20; 11:04:01
OS: Windows 11 Enterprise
Browser: Chrome Version 127.0.6533.120 (Official Build) (64-bit)

Additional context
Issue is found during exploratory testing of https://github.com/epam/ketcher/issues/5055

The fix is tested on nightly environment (5057-hover-selection), all points are fixed:

Title is changed:

Design of Multi-Tailed Arrow is changed with rounded head and tails:

Issue with hover is fixed;
Default sizes are updated, example of saved to ket default arrow is attached:
MTA.zip


Setting up hlf on AKS

I have AKS cluster , wish to deploy all the services of fabric network . According to the provided docs/video (youtube) we are using ansible and pointing to host configuration file.
We want to use kube config and kubectl api to talk to cluster instead of directly using kubernetes node in host config file (hard coded ip addresses)
Please assist with this approach !!

Blockchain Automation Framework (or BAF) also follows a similar approach on setting up fabric network. Please refer to our docs  for the same
For queries, use our rocket chat.
I will close this issue as the 'enhancement' tag is used to have feature requests to BAF and your mentioned requirements are already satisfied with BAF


Syncthing incomplete

Syncthing initscript is incomplete.
done: getting syncthing to /home/syncthing
todo:  Decide to launch syncthing and edit config file, or come up with a predone one like with syncrelay.
todo: decide whether to preseed with a few peers
todo: decide how to set password and/or API key.

Got it done with sed stuff and xml parsing.
TODO: Decide if I want to set a default username/password


[Snyk] Upgrade io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi from 1.20.0 to 1.28.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi from 1.20.0 to 1.28.0.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 10 versions ahead of your current version.
The recommended version was released 2 months ago, on 2023-07-07.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Sorry this was not supposed to be submitted.


Waves animating based on audio amplitude?

Love the library. Great to turn audio into a video with waveforms
Can a next feature could be waveform animation with passing audio?
Similar to https://wavve.co/
Thanks for the great work!

Hi! The next planned feature is the possibility of changing spectrum rotation and position is planned for the future. Waveform is not planned yet


Bug Report: GridSearchCV does not work with Scalers

The GridSearchCV class, that works together with CeruleoMetricWrapper gives an error when a dataset including a Scaler in its Transformer is used.
Let's consider the following example:

Load the CMAPSSDataset and define the FEATURES as the most relevant sensor measurement features:

# Load the dataset
train_dataset = CMAPSSDataset(train=True, models='FD001')
test_dataset = CMAPSSDataset(train=False, models='FD001')[15:30]

# Define list of sensor measurement features
FEATURES = [train_dataset[0].columns[i] for i in sensor_indices]

Define a simple Transformer

transformer = Transformer(
    pipelineX=make_pipeline(
        ByNameFeatureSelector(features=FEATURES),
        MinMaxScaler(range=(-1, 1))

    ),
    pipelineY=make_pipeline(
        ByNameFeatureSelector(features=['RUL']),
    )
)

Note that here I am using the MinMaxScaler to scale the data in the range (-1,1)

Define an instance of GridSearchCV to find compare different Regression models

regressor_gs = CeruleoRegressor(
    TimeSeriesWindowTransformer(
        transformer,
        window_size=32,
        padding=True,
        step=1),
    Ridge(alpha=15))

grid_search = GridSearchCV(
    estimator=regressor_gs,
     param_grid={
        'ts_window_transformer__window_size': [5, 10],
        'regressor': [Ridge(alpha=15), RandomForestRegressor(max_depth=5)]
    },
    scoring=CeruleoMetricWrapper('neg_mean_absolute_error')
)

grid_search.fit(train_dataset)

The output returned after the grid_search.fit(train_dataset) command is launched  is:
There was an error when transforming with MinMaxScaler
There was an error when transforming with MinMaxScaler
There was an error when transforming with MinMaxScaler
...

And then the final error message is:
TypeError: unsupported operand type(s) for -: 'str' and 'str'

So probably there are two operands that should be subtracted one to the other but being both strings this results in an error.
Looking at additional details in the long error message returned we can find:
ValueError:
All the 20 fits failed.
It is very likely that your model is misconfigured.
You can try to debug the error by setting error_score='raise'.

As suggested in the error message I added the error_score='raise' input argument to GridSearchCV to get a more detailed error explanation.
Looking at the new error message I think that the source of the error is in the transform method of the MinMaxScaler class contained in ceruleo.transformation.features.scalers:
def transform(self, X: pd.DataFrame) -> pd.DataFrame:

try:
	divisor = self.data_max - self.data_min

The one reported above is the subtraction where two strings are found in correspondence of self.data_max and self.data_min thus creating the  TypeError: unsupported operand type(s) for -: 'str' and 'str' reported above.
I tried to run the code again after placing an import ipdb; ipdb.set_trace() inside the transform function but for some reason the code did not stop as it is supposed to happen when using ipdb.
I was also able to access the data_max and data_min attributes with transformer.pipelineX.final_step.data_max and transformer.pipelineX.final_step.data_min and I was also able to do:
transformer.pipelineX.final_step.data_max-transformer.pipelineX.final_step.data_min

without any error.
So I do not really have a clue why this bug appears.
Obviously running the code without MinMaxScaler, so with:
transformer = Transformer(
    pipelineX=make_pipeline(
        ByNameFeatureSelector(features=FEATURES),
    ),
    pipelineY=make_pipeline(
        ByNameFeatureSelector(features=['RUL']),
    )
)

it works without any errors.

Hi!
I wasn't able to reproduce the error. Which version of scikit-learn are you using? I am using (1.4.1.post1)
I am using the following snippet to test it:
from ceruleo.dataset.catalog.CMAPSS import CMAPSSDataset, sensor_indices
from ceruleo.transformation import Transformer
from ceruleo.transformation.functional.pipeline.pipeline import make_pipeline
from ceruleo.transformation.features.selection import ByNameFeatureSelector
from ceruleo.transformation.features.scalers import MinMaxScaler
from ceruleo.models.sklearn import (
    CeruleoRegressor,
    EstimatorWrapper,
    TimeSeriesWindowTransformer,
    predict,
    train_model,
    CeruleoMetricWrapper
)
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestRegressor

train_dataset = CMAPSSDataset(train=True, models='FD001')
test_dataset = CMAPSSDataset(train=False, models='FD001')[15:30]

# Define list of sensor measurement features
FEATURES = [train_dataset[0].columns[i] for i in sensor_indices]

transformer = Transformer(
    pipelineX=make_pipeline(
        ByNameFeatureSelector(features=FEATURES),
        MinMaxScaler(range=(-1, 1))

    ),
    pipelineY=make_pipeline(
        ByNameFeatureSelector(features=['RUL']),
    )
)

regressor_gs = CeruleoRegressor(
    TimeSeriesWindowTransformer(
        transformer,
        window_size=32,
        padding=True,
        step=1),
    Ridge(alpha=15))

grid_search = GridSearchCV(
    estimator=regressor_gs,
     param_grid={
        'ts_window_transformer__window_size': [5, 10],
        'regressor': [Ridge(alpha=15), RandomForestRegressor(max_depth=5)]
    },
    scoring=CeruleoMetricWrapper('neg_mean_absolute_error'),
    verbose=5
)

grid_search.fit(train_dataset)

I checked my scikit-learn version and I have 1.2.2. So I upgraded it to 1.4.1.post1 and I tried to run the code snippet you provided but I am getting a new error:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[7], line 20
      1 regressor_gs = CeruleoRegressor(
      2     TimeSeriesWindowTransformer(
      3         transformer,
   (...)
      6         step=1),
      7     Ridge(alpha=15))
      9 grid_search = GridSearchCV(
     10     estimator=regressor_gs,
     11      param_grid={
   (...)
     16     verbose=5
     17 )
---> 20 grid_search.fit(train_dataset)

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/base.py:1474, in _fit_context.<locals>.decorator.<locals>.wrapper(estimator, *args, **kwargs)
   1467     estimator._validate_params()
   1469 with config_context(
   1470     skip_parameter_validation=(
   1471         prefer_skip_nested_validation or global_skip_validation
   1472     )
   1473 ):
-> 1474     return fit_method(estimator, *args, **kwargs)

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/model_selection/_search.py:970, in BaseSearchCV.fit(self, X, y, **params)
    964     results = self._format_results(
    965         all_candidate_params, n_splits, all_out, all_more_results
    966     )
    968     return results
--> 970 self._run_search(evaluate_candidates)
    972 # multimetric is determined here because in the case of a callable
    973 # self.scoring the return type is only known after calling
    974 first_test_score = all_out[0]["test_scores"]

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/model_selection/_search.py:1527, in GridSearchCV._run_search(self, evaluate_candidates)
   1525 def _run_search(self, evaluate_candidates):
   1526     """Search all candidates in param_grid"""
-> 1527     evaluate_candidates(ParameterGrid(self.param_grid))

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/model_selection/_search.py:916, in BaseSearchCV.fit.<locals>.evaluate_candidates(candidate_params, cv, more_results)
    908 if self.verbose > 0:
    909     print(
    910         "Fitting {0} folds for each of {1} candidates,"
    911         " totalling {2} fits".format(
    912             n_splits, n_candidates, n_candidates * n_splits
    913         )
    914     )
--> 916 out = parallel(
    917     delayed(_fit_and_score)(
    918         clone(base_estimator),
    919         X,
    920         y,
    921         train=train,
    922         test=test,
    923         parameters=parameters,
    924         split_progress=(split_idx, n_splits),
    925         candidate_progress=(cand_idx, n_candidates),
    926         **fit_and_score_kwargs,
    927     )
    928     for (cand_idx, parameters), (split_idx, (train, test)) in product(
    929         enumerate(candidate_params),
    930         enumerate(cv.split(X, y, **routed_params.splitter.split)),
    931     )
    932 )
    934 if len(out) < 1:
    935     raise ValueError(
    936         "No fits were performed. "
    937         "Was the CV iterator empty? "
    938         "Were there no candidates?"
    939     )

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/utils/parallel.py:67, in Parallel.__call__(self, iterable)
     62 config = get_config()
     63 iterable_with_config = (
     64     (_with_config(delayed_func, config), args, kwargs)
     65     for delayed_func, args, kwargs in iterable
     66 )
---> 67 return super().__call__(iterable_with_config)

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/joblib/parallel.py:1918, in Parallel.__call__(self, iterable)
   1916     output = self._get_sequential_output(iterable)
   1917     next(output)
-> 1918     return output if self.return_generator else list(output)
   1920 # Let's create an ID that uniquely identifies the current call. If the
   1921 # call is interrupted early and that the same instance is immediately
   1922 # re-used, this id will be used to prevent workers that were
   1923 # concurrently finalizing a task from the previous call to run the
   1924 # callback.
   1925 with self._lock:

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/joblib/parallel.py:1847, in Parallel._get_sequential_output(self, iterable)
   1845 self.n_dispatched_batches += 1
   1846 self.n_dispatched_tasks += 1
-> 1847 res = func(*args, **kwargs)
   1848 self.n_completed_tasks += 1
   1849 self.print_progress()

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/utils/parallel.py:129, in _FuncWrapper.__call__(self, *args, **kwargs)
    127     config = {}
    128 with config_context(**config):
--> 129     return self.function(*args, **kwargs)

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/model_selection/_validation.py:887, in _fit_and_score(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, score_params, return_train_score, return_parameters, return_n_test_samples, return_times, return_estimator, split_progress, candidate_progress, error_score)
    883     estimator = estimator.set_params(**clone(parameters, safe=False))
    885 start_time = time.time()
--> 887 X_train, y_train = _safe_split(estimator, X, y, train)
    888 X_test, y_test = _safe_split(estimator, X, y, test, train)
    890 result = {}

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/utils/metaestimators.py:158, in _safe_split(estimator, X, y, indices, train_indices)
    156         X_subset = X[np.ix_(indices, train_indices)]
    157 else:
--> 158     X_subset = _safe_indexing(X, indices)
    160 if y is not None:
    161     y_subset = _safe_indexing(y, indices)

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/utils/__init__.py:411, in _safe_indexing(X, indices, axis)
    409     return _polars_indexing(X, indices, indices_dtype, axis=axis)
    410 elif hasattr(X, "shape"):
--> 411     return _array_indexing(X, indices, indices_dtype, axis=axis)
    412 else:
    413     return _list_indexing(X, indices, indices_dtype)

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/sklearn/utils/__init__.py:208, in _array_indexing(array, key, key_dtype, axis)
    206 if isinstance(key, tuple):
    207     key = list(key)
--> 208 return array[key, ...] if axis == 0 else array[:, key]

File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/ceruleo/dataset/ts_dataset.py:118, in AbstractTimeSeriesDataset.__getitem__(self, i)
    116 if isinstance(i, Iterable):
    117     if not all(isinstance(item, (int, np.integer)) for item in i):
--> 118         raise ValueError("Invalid iterable index passed")
    120     return FoldedDataset(self, i)
    121 else:

ValueError: Invalid iterable index passed

In a nutshell the method __getitem__ of class AbstractTimeSeriesDataset raises a ValueError because the indexes passed to it to select a life (or a set of lives) from the dataset are not integers. However I do not have control on this step because it is all done by the GridSearchCV function I guess.

Are you using the last version of Ceruleo?
because right now, the index acces is a bit different to the one you have
File ~/anaconda3/envs/bearing/lib/python3.11/site-packages/ceruleo/dataset/ts_dataset.py:118, in AbstractTimeSeriesDataset.__getitem__(self, i)
    116 if isinstance(i, Iterable):
    117     if not all(isinstance(item, (int, np.integer)) for item in i):
--> 118         raise ValueError("Invalid iterable index passed")
    120     return FoldedDataset(self, i)
    121 else:

https://github.com/lucianolorenti/ceruleo/blob/4cc7edbfb50ca03819613170b22bad179bb07266/ceruleo/dataset/ts_dataset.py#L139

Ok I had an old version of ceruleo. Now I installed the current version (3.0.3) and the code is working.
Thanks a lot for the help


feat: modal to delegate voting power

We have a button on top right of the delegate page to delegate voting power but currently it's not active, we should make it.

Could I pick this?
Best regards

@pudgefury Sure feel free, I've assigned you to the issue.
Here is more specs:

We need to add 2 new inputs in the space profile to define the delegation contract address and the chain. This should appear in space creation and edit profile modal. And be stored in space metadata as delegation_address with value in this format gor:0x1234...
Add delegate modal with an input "Delegate" and button confirm. Design should be similar than others modals with input like add contact or send contract call.
We should have a validation in the delegate input to accept only address.
If the delegation address and chain are not defined the button to delegate should not appear.
When confirm a new delegate, it should close the modal and add a transaction as pending.

Do you have design for that?

@pudgefury

Could we discuss more detail about this task?
Do you have telegram where can i contact?

You can contact me on Telegram my username is "bonustrack"


"get getter" -> "the getter"

Just a quick typo fix.  Thanks for making this course!

Thanks and sorry for only getting to this now – totally missed the PR!

Thanks and sorry for only getting to this now – totally missed the PR!