cirq.resolve_parameters is slow

Description of the issue
The usage context is to run hybrid variational circuit fast. For a small circuit of 2 qubits, consisting of ZZFeatureMap and RealAmplitude, I find cirq.resolve_parameters to be ~15x slower than if I were to reconstruct the circuit from scratch with concrete numbers replacing the parameters instead.
How to reproduce the issue
import time

import numpy as np
import cirq
import sympy

def make_cirq_circuit(
    num_qubits,
    circuit_params,
    qubits,
    cirq_input_params,
    cirq_weight_params,
):
    circuit = cirq.Circuit()
    # Qiskit's ZZFeatureMap
    zz_repetitions = 2
    for i in range(zz_repetitions):
        circuit.append([cirq.H(q) for q in qubits])
        circuit.append(
            [cirq.Z(qubits[i]) ** (2.0 * cirq_input_params[i] / np.pi)]
            for i in range(num_qubits)
        )
        circuit.append(cirq.CX(qubits[0], qubits[1]))
        circuit.append(
            cirq.Z(qubits[1])
            ** (
                (2.0 * (np.pi - cirq_input_params[0]) * (np.pi - cirq_input_params[1]))
                / np.pi
            )
        )
    # Qiskit's RealAmplitude
    count = 0
    for i in range(4):
        circuit.append(cirq.CX(qubits[0], qubits[1]))
        circuit.append(cirq.ry(cirq_weight_params[count * 2]).on(qubits[0]))
        circuit.append(cirq.ry(cirq_weight_params[count * 2 + 1]).on(qubits[1]))
        count += 1
    return circuit

num_qubits = 2
qubits = cirq.LineQubit.range(num_qubits)

# Prepare the parameterized circuit
cirq_input_params = [sympy.Symbol("x0"), sympy.Symbol("x1")]
cirq_weight_params = [sympy.Symbol(f"theta{i}") for i in range(8)]
circuit_params = cirq_input_params + cirq_weight_params
circuit = make_cirq_circuit(
    num_qubits,
    circuit_params,
    qubits,
    cirq_input_params,
    cirq_weight_params,
)

# Resolve params
np.random.seed(42)
p = {p: np.random.random() for p in circuit_params}
tic = time.time()
resolved_circuit = cirq.resolve_parameters(circuit, p)
print("Elapsed cirq.resolve_parameters:", round(time.time() - tic, 3))

# What if we instead construct the circuit from scratch.
cirq_input_params = [np.random.random() for i in range(2)]
cirq_weight_params = [np.random.random() for i in range(8)]
circuit_params = cirq_input_params + cirq_weight_params
tic = time.time()
make_cirq_circuit(
    num_qubits,
    circuit_params,
    qubits,
    cirq_input_params,
    cirq_weight_params,
)
print("Elapsed construct from scratch:", round(time.time() - tic, 3))

Result:
Elapsed cirq.resolve_parameters: 0.045
Elapsed construct from scratch: 0.003

Cirq version
You can get the cirq version by printing cirq.__version__. From the command line:
1.1.0

Past issue: #1899 and its resolution #3205.
With Qiskit:
from qiskit import QuantumCircuit
from qiskit.circuit.library import RealAmplitudes, ZZFeatureMap
feature_map = ZZFeatureMap(2, reps=2)
ansatz = RealAmplitudes(2)
qc = QuantumCircuit(2)
qc.compose(feature_map, inplace=True)
qc.compose(ansatz, inplace=True)
tic = time.time()
qc.bind_parameters(p)
print("Elapsed Qiskit:", round(time.time() - tic, 3))
# Elapsed Qiskit: 0.007

Tracking down the slowest part of cirq.resolve_parameters for this example, >90% of the time is spent on https://github.com/quantumlib/Cirq/blob/a95f009617bcdc613cfbca169fbedbfea1de85b7/cirq-core/cirq/protocols/resolve_parameters.py#L189, and in the ParamResolver class, >90% of the time is spent in this line: https://github.com/quantumlib/Cirq/blob/a95f009617bcdc613cfbca169fbedbfea1de85b7/cirq-core/cirq/study/resolver.py#L187.

Replacing import sympy with import symengine as sympy throughout the library, I got
Elapsed cirq.resolve_parameters: 0.011

@NoureldinYosri  to test if its potentially a library loading issue by rerunning the test multiple times.
We should also look at symengine and see if it breaks any of our tests.

@tanujkhattar @rht as I expected running the code twice gives a much better performance
Elapsed cirq.resolve_parameters: 0.023
Elapsed cirq.resolve_parameters: 0.02
Elapsed construct from scratch: 0.001
Elapsed construct from scratch: 0.001

code is the just same but repeating the timing blocks
tic = time.time()
resolved_circuit = cirq.resolve_parameters(circuit, p)
print("Elapsed cirq.resolve_parameters:", round(time.time() - tic, 3))
tic = time.time()
resolved_circuit = cirq.resolve_parameters(circuit, p)
print("Elapsed cirq.resolve_parameters:", round(time.time() - tic, 3))

...

tic = time.time()
make_cirq_circuit(
    num_qubits,
    circuit_params,
    qubits,
    cirq_input_params,
    cirq_weight_params,
)
print("Elapsed construct from scratch:", round(time.time() - tic, 3))
tic = time.time()
make_cirq_circuit(
    num_qubits,
    circuit_params,
    qubits,
    cirq_input_params,
    cirq_weight_params,
)
print("Elapsed construct from scratch:", round(time.time() - tic, 3))

it's not enough that the code starts with import sympy since that line won't import the whole library but only the parts of the library named in the library level __init__.py. but if in our logic we do from sympy.X import Y then Y won't be imported until the interpeter gets to the first file containing that import line.
python interpetars do eager imports of the parts of the libraries that they see, however some libraries (e.g. scipy) explicitly do lazy imports to mitigiate that https://peps.python.org/pep-0690/
so key takeaway the slowness of the first run is due to the size of the part of sympy library that we use. however any run after the first should be fast.

I can take up this issue.

@rht I merged this PR https://github.com/quantumlib/Cirq/pull/6128 a couple weeks back to improve performance quite a bit. Let me know if things look good on your end!

Yeah, it does speed up a lot to be usable for experimentation, thanks a lot for it!

I did try using symengine on top of #6128, but it slowed the elapsed time instead.

Closed via #6128.


remove style outline:none from menu primitive

Description

Removes outline: none from menu primitive style.
Using this library with tailwindcss, and noticing I can't override the outline style unless I use the important property since menu primitive ships with outline: none.
    <ContextMenu.Content className="outline outline-1 outline-sky-500">

shows up as
<div
  role="menu"
  aria-orientation="vertical"
  data-state="open" dir="ltr"
  class="outline outline-1 outline-sky-500"
  tabindex="-1"
  data-orientation="vertical"
  style="outline: none;--radix-context-menu-content-transform-origin:var(--radix-popper-transform-origin);pointer-events: auto;"
  data-side="right"
  data-align="start"
>

with style taking precedence over class.
Tailwind workaround right now is
    <ContextMenu.Content className="!outline !outline-1 !outline-sky-500">

Yeah we've debated many times whether we should do this or not.
I guess this is another reason why we perhaps shouldn't…

Hi @BrianHung regarding this, we have given it a bit more thought and we will keep things as is for now.
Here are some of the reasons:

Due to our focus management implementation for accessibility in these components, the focus may jump from an item to the content and back, causing unnecessary and jarring visual changes for users. This is why we disabled the default browser focus outline by default
99% of the time this means that it is undesirable to style the :focus state of the Content as you would generally want it to be consistent regardless where focus is
In your case, it seems you are not even concerned with focus state at all and are trying to style the Content's border in its default state. In which case there are lots of different ways to go about it: border or box-shadow for example on top of the workaround you have provided.

Hope this makes sense and sheds a bit of light on our thought process.
✌


Replace Ubuntu with Fedora

I noticed a failure to pull the ubuntu image in CI. I'm not sure why we need Ubuntu and especially such an old release. Someone feel free to advise why it's necessary. This change is replacing the Ubuntu image with Fedora.

You are right. Ubuntu was probably just inherited from OOO test infrastructure and we haven't changed it since. I'm just wondering if it is good idea to use rawhide here. Maybe we could pick a version and pin the test to that for better stability?

I'm not sure it really matters too much since we're not doing anything with it. I just didn't want to have to update it from 37 > 38 > 39 periodically. But I pushed a new revision changing the tag to latest which will get the latest stable.


HV-1887 Make Java 11 the base Java version

In passing, remove the Jakarta staging repository.
https://hibernate.atlassian.net/browse/HV-1887

@gsmet does it help to use the 1.6 signature tool?
  <version.sigtest.plugin>1.6</version.sigtest.plugin>

Not really. I tried with it and then moved to 2.0-SNAPSHOT to be able to exclude the JDK classes and then things got worse :).

The 1.6 sigtest plugin was what I was testing with in my branch, and that was working:
└> mvn -pl tck-runner clean install -DskipTests -Psigtest
...
[INFO] --- sigtest-maven-plugin:1.6:check (default) @ hibernate-validator-tck-runner ---
[INFO] Packages: jakarta.validation,jakarta.validation.bootstrap,jakarta.validation.constraints,
                                jakarta.validation.constraintvalidation,jakarta.validation.executable,jakarta.validation.groups,
                                jakarta.validation.metadata,jakarta.validation.spi,jakarta.validation.valueextraction
[INFO] SignatureTest report
Base version: 3.0.0
Tested version: 7.0.3-SNAPSHOT
Check mode: src [throws normalized]
Constant checking: on

[INFO] /Users/starksm/Dev/JBoss/Jakarta/rh-hv/tck-runner/target/surefire-reports/sigtest/TEST-hibernate-validator-tck-runner-7.0.3-SNAPSHOT.xml: 0 failures in /Users/starksm/Dev/JBoss/Jakarta/rh-hv/tck-runner/target/api-signature/validation-api-java8.sig

I'm using Java 11:
└> $JAVA_HOME/bin/java -version
java version "11.0.13" 2021-10-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.13+10-LTS-370)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.13+10-LTS-370, mixed mode)

I also just pulled down the latest upstream HV and see that is it using Java 17 to build. I did that, and ran the sig tests and those are also working:
✏ [starksm@Scotts-iMacPro#10433]-(hibernate-validator)-[git://main ✔]-
└> git remote -v
origin  https://github.com/hibernate/hibernate-validator.git (fetch)
origin  https://github.com/hibernate/hibernate-validator.git (push)
✏ [starksm@Scotts-iMacPro#10434]-(hibernate-validator)-[git://main ✔]-
└> $JAVA_HOME/bin/java -version
java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)
...
✏ [starksm@Scotts-iMacPro#10435]-(hibernate-validator)-[git://main ✔]-
└> mvn -pl tck-runner clean install -DskipTests -Psigtest
...
[INFO] --- sigtest-maven-plugin:1.4:check (default) @ hibernate-validator-tck-runner ---
[INFO] Packages: jakarta.validation,jakarta.validation.bootstrap,jakarta.validation.constraints,
                                jakarta.validation.constraintvalidation,jakarta.validation.executable,jakarta.validation.groups,
                                jakarta.validation.metadata,jakarta.validation.spi,jakarta.validation.valueextraction
[INFO] SignatureTest report
Base version: 3.0.0
Tested version: 8.0.0-SNAPSHOT
Check mode: src [throws normalized]
Constant checking: on

[INFO] /Users/starksm/Dev/JBoss/Jakarta/hibernate-validator/tck-runner/target/surefire-reports/sigtest/TEST-hibernate-validator-tck-runner-8.0.0-SNAPSHOT.xml: 0 failures in /Users/starksm/Dev/JBoss/Jakarta/hibernate-validator/tck-runner/target/api-signature/validation-api-java8.sig
[INFO]

Ok, let me take a look at this branch. @scottmarlow and I will try to figure the easiest thing to do.

Do we need to add a signature-generation profile like the CDI-TCK?

That's a good idea. I'll have a look tomorrow morning and see if I can make that work.

The following works for me:
In addition to updating the java-version.main.release to 11 and building with 17, update the version.sigtest.plugin to 2.0-SNAPSHOT and build the latest https://github.com/jtulach/netbeans-apitest.git with JDK 17 and update the sigtest plugin config to:
                <plugin>
                    <groupId>org.netbeans.tools</groupId>
                    <artifactId>sigtest-maven-plugin</artifactId>
                    <version>${version.sigtest.plugin}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <ignoreJDKClasses>
                            <include>java.lang.Deprecated</include>
                            <include>java.lang.Object</include>
                        </ignoreJDKClasses>
                    </configuration>
                </plugin>

This allows the sigtest verification to work with the current jdk8 version of the signature map file:
└> mvn -pl tck-runner clean install -DskipTests -Psigtest
...
[INFO] --- sigtest-maven-plugin:2.0-SNAPSHOT:check (default) @ hibernate-validator-tck-runner ---
[INFO] Packages: jakarta.validation,jakarta.validation.bootstrap,jakarta.validation.constraints,
                                jakarta.validation.constraintvalidation,jakarta.validation.executable,jakarta.validation.groups,
                                jakarta.validation.metadata,jakarta.validation.spi,jakarta.validation.valueextraction
[INFO] SignatureTest report
Base version: 3.0.0
Tested version: 8.0.0-SNAPSHOT
Check mode: src [throws normalized]
Constant checking: on

[INFO] /Users/starksm/Dev/JBoss/Jakarta/hibernate-validator/tck-runner/target/surefire-reports/sigtest/TEST-hibernate-validator-tck-runner-8.0.0-SNAPSHOT.xml: 0 failures in /Users/starksm/Dev/JBoss/Jakarta/hibernate-validator/tck-runner/target/api-signature/validation-api-java8.sig
[INFO]

The changes are in:
hv.patch.txt
If you want a validation-api-java11.sig created I can do that in a 3.0.2 service release.

I went with @scottmarlow 's proposal and generated a signature file locally with Java 11.
@starksm64
It would be nice if we could have a Java 11 signature IN ADDITION TO the current Java 8 sig file in the TCK.
Not sure if it's worth doing it though given we will have to change the build infra.
Currently we enforce Java 8 for the build, we could probably switch to Java 11 and keep a 8 bytecode compatibility though (we need to keep Java 8 compatibility as we keep the major version as is) if it's not too much hassle on the Eclipse infra build.
Let me know if you think we should move to Java 11 for the TCK build, I can do the grunt work.

@gsmet do we also pass the signature tests against Java 17?

We only do it for the base version so until now Java 8 and for HV 8, Java 11 (that's how it was always done).

Looking forward, it would be good if we could support https://jakarta.ee/specifications/platform/9.1/jakarta-platform-spec-9.1.html#container-requirements (https://github.com/eclipse-ee4j/jakartaee-platform/pull/302):
2.4.1. Container Requirements

This specification requires that containers support execution in a Java™ runtime environment, as defined by the Java Platform, Standard Edition specification, v8 or later (Java SE 8 or later).

Support for running against Java SE 8+ JDKs ^ came into the sigtest tooling via https://github.com/jtulach/netbeans-apitest/pull/2 + https://github.com/jtulach/netbeans-apitest/pull/8 + https://github.com/jtulach/netbeans-apitest/pull/11 explains and introduces the ignoreJDKClasses option so that you can run against a base SE version or later versions.  IMO, it is a hacky option but it seems to help so far with Jakarta EE 9.1+.  The original need was described in https://github.com/eclipse-ee4j/jakartaee-tck/issues/156 in case that helps for more background info.

Not sure what you're saying exactly? Are you saying we should still support Java 8 in HV 8 targeting EE 10?
Because the new EL impl, Expressly, does not support Java 8 AFAICS. That's one of the reasons why I moved to Java 11.

Not sure what you're saying exactly? Are you saying we should still support Java 8 in HV 8 targeting EE 10?

For EE 10, we would only target Java 11+ (with the JDK 11 signature file) which could include running signature tests (with ignoreJDKClasses specified)  against later Java SE versions as well.

Because the new EL impl, Expressly, does not support Java 8 AFAICS. That's one of the reasons why I moved to Java 11.


ign -> gz CLI Migration : gz-gui

See: https://github.com/gazebo-tooling/release-tools/issues/739

CI failure needs the merge of gz-tools so the gz executable is available

@osrf-jenkins run tests please!

Ahh include/ignition/gui/ign.hh is installed, so we shouldn't move it. I think it's ok to leave it as it is, because it's already deprecated inside the ignition folder, and the new include/gz/gui/gz.hh header is already correct.

Fixed! Move no longer occurs in https://github.com/gazebosim/gz-gui/pull/417/commits/a2489b397fbfdc499a3ab9fc5179b8ab78f9e2aa


Troubles to use jupynium from a remot machine

Hi,
Thanks for releasing jupynium,
I am trying to install jupynium for using it from a remote machine. Specifically, I would like to render the notebook from firefox in an interface machine (machine A) while running the kernel and nvim in a remote machine (machine B).  To do so I am using the command-line usage of jupynium as suggested. While I can launch jupynium correctly (I see a jupynium widget in nvim saying that it is set and firefox opens a geckodriver window on my notebook dir), if I run :JupyniumStartSync  it crashes due to window undefined in selenium (error messages paste below)
To Reproduce
Steps to reproduce the behavior:

From machine A : ssh -X machine B
Launch jupyter notebook  from the same dir as *.ju.py files
Run nvim file.ju.py and get nvim address with :echo v:servername
Launch jupynium : jupynium --nvim_listen_addr /tmp/your_socket_path --notebook_URL notebook_URL where notebook_URL is http://machine_b_name:port_number/
Run :JupyniumStartSync  in nvim

Expected behavior
At step 4 jupynium should launch firefox as expected but at step 5 it will crash with the following error message:

jupynium.cmds.jupynium:  512 - ERROR - Uncaught exception occurred while processing events. Detaching nvim.
Traceback (most recent call last):
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/switch_to.py", line 138, in _w3c_window
send_handle(window_name)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/switch_to.py", line 134, in send_handle
self._driver.execute(Command.SWITCH_TO_WINDOW, {"handle": h})
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 346, in execute
self.error_handler.check_response(response)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchWindowException: Message: Unable to locate window: undefined
Stacktrace:
WebDriverError@chrome://marionette/content/error.js:175:5
NoSuchWindowError@chrome://marionette/content/error.js:409:5
GeckoDriver.prototype.switchToWindow@chrome://marionette/content/driver.js:1602:11
despatch@chrome://marionette/content/server.js:305:40
execute@chrome://marionette/content/server.js:275:16
onPacket/<@chrome://marionette/content/server.js:248:20
onPacket@chrome://marionette/content/server.js:249:9
_onJSONObjectReady/<@chrome://marionette/content/transport.js:501:20
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/jupynium/cmds/jupynium.py", line 507, in main
status, rpcrequest_event = process_events(nvim_info, driver)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/jupynium/events_control.py", line 205, in process_events
status, request_event = process_request_event(nvim_info, driver, event)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/jupynium/events_control.py", line 429, in process_request_event
start_sync_with_filename(
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/jupynium/events_control.py", line 236, in start_sync_with_filename
driver.switch_to.window(nvim_info.home_window)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/switch_to.py", line 130, in window
self._w3c_window(window_name)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/switch_to.py", line 144, in _w3c_window
send_handle(handle)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/switch_to.py", line 134, in send_handle
self._driver.execute(Command.SWITCH_TO_WINDOW, {"handle": h})
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 346, in execute
self.error_handler.check_response(response)
File "/sqpc/hpc/sp_auction_np/clautrim/public/environments/venv_jupynium/lib64/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchWindowException: Message: Unable to locate window: undefined
Stacktrace:
WebDriverError@chrome://marionette/content/error.js:175:5
NoSuchWindowError@chrome://marionette/content/error.js:409:5
GeckoDriver.prototype.switchToWindow@chrome://marionette/content/driver.js:1602:11
despatch@chrome://marionette/content/server.js:305:40
execute@chrome://marionette/content/server.js:275:16
onPacket/<@chrome://marionette/content/server.js:248:20
onPacket@chrome://marionette/content/server.js:249:9
_onJSONObjectReady/<@chrome://marionette/content/transport.js:501:20

Output of jupynium --version
Jupynium v0.1.dev1+gaaa0e59

Output of nvim --version
NVIM v0.8.3
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by girolims@ldzls998i

Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/local/share/nvim"

Run :checkhealth for more info

Despite my efforts to fix this, I couldn't find what I did wrong here,  any help would be greatly appreciated thanks!

Hi, there's one thing you did it wrong. The socket path is used only for attaching local neovim (unless you share it in a network directory)
So if you opened neovim in a remove directory, you should run it with nvim --listen localhost:12345 file.ju.py and pass jupynium --nvim_listen_addr machine_b_name:12345 .... Instead of socket you'd want to use TCP.
Actually I don't really get the error message. You might be experiencing another issue.

Hi, thanks for this correction,
From your message I understand that the jupynium command must be launched from machine A. If so is there anything that I need to export? In fact when I run the exact same command that you did above (first nvim on machine B then jupynium on machine A) the jupynium query is failling with the following error message :

jupynium.cmds.jupynium:  440 - ERROR - Exception occurred
Traceback (most recent call last):
File "/lxhome/clautrim/Desktop/jupyenv/lib64/python3.8/site-packages/jupynium/cmds/jupynium.py", line 438, in main
nvim = attach_and_init(args.nvim_listen_addr)
File "/lxhome/clautrim/Desktop/jupyenv/lib64/python3.8/site-packages/jupynium/pynvim_helpers.py", line 28, in attach_and_init
raise TimeoutError("Timeout while waiting for nvim to start")
TimeoutError: Timeout while waiting for nvim to start

Running : jupynium --nvim_listen_addr localhost:12345 ... on machine B works for though

@MathisClautrier If your port is not open, you need to port-forward it through SSH. It's the same way you'd use Jupyter Notebook from a remote machine. You just need two ports open (one for nvim, the other for Jupyter Notebook).
You're correct that jupynium command should be launched locally (machine A)

Thanks @kiyoon, it sounds obvious now that you point it out. For the initial error, it is still occurring as you suggested previously. After checking my setting I think it comes from urllib3 being outdated due to old version of openSSL (I am using urrlib3 1.26.16 with openSSL 1.0.2)

Hi, my assumption about out-dated OpenSSL was not helpful. I tried to fix this by updating  openSSL, but it raises another error about a different signature in selenium. I can see  that your requirements.txt suggests openSSL 1.0.2 is supported (urllib3 1.26) so I went back to my previous setting.
After playing a bit with jupynium, I found that the error is raised here : https://github.com/kiyoon/jupynium.nvim/blob/master/src/jupynium/events_control.py#L236
The value of nvim_info.home_window is 6.
Do you have any idea what can be the issue here?

Hi, sorry for being confusing, it is still crashing by looking for undefined windows when running driver.switch_to.window(nvim_info.home_window). However, logging nvim_info.home_window before this outputs 6.

Hi, apparently this issue was fixed by downgrading geckodriver to 0.30.0, to cope with my firefox version according to : https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html


ES-2647: Introduce a feature to update private orbs for BESTSELLER only + Fix deprecated dependency io/ioutil + Polish documentation + Ease local development + Fix issue with many idle database connections + General code improvements

Changes
Introduce a feature to update private orbs for BESTSELLER only
When the worker runs, it will check if the current organization is BESTSELLER. If it is, it will create an API client for CircleCI with a BESTSELLER token to query private orbs.
Fix deprecated dependency io/ioutil
Dependency io/ioutil is deprecated and should use io and os instead. This has been fixed.
Polish documentation
Documentation has been corrected grammatically.
Ease local development
Secret files
Added an extra secret file to get the correct secrets when running locally.
Changed the naming of the secret files so they start with secret-* to make sure they're placed next to each other when sorted. For example in the file explorer.
README
Added how to run locally to the README file.
Database connection string
The database connection string was hardcoded to cloud SQL Postgres. This has been made, so you can override the entire connection string.
Fix issue with many idle database connections
@brondum pointed out that we had an issue with a lot of idle database connections and sometimes it would actually break the application.
It got fixed by only creating a database client once and returning that when other functions try to create it.
There's no reason to close the connections again. The documentation states that connections will automatically be closed when the application exits.
General code improvements

Error messages generated by fmt.Error have been made lowercase.
If no Application Default Credentials (ADC) is present, it will try to continue without instead of breaking.
More small changes.

Disclaimer: This was already half-butchered when I started. I tried to find the least fucked place to add the private orb stuff for BESTSELLER

Without having looked at the code, but shouldn't it update private docker images as well?

Without having looked at the code, but shouldn't it update private docker images as well?

Correct Lasse. But we can split it up, i dont mind. Orbs is better than nothing :)
@OrKarstoft Looks really good, super improvements all along.
One thing, if i read the code correct, then we use a token to all CCI requests now ? even though the org is not BESTSELLER ?

Without having looked at the code, but shouldn't it update private docker images as well?

I searched our GitHub repositories for any executors with a non-public image and found none. So I took a management decision and did not implement it this time. :D

Without having looked at the code, but shouldn't it update private docker images as well?

Correct Lasse. But we can split it up, i dont mind. Orbs is better than nothing :) @OrKarstoft Looks really good, super improvements all along. One thing, if i read the code correct, then we use a token to all CCI requests now ? even though the org is not BESTSELLER ?

Negative. The variable CCIApiToken is initialized as "".
If the organization is BESTSELLER, the variable config.AppConfig.BestsellerSpecific.Running would be true and then CCIApiToken gets changed to the correct token.
Had to use the config package to carry the information. Otherwise, I'd have circular dependencies.
CCIApiToken := ""
if config.AppConfig.BestsellerSpecific.Running {
  log.Debug().Msg("Using Bestseller specific token to handle private orbs")
  CCIApiToken = config.AppConfig.BestsellerSpecific.Token
}

client := graphql.NewClient(http.DefaultClient, "https://circleci.com/", "graphql-unstable", CCIApiToken, false)

https://github.com/BESTSELLER/dependabot-circleci/pull/297/files#diff-f188e0c65d790db401a2f17c2bcfbddf2465cef3e1e8ee146d472fc979c67cd8R42-R48

Great stuff Oliver!


Stub log to avoid CI failing on master for crossplatform

The CI on master for Ubuntu and OSX was failing due to missing msbuild.log file (we don't build crossplatform on master).
Since I could not find a way to differentiate PRs targeting master from the ones targeting xplat within the netci.groovy script, I updated the stub cibuild.sh to output stub logs.
@mmitche

@dotnet-bot test ci please

LGTM


Fixed #34657 -- Made assert(Not)Contains/assertInHTML display haystacks in error messages.

This PR adds the feature of showing the haystack on failure for these methods.

django.test.SimpleTestCase.assertContains
django.test.SimpleTestCase.assertNotContains
django.test.SimpleTestCase.assertInHtml

Fixes: ticket

Hey @felixxm, could you review this for the final merge?

@chinmoy12c Hi, nessita & felixx are busy, please be patient and be assured this is on their todo list – there's no need to tag them personally ;)

@chinmoy12c Thanks :+1: I pushed final edits.

Yay! ☺


Suggestion: add deprecation warnings for old npm packages

I recently started using the<EMAIL_ADDRESS>and<EMAIL_ADDRESS>packages, but it took me a while to realise that the relative versions are incompatible. It seems that the latter is now @typechain/ethers-v4.
It'd be good to let users know about this change. There are many tutorials on the Internet that still reference the old "typechain-target-name" packages.

Yes, definitely good idea. I am gonna try to do it in a sec.

DONE. Thanks for bringing up this issue to my attention!

Amazing, thanks for the quick turnaround!


Error npm run dev

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
Theme
Expected behavior
I try to run command PS D:\themes\nik>  npm run dev
Actual behavior
npm ERR! Missing script: "dev"
npm ERR!
npm ERR! To see a list of scripts, run:
npm ERR!   npm run
npm ERR! A complete log of this run can be found in: C:\Users\rizwa\AppData\Local\npm-cache_logs\2024-07-22T17_49_31_054Z-debug-0.log
Verbose output
npm verb cli C:\node.exe C:\Users\rizwa\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js
npm info using<EMAIL_ADDRESS>npm info using<EMAIL_ADDRESS>npm verb title npm
npm verb argv "--loglevel" "verbose"
npm verb logfile logs-max:10 dir:C:\Users\rizwa\AppData\Local\npm-cache\_logs\2024-07-22T17_56_26_290Z-
npm verb logfile C:\Users\rizwa\AppData\Local\npm-cache\_logs\2024-07-22T17_56_26_290Z-debug-0.log

Reproduction steps
1.I try to install tailwind css
2.run command npm run dev
3.Got this error
Operating System
windows 10
Shopify CLI version (check your project's package.json if you're not sure)
3.64.1
Shell
Vs code terminal
Node version (run node -v if you're not sure)
v20.15.1
What language and version are you using in your application?
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x64-mingw-ucrt]

Hi!
I think the command you are trying to use is shopify theme dev.
And you can find help to install the CLI here: https://shopify.dev/docs/api/shopify-cli#installation

https://tailwindcss.com/docs/installation/using-postcss
Please check on this link


Integrate Voice control SDK on ESP32

Is your feature request related to a problem? Please describe.
Is it possible to integrate a voice control system (Alexa or another ) on ESP32 running with AFR ?
Describe the solution you would like.
Using the amazon freertos with ESP32 like the Espressif's Voice Assistant SDK.
Thank you!

Hi @elieDaan, currently, we do not have an example of using a voice assistant SDK with Espressif in our repository. We will add it to our list of feature requests.
There is an existing Amazon qualified solution for Alexa voice control on the Espressif ESP32-Vaquita-DSPG board using Espressif’s AVS for AWS IoT SDK. You can find more information about the board and ESP Voice Assistant SDK for Alexa here. This solution uses the freertos component distributed through the ESP-IDF SDK.

Hi @elieDaan, I'm closing this thread for now. Should you run into any difficulty related to our SDK or integrated samples, please don't hesitate to open another issue.


📝 Documentation: update Tidelift and project description

Bug Report Checklist

[X] I have pulled the latest main branch of the repository.
[X] I have searched for related issues and found none that matched my issue.

Overview
The project description in the README.md of the tidelift-me-up-site repo is currently being updated (issue). To ensure consistency, the project description in this repo’s README.md should also be updated to match.
Side note: I also submitted an issue to update the app’s one-line descriptor, which includes another change to the README.md. However, this may require a separate issue/PR in this repo.
Additional Info
No response

Agreed!


Which dein_option should I put in

=
Problems summary
Some plugins used global variable to turn on or adjust setting, and others maybe use call function. How do i choose these two option for plugin. For example:
    let g:deoplete#enable_at_startup = 1
    inoremap <expr><cr> (pumvisible() ? deoplete#close_popup() : "\<cr>")

    call deoplete#custom#option({
    \ 'auto_complete_delay': 200,
    \ 'max_list': 20,
    \ })

Like the code above, There are three things, define global variable for deopelete, mapping key, and adjusting deoplete setting. I don't know where these things should put? For example: Maybe let g:deoplete#enable_at_startup = 1  put in hook_add and other put in hook_source.

Maybe let g:deoplete#enable_at_startup = 1 put in hook_add and other put in hook_source.

Yes. It is true.


enabling coredns: error validating data

When enabling coredns:
$ microk8s.enable coredns
Enabling coredns
serviceaccount/coredns created
configmap/coredns created
error: error validating "/home/kartoch/snap/microk8s/920/tmp/temp.coredns.yaml": error validating data: ValidationError(Deployment.spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation): invalid type for io.k8s.api.core.v1.SecurityContext.allowPrivilegeEscalation: got "string", expected "boolean"; if you choose to ignore these errors, turn validation off with --validate=false
Failed to enable coredns

The reason seems to be in the way the coredns enable script handle string for $ALLOWESCALATION in /microk8s-resources/actions/enable.dns.sh:
https://github.com/ubuntu/microk8s/blob/e0dbaab51273b8cac36eaee8e80b0c56f00d484d/microk8s-resources/actions/enable.dns.sh#L10-L17
Which is injected as a string with double quote in microk8s-resources/actions/coredns.yaml instead of a boolean.
https://github.com/ubuntu/microk8s/blob/50e8f2488d0bb20332b6894328913e4ab691d856/microk8s-resources/actions/coredns.yaml#L104-L105

enable dns works fine, and uses coredns:
 microk8s.enable dns
Enabling DNS
Applying manifest
serviceaccount/coredns created
configmap/coredns created
deployment.apps/coredns created
service/kube-dns created
clusterrole.rbac.authorization.k8s.io/coredns unchanged
clusterrolebinding.rbac.authorization.k8s.io/coredns unchanged
Restarting kubelet
DNS is enabled

Indeed you are expected to microk8s.enbale dns and not coredns. The coredns.yaml file served as a template to the enable script.

What made you try to enable coredns?

What made you try to enable coredns?

Just testing enabling all plugins for fun.

Indeed you are expected to microk8s.enbale dns and not coredns. The coredns.yaml file served as a template to the enable script.

Maybe removing the coredns script makes sense ?


Appdaemon

Add http://appdaemon.readthedocs.io/en support to image

@persuader72 I did needed to do some rework in the license area and rebase it on master. Please have a look.

It looks good for me.


No executionContext/expressionValuesComputed notification emitted for patterns

General Summary
The executionContext/expressionValuesComputed is not emitted for node patterns.
Steps to Reproduce
Open the following in the IDE:
Main.mulAdd = 5

main =
    result = Main.mulAdd
    6

#### METADATA ####
[[{"index":{"value":0},"size":{"value":4}},"8f6eec81-a516-4dde-be43-07de625a6653"],[{"index":{"value":4},"size":{"value":1}},"b95addc1-dffd-4622-ba63-4468d083908c"],[{"index":{"value":5},"size":{"value":6}},"429638bf-fa87-4071-8114-ca700b46fe81"],[{"index":{"value":0},"size":{"value":11}},"1e0db7d9-0de1-450d-b137-4fa0e2049a35"],[{"index":{"value":12},"size":{"value":1}},"68d4054d-00d3-49fa-83bd-0807947e28f0"],[{"index":{"value":14},"size":{"value":1}},"2c980296-5cb9-42ac-adea-095409fa7c3a"],[{"index":{"value":0},"size":{"value":15}},"f8e67f93-4366-42f9-aa3e-d1d210002b38"],[{"index":{"value":17},"size":{"value":4}},"b3dbe0d8-4323-4ca2-aacc-14e3b0473740"],[{"index":{"value":22},"size":{"value":1}},"186f956b-f402-4648-98ce-8b11bea71a53"],[{"index":{"value":28},"size":{"value":6}},"743ce364-07f6-465f-8640-11fc0cbf306e"],[{"index":{"value":35},"size":{"value":1}},"612de1cf-9e9e-464b-be5e-7d6ffaa7c694"],[{"index":{"value":37},"size":{"value":4}},"fecdad1c-9451-4d2b-a7fd-4aad5550de40"],[{"index":{"value":41},"size":{"value":1}},"27938428-f93b-429e-9094-2fad6d363c83"],[{"index":{"value":42},"size":{"value":6}},"edf2376f-4edf-4c43-9111-461dc29cef3d"],[{"index":{"value":37},"size":{"value":11}},"2d6c6cae-414b-4174-8450-afabd042ae93"],[{"index":{"value":28},"size":{"value":20}},"7ba77f90-2cf9-4402-a3ab-d6f1e6585d51"],[{"index":{"value":53},"size":{"value":1}},"20f2ff1b-8932-48e5-ba25-b59d15bf7d58"],[{"index":{"value":23},"size":{"value":31}},"abd6952c-ab14-4574-8b8d-a089142c37cf"],[{"index":{"value":17},"size":{"value":37}},"0df7d0e1-a95a-47f3-9ea5-b9e54919db2b"]]
{"ide":{"node":{"20f2ff1b-8932-48e5-ba25-b59d15bf7d58":{"position":{"vector":[-495.9664,199.92416]}},"2d6c6cae-414b-4174-8450-afabd042ae93":{"position":{"vector":[-652.0,87.0]}},"7ba77f90-2cf9-4402-a3ab-d6f1e6585d51":{"position":{"vector":[-584.0,115.0]}},"32dd808a-0633-4648-994c-691653c6e758":{"position":{"vector":[-506.0,116.0]}}}}}

Expected Result
As the main is executed, IDE gets a computed notification for result (left-hand side of the node assignment).
Actual Result
No such update is emitted.
See the following ws log excerpt:
{"jsonrpc":"2.0","id":6,"method":"executionContext/push","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","stackItem":{"methodPointer":{"definedOnType":"Main","file":{"rootId":"b120858a-8d4e-4a76-9d4c-85efa4cbfb24","segments":["src","Main.enso"]},"name":"main"},"positionalArgumentsExpressions":[],"thisArgumentExpression":null,"type":"ExplicitCall"}}} | 364 | 01:51:39.246 |
{"jsonrpc":"2.0","id":6,"result":null} | 38 | 01:51:39.248 |
{"jsonrpc":"2.0","id":7,"method":"file/exists","params":{"path":{"rootId":"b120858a-8d4e-4a76-9d4c-85efa4cbfb24","segments":["visualization"]}}} | 144 | 01:51:43.607 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"edf2376f-4edf-4c43-9111-461dc29cef3d","type":null,"shortValue":"UnresolvedSymbol<mulAdd>","methodCall":null}]}} | 260 | 01:51:43.910 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"fecdad1c-9451-4d2b-a7fd-4aad5550de40","type":"Main","shortValue":"Main","methodCall":null}]}} | 242 | 01:51:43.912 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"2d6c6cae-414b-4174-8450-afabd042ae93","type":"Number","shortValue":"5","methodCall":{"file":{"rootId":"b120858a-8d4e-4a76-9d4c-85efa4cbfb24","segments":["src","Main.enso"]},"definedOnType":"Main","name":"mulAdd"}}]}} | 365 | 01:51:43.912 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"7ba77f90-2cf9-4402-a3ab-d6f1e6585d51","type":"Unit","shortValue":"Unit","methodCall":null}]}} | 242 | 01:51:43.912 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"20f2ff1b-8932-48e5-ba25-b59d15bf7d58","type":"Number","shortValue":"6","methodCall":null}]}} | 241 | 01:51:43.913 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"abd6952c-ab14-4574-8b8d-a089142c37cf","type":"Number","shortValue":"6","methodCall":null}]}} | 241 | 01:51:43.913 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"7ba77f90-2cf9-4402-a3ab-d6f1e6585d51","type":"Unit","shortValue":"Unit","methodCall":null}]}} | 242 | 01:51:43.913 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"20f2ff1b-8932-48e5-ba25-b59d15bf7d58","type":"Number","shortValue":"6","methodCall":null}]}} | 241 | 01:51:43.913 |
{"jsonrpc":"2.0","method":"executionContext/expressionValuesComputed","params":{"contextId":"66443a03-cc8e-4b04-8376-972d8ce4e431","updates":[{"id":"abd6952c-ab14-4574-8b8d-a089142c37cf","type":"Number","shortValue":"6","methodCall":null}]}} | 241 | 01:51:43.913 |
{"jsonrpc":"2.0","id":7,"result":{"exists":false}} | 50 | 01:51:43.914

There's no update for AST with ID 743ce364-07f6-465f-8640-11fc0cbf306e, i.e. for the result variable.
Enso Version
61b285f182f33459439135928ea0acc3958b2c10

I don't understand what value would you expect there? The interpreter works on a tree, so the left hand side of assignment evaluates to "position 1 in current execution frame" (more specifically, doesn't get evaluated at all because it get's constant-folded during static analysis), the right hand side to the assigned value and the assignment is a side-effecting computation of "put the result of RHS into position 1 in current execution frame". There is no "value" the LHS of an assignment could return.

But in case we have pattern like Pos x y = here.compute_position we need to know what is a type of x and y, even if the variables are not used anywhere, to make the proper output port coloring.

Hmmmm. OK, I see the problem. This requires some careful thought, I think we'll just have to equip the interpreter with the ability to report assignment events. Question is, how blocking is it, given that the language does not currently support this syntax?

how blocking is it

Very blocking for the output port coloring and some more tricky features in the searcher (like using pattern sub-part for "this" argument). As for how these features are important — @farmaazon  ?

given that the language does not currently support this syntax?

Is there any place I can check what language currently supports — and what I can confidently use, test and develop against, reporting all things as a bugs?
Or at least some central set of working code examples?

Very blocking for the output port coloring and some more tricky features in the searcher

Without the pattern match problem, you can just use the value of the RHS.

Is there any place I can check what language currently supports

Not really, we should get better at pointing out the parts of the spec that are not implemented.

Or at least some central set of working code examples

There's quite a large corpus of short & sweet samples in our tests https://github.com/enso-org/enso/tree/main/engine/runtime/src/test/scala/org/enso/interpreter/test/semantic
Also the standard library is growing currently, so you can look at https://github.com/enso-org/enso/tree/main/distribution/std-lib/Base and https://github.com/enso-org/enso/tree/main/test/Test

So, if the syntax of Position x y =  is not supported anyway, we also cannot support multiple output ports anyway. So I think this task is not really blocker for us.


ContentDialog background does not follow UI theme settings

Describe the bug
Although I have set "RequestedTheme = ElementTheme.Dark" to ContentDialog

But its background part is still white following the system theme
If TeachingTip pops up at this time, ContentDialog will become more white and difficult to recognize

Steps to reproduce the bug

Steps to reproduce the behavior:

Set RequestedTheme = ElementTheme.Dark to ContentDialog
Set the Windows color to “Light”

Expected behavior

like this

Screenshots

Version Info

NuGet package version:

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

November 2019 Update (18363)
Yes

May 2019 Update (18362)

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

Device form factor
Saw the problem?

Desktop
Yes

Mobile

Xbox

Surface Hub

IoT

Additional context

The ContentDialog's content are reparented into a popup, which is likely what is causing this. It is disconnected from the parent chain to get any property that is not explicitly routed to the popup content anymore.

Thanks @ranjeshj .
I detect somthign similar here; by default having the dark theme, the opening content dialog remains light.

The ContentDialog's content are reparented into a popup, which is likely what is causing this.

will this be ever fixed? I also see this when I use ACR User Dialogs to show progress dialog which is implemented as ContentDialog.

Did you try settng explicit value?
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

Did you try settng explicit value?

where should this be added? I use a nuget package in Xamarin.Forms app and the UWP app has the issue that the progress is white while the rest of the app is dark as I want it to have.

can't you set it in xaml <ContentDialog ... /> as for a <Page /> ?

can't you set it in xaml <ContentDialog ... /> as for a <Page /> ?

No, I don't use any XAML to call this lib:
var config = new ProgressDialogConfig
{
	MaskType = MaskType.Gradient,
	IsDeterministic = false,
	Title = "foo"
};

var pd = UserDialogs.Instance.Progress(config);

using (pd)
{
	ret = await barAsync();
	pd.Hide();
}

And this shows an endless progressdialog which is always white background no matter what RequestedTheme I set

Setting the background doesn't help as the all the controls inside the ContentDialog aren't updated with the proper theme colors. I'm looking into some other workarounds and will report back.

Found a workaround by setting the Popup.RequestedTheme on the Opened event:
                    dialog.Opened([=](auto const &...) {
                        if (auto popup = GetPopup()) {
                            popup.RequestedTheme(button.ActualTheme());
                        }
                        });

Here's the code in a sample project: https://github.com/lyahdav/CppWinRtUwpSandbox/blob/ContentDialogDarkBug/SharedContent/cppwinrt/MainPage.cpp#L100-L104
And if you want to run it yourself, here's the solution: https://github.com/lyahdav/CppWinRtUwpSandbox/blob/ContentDialogDarkBug/cppwinrt/Calendar.sln

In case anyone is curious, I verified this issue is not fixed in Windows 11:

In my case above workaround works only the first time of content dialog opening, and while showing dialog on next time the content doesn't update with dark theme. Please fix this bug. Due to this we can't go with ContentDialog and need to write our own popup control.

@karthikraja-arumugam if the workaround only works the first time the content dialog opens, you can just recreate the ContentDialog each time it needs to be opened. For context, you can see that workaround in React Native Windows here after it creates a ContentDialog each time: https://github.com/microsoft/react-native-windows/blob/main/vnext%2FMicrosoft.ReactNative%2FModules%2FAlertModule.cpp#L40

@lyahdav  - We have the base content dialog in that we have added the editor to open the other content dialog,
Due to this framework limitation with muti content dialog popup (https://github.com/microsoft/microsoft-ui-xaml/issues/6473)-  we have intailized the content dialog in theme file to resolve the multi content dialog , we could not initialize every time, is there any other way to resolve?

@lyahdav as @Jeyasri-Murugan mentioned we can't use popup or any other dialog within ContentDialog, that's why we need to reuse the same dialog instance.

@Jeyasri-Murugan I'm not really sure then. Perhaps using an event other than ContentDialog.Opened to add the workaround may help, e.g. Loaded event.

Any news on this issue, it's becoming annoying...

Please do not close. Hire some help and fix these issues!

It seems that the WinUI team won't prioritize this issue since there's a workaround, even though the workaround is quite annoying.
Does it mean that we should carefully not integrate the WinUI2/3 library without second thought? 😅

Any progress on this?


Ability to show instructions / code for multiple platforms using a toggle

It would be really cool if the code renderer for our docs website allowed a toggle we can use to show instructions / code samples for multiple platforms / languages (like Linux and Windows instructions, or how to write a component in multiple programming languages).
This would be similar to:

(source: Cloud Run docs)

I have a hacky implementation of this working with the front-end javascript and shortcodes that allows for toggling multiple different languages in code blocks but I am wondering where it could be used in the current state of the documentation for me to make an actual example.

See linear.app's Developer Docs team for more information.


Plugin isn't working

We were using the kyber woocommerce plugin for our e-commerce and it stopped working :/
Sorry, I had all the information on in which ways it failed but it has been since uninstalled and I can't find my notes.
Nevertheless, it was still the best crypto-payment plug-in so I'd be happy to be notified if it gets updated as I would love to use it again!

@Pol-Lanski Thank you for informing us. As it is not in top of our priority, then we have not updated it for a while now. However, with the upcoming update for Kyber 3.0. We will bring it back with more upgrade. I will update the progress here and on Kyber Telegram group also. Thank you one more time for the issue update.

Sorry to revive this... but this was still the best payment plugin we ever had :).
There's no other plugin that gives the user the ability to pay with whatever currency and for the shop to receive the designated stablecoin!

@Pol-Lanski I will use the latest dex-aggregator of KyberSwap to update for the plugin. It is expected to bring back the plugin in one month (no promise but hopefully). Thank you for reminding us.

Hi @halink0803 we just tried the plugin but it is not working :(
It broke the site.  Any plans on bringing this plugin back? Would love to use it.
Thanks

Sorry that the plugin is currently deprecated as the old KyberWidget is outdated. There is no plan to bring it back yet, but I hope we can make it works again.


Issues with replacing root

I'm currently trying to achieve a flow that looks like this:
  graph TD;
     / -- User signs in -->/main;
    /main-->/main/settings;
    /main/settings -- User signs out --> /

Where / is a sign in page, upon successfully signing in /main should become root with no possibility of pressing a back button or sliding from the side to get back to the sign in page. / should only become root again once the user has signed out.
I assumed simply calling Routemaster.of(context).replace("/main") from / would give me the result I wanted but it still ends up being possible to go back from /main to / with an arrow appearing in the app bar. This is despite the route history not including /
RouteHistory(index: 0, canGoBack: false, canGoForward: false, history: [/main])

Is there something I'm missing? I've found this very easy to do with Navigator 1.0 but I'm struggling to do the same thing here.

Hi, Routemaster builds routes based on the URL.
If you have a route at / and /main, then navigating to /main will build both those routes and put them on the navigation stack.
You probably want to use two route maps, and change what page appears at / based on whether the user is logged in or not.


When the mantissa of double is 16 digits, seems to_decimal() not 100% correct

__int64_t intpart = getInteger();
__int64_t fractpart = getInteger();
double dbl = fractpart + 0.000000000000000000000005;
dbl =  dbl / std::pow(10, countDigit(fractpart));  // countDigit return 5 when fractpart is 12345
dbl += intpart;

I want to make sure my double binary representation like<PHONE_NUMBER>0000000000000000000005. So when I run jkj::dragonbox::to_decimal(dbl), I want to make sure I get 123.12345 (of course by (significand, exponent, and is_negative)), so I can verify. I used above code to generate 10000 values. However when significand/mantissa is 16 digits, quite a lot of the decimal are not accurate although I tried most policies.
if significand/mantissa < 16, so far my test looks ok.

I don't quite understand what do you mean. So you think<PHONE_NUMBER>0000000000000000000005 is the correct answer, or 123.12345 is the correct answer? What do you mean by not accurate? Can you give me some more examples?

double d= 12345678.87654321; its bin representation could be 12345678.87654320999; or 12345678.87654321001. And I can't use C++ any function to display reliably. Otherwise we don't need these beautiful tools at the first beginning.
I wish my way of<PHONE_NUMBER>0000000000000000000005 will force any tool to print 123.12345. Maybe here is a problem by itself.
I used std::to_string(intpart) +"." +  std::to_string(fractpart). So I know my double should be 12345678.87654321.  I feed 12345678.87654321000000000000000000000005 to to_decimal().
should the result be of 12345678.87654321?
Most my data out of 10000 set are ok but some. For example : -98557617.67322599 becomes -98557617.67322598. and -87279759.99344321 becomes -87279759.9934432.

I still don't understand what are you trying to do.

-98557617.67322599 becomes -98557617.67322598. and -87279759.99344321 becomes -87279759.9934432.

Those have exactly the same binary representations.
The reason why -98557617.67322598 is chosen is because it's closer to the true value the binary representation is referring to.
The reason why -87279759.9934432 is chosen is because it's shorter but still has the same binary representation.
Can you please elaborate what are you trying to achieve, and what exactly is the problem?

What I trying to do is to test the tool's reliability by using my way of
generating double values which I know what they are.
On Sat, 25 Nov 2023, 14:21 Junekey Jeon, @.***> wrote:

I still don't understand what are you trying to do.
-98557617.67322599 becomes -98557617.67322598. and -87279759.99344321
becomes -87279759.9934432.
Those have exactly the same binary representations.
The reason why -98557617.67322598 is chosen is because it's closer to the
true value the binary representation is referring to.
The reason why -87279759.9934432 is chosen is because it's shorter but
still has the same binary representation.
Can you please elaborate what are you trying to achieve, and what exactly
is the problem?
—
Reply to this email directly, view it on GitHub
https://github.com/jk-jeon/dragonbox/issues/51#issuecomment-1826229226,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BCWSL2EPKS2CJYCQPQ33HBTYGGE7LAVCNFSM6AAAAAA7ZZNKZCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRWGIZDSMRSGY
.
You are receiving this because you authored the thread.Message ID:
@.***>

By "the tool" you mean dragonbox? What's "my own way" precisely?
I gave you an explanation on why certain outputs are generated, and for the purpose of this library those are the correct answers and what you proposed are wrong answers. You still didn't clarify what exactly you want to see as the outputs.

Let me try my best to see whether I can make it across.
__int64_t intpart = getInteger(); // assume using random gen to generate 8 digits.
__int64_t fractpart = getInteger();
double dbl = fractpart + 0.000000000000000000000005;
dbl =  dbl / std::pow(10, countDigit(fractpart));  // countDigit return 5 when fractpart is 12345
dbl += intpart;

std::string myDouble = std::to_string(intpart) + "." + std::to_string(fractpart);  // to this effect

I ran the above code 10000 times. I print myDouble so I have these 10000 double values by string.
Also in my mind, my actual double value should be myDouble plus 0.000000000000000000000005.  For example double imaginedValue = -98557617.67322599000000000000000000000005 (maybe wrong as your comments. But this is a value I thought should be).  I call auto v = jkj::dragonbox::to_decimal(imaginedValue);
then I expect v.significand ==<PHONE_NUMBER>322599. But according to my test, it's<PHONE_NUMBER>322598.
I can understand your explanation. However when I restricted significand < 16, then all are totally correct. So in a way proved my way could make sense? Otherwise<PHONE_NUMBER>32259 (15 digits now) could be<PHONE_NUMBER>32258 (15 digits now) which can be explained as your above stmt?

I think this is not really an issue with Dragonbox. I recommend you to study how floating-point actually works. There are many reading materials, like this: https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html.
Or this seems like a very good introduction: https://floating-point-gui.de/
After you got some basic understanding, then you may be able to understand what the three guarantees advertised in the README actually mean.

do you mind repeating the three guarantees here? I might miss them.

The algorithm guarantees three things:

It has the roundtrip guarantee; that is, a correct parser interprets the generated output string as the original input floating-point number. (See here for some explanation on this.)

The output is of the shortest length; that is, no other output strings that are interpreted as the input number can contain less number of significand digits than the output of Dragonbox.

The output is correctly rounded: the number generated by Dragonbox is the closest to the actual value of the input number among possible outputs of minimum number of digits.

These are exactly what are I want to confirm. I don't want to take for grant.

I mean, to be honest it seems like your understanding of how floating-point works doesn't sound very accurate...
If it were accurate you may be able to immediately tell that numbers like 98557617.67322599000000000000000000000005 doesn't really exist in the realm of floating-point numbers...
In short, your test code is not guaranteed to produce the correct result, regardless of that 0.000000000000000000000005 part. Among others, you don't know if the exact number you generated is the shortest possible representation of the number that is being actually stored.

I totally agree with you that I don't understand how floating-point works. Let's try another way that how I can test 10000 16-significand double values to verify? In another word, I need to know these 10000 doubles to compare with to_decimal() results. How to make them exactly the same as a purpose instead of :  yes, they could be last digit different because of this that theory, yet to_decimal() results are correct.
I have confidence in the tool, otherwise I might not spent effort here.

Note that if you want to test if Dragonbox works correctly, then you have to test it against another code that supposedly produces the correct outputs. But how would you know that another code produces the correct output?
The thing is, merely finding the output with the roundtrip/shortest/correct rounding guarantee is already not a trivial task. You simply can't do that with just a few lines of code. Of course, that's unless you use a library that exactly does that, but yeah, will you believe that library then?
The only way to correctly test Dragonbox without having a fairly good understanding of the floating-point inner working is, to test it against supposedly more battle-tested libraries.  This can't be done otherwise, as far as I can tell.

I agree with your last comments.
my way:
generate two integers (di and df). and put them together to become a double as di.df.  I print di and df as string and use the result as correct result. Now try to see whether to_decimal(di.df) can give me the same result.
Anyway let's close this topic.

For the dummies evtl. confused by this thread: You can't expect all
16-digit strings to sustain string -> binary64 ( double ) -> string roundtrips.
The precision relation between doubles and decimal values varies with their
magnitude relation, and in some ranges not all 16-digit decimal values have
a matching binary representation. There are just too few binaries available.
E.g. below 1.0 0.9999999999999999, 0.9999999999999998 and 0.9999999999999997
are representable, while 0.9999999999999995 is not.
For one of the values you mentioned it looks like:
98557617.67322603  <- representable,
---- GAP ----
98557617.67322601  <- representable,
98557617.673226       <- representable,
---- GAP ----
98557617.67322598  <- representable,
98557617.67322597  <- representable,
---- GAP ----
98557617.67322595  <- representable,
98557617.67322594  <- representable,

For that reason the string 98557617.67322599 you provide is lost in the first
decimal string to binary64 conversion. Simply lost, no way to get back.
( In turn above e.g. 1.0 and 10.0 you have more than all 16-digit decimals
'convertable', but also some 17-digiters ( 1.0000000000000002 ), but that
doesn't really help against the confusion. )

0.9999999999999999, 0.9999999999999998 and 0.9999999999999997 are not exactly representable as float64 either. The highest exactly-representable 64bit float values below 1.0 are
0.99999999999999988897769753748434595763683319091796875
0.9999999999999997779553950749686919152736663818359375
0.99999999999999966693309261245303787291049957275390625
0.999999999999999555910790149937383830547332763671875
0.99999999999999944488848768742172978818416595458984375
0.9999999999999993338661852249060757458209991455078125
0.99999999999999922284388276239042170345783233642578125
0.99999999999999911182158029987476766109466552734375
0.99999999999999900079927783735911361873149871826171875
where the above are usually rounded to 0.9999999999999999, 0.9999999999999998, 0.9999999999999997, etc, since those are the shortest strings where the closest representable float is the desired one.
But none of the above rounds to 0.9999999999999995. Therefore, 0.9999999999999995 is not a possible output from Dragonbox; passing 0.9999999999999995 to an accurate float parser will return the same value as the input 0.9999999999999994.

@Alcaro ... :-)   you are welcome hair_splitter
the values you mentioned are not 'representables', but are the binary64
values, exactly converted to and described by their decimal weight.
'being representable' was meant as 'having a binary available as deputy for the
decimal! value'. You know about such things, and I hope we made it clear
enough that dummies with no prior knowledge can understand.
( That's better than 'read Goldberg', that won't help, they won't understand. )

@Alcaro @newbie-02 ,
Very glad your new inputs helping me to understand this binary to decimal conversion concept/issues.
When I tested this lib, I randomly generated 10000 double numbers by restricting their significant say to 11 by my way as describe above, the lib can "get back" correctly. Same for significant 12, 13, 14, and 15. Can I say this not "representables/gap" issue will only happen when significant reaches 16 and beyond?

@chengm204  That's certainly not true in the strongest sense imaginable, because the effective number of significand digits for so-called subnormal numbers can be much less than 15
However, for normal numbers, that is indeed the case. You can find such a statement in the Wikipedia page; see the section IEEE 754 double-precision binary floating-point format: binary64.
Roughly speaking, this is because double (more precisely, IEEE-754 binary64) has 53 bits for the binary significand. Ignore the exponent part both in decimal and in binary, then this roughly means that the gap between adjacent representable numbers is $2^{-53}\approx 1.11\times 10^{-16}$. Hence, the gap is bigger than $10^{-16}$, but is smaller than $10^{-15}$, so there cannot be more than two numbers with at most 15 decimal significand digits in the interval of real numbers corresponding to a single instance of IEEE-754 binary64. That means, if a number with at most 15 decimal significand digits is converted to an instance of IEEE-754 binary64, then that number must be the unique number with at most 15 decimal significand digits corresponding to the same instance of IEEE-754 binary64.
(More precise explanation that takes into account of the exponent part is also possible, but the take away is that it doesn't change the overall picture that much.)

@jk-jeon
May I say market price should be normal number because these are for people to read?
How to create subnormal number by c++ code automatically?
Thanks.

@chengm204 Your method actually cannot generate any single subnormal numbers. The largest subnormal number is of the order of 10^-310.
If you generate IEEE-754 binary64 uniformly randomly (which is far from what you're doing), the chance of having a subnormal number is $1/2048\approx 5$%.

1/2048 is not 5%. It's 0.05%.

@Alcaro Lol. Right.

Hi Gentlemen. First of all Merry X'mas!
Here is my takeway:

for normal number, if significand <= 15, guaranteed roundup to proper decimal from binary64.
if it's 16 significand, 0.05% percent roundup deviation for subnormal number.

"The largest subnormal number is of the order of 10^-310." is a very small number. 98557617.67322599 in binary should be a subnormal number. I did not get the point.

@chengm204 : still no,

for normal number, if significand <= 15, guaranteed roundtrip to proper decimal from binary64,
for normal number, if significand > 15, some 16-sig-digit figures not representable in binary64, percentage varies with accounted domain, all > 15 dig decimals, 16 dig decimals, 16-17 dig. decimals, including denormals ... ??? fails mostly for 'high' values starting with 9, 8, 7 ... very rare if any for leading digit 1 .. 4 .
for subnormal numbers: the smaller the value the less digits significand / representable, rule of thumb:

<=1E-322	3 repr. digits,
<=1E-321	4
<=1E-320	5
...
<=1E-309	16

e.g. 5E-325 is the only! SRT understood binary64 value between 0 and 1E-323, thus for this range and 16 digit strings about 99.99999999999999 roundtrip fail quote.

@newbie-02
Let me try to summarize to see whether I have fully understood the concept:
•	For normal number, if significand <= 15, guaranteed roundtrip to proper decimal from binary64.
•	Largest subnormal number starts from 1E-309 (10^-310). For subnormal numbers: the smaller the value the less digits significand /representable.
•	SRT(algo/lib?, _S_ignificand/_R_epresentable T) can understand subnormal number up to 1E-323?
•	For normal number, if significand > 15, most likely a roundup/get-back failure happens to 'high' values starting with 9, 8, 7 ... very rare if any for leading digit 1 .. 4 .
•	All these normal number failures plus un-representable subnormal account 0.05% of total binary64 values.
•	5E-325 is the only representable after 1E-323?

Let me try to summarize to see whether I have fully understood the concept:

you look somewhat persistent in trying to mis-understand ...  no, binary floating point numbers are not! designed to follow your or mine 'simple thinking'.
• For normal number, if significand <= 15, guaranteed roundtrip to proper decimal from binary64.
( a round-trip isn't 'from binary', but 'binary -> decimal -> binary' and / or 'decimal -> binary -> decimal',
• Largest subnormal number starts from 1E-309 (10^-310). For subnormal numbers: the smaller the value the less digits significand /representable.
( no, 'largest subnormal' is 0<PHONE_NUMBER>0 (0).<PHONE_NUMBER>1111111111111111111111111111111111111111 in bits, weighting ~ 2.225073858507201E-308 in decimal for binary64. )
• SRT(algo/lib?, Significand/Representable T) can understand subnormal number up to 1E-323?
( no, 'SRT' stands for Shortest Round Tripping )
• For normal number, if significand > 15, most likely a roundup/get-back failure happens to 'high' values starting with 9, 8, 7 ... very rare if any for leading digit 1 .. 4 .
( no, it's a complex concept of 'round to nearest, ties to even' ( binary! ) if a un-representable 16-digit decimal will become rounded up or down )
• All these normal number failures plus un-representable subnormal account 0.05% of total binary64 values.
( no, looking 'from binary' you won't get 'failures', whereever a binary64 converts to a 16-digit decimal that 16-digit decimal will / shall / should convert back to the origin binary64 value. But your experimenting started from decimal values, and some of them are not representable in binary64. I haven't counted, assume it near ( 16 - 15.954589770191001 ) * 100 percent ( of normals ) for 'normals'-range, and over 99 % ( of possible 16-digit decimal values in binary64 denormals range ) for denormals. If you need distinct numbers or in general to pimp up your knowledge I propose to take www.weitz.de/ieee , stiff the values in and count success in getting back what simple minded users would expect vs. slightly different results. ).
• 5E-325 is the only representable after 1E-323?
( no,
A: you need to define your scope, the 5E-324 is the Shortest Round Tripping decimal correspondent to the smallest available subnormal binary64 value above 0, 0<PHONE_NUMBER>0 (0).<PHONE_NUMBER>000000000000000000000000000000000000000001 in bits, weighting appr. 4.9406564584124654E-324 in decimal. The situation is different in e.g. binary32, binary128 ... .
B: you need to define your 'direction', 'before' or 'after' depends on your POV ( Point Of View ) looking 'from 0' the situation is different to looking from 'above',
C: you need to account '0' and negative values? looking 'from 0' there are a lot of subnormals and then a huge number of 'normals' after 1E-323, looking from 'above 1E-323' there is 5E-324 'after' it, then 0, then -5E-324, then -1E-323, then about 4.5035996273704930E15 negative subnormal binary64 values, and then a huge number of 'normal' negative binary64 figures. )
All above isn't and can't be a complete correction of your mis-understandings, nor a complete explanation of binary floating point numbers. For further investigations I propose:

 the 'Weitz' IEEE calculator  ,
  What Every Programmer Should Know About Floating-Point Arithmetic  ,
 What Every Computer Scientist Should Know About Floating-Point Arithmetic
expect it a ~three years process until somewhat proper understanding ... :-(

@newbie-02
I'll not try to summarize it.
May I say my previous experiment is decimal-->binary-->decimal trip and is one valid test? If yes, then first of all, all my input are normal data? And (16 - 15.954589770191001 ) * 100 percent (roughly 5% and these 5% are all 16 digits normal number) are not representable in bindary64 (current C++ double)? So these normal numbers will fail to finish binary-->decimal  journey?

It seems my decimal-->binary-->decimal trip understanding above looks ok.

..... please ......
use this tool: www.weitz.de/ieee and see your input 98557617.67322599

being a valid 16-significant-digit decimal value,
but NOT all such values representable in iEEE 754 binary64 values,
thus becoming 98557617.67322598
thus you have 'bad 16-dig-decimal' -> binary64 -> 'good 16-dig-decimal' -> binary64 -> 'good 16-dig-decimal' ...

@newbie-02
Trying to understand all your previous information as a picture:

@chengm349 ... It's hard to say, but you appear to me to be one of the toughest 'I don't want to understand' cases I've ever met.
But you are putting effort into learning, that's commendable, maybe you should find another field.
Have you worked through the study tour I gave you in previous comment It wasn't a joke, it definitely made sense and is necessary for you.
Please try to enter 1.234567890123456E-320 in the Weitz Calculator and see what happens, and try to understand 'SRT' as 'shortest round tripping' decimal string for a binary representation' which means decimal -> binary64 approximation, binary64 approximation -> SRT decimal, SRT decimal -> the same binary64 approximation. And try to understand subnormals as 'graceful degradation', a ramp down from ~16 digits precision at the biggest to only 1 digit precision at the smallest one.


rollback produces exception: Transaction query already complete

Introduction
Rollback with the exception object as parameter produces the exception: Transaction query already complete
Issue Description
The fact that this strange exception intervenes prevents me from accessing the exception of node-postgres to identify violation errors contraint of the database. And the truth did not understand that generated that exception for more than investigate. But I discovered that if I extracted the variable of exception (e) that I put as a parameter of the rollback, the exception was not generated and if there was a duplicate key or problem of foreing key, it only released those exceptions as is correct.
Steps to reproduce issue
            `.catch(function(e) {`
                    `console.log('Error durante registro de persona!!!', e);`
                    `### t.rollback(e);`
                    `console.log('Crear registro de persona cancelado (rollback).');`
                    `return Promise.reject(e);`
           `})`

Expected behaviour
Some exception expected.
Capture any expected exception due to violation constraint or another of the database (postgres).
Actual behaviour
Transaction query already complete, run with DEBUG=knex:tx for more info
Solution found after analysis, trial and error:
t.rollback instead of t.rollback(e)
Because I found examples of rollback with the exception as a parameter and I copied it in my source code.

I don't understand what the problem is, and your code sample is insufficient to figure it out, but it sounds like this is probably a Knex issue, since it's what provides the transaction interface.

Closing this due to lack of response- If you have anything more to add we can reopen this issue.


HBASE-24163 MOB compactor implementations should use format specifiers when calling String.format

Signed-off-by: stack<EMAIL_ADDRESS>Signed-off-by: Viraj Jasani<EMAIL_ADDRESS>Signed-off-by: Josh Elser<EMAIL_ADDRESS>

FYI @BukrosSzabolcs

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
1m  3s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ branch-2 Compile Tests _

+1 :green_heart:
mvninstall
2m 19s
branch-2 passed

+1 :green_heart:
compile
2m 15s
branch-2 passed

+1 :green_heart:
checkstyle
0m 33s
branch-2 passed

+1 :green_heart:
spotless
0m 41s
branch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
1m 18s
branch-2 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m 10s
the patch passed

+1 :green_heart:
compile
2m 14s
the patch passed

-0 :warning:
javac
2m 14s
hbase-server generated 1 new + 192 unchanged - 1 fixed = 193 total (was 193)

+1 :green_heart:
checkstyle
0m 31s
the patch passed

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
11m 48s
Patch does not cause any errors with Hadoop 3.1.2 3.2.2 3.3.1.

+1 :green_heart:
spotless
0m 39s
patch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
1m 23s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 11s
The patch does not generate ASF License warnings.

32m 22s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4706

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile

uname
Linux 8ce6af393516 5.4.0-122-generic #138-Ubuntu SMP Wed Jun 22 15:00:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
branch-2 / b83165cf60

Default Java
AdoptOpenJDK-1.8.0_282-b08

javac
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/artifact/yetus-general-check/output/diff-compile-javac-hbase-server.txt

Max. process+thread count
65 (vs. ulimit of 30000)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/console

versions
git=2.17.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

This is for aligning the code?

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 54s
Docker mode activated.

-0 :warning:
yetus
0m  5s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ branch-2 Compile Tests _

+1 :green_heart:
mvninstall
2m 22s
branch-2 passed

+1 :green_heart:
compile
0m 34s
branch-2 passed

+1 :green_heart:
shadedjars
3m 53s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 23s
branch-2 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m  4s
the patch passed

+1 :green_heart:
compile
0m 34s
the patch passed

+1 :green_heart:
javac
0m 34s
the patch passed

+1 :green_heart:
shadedjars
3m 54s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 20s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
185m 39s
hbase-server in the patch passed.

202m 14s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4706

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux 7463f699fa97 5.4.0-1071-aws #76~18.04.1-Ubuntu SMP Mon Mar 28 17:49:57 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
branch-2 / b83165cf60

Default Java
AdoptOpenJDK-1.8.0_282-b08

Test Results
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/testReport/

Max. process+thread count
2364 (vs. ulimit of 30000)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 54s
Docker mode activated.

-0 :warning:
yetus
0m  4s
Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck

_ Prechecks _

_ branch-2 Compile Tests _

+1 :green_heart:
mvninstall
2m 47s
branch-2 passed

+1 :green_heart:
compile
0m 42s
branch-2 passed

+1 :green_heart:
shadedjars
4m  6s
branch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 25s
branch-2 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
2m 27s
the patch passed

+1 :green_heart:
compile
0m 42s
the patch passed

+1 :green_heart:
javac
0m 42s
the patch passed

+1 :green_heart:
shadedjars
4m  6s
patch has no errors when building our shaded downstream artifacts.

+1 :green_heart:
javadoc
0m 23s
the patch passed

_ Other Tests _

+1 :green_heart:
unit
184m 27s
hbase-server in the patch passed.

203m 23s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/4706

Optional Tests
javac javadoc unit shadedjars compile

uname
Linux 34b71f7a2224 5.4.0-1081-aws #88~18.04.1-Ubuntu SMP Thu Jun 23 16:29:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
branch-2 / b83165cf60

Default Java
AdoptOpenJDK-11.0.10+9

Test Results
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/testReport/

Max. process+thread count
2759 (vs. ulimit of 30000)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-4706/1/console

versions
git=2.17.1 maven=3.6.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

This is for aligning the code?

@Apache9 Yes it's one of the missing patches that @BukrosSzabolcs listed on HBASE-27154.

This is for aligning the code?

@Apache9 Yes it's one of the missing patches that @BukrosSzabolcs listed on HBASE-27154.

I mean the problem describe on HBASE-24163 does not exist on branch-2. But anyway, no harm to align the code .

I mean, maybe @BukrosSzabolcs or @busbey can confirm. I'd rather not backport changes that are not required.

I mean, maybe @BukrosSzabolcs or @busbey can confirm. I'd rather not backport changes that are not required.

The problem on master is we change to use slf4j style formatter but actually we do not use slf4j here, it is String.format...
On branch-2 we even do not use String.format, we just use '+' to concat the error message so no actually bug...

Yep, I see that. I wonder what patch brought in the bug that this one fixed on master, it apparently hasn't been back ported to branch-2 yet.
Anyway, I'll continue this backport so that the active release lines remain fairly similar.

One of the distributed mob compaction changes brought in this bug on master


Isolate.spawn should have generic type arguments

current
static Future<Isolate> spawn(void entryPoint(message), var message, ...)

suggested
static Future<Isolate> spawn<T>(void entryPoint(T message), T message, ...)

It makes sense since we are working with actual functions in the current isolate, so we can do the type testing locally.

I believe this issue should be closed. /cc @kevmoo

Thanks.


Add grouping feature

Find a clean way to group multiple libs into one. This will reduce the number of downloads for example a vaadin project that at the moment makes up 53 jars

IMO, the easiest way is just to put it all in one jar without modification, and combine all the dependencies in the pom
you can just split in different directories and use a specific directory _grouped or something so that the client library knows that it should look for multiple packages.
For the importmap, we can either merge or have multiple importmap (but better merge I guess)

And package.json ? multiple in subfolder ?

And package.json ? multiple in subfolder ?

yes, it's already what's done in some libraries. e.g. https://www.npmjs.com/package/react-bootstrap?activeTab=code (look at the different dirs)
and it's also what's done in node_modules. For web-bundler (or I guess any other client) if we flag it as a group and copy all the directories, the end result is the exact same as having them split..


selectRow needs a class property

Since you can't set a width with a table header, selectRow should have a property to assign a class to the column.

You can assign columnClassName on TableHeaderColumn, check these all example

selectRow isn't entered into the table as a separate TableHeaderColumn, though, so you can't set a classname on it.

why need selectRow?

To have checkboxes for selecting a row for an action. That's what it's for, right?

yes, but if you want to set column class on table, just assign columnClassName on TableHeaderColumn, check these all example. It's not a matter with selectRow.
Your goal is give your custom class on column, am I right?

Someone here is very confused. selectRow creates a column of checkboxes which are not created using TableHeaderColumn. I'd like that column to have a class as one of its properties.
    const selectRowProp = {       mode: 'checkbox',       onSelect: this.onRowSelect.bind(this),       onSelectAll: this.onSelectAll.bind(this)     };
Oh blah... that's from an example in your docs, but I just looked at the full docs, and it lists className as an allowed property for the selectRow object.
But to clarify: selectRow is not created by the component having TableHeaderColumn for the select checkbox column. The other columns are created that way, just not the select column. That's what I was trying to say.
So anyway, thanks for responding so quickly, and sorry I didn't find the part of the docs earlier where className can be a property for the selectRow settings object.

Thaht's ok, dont mind :)

@AllenFang I am still confused on this one.
Goal: custom CSS class on the FIRST column, the one with the checkboxes

columnClassName can be used on TableHeaderColumn but TableHeaderColumn is not responsible of rendering the first column
className on selectRow is the class of the selected row, so nothing to do with the first column

What is the solution?

@stilllife00 It's been a while, but iirc putting a className in the selectRow object worked for me.