Cannot use slot name "quit" in PySide6 when compiled

I am aware that you do not recommend bundling pytest, but I explained why I am doing it, and I wondered if "Windows fatal exception: access violation" sounds serious enough to take the off-chance of finding and fixing a more general issue.
This is my current environment - the same thing happens on Python 3.10.10:
C:\code\project>python -m nuitka --version
1.5rc12
Commercial: None
Python: 3.11.2 (tags/v3.11.2:878ead1, Feb  7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)]
Flavor: Unknown
Executable: C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Scripts\python.exe
OS: Windows
Arch: x86_64
WindowsRelease: 10
Version C compiler: C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.34.31933\bin\HostX64\x64\cl.exe (cl 14.3).

Nuitka:INFO: Successfully created 'bug.dist\bug.exe'.
=================================================================================== test session starts ===================================================================================
platform win32 -- Python 3.11.2, pytest-7.2.1, pluggy-1.0.0
PySide6 6.4.2 -- Qt runtime 6.4.2 -- Qt compiled 6.4.2
rootdir: C:\Code\bug
collected 1 item

BUG~1.DIS\test_bug.py Windows fatal exception: access violation

Current thread 0x00005fc4 (most recent call first):
  File "C:\Code\bug\BUG~1.DIS\pytestqt\wait_signal.py", line 34 in wait
  File "C:\Code\bug\BUG~1.DIS\pytestqt\qtbot.py", line 440 in wait
  File "C:\Code\bug\BUG~1.DIS\pytestqt\qtbot.py", line 474 in waitUntil
  File "C:\Code\bug\BUG~1.DIS\test_bug.py", line 2 in test_bug
  File "C:\Code\bug\BUG~1.DIS\_pytest\python.py", line 195 in pytest_pyfunc_call
  File "C:\Code\bug\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\bug\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\bug\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\bug\BUG~1.DIS\_pytest\python.py", line 1789 in runtest
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 167 in pytest_runtest_call
  File "C:\Code\bug\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\bug\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\bug\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 260 in <lambda>
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 339 in from_call
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 259 in call_runtest_hook
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 220 in call_and_report
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 131 in runtestprotocol
  File "C:\Code\bug\BUG~1.DIS\_pytest\runner.py", line 112 in pytest_runtest_protocol
  File "C:\Code\bug\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\bug\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\bug\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\bug\BUG~1.DIS\_pytest\main.py", line 349 in pytest_runtestloop
  File "C:\Code\bug\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\bug\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\bug\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\bug\BUG~1.DIS\_pytest\main.py", line 324 in _main
  File "C:\Code\bug\BUG~1.DIS\_pytest\main.py", line 270 in wrap_session
  File "C:\Code\bug\BUG~1.DIS\_pytest\main.py", line 317 in pytest_cmdline_main
  File "C:\Code\bug\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\bug\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\bug\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\bug\BUG~1.DIS\_pytest\config\__init__.py", line 167 in main
  File "C:\Code\bug\BUG~1.DIS\bug.py", line 1 in <module>

I somewhat guessed this might be a Windows-only issue, but it seems to reproduce on WSL as well (cannot tell for sure, as the stack trace is empty):
bug.sh:
#!/bin/sh
python -m pip install PySide6-Essentials pytest-qt git+https://github.com/Nuitka/Nuitka

python -m nuitka \
    --standalone \
    --static-libpython=no \
    --enable-plugin=pyside6 \
    --include-data-file=test_bug.py=./ \
    --include-module=PySide6.QtTest \
    --include-module=pytest \
    --include-module=_pytest \
    --include-module=pytestqt \
    bug.py

bug.dist/bug.bin

Output:
[...]
Nuitka:INFO: Successfully created 'bug.dist/bug.bin'.
====================================================================================== test session starts ======================================================================================platform linux -- Python 3.10.10, pytest-7.2.1, pluggy-1.0.0
PySide6 6.4.2 -- Qt runtime 6.4.2 -- Qt compiled 6.4.2
rootdir: /mnt/c/Code/bug
collected 1 item

bug.dist/test_bug.py Fatal Python error: Segmentation fault

Current thread 0x00007fb3e20e6c40 (most recent call first):

Extension modules: xxsubtype, shiboken6.Shiboken, PySide6.QtCore, PySide6.QtGui, PySide6.QtWidgets, PySide6.QtTest (total: 6)
Segmentation fault

The Linux one is also 3.10, which removes 3.11 out of the equation. Saying WSL is not very informative generally, as that is like telling me the virtualization technique, but we do not care for the kernel interactions, do we. So a --version output from there would also be nice.
I am not sure what qtbot is in all of this, can you explain a bit what this is and how it knows to pass that arg.

Saying WSL is not very informative generally, as that is like telling me the virtualization technique, but we do not care for the kernel interactions, do we. So a --version output from there would also be nice.

Right, sorry for that. Version output on 3.11:
$ python -m nuitka --version
1.5rc12
Commercial: None
Python: 3.11.2 (main, Feb 12 2023, 13:27:53) [GCC 11.3.0]
Flavor: pyenv
Executable: /home/bers/.pyenv/versions/project_3.11/bin/python3
OS: Linux
Arch: x86_64
Distribution: Ubuntu (based on Debian) 22.04.1
Version C compiler: /usr/bin/gcc (gcc).

I am not sure what qtbot is in all of this, can you explain a bit what this is and how it knows to pass that arg.

qtbot is what pytest calls a fixture, and it is provided by pytest-qt through the pytestqt.qtbot.QtBot class. It is instantiated by pytest which passes some request, and which I believe is the reason that

Instances of this class should be accessed only by using a qtbot fixture, never instantiated directly.

(https://pytest-qt.readthedocs.io/en/latest/reference.html)
That makes debugging a bit more tricky. Ultimately, I expect that the failure in pytestqt/wait_signal.py is independent of qtbot, but the reproduction is tricky without it as everything is required to use some QThread.
Update: here's a variant of the issue that does not use qtbot at all.
bug.py:
import time
from PySide6.QtCore import QCoreApplication
from pytestqt.wait_signal import MultiSignalBlocker, qt_api

def wait(ms):
    # from https://github.com/pytest-dev/pytest-qt/blob/f166fa765e251322d54f7277a1a59909035ed772/src/pytestqt/qtbot.py#L451-L452
    blocker = MultiSignalBlocker(timeout=ms, raising=False)
    blocker.wait()

def waitUntil(callback, *, timeout=5000):
    # from https://github.com/pytest-dev/pytest-qt/blob/f166fa765e251322d54f7277a1a59909035ed772/src/pytestqt/qtbot.py#L513-L545
    start = time.time()

    def timed_out():
        elapsed = time.time() - start
        elapsed_ms = elapsed * 1000
        return elapsed_ms > timeout

    timeout_msg = f"waitUntil timed out in {timeout} milliseconds"

    while True:
        try:
            result = callback()
        except AssertionError as e:
            if timed_out():
                raise TimeoutError(timeout_msg) from e
        else:
            if result not in (None, True, False):
                msg = (
                    "waitUntil() callback must return None, True or False, returned %r"
                )
                raise ValueError(msg % result)

            # 'assert' form
            if result is None:
                return

            # 'True/False' form
            if result:
                return
            if timed_out():
                raise TimeoutError(timeout_msg)
        wait(10)

application = QCoreApplication()
qt_api.set_qt_api("pyside6")
waitUntil(lambda: False)

Compiling and running this variant on Linux leads to a Segmentation fault. On Windows, there is no obvious error, but the process finishes pretty much instantly, rather than timing out after 5 seconds as it should (and as it does when you run python bug.py). So something is wrong on both OSes.

I wouldn't be surprised, if pytestqt.wait_signal had too firm ideas about what a Python function is. Can you find a pointer to its source code?

Can you find a pointer to its source code?

Yes, and fortunately it is fairly self-contained:
https://github.com/pytest-dev/pytest-qt/blob/f166fa765e251322d54f7277a1a59909035ed772/src/pytestqt/wait_signal.py#L295

Minimized further - this is fully independent of pytest now:
bug2.py:
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
# nuitka-project: --include-module=PySide6.QtGui

from PySide6.QtCore import QCoreApplication, QEventLoop, QTimer

application = QCoreApplication()

class Blocker:
    def wait(self):
        self.loop = QEventLoop()
        self.timer = QTimer(self.loop)
        self.timer.setSingleShot(True)
        self.timer.setInterval(10)
        self.timer.timeout.connect(self.quit)
        self.timer.start()
        self.loop.exec()

    def quit(self):
        self.timer.timeout.disconnect(self.quit)
        self.timer.stop()
        self.timer = None
        self.loop.quit()

def callback():
    return None

def wait():
    Blocker().wait()

print("This should run forever.")
while True:
    callback()
    wait()

bug2.bat:
@echo off
python -m pip install PySide6-Essentials git+https://github.com/Nuitka/Nuitka
python -m nuitka bug2.py && bug2.dist\bug2.exe

Output:
[...]
Nuitka:INFO: Keeping build directory 'bug2.build'.
Nuitka:INFO: Successfully created 'bug2.dist\bug2.exe'.
This should run forever.
(And then the process ends nonetheless.)

Minimized somewhat more and made it fail more explicitly.
bug2.py:
# nuitka-project: --quiet
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
# nuitka-project: --include-module=PySide6.QtGui
from PySide6.QtCore import QCoreApplication, QEventLoop, QTimer

class Blocker:
    def __init__(self):
        self.loop = QEventLoop()
        timer = QTimer(self.loop)
        timer.timeout.connect(self.quit)  # fails
        # timer.timeout.connect(self.loop.quit)  # works
        # timer.timeout.connect(lambda: self.quit())  # works
        # timer.timeout.connect(lambda: self.loop.quit())  # works
        timer.start()
        self.loop.exec()

    def quit(self):
        self.loop.quit()

QCoreApplication()
print("Wait 1 ...")
Blocker()
print("Wait 2 ...")
Blocker()
print("Done.")

Interesting how only self.quit fails, while it's content self.loop.quit and both lambda work fine. Looks like something with functions as you guessed above.

That's really good job. Not sure why you have # nuitka-project: --include-module=PySide6.QtGui in there, that should never have been necessary for anything?
What has been observed in the past, is that overloaded methods do not work well. But since I am not seeing a base class here, but the name quit may actually be part of the problem. I will be able to reproduce this nicely and check with Qt company what this could be about. Previously I associated it with base class methods, but it seems it might be purely about the name of that function.
I suspect in Qt that is supposed to have a different signature, and maybe part of the code that allows for less arguments towards python, is discriminating against compiled functions still.

That's really good job. Not sure why you have # nuitka-project: --include-module=PySide6.QtGui in there, that should never have been necessary for anything?

Yes, I guess this can be omitted. I think I remember it was necessary in one of the intermediate steps when I still used pytestqt.wait_signal.qt_api.

What has been observed in the past, is that overloaded methods do not work well. But since I am not seeing a base class here, but the name quit may actually be part of the problem.

Interesting - Blocker.quit can be renamed and the bug still reproduces:
# nuitka-project: --quiet
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
from PySide6.QtCore import QCoreApplication, QEventLoop, QTimer

class Blocker:
    def __init__(self):
        self.loop = QEventLoop()
        timer = QTimer(self.loop)
        timer.timeout.connect(self._quit)  # fails
        # timer.timeout.connect(self.loop.quit)  # works
        # timer.timeout.connect(lambda: self._quit())  # works
        # timer.timeout.connect(lambda: self.loop.quit())  # works
        timer.start()
        self.loop.exec()

    def _quit(self):
        self.loop.quit()

QCoreApplication()
print("Wait 1 ...")
Blocker()
print("Wait 2 ...")
Blocker()
print("Done.")

pytestqt.wait_signal.MultiSignalBlocker does not have a quit method either, it's called _quit_loop_by_timeout there. So it must be about (the name of) PySide6.QtCore.QEventLoop.quit().

I will be able to reproduce this nicely and check with Qt company what this could be about.

Good luck!

Somehow I still don't think quit is the problem, unless the same holds true for exit. This example does not contain quit in any way:
# nuitka-project: --quiet
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
from PySide6.QtCore import QCoreApplication, QEventLoop, QTimer

class Blocker:
    def __init__(self):
        timer = QTimer(loop)
        print("You see this twice")
        timer.timeout.connect(self._return)
        print("You don't see this twice")
        timer.start()
        loop.exec()

    def _return(self):
        loop.exit()

QCoreApplication()
loop = QEventLoop()
Blocker()
Blocker()

Yes, I agree that should have worked. Either PySide6 regressed with regards to Nuitka, or I am really surprised to see this. I will check it out for sure, but not right now.

Great, and no rush. I will continue to add relevant bits of information to this issue.
If this issue is a PySide regression, it has regressed a while ago. Also, the Python version seems to have an impact, which also speaks against a PySide regression, as it is using the same binaries for all supported Python versions, if I am not mistaken.

I can reproduce it using PySide6 v6.2.0 (from October 2021) on Python 3.10.10
Using slightly modified code (replace PySide6 by PySide2, and exec by exec_):

I can reproduce it using PySide2 v<IP_ADDRESS> (from January 2022) on Python 3.10.10
I can not reproduce it using PySide2 v<IP_ADDRESS> (from January 2022) on Python 3.9.13
I can not reproduce it using PySide2 v5.15.1 (from September 2020) on Python 3.9.13

Use the same code doesn't mean it works. Python runtime is very different after all and interactions with it can become incorrect, and assumptions violated.
My commercial PySide2 wheels are I think only to Python 3.9, simply because there is no point in using PySide2 with Python 3.10 due to OS support usually being the reason why people stay on PySide2. So I don't support that.
But that probably means 3.9 and PySide6 will also work, assuming this is an old bug.

When I made the original PySide6 patches, 3.10 was not yet a thing, so I am pretty sure I developed them against 3.9 and saw that work pretty well. Maybe something about methods has changed unexpectedly. This not working almost suggests barely anything could work, however that is not true I hope. And I think I would know. These timers maybe have something special about them.

But that probably means 3.9 and PySide6 will also work, assuming this is an old bug.

Just checked - only partially. On Python 3.9.13, it broke between PySide6 v6.0.4 and v6.1.0:

I can reproduce it using PySide6 v6.4.2 (from January 2023) on Python 3.9.13
I can reproduce it using PySide6 v6.1.2 (from July 2021) on Python 3.9.13
I can reproduce it using PySide6 v6.1.0 (from May 2021) on Python 3.9.13
I can not reproduce it using PySide6 v6.0.4 (from May 2021) on Python 3.9.13
I can not reproduce it using PySide6 v6.0.0 (from December 2020) on Python 3.9.13

That's great, because this enables me to git bisect it. So it was good when did it pre-release, but quickly broke afterwards. I am currently ill, and need to take care of 3.11 I think, but I will try and set this up again on the side, and git bisect it to where it broke, and then we should know what it was. Of course it might be entirely unrelated things. Building PySide6 from git was kind of a pain from my memory, so don't hope for a quick thing.

Take your time! I quickly glanced at https://github.com/qtproject/pyside-pyside-setup/compare/6.0.4...6.1.0 and came across https://github.com/qtproject/pyside-pyside-setup/commit/773e1105251a03131cbbdf4abcb0580cb425ff60, which mentions your name. I wonder if this rings a bell - otherwise, it may be one of the other 350+ commits (sounds awful, but may be tackled with 9 bisections).

That is the commit with which Nuitka compatibility was added. I think it was merged before 6.0, but I might be wrong.

I think it was merged before 6.0, but I might be wrong.

I may be misunderstanding the GitHub UI, but the commit appears in https://github.com/qtproject/pyside-pyside-setup/compare/6.0.4...6.1.0, and the commit page says

dev
v6.4.2 v6.4.1 v<IP_ADDRESS> v6.4.0 v6.3.2 v6.3.1 v6.3.0 v6.2.4 v6.2.3 v<IP_ADDRESS> v6.2.2 v6.2.1 v6.2.0 v6.1.3 v6.1.2 v6.1.1 v6.1.0

So it doesn't appear to me as if it has been in v6.0.4 or earlier.

I was able to further reduce the code example. Turns out you don't need an event loop, you don't need a QApplication, and you can reuse the same QTimer instance (although it may be easier to debug if you create a new instance in __init__):
# Windows: python -m nuitka bug2.py && bug2.dist/bug2.bin
# Linux: python3 -m nuitka bug2.py && bug2.dist\bug2.bin
# nuitka-project: --quiet
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
# nuitka-project: --static-libpython=no
from PySide6.QtCore import QTimer

class Blocker:
    def __init__(self):
        print("Connecting timer...")
        timer.timeout.connect(self.pass_method)
        print("Timer connected!")

    def pass_method(self):
        pass

timer = QTimer()
Blocker()
Blocker()

Two more things I noticed:

QTimer().timeout.connect(self.pass_method) leads to RuntimeError: method 'connect' vanished! (even in non-compiled code). Not sure what that means, but maybe is has to do with timer.timeout.connect(self.pass_method) segfaulting.
timer.timeout.connect(pass_function) does not reproduce the error, nor does timer.timeout.connect(Blocker.pass_method). It has to be something very specific, such as the argument of connect being a method of the same instance.

And this is not specific to QTimer at all. Here's the same thing with QThread:
# Windows: python -m nuitka bug2.py && bug2.dist/bug2.bin
# Linux: python3 -m nuitka bug2.py && bug2.dist\bug2.bin
# nuitka-project: --quiet
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
# nuitka-project: --static-libpython=no
from PySide6.QtCore import QThread

class Blocker:
    def __init__(self):
        print("Connecting thread...")
        thread.finished.connect(self.pass_method)
        print("Thread connected!")

    def pass_method(self):
        pass

thread = QThread()
Blocker()
Blocker()

I think at this point, my summary becomes "Cannot connect a class method to a signal from within the class twice".

Here's another funny variant that shows that you can reuse the same Blocker instance, and don't need to connect the same kind of signal twice:
# Windows: python -m nuitka bug2.py && bug2.dist\bug2.exe
# Linux: python3 -m nuitka bug2.py && bug2.dist/bug2.bin
# nuitka-project: --quiet
# nuitka-project: --standalone
# nuitka-project: --enable-plugin=pyside6
# nuitka-project: --static-libpython=no
from PySide6.QtCore import QThread, QTimer

class Blocker:
    def __init__(self):
        self.connect_thread()
        self.connect_timer()

    def connect_thread(self):
        thread = QThread()
        thread.finished.connect(self.pass_method)

    def connect_timer(self):
        timer = QTimer()
        timer.timeout.connect(self.pass_method)

    def pass_method(self):
        pass

Blocker()
print("Done")

Trying to bring the latest example code down to the level of signals (I failed so far), I have noticed that the following stop/segfaults as well:
python -c "from PySide6.QtCore import SignalInstance; SignalInstance().connect(); print('Done')"

I wondered if we should report this upstream to see what happens once that is fixed, and then I came across https://bugreports.qt.io/browse/PYSIDE-79, "Segfault when using connect". That bug from 2012(!) was fixed mere two weeks ago, and the fix will be part of v6.4.3. I guess we should wait for that version to be releases to see if it also fixes this issue.

Wow - I still need to double-check that a few times, but I think it is working now with PySide6-Essentials and shiboken6 v6.5.0a1.dev1678205284, probably due to the most recent commits in https://bugreports.qt.io/browse/PYSIDE-79

Are we talking about https://codereview.qt-project.org/c/pyside/pyside-setup/+/465293/1/sources/pyside6/libpyside/pysidesignal.cpp

Are we talking about https://codereview.qt-project.org/c/pyside/pyside-setup/+/465293/1/sources/pyside6/libpyside/pysidesignal.cpp

No, that one is so recent that it's not included in their CI builds on https://download.qt.io/snapshots/ci/pyside/dev/, so I wasn't able to test it yet.
I had thought it must be some other commit from that bug. However, going back further in their CI builds, it seems the problem does not reproduce even with dev builds going back around four months. Bisecting the builds on https://download.qt.io/snapshots/ci/pyside/dev/ makes me suppose that the change is between 55f6d0fb5a5e859a026a0f82742ade3c44a0297c (last bad) and 5b5cb391ccc318128946c64154a3284ae434bf8a (first good). When you go to https://code.qt.io/cgit/pyside/pyside-setup.git/commit/?id=5b5cb391ccc318128946c64154a3284ae434bf8a, you can click the parent link to go through all commits between those two, it's about 48 commits. I did that quickly, and found the following candidates:

https://code.qt.io/cgit/pyside/pyside-setup.git/commit/?id=5b5cb391ccc318128946c64154a3284ae434bf8a
https://code.qt.io/cgit/pyside/pyside-setup.git/commit/?id=15ccf2484e605a9188fc0b00a5b0ee59197f2734
https://code.qt.io/cgit/pyside/pyside-setup.git/commit/?id=1270a9e82e5bc3bd53a1131698ece60403da1192

For the record:
bug2.bat:
@echo off
rem pyenv-venv uninstall bug2
rem pyenv-venv install 3.11.2 bug2
rem pyenv-venv activate bug2
rem bug2.bat > bug2.txt 2>&1

python -m pip install --upgrade pip
python -m pip install https://github.com/Nuitka/Nuitka/archive/ab59f9bd0c25a39aaab870b6570d477a46731130.zip

rem failing (1x Done)
python -m pip uninstall PySide6 PySide6-Essentials PySide6-Addons -y
python -m pip install https://download.qt.io/snapshots/ci/pyside/dev/55f6d0fb5a5e859a026a0f82742ade3c44a0297c/split_wheels/PySide6_Essentials-6.4.0a1.dev1669368954-cp37-abi3-win_amd64.whl https://download.qt.io/snapshots/ci/pyside/dev/55f6d0fb5a5e859a026a0f82742ade3c44a0297c/split_wheels/shiboken6-6.4.0a1.dev1669368954-cp37-abi3-win_amd64.whl
if exist bug2.cmd del bug2.cmd
if exist bug2.exe del bug2.exe
if exist bug2.dist rmdir /s /q bug2.dist
if exist bug2.build rmdir /s /q bug2.build
python bug2.py
python -m nuitka --quiet bug2.py
call bug2.cmd
echo -------------------------

rem working (2x Done)
python -m pip uninstall PySide6 PySide6-Essentials PySide6-Addons -y
python -m pip install https://download.qt.io/snapshots/ci/pyside/dev/5b5cb391ccc318128946c64154a3284ae434bf8a/split_wheels/PySide6_Essentials-6.4.0a1.dev1670851884-cp37-abi3-win_amd64.whl https://download.qt.io/snapshots/ci/pyside/dev/5b5cb391ccc318128946c64154a3284ae434bf8a/split_wheels/shiboken6-6.4.0a1.dev1670851884-cp37-abi3-win_amd64.whl
if exist bug2.cmd del bug2.cmd
if exist bug2.exe del bug2.exe
if exist bug2.dist rmdir /s /q bug2.dist
if exist bug2.build rmdir /s /q bug2.build
python bug2.py
python -m nuitka --quiet bug2.py
call bug2.cmd
echo -------------------------

bug2.py:
from PySide6.QtCore import QThread, QTimer

class Blocker:
    def __init__(self):
        self.connect_thread()
        self.connect_timer()

    def connect_thread(self):
        thread = QThread()
        thread.finished.connect(self.pass_method)

    def connect_timer(self):
        timer = QTimer()
        timer.timeout.connect(self.pass_method)

    def pass_method(self):
        pass

Blocker()
print("Done")

This looks good actually. Understandable that they do not backport it. Seems as if Nuitka makes the crash not happen, and misbehave instead, but the fix may actually be good for both.

Looks like this is fixed in PySide6 6.5.0. It probably was fixed all along and just waiting to be released.  The release process of Qt must be incredibly full of work. Every fix you put into a hotfix must be absolutely risk free, or you risk repeating the effort, delaying more crucial fixes, and so on.
I guess, for Nuitka it makes sense to update the check for 6.0.4 to 6.5.0 then. So you tested successfully with it?

@bersbersbers don't be unfair. The release process of Qt must be incredibly full of work. Every fix you put into a hotfix must be absolutely risk free, or you risk repeating the effort, delaying more crucial fixes, and so on.

I absolutely agree! My frustration was not aimed at the Qt at all, rather at an unfortunate order of events :) and probably should not have landed here anyway.

I guess, for Nuitka it makes sense to update the check for 6.0.4 to 6.5.0 then. So you tested successfully with it?

Well, the example code isolated in this issue here now runs fine.
But the original app where I discovered this issue still fails with the same "Windows fatal exception: access violation", there there is probably another similar bug waiting to be isolated.

So I am now having these:
        if self._getBindingVersion() < (6, 1, 2):
            self.warning(
                """\
Only PySide 6.1.2 or higher, otherwise callbacks won't work."""
            )

        if self._getBindingVersion() < (6, 5, 0):
            self.warning(
                """\
Only PySide 6.5.0 or higher, otherwise timer slots won't work in all cases."""
            )

I think https://github.com/Nuitka/Nuitka/issues/2086#issuecomment-1455015601 shows that the issue is not restricted to timer slots.  https://bugreports.qt.io/browse/PYSIDE-2141, which I believe is one culprit, is about inherited slots of all types.

Yes, but I am also pretty sure slots worked on some ways. I guess I am making it more general though, won't harm.

@bersbersbers I am not sure now, what exactly remains reproducible and what not.

@bersbersbers I am not sure now, what exactly remains reproducible and what not.

That is a good question, and it helped on my path to finding out why my application still crashes. Actually,

https://github.com/Nuitka/Nuitka/issues/2086#issuecomment-1455017456 seems fixed on PySide6 6.5.0, while
https://github.com/Nuitka/Nuitka/issues/2086#issue-1603884345 (my original report) still crashes using Nuitka v1.5.5 and PySide6 v6.5.0.

I am low on time this week so I may not bisect all my examples in this issue today, but I think this information is enough to conclude a few things:

Something has definitely improved with v6.5.0
Still, the original issue still exists (which I might have noticed if I had checked it with the 6.5.0 prerelease, but I never guessed this would be a multi-root problem)
Your warning message regarding 6.5.0 could be omitted for now since even in 6.5.0 all PySide signals do not work reliably. (One might say that 6.5.0 works better than 6.4.3, but who will this help if still doesn't fully work.)

By the way, this issue might also be renamed since it is not specific to any slot name.

You would be surprised how many people do not have issues with PySide6 and Nuitka, and fewer issues is very important of course. If I waited for the perfect PySide6/Nuitka release to advise people, we all would be very old when it happens. :)
That said, we need to isolate the issue as narrow as possible and then check out, what we can do.

That said, we need to isolate the issue as narrow as possible and then check out, what we can do.

I already checked #2086#issuecomment-1449751988, the next-closest example to the original code, and that is passing on 6.5.0 after adding
# nuitka-project: --include-module=PySide6.QtGui
# nuitka-project: --include-module=PySide6.QtTest

So the error is somewhere in the code of qtbot.waitUntil(lambda: False) but not in the waitUntil implementation I isolated in #2086#issuecomment-1449751988. Somehow still reminds me of PYSIDE-2141, which is about inherited slots, and that still looks somewhatr like it.

Are you saying that pytestqt has implicit dependencies on PySide6.QtTest and PySide6.QtGui in the first bit?

Yes, but that is not the issue - that is taken care of by the Nuitka command-line arguments in bug,bat. The issue is an access violation (Windows) / segmentation fault (Linux).

Notice with --python-flag=-v you might be able to spot things that pyqtest attempted to import, but failed to succeed. Maybe just one more?

I don't see anything more useful with -v, unfortunately.

The remaining one is much harder to isolate. I cannot seem to get right of pytest.main, nor can I move SignalBlocker into test_bug.py to get rid of pytestqt. I wonder if other debugging tools are needed.
bug.bat
@python -m nuitka ^
    --standalone ^
    --enable-plugin=pyside6 ^
    --include-data-file=test_bug.py=./ ^
    --include-module=PySide6.QtTest ^
    --include-module=pytest ^
    --include-module=_pytest ^
    --include-module=pytestqt ^
    bug.py && bug.dist\bug.exe

bug.py
import pytest

# import test_bug; test_bug.test_bug() # does not crash
pytest.main([__file__ + "/.."])

test_bug.py
import time

from PySide6.QtCore import QCoreApplication
from pytestqt.wait_signal import SignalBlocker, qt_api

def wait():
    start = time.time()

    def timed_out():
        elapsed = time.time() - start
        return elapsed * 1000 > 500

    while True:
        if timed_out():
            raise TimeoutError("")
        SignalBlocker(timeout=1, raising=False).wait()

def test_bug():
    QCoreApplication()
    qt_api.set_qt_api("pyside6")
    wait()

Anyway, running bug.bat gives me (note "Windows fatal exception: access violation")
Nuitka-Options:INFO: Used command line options: --standalone --enable-plugin=pyside6 --include-data-file=test_bug.py=./ --include-module=PySide6.QtTest --include-module=pytest --include-module=_pytest --include-module=pytestqt bug.py
Nuitka:WARNING: The Python version '3.11' is only experimentally supported by Nuitka '1.5.5', but an upcoming release will change that. In the mean time use Python version '3.10' instead or newer
Nuitka:WARNING: Nuitka.
Nuitka:INFO: Starting Python compilation with Nuitka '1.5.5' on Python '3.11' commercial grade 'not installed'.
Nuitka-Plugins:INFO: pyside6: Injecting pre-module load code for module 'PySide6':
Nuitka-Plugins:INFO: pyside6:     Adding binary folder to runtime 'PATH' environment variable for proper Qt loading.
Nuitka-Plugins:INFO: options-nanny: Note, when using 'PySide6', consider using '--disable-console' option. Otherwise a terminal window will open. However for debugging, terminal output is the easiest way to see informative traceback information.
Nuitka-Plugins:INFO: pyside6: Injecting post-module load code for module 'PySide6.QtCore':
Nuitka-Plugins:INFO: pyside6:     Setting Qt library path to distribution folder. We need to avoid loading target
Nuitka-Plugins:INFO: pyside6:     system Qt plugins, which may be from another Qt version.
Nuitka-Plugins:WARNING: anti-bloat: Undesirable import of 'unittest' at 'C:\Users\bers\.pyenv-win-venv\envs\project_3.11\Lib\site-packages\_pytest\unittest.py:66' encountered. It may slow down
Nuitka-Plugins:WARNING: compilation.
Nuitka-Plugins:WARNING:     Complex topic!
Nuitka-Plugins:INFO: multiprocessing: Injecting post-module load code for module 'multiprocessing':
Nuitka-Plugins:INFO: multiprocessing:     Monkey patching "multiprocessing" for compiled methods.
Nuitka-Plugins:INFO: pkg-resources: Injecting post-module load code for module 'pkg_resources':
Nuitka-Plugins:INFO: pkg-resources:     Registering Nuitka loader with "pkg_resources".
Nuitka:INFO: Completed Python level compilation and optimization.
Nuitka:INFO: Generating source code for C backend compiler.
Nuitka:INFO: Running data composer tool for optimal constant value handling.
Nuitka:INFO: Running C compilation via Scons.
Nuitka-Scons:INFO: Backend C compiler: cl (cl 14.3).
Nuitka-Scons:INFO: Backend linking program with 196 files (no progress information available).
Nuitka-Scons:INFO: Compiled 196 C files using clcache with 194 cache hits and 2 cache misses.
Nuitka-Options:INFO: Included data file 'test_bug.py' due to specified data file 'test_bug.py=./' on command line.
Nuitka-Plugins:INFO: pyside6: Including Qt plugins 'iconengines,imageformats,platforms,styles,tls' below 'PySide6\qt-plugins'.
Nuitka-Plugins:INFO: dll-files: Found 1 file DLLs from numpy installation.
Nuitka:INFO: Keeping build directory 'bug.build'.
Nuitka:INFO: Successfully created 'bug.dist\bug.exe'.
======================================================================================== test session starts ========================================================================================
platform win32 -- Python 3.11.2, pytest-7.3.0, pluggy-1.0.0
rootdir: C:\Code\project
configfile: pyproject.toml
collected 1 item

BUG~1.DIS\test_bug.py F                                                                                [100%]

============================================================================================= FAILURES ==============================================================================================
_____________________________________________________________________________________________ test_bug ______________________________________________________________________________________________

Windows fatal exception: access violation

Current thread 0x000031b4 (most recent call first):
  File "<frozen importlib._bootstrap>", line 690 in _load_unlocked
  File "<frozen importlib._bootstrap>", line 1149 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1178 in _find_and_load
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1128 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1178 in _find_and_load
  File "<frozen importlib._bootstrap>", line 241 in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1128 in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1178 in _find_and_load
  File "C:\Code\project\BUG~1.DIS\_pytest\_io\terminalwriter.py", line 203 in _highlight
  File "C:\Code\project\BUG~1.DIS\_pytest\_io\terminalwriter.py", line 192 in _write_source
  File "C:\Code\project\BUG~1.DIS\_pytest\_code\code.py", line 1153 in _write_entry_lines
  File "C:\Code\project\BUG~1.DIS\_pytest\_code\code.py", line 1171 in toterminal
  File "C:\Code\project\BUG~1.DIS\_pytest\_code\code.py", line 1076 in toterminal
  File "C:\Code\project\BUG~1.DIS\_pytest\_code\code.py", line 1046 in toterminal
  File "C:\Code\project\BUG~1.DIS\_pytest\reports.py", line 89 in toterminal
  File "C:\Code\project\BUG~1.DIS\_pytest\terminal.py", line 1038 in _outrep_summary
  File "C:\Code\project\BUG~1.DIS\_pytest\terminal.py", line 1019 in summary_failures
  File "C:\Code\project\BUG~1.DIS\_pytest\terminal.py", line 837 in pytest_terminal_summary
  File "C:\Code\project\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\project\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\project\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\project\BUG~1.DIS\_pytest\terminal.py", line 822 in pytest_sessionfinish
  File "C:\Code\project\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\project\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\project\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\project\BUG~1.DIS\_pytest\main.py", line 304 in wrap_session
  File "C:\Code\project\BUG~1.DIS\_pytest\main.py", line 316 in pytest_cmdline_main
  File "C:\Code\project\BUG~1.DIS\pluggy\_callers.py", line 9 in _multicall
  File "C:\Code\project\BUG~1.DIS\pluggy\_manager.py", line 77 in _hookexec
  File "C:\Code\project\BUG~1.DIS\pluggy\_hooks.py", line 244 in __call__
  File "C:\Code\project\BUG~1.DIS\_pytest\config\__init__.py", line 166 in main
  File "C:\Code\project\BUG~1.DIS\bug.py", line 1 in <module>

One observation I made just now is that in https://github.com/Nuitka/Nuitka/issues/2086#issue-1603884345, the access violation seems to happen during testing, while in the most recent code in https://github.com/Nuitka/Nuitka/issues/2086#issuecomment-1503214360, it is after testing. The call stacks are also completely different - it's pytestqt\wait_signal.py in the former, but _pytest\_io\terminalwriter.py in the latter.
However, my main application still fails with pytestqt\wait_signal.py access violation. It feels a bit like whack-a-mole :)

I think the workaround for a corruption bug of PySide6 might actually help. Please checkout develop or 1.5.7

Oh yes! The code from https://github.com/Nuitka/Nuitka/issues/2086#issue-1603884345 with this batch file crashes in the first and seconds sections, while it works in the third one:

Not quite sure why 0610c281914f762801d03adb36019c84c879007b alone does not fix it, though, and I do not see anything obvious in https://github.com/Nuitka/Nuitka/compare/0610c281914f762801d03adb36019c84c879007b...a4d19208af74fc991eb5486cb75f1b933362c320. But a4d19208af74fc991eb5486cb75f1b933362c320 works, and that is great. Will test my full app next.

Will test my full app next.

Oh lord, it looks like that  is working for the first time since I started trying Nuitka :)
Thanks for whatever you did to fix this 🥇

Not quite sure why 0610c28 alone does not fix it, though

I think that observation may be incorrect. I git-bisected and found that 0610c281914f762801d03adb36019c84c879007b seems to be working while it's parent is not:
git bisect start
# status: waiting for both good and bad commits
# good: [a4d19208af74fc991eb5486cb75f1b933362c320] New pre-release.
git bisect good a4d19208af74fc991eb5486cb75f1b933362c320
# status: waiting for bad commit, 1 good commit known
# good: [0610c281914f762801d03adb36019c84c879007b] Standalone: Added workaround for PySide6 problem
git bisect good 0610c281914f762801d03adb36019c84c879007b
# status: waiting for bad commit, 2 good commits known
# bad: [c849f1ae381b7b9f3b515fd58b731a7be79d89cd] Anti-Bloat: Avoid "pytest" in newer "networkx" package
git bisect bad c849f1ae381b7b9f3b515fd58b731a7be79d89cd

Also, 0610c281914f762801d03adb36019c84c879007b fixed the issue on both Windows and Linux.
Since I spend so much time on this, would you care to explain what the problem is/was? Is there a PySide6 issue related to this?

I agree. And I would love to tell you I am very happy for your work, this has tremendously helped, esp. with the 6.5 improvements they did to know of them.
The workaround is needed by pyqtgraph because it actually cleans up stuff. Your test framework for Qt likely does too. That is not working well, so far.
Actually, the story is a pretty sad one for Nuitka. So in order to be faster, functions have a free list. When a function is released, the memory is retained, and later when another function is created, that memory becomes assigned a different function. Now if a function is released, but still used, a "use after free" occurs. And thanks to the free list, the function either is the same one still, in which case, nothing particularily bad happens, or it's another one. This is a kind of corruption that is less crashing than what I would like it to be.  If that memory became an int object, more likely it would segfault, but with Nuitka now that is barely happening. In that way, any wrong release of a function is relatively quickly problematic.
The other side of the story is that PySide6 when given object methods, and then disconnects the signal, either due to the object  becoming unreferenced or the signal being disconnected, it then releases the underlying function object, for which this can be the last reference, releasing it to the free list.
The workaround just keeps references to the object, preventing the cleanup from happening. Then the PySide6 bug does not trigger. At some point, obviously, we will fix PySide6 to take a reference to the function and release it to disconnect properly. We then will be able to make that monkey patching to leak references unnecessary. Since that will always be a slower process, the workaround is applied. Plus, some commercial users will always not update PySide6 happily.
With that, I think we can close the issue, as the fix should be in 1.5.7 right now. Let me know if I misread your last statement, I think you retracted the problem statement later? It's never clear, when the last bug is found. But the reason that disconnects are rare, probably explains well, why this went undiscovered for a long time.

Thanks for the explanation. Yes, this can be closed, I am currently not aware of any other code part that may be crashing. For the record, I think I would change the title of this issue, maybe something like this?

Access violation/segmentation fault when disconnecting PySide6 signals


Example Code Doesn't Work Out of the Box (README)

I know that there are assumptions made in the example code in the README and other places in demonstrating how to use react-router.  Why not complete them by adding easy history and page load examples so that users can quickly catch on to how to add this to their app? Asking for a friend :smile:

I don't think it'd be helpful there. The full example is already quite long, and that's skipping two of the components. Maybe it'd be best just to have a link to the full examples after that code snippet.


Auto reload of .nlog configuration file works only once.

NLog version: 5.2.5
Platform:  .NET6
Current NLog config XML

<variable name="logDirectory" value="C:/Logs/" />
<variable name="logFileName" value="DxServerClientApi" />

<targets>
	<target
	  xsi:type="ColoredConsole"
	  name="console"
	  detectConsoleAvailable ="true"
	  layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />

	<target
		xsi:type="File"
		name="file"
		layout="${longdate} ${pad:padding=-5:inner=${uppercase:${level}}} ${pad:padding=-8:inner=${uppercase:${logger}}} ${message}"
        fileName="${logDirectory}${logFileName}.log"
        keepFileOpen="true" />

</targets>

<rules>
	<logger name="DX_HNDLR" minlevel="Trace" writeTo="console,file" />
	<logger name="HIST_LOG" minlevel="Trace" writeTo="console,file" />
	<logger name="DXSERVER" minlevel="Trace" writeTo="console,file" />

	<!-- logger name="*" minlevel="Trace" writeTo="console,file " / -->
</rules>

What is the current result?
After program start NLOG configuration is picked up as intended from"MyApplication.nlog" file.
First change to this file is also picked up correct.
All subsequent changes are NOT picked up anymore.

I cannot reproduce your issue. I'm using the following NLog.config:
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      internalLogToConsole="true"
      internalLogLevel="Debug"
      autoReload="true">
  <variable name="logDirectory" value="C:/Logs/" />
  <variable name="logFileName" value="DxServerClientApi" />

  <targets>
    <target
      xsi:type="ColoredConsole"
      name="console"
      detectConsoleAvailable ="true"
      layout="${longdate}|${level:uppercase=true}|${logger}|${message}" />

  </targets>

  <rules>
    <logger name="DX_HNDLR" minlevel="Trace" writeTo="console" />
    <logger name="HIST_LOG" minlevel="Trace" writeTo="console" />
    <logger name="DXSERVER" minlevel="Trace" writeTo="console" />

    <!-- logger name="*" minlevel="Trace" writeTo="console,file " / -->
  </rules>
</nlog>

And the NLog InternalLogger writes the following during startup:
2023-11-13 19:30:15.6134 Debug Watching file-filter 'NLog.config' in directory: C:\Users\snakefoot\source\repos\NLog.Extensions.Logging\Examples\NetCore2\ConsoleExample\bin\Debug\net6.0

And when I open the NLog.config in Notepad, then the following is printed every time I press "Save" (Tried 5 times in a row):
2023-11-13 19:30:59.1341 Info Configuration file change detected! Reloading in 1000ms...
2023-11-13 19:31:00.1478 Info Reloading configuration...

Closing issue as resolved, due to inactivity.


solc ^0.7.2

Hi, I was trying to use waffle with a project pinned to 0.7.4 but I was getting errors of the compiler not being found. This is fixed in 769cd411254bb150ea4b5581b930ecaad73f0037 but I think there is no way of using this until a new version is released.
Tried to install the repo directly from github but since its a monorepo I can't. Is there any way to use this commit right now? Is there a new release planned?
Thanks.

Fix released in version 3.2.1


Attributes option does not work with 'data' attributes

Is there a way to pull data attributes such as data-url?
I've tried the following (example):
{
     title: ".header h1"
   , desc: ".header h2"
   , avatar: {
         selector: ".header img"
       , attr: "data-url"
     }
}

It appears that cheerio has a separate method for handling data attributes:
$elm.data('url')
If this is needed, I can create a PR.

I don't have to test that right now, but I find this more like a Cheerio issue. Can you give me a reference why the attr("data-...") is not working?
If so, contributions are welcome! :+1:
Thanks!

Ah it looks like it was a typo in my code. My bad. Closing.

@alwayssonnyinco Ah, cool! :sweat_smile: Enjoy using it!


Custom object integration using obj2mjcf and controlling their physical properties

Hi,
I am trying to integrate a custom object that I modeled in Blender and used obj2mjcf to get the corresponding XML file into an  existing environment XML.
The modification of the original code file is as follows:
<mujoco>
    <include file="scene.xml"/>
    <include file="vx300s_dependencies.xml"/>

	<asset>
            <!-- loaded all the requisite assets, add this to vx300s_dependencies.xml under assets -->
            <mesh file="custom_object.obj"/>
       </asset>
	<default>
      <default class="wall">
            <geom type="plane" size=".5 .5 .05"/>
      </default>
      <default class="visual">
          <geom group="2" type="mesh" contype="0" conaffinity="0"/>
      </default>
      <default class="collision">
          <geom group="3" type="mesh"/>
      </default>
  </default>

    <worldbody>

        <include file="vx300s_left.xml" />
        <include file="vx300s_right.xml" />

        <body name="custom_object" pos="0 .5 0.1">
           <geom solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0 0 0" size="0.0002" mesh="custom_object" class="visual"/>
           <geom solimp="2 1 0.01" solref="0.01 1" friction="1 0.005 0.0001" pos="0 0 0" size="0.0002" mesh="custom_object" class="collision"/>
    	</body>
</worldbody>

Link to the custom_object.obj file
We are able to get the objects in the environment by including them into the xml as shown above, however we are getting errors in adding essential physics attributes such as the position, size of object, mass, inertia etc. which are necessary for the objects to behave realistically within the MuJoCo environment.

The tiny spec at the top of right of the image is my object, which remains fixed there. I need to get it to the appropriate position near the grippers, as well as have physical properties for appropriate simulation.
What is the best way to go about with this?
Thanks and Regards

This is a very basic question. Try going over the tutorial.


Do we need more information beyond location and number in the event's contact list

Look into if we need more information to better support the migration for all the events tables with information to the new contact list.

Current solution is fine


Able to query contents of a PG vector table, ever after dropping the table.

System Info
Hello,
Thanks for the wonderful extension on PG. I am using on DigitialOcean for my SAAS app where i have different schemas for each tenant. I had installed PG vector in public schema, so that all the tenants could make use of them.
My app is built on OpenAI api and I am using the default method from langchain to define the db
from langchain.vectorstores.pgvector import DistanceStrategy
db = PGVector.from_documents(
documents= docs,
embedding = embeddings,
collection_name= "schema.unique_value",
distance_strategy = DistanceStrategy.COSINE,
connection_string=CONNECTION_STRING)
This create two files in the public scema and i could see and query the contents. below are the tables
langchain_pg_colllection
langchain_pg_embedding
But when i wish to rewrite the contents by deleteing and even dropping the tables, i could still query the content using the below code:
db = PGVector(
collection_name=collection_name,
connection_string=CONNECTION_STRING,
embedding_function=embeddings,
)
retriever = db.as_retriever(
search_kwargs={"k": 5}
)
The deleted table gets automatically restored while query. This feature is strange and not sure what creates it. Also when i pass a non existent value, instead of failing, it creates a new record in the collection table.
I raise this issue with PG_VECTOR but was rightly directed  to reach out to you.
Would seek any inputs to resolve this plase.
Who can help?
@eyurtsev
Information

[X] The official example notebooks/scripts
[ ] My own modified scripts

Related Components

[X] LLMs/Chat Models
[ ] Embedding Models
[ ] Prompts / Prompt Templates / Prompt Selectors
[ ] Output Parsers
[ ] Document Loaders
[X] Vector Stores / Retrievers
[ ] Memory
[ ] Agents / Agent Executors
[ ] Tools / Toolkits
[ ] Chains
[ ] Callbacks/Tracing
[ ] Async

Reproduction
db = PGVector(
collection_name=collection_name,
connection_string=CONNECTION_STRING,
embedding_function=embeddings,
)
retriever = db.as_retriever(
search_kwargs={"k": 5}
)
Expected behavior
The retriever should get only the contents from the table. If not in the table (or table not available) it should fail. Thanks in anticipation

This is awesome reply. couldnt believe its a bot reply. quick and accurate. thanks!!


KeywordRecognizer. RecognizeKeywordOnceAsync blocks thread

Related to https://learn.microsoft.com/en-us/cpp/cognitive-services/speech/keywordrecognizer
When using KeywordRecognizer. RecognizeKeywordOnceAsync and not awaiting the future, the executing thread is still blocked until the keyword is recognised.

@bpasero
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly.


chore: noir bug workaround

This bug caused a few tests to fail in the token contracts. This PR introduces a workaround such that we get the tests passing again. The workaround is unconstraining note encryption.

#9443  👈
master

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

Join @benesjan and the rest of your teammates on  Graphite


update calibration page

@SirSaltyy, in the future don't use ! Just use . That way you'll avoid the weird hydration issues.


[Website] Domain "atomixos.com"

Need to setup a basic landing page which links to wiki pages and points to this repository.

Hello,
I wrote a Pm To you on Facebook,
I am a web developer and I can develop for you a Landing page. Let me know

changed DNS zone settings. It is now pointing to gh-pages branch
You can fork the repo and start working


Request Entity Too Large for url [imdb_watchlist]

Expected behaviour:
sync imdb watchlist to local.

Actual behaviour:
I want to sync imdb watch list to local but I get error "Request Entity Too Large for url"
I get same error where imdb_watchlist is involved.
Steps to reproduce:
executing task watchlist_local
Config:
  watchlist_local:
    priority: 3
    imdb_watchlist:
      user_id: '{? imdb.user_id ?}'
      list: watchlist
    template:
      - reject_documetaries
    seen: local
    list_add:
      - movie_list: Movies

Full config https://pastebin.com/vUpFdQjp
Log:
2019-12-18 11:39 CRITICAL plugin        watchlist_local 413 Client Error: Request Entity Too Large for url: http://www.imdb.com/title/data?ids=tt5074352%2Ctt0198781%2Ctt5013056%2Ctt4154756%2Ctt1825683%2Ctt6644200%2Ctt2798920%2Ctt5628302%2Ctt2704998%2Ctt1433813%2Ctt5253008%2Ctt7860270%2Ctt1677720%2Ctt5610554%2Ctt7098658%2Ctt6217608%2Ctt4686844%2Ctt6213362%2Ctt5742374%2Ctt5164432%2Ctt1485796%2Ctt3501632%2Ctt2395427%2Ctt0848228%2Ctt2015381%2Ctt3896198%2Ctt2250912%2Ctt2283362%2Ctt3498820%2Ctt5478478%2Ctt2231461%2Ctt1413492%2Ctt1211837%2Ctt4500922%2Ctt2873282%2Ctt2527336%2Ctt0974015%2Ctt0458339%2Ctt1431045%2Ctt0111161%2Ctt0068646%2Ctt0071562%2Ctt0468569%2Ctt0108052%2Ctt0167260%2Ctt0137523%2Ctt0110912%2Ctt0060196%2Ctt0120737%2Ctt0109830%2Ctt0080684%2Ctt1375666%2Ctt0167261%2Ctt0099685%2Ctt0133093%2Ctt0076759%2Ctt0114369%2Ctt0102926%2Ctt0114814%2Ctt0120815%2Ctt0816692%2Ctt1675434%2Ctt0103064%2Ctt0407887%2Ctt0088763%2Ctt0172495%2Ctt0482571%2Ctt0078748%2Ctt1853728%2Ctt2380307%2Ctt0910970%2Ctt1345836%2Ctt0090605%2Ctt0105236%2Ctt0086190%2Ctt0986264%2Ctt1187043%2Ctt0114709%2Ctt0361748%2Ctt0435761%2Ctt0119217%2Ctt2106476%2Ctt1832382%2Ctt1049413%2Ctt0372784%2Ctt0095016%2Ctt0113277%2Ctt2096673%2Ctt0268978%2Ctt3170832%2Ctt0993846%2Ctt0434409%2Ctt0083658%2Ctt1291584%2Ctt0477348%2Ctt0167404%2Ctt0469494%2Ctt0084787%2Ctt0266543%2Ctt0118715%2Ctt0091251%2Ctt0266697%2Ctt2119532%2Ctt0892769%2Ctt2267998%2Ctt0758758%2Ctt0405508%2Ctt1856101%2Ctt1979320%2Ctt2024544%2Ctt0405159%2Ctt1392190%2Ctt3315342%2Ctt1895587%2Ctt1392214%2Ctt0264464%2Ctt1201607%2Ctt1280558%2Ctt0088247%2Ctt0440963%2Ctt0325980%2Ctt5463162%2Ctt3606756%2Ctt5220122%2Ctt3766354%2Ctt4912910%2Ctt4123430%2Ctt1024648%2Ctt1504320%2Ctt1010048%2Ctt0120338%2Ctt0066763%2Ctt0079221%2Ctt2283748%2Ctt1954470%2Ctt0242519%2Ctt0374887%2Ctt0292490%2Ctt0200087%2Ctt4849438%2Ctt2377938%2Ctt0220832%2Ctt2631186%2Ctt0499375%2Ctt2883512%2Ctt0425637%2Ctt2911666%2Ctt0884732%2Ctt0455944%2Ctt0373074%2Ctt1600196%2Ctt1631867%2Ctt2397535%2Ctt2872732%2Ctt1170358%2Ctt2310332%2Ctt1809398%2Ctt1877832%2Ctt2338151%2Ctt1409024%2Ctt2245084%2Ctt3659388%2Ctt3205376%2Ctt2652092%2Ctt1798709%2Ctt1872194%2Ctt1790864%2Ctt0790724%2Ctt2562232%2Ctt1646971%2Ctt2866360%2Ctt2713180%2Ctt0829150%2Ctt2582846%2Ctt1091191%2Ctt0296572%2Ctt2084970%2Ctt2170593%2Ctt0118971%2Ctt2692250%2Ctt1392170%2Ctt2446042%2Ctt0369610%2Ctt2103281%2Ctt0808506%2Ctt4651520%2Ctt1323594%2Ctt0454921%2Ctt0787474%2Ctt0238380%2Ctt1667889%2Ctt1921149%2Ctt1865505%2Ctt3682448%2Ctt4046784%2Ctt3385516%2Ctt1440129%2Ctt0808151%2Ctt0486655%2Ctt3397884%2Ctt1772264%2Ctt0840361%2Ctt1951266%2Ctt1800241%2Ctt1355631%2Ctt0465602%2Ctt0903624%2Ctt0186151%2Ctt4178092%2Ctt2820852%2Ctt0478970%2Ctt0406375%2Ctt2199571%2Ctt3848892%2Ctt1037705%2Ctt2937898%2Ctt0787524%2Ctt1951265%2Ctt3079380%2Ctt1490017%2Ctt1253863%2Ctt0804497%2Ctt0837562%2Ctt1690953%2Ctt1731141%2Ctt0397892%2Ctt2726560%2Ctt3501416%2Ctt0206634%2Ctt0796366%2Ctt0453467%2Ctt0473075%2Ctt2305051%2Ctt1216491%2Ctt1981115%2Ctt2872750%2Ctt1454468%2Ctt0831387%2Ctt2379713%2Ctt1032751%2Ctt1823672%2Ctt0443706%2Ctt1583421%2Ctt0245844%2Ctt2224026%2Ctt2494280%2Ctt1386703%2Ctt1340138%2Ctt1663202%2Ctt1060277%2Ctt2024469%2Ctt2802144%2Ctt0109686%2Ctt2039393%2Ctt3460252%2Ctt2179136%2Ctt1596363%2Ctt2357291%2Ctt3799694%2Ctt1899353%2Ctt0499549%2Ctt2582496%2Ctt1343727%2Ctt0372183%2Ctt0217505%2Ctt3447364%2Ctt1220719%2Ctt0127357%2Ctt1791528%2Ctt2888046%2Ctt2381249%2Ctt1645170%2Ctt0241527%2Ctt0304141%2Ctt0295297%2Ctt0373889%2Ctt0330373%2Ctt2709768%2Ctt0417741%2Ctt0242653%2Ctt0234215%2Ctt1386932%2Ctt1126590%2Ctt2059255%2Ctt1457767%2Ctt2488496%2Ctt2848292%2Ctt3065204%2Ctt2452042%2Ctt3235888%2Ctt2908446%2Ctt3040964%2Ctt3488710%2Ctt2948356%2Ctt0420293%2Ctt4263482%2Ctt1124037%2Ctt4319698%2Ctt3531824%2Ctt4136084%2Ctt3521164%2Ctt4550098%2Ctt2140479%2Ctt3076658%2Ctt2140465%2Ctt4172430%2Ctt2005151%2Ctt3631112%2Ctt4034354%2Ctt2404435%2Ctt2277860%2Ctt1355644%2Ctt4624424%2Ctt4786282%2Ctt4196776%2Ctt1216475%2Ctt0317219%2Ctt2543164%2Ctt2267968%2Ctt2510894%2Ctt2788732%2Ctt4160708%2Ctt0382932%2Ctt0371746%2Ctt2975590%2Ctt3393786%2Ctt1300854%2Ctt1228705%2Ctt2660888%2Ctt0800369%2Ctt0770828%2Ctt1408101%2Ctt0317705%2Ctt1270798%2Ctt0988045%2Ctt0120915%2Ctt1130884%2Ctt0926084%2Ctt0258463%2Ctt0416449%2Ctt0126029%2Ctt1217209%2Ctt0121765%2Ctt0096874%2Ctt1250777%2Ctt1935859%2Ctt0120363%2Ctt0120903%2Ctt1430132%2Ctt0240772%2Ctt0383574%2Ctt0381061%2Ctt0936501%2Ctt0097576%2Ctt0119654%2Ctt1179933%2Ctt1843866%2Ctt4572514%2Ctt1860357%2Ctt4302938%2Ctt3748528%2Ctt0121766%2Ctt1979388%2Ctt3183660%2Ctt0349903%2Ctt0441773%2Ctt1981677%2Ctt0079945%2Ctt0084726%2Ctt0088170%2Ctt0102975%2Ctt0098382%2Ctt0092007%2Ctt0117731%2Ctt0253754%2Ctt0120844%2Ctt0111280%2Ctt3416828%2Ctt0268380%2Ctt0486822%2Ctt1454029%2Ctt1679335%2Ctt1473832%2Ctt5613056%2Ctt3691740%2Ctt3890160%2Ctt0891527%2Ctt4361050%2Ctt4430212%2Ctt4190530%2Ctt3721936%2Ctt4698684%2Ctt0248667%2Ctt2582782%2Ctt4169250%2Ctt3263904%2Ctt1951264%2Ctt2294629%2Ctt2381111%2Ctt2513074%2Ctt1638355%2Ctt3464902%2Ctt3011894%2Ctt3640424%2Ctt1619029%2Ctt0115759%2Ctt4425200%2Ctt5362988%2Ctt4276820%2Ctt0790636%2Ctt0437800%2Ctt0451279%2Ctt1670345%2Ctt1961175%2Ctt0378194%2Ctt3110958%2Ctt1959563%2Ctt1615160%2Ctt0189584%2Ctt0120586%2Ctt0112471%2Ctt3203606%2Ctt0190332%2Ctt4649466%2Ctt1065073%2Ctt1259528%2Ctt0112573%2Ctt5397194%2Ctt2980516%2Ctt3411444%2Ctt1298650%2Ctt1590193%2Ctt0112453%2Ctt2547584%2Ctt4555426%2Ctt4062536%2Ctt3416532%2Ctt4846340%2Ctt3606752%2Ctt4385888%2Ctt3387266%2Ctt4034228%2Ctt4540710%2Ctt3470600%2Ctt5052448%2Ctt2671706%2Ctt3741834%2Ctt3666024%2Ctt0449088%2Ctt2167266%2Ctt2852458%2Ctt2350496%2Ctt2203308%2Ctt3169706%2Ctt1355683%2Ctt3322364%2Ctt3792960%2Ctt1620935%2Ctt1878870%2Ctt4209788%2Ctt0244316%2Ctt0485947%2Ctt0480669%2Ctt1258197%2Ctt1148204%2Ctt1276104%2Ctt0421715%2Ctt0464141%2Ctt1139797%2Ctt1182345%2Ctt1588173%2Ctt0448134%2Ctt0050083%2Ctt1255953%2Ctt1305806%2Ctt1074638%2Ctt0081505%2Ctt0443543%2Ctt1229238%2Ctt0364569%2Ctt4972582%2Ctt0338013%2Ctt0366548%2Ctt0983193%2Ctt1515091%2Ctt0298148%2Ctt0472043%2Ctt1365519%2Ctt1477834%2Ctt5095030%2Ctt4881806%2Ctt0299658%2Ctt0138097%2Ctt0105695%2Ctt0099348%2Ctt0097239%2Ctt0095953%2Ctt0091763%2Ctt0093389%2Ctt6053438%2Ctt6499752%2Ctt7784604%2Ctt7668870%2Ctt7040874%2Ctt4575576%2Ctt2119543%2Ctt6257174%2Ctt3750872%2Ctt3892172%2Ctt7336572%2Ctt6182908%2Ctt3104988%2Ctt7349662%2Ctt1517451%2Ctt5052474%2Ctt1691917%2Ctt2980706%2Ctt6566624%2Ctt7014006%2Ctt7890060%2Ctt5688932%2Ctt6679794%2Ctt4244998%2Ctt1213641%2Ctt1270797%2Ctt6850820%2Ctt1502407%2Ctt2388771%2Ctt2737304%2Ctt3759298%2Ctt1846589%2Ctt4701182%2Ctt1727824%2Ctt4218572%2Ctt0245429%2Ctt0120382%2Ctt0457430%2Ctt0414993%2Ctt0139809%2Ctt0390384%2Ctt0092563%2Ctt0119174%2Ctt1191111%2Ctt0166924%2Ctt4530422%2Ctt5848272%2Ctt5083738%2Ctt6343314%2Ctt1289217%2Ctt4633694%2Ctt7401588%2Ctt6966692%2Ctt4154664%2Ctt4154796%2Ctt0437086%2Ctt2386490%2Ctt2325846%2Ctt6513120%2Ctt7775622%2Ctt6155172%2Ctt8130968%2Ctt6491178%2Ctt7959026%2Ctt1860242%2Ctt0448115%2Ctt6823368%2Ctt6857112%2Ctt5028340%2Ctt6472976%2Ctt5461944%2Ctt4669788%2Ctt5886046%2Ctt5932728%2Ctt2481498%2Ctt6146586%2Ctt4943998%2Ctt1489887%2Ctt5968394%2Ctt6292852%2Ctt1979376%2Ctt5884052%2Ctt5027774%2Ctt1080016%2Ctt0438097%2Ctt0351283%2Ctt0479952%2Ctt1277953%2Ctt0087469%2Ctt0367882%2Ctt0082971%2Ctt6320628%2Ctt8772262%2Ctt6139732%2Ctt6565702%2Ctt7458762%2Ctt0073486%2Ctt0317248%2Ctt0038650%2Ctt0118799%2Ctt0120689%2Ctt0054215%2Ctt0110413%2Ctt0253474%2Ctt0110357%2Ctt0078788%2Ctt0887912%2Ctt0375679%2Ctt0119488%2Ctt6921996%2Ctt0274166%2Ctt1634122%2Ctt0301196%2Ctt0337978%2Ctt0112864%2Ctt0376994%2Ctt0458525%2Ctt0290334%2Ctt0075314%2Ctt5164214%2Ctt0317919%2Ctt0117060%2Ctt0120755%2Ctt0181689%2Ctt6105098%2Ctt1453405%2Ctt0120131%2Ctt2139881%2Ctt8752440%2Ctt8022928%2Ctt3361792%2Ctt6348138%2Ctt2066051%2Ctt3861390%2Ctt7349950%2Ctt6806448%2Ctt7286456%2Ctt2935510%2Ctt6324278%2Ctt9243946%2Ctt7131622%2Ctt6398184%2Ctt8079248%2Ctt6189022%2Ctt0477347%2Ctt1078912%2Ctt1436562%2Ctt3469046%2Ctt0099088%2Ctt0456144%2Ctt0113497%2Ctt6645614%2Ctt0181852%2Ctt0438488%2Ctt0381681%2Ctt2209418%2Ctt0099423%2Ctt1606378%2Ctt0086154%2Ctt0091799%2Ctt0103644%2Ctt0118583%2Ctt1194173%2Ctt0120912%2Ctt0099674%2Ctt1790809%2Ctt1402488%2Ctt1318514%2Ctt0413267%2Ctt0892791%2Ctt1772341%2Ctt1302011%2Ctt1046173%2Ctt1397280%2Ctt3410834%2Ctt1840309%2Ctt0322259%2Ctt0463985%2Ctt0232500%2Ctt1596343%2Ctt1905041%2Ctt1013752%2Ctt4630562%2Ctt0134847%2Ctt1411250%2Ctt6359956%2Ctt0107290%2Ctt0119567%2Ctt0163025%2Ctt4765284%2Ctt1694542%2Ctt0070328%2Ctt0055928%2Ctt0057076%2Ctt0058150%2Ctt0059800%2Ctt0062512%2Ctt0064757%2Ctt0066995%2Ctt0071807%2Ctt0076752%2Ctt0079574%2Ctt0082398%2Ctt0086034%2Ctt0090264%2Ctt0097742%2Ctt0113189%2Ctt0120347%2Ctt0830515%2Ctt0143145%2Ctt0246460%2Ctt0093428%2Ctt0086006%2Ctt0169102%2Ctt0367110%2Ctt2356180%2Ctt4934950%2Ctt5982852%2Ctt2621000%2Ctt4068576%2Ctt8526872%2Ctt7984766%2Ctt4364194%2Ctt7343762%2Ctt4729430%2Ctt2279373%2Ctt7798634%2Ctt8096832%2Ctt1302006%2Ctt5606664%2Ctt6259380
2019-12-18 11:39 WARNING  task          watchlist_local Aborting task (plugin: imdb_watchlist)

Additional information:

FlexGet version: 3.0.16
Python version: Python 3.7.5
Installation method: docker (wiserain/flexget)

Same issue with Flexget 3.1.51. Anyone for a solution ? Even for a dirty one ? Because at this time, even the imdb_list plugin doesn't work...
FYI, I've got 800 titles in my imdb watchlist.
Thanks a lot for your help.

I ran into this same issue recently. Likewise, my imdb watchlist had 800+ entries.
My workaround was to create a new list and manually move about 200 movies from my watchlist to the 2nd list. Once I got down to about 615 entries, the task that populated the local movie list from the imdb list started working again.
Then I split my single task into two separate tasks:
  populate_movie_list_jordan:
    imdb_watchlist:
      user_id: '{? imdb.user_id ?}'
      list: watchlist
    accept_all: yes
    list_add:
      - movie_list: imdb_movies

  populate_movie_list2_jordan:
    imdb_watchlist:
      user_id: '{? imdb.user_id ?}'
      list: ls086454039    #not my actual list
    accept_all: yes
    list_add:
      - movie_list: imdb_movies

This adequately works around the issue for me. Obviously it's a bit hack-ish and will begin to fail if my 2nd imdb list approaches 615+ entries. But it's the only solution I've found without modifying flexget source code.


Improve GradleProject API for build speed

This changeset improves the GradleProject API used for testing.
In particular:

copyBuildSrc(...) is now equipped with cachingEnabled: Boolean = true argument, which tells whether buildSrc sources should be used as-is, or a buildSrc.jar should be used instead;
GradleProjectSetup.withSharedTestKitDirectory() points the TestKit runners to a single folder, <root dir>/.gradle-test-kit by convention; the idea is that this folder is not deleted on gradlew clean phase, and therefore may be somewhat re-used to speed up the test execution.

@alexander-yevsyukov PTAL.


user-rpc gets an error message of 'leafref  points to a non-existing leaf'

Hi,
I need to send a rpc which inculdes leafref(config fasle ), but get error message.
The software-install rpc has a leaf slot-name,  whose type is leafref, and defined in container software-inventory;  the container software-inventory is a 'config false' container.
I have provided this software-inventory using a sr_dp_get_items_cb callback (set by sr_dp_get_items_subscribe()), so the client can get software-inventory information by 'get --filter-xpath /xran-software-management:software-inventory'.
But when send 'user-rpc  --content install.xml', an error message is output.
the sippnet of xran-software-management.yang is as belew:
rpc software-install {
description
"Install a previously downloaded software package.";
input {
  leaf slot-name {
    type leafref {
      path "/software-inventory/software-slot/name";
      }
    must "/software-inventory/software-slot[name = current()][active = 'false' and running = 'false']" {
      error-message "software-install may be requested only against active::false and running::false slot!";
    }
    mandatory true;

    description
      "software-slot to which the software shall be installed to.";
  }

  leaf-list file-names {
    type string;

    description
      "Names of the files within software package to be installed";
  }
}
output {
  leaf status {
    type enumeration {
      enum STARTED {
        description
          "Operation has been started without error.";
      }
      enum FAILED {
        description
          "Operation cannot be started because of error, more detailed information can be found in error-message.";
      }
    }
    mandatory true;

    description
      "Status of the software package install.";
  }
  leaf error-message {
    when "../status = 'FAILED'";
    type string;

    description
      "Detailed error Message when the status is failed.";
  }
}

}
container software-inventory {
config false;
description
"Contains information about each software slot and its content.";
list software-slot {
  key name;
  min-elements 2;

  description
    "Information about available software-slots and their software.";

  leaf name {
    type string;

    description
      "Name of the software package. This shall be unique to identify the software-slot.";
  }

  leaf status {
    type enumeration {
      enum VALID {
        description
          "Slot Contains software build considered as proven valid";
      }
      enum INVALID {
        description
          "software build is not currently used by RU. The software is considered by RU as damaged (e.g. wrong CRC)";
      }
      enum EMPTY {
        description
          "W slot does not contain software package.";
      }
    }
    config false;
    mandatory true;

    description "Indicates the status of the software slot";
  }

  leaf active {
      type boolean;
  must "../status = 'VALID'";
    config false;
      description
        "informs if software stored in particular slot is activated at the moment";
  }

  leaf running {
      type boolean;
  must "../status = 'VALID'";
    config false;
      description
        "informs if software stored in particular slot is used at the moment";
  }

  leaf access {
    type enumeration {
      enum READ_ONLY {
        description
          "slot intended only for factory software,
          activation of such software slot means getting back to factory defaults";
      }
      enum READ_WRITE {
        description
          "slot used for updating software";
      }
    }
    default READ_WRITE;
    config false;

    description
      "Indicates the writability of the slot.
      A Read-Only software slot is one which has a factory installed software-slot";
  }

  leaf product-code {
    type leafref {
	path "/hw:hardware/hw:component/xran-hw:product-code";
	}
    config false;

    description "product code provided by the vendor, specific to the product. This is derived from manifest file.";
  }

  leaf vendor-code {
    type string {
      length 1..2;
    }
    config false;

    description
      "Unique code of the vendor. This is derived from manifest file.";
  }

  leaf build-id {
    type string;
    config false;

    description
      "Identity associated with the software build. This is derived from manifest file.";
  }

  leaf build-name {
    type string;
    config false;

    description
      "Name of the build. This is derived from manifest file.";
  }

  leaf build-version {
    type leafref{
	path "/hw:hardware/hw:component/hw:software-rev";
	}
    description "Version of the software build. This is derived from manifest file.";
  }

  list files {
    key "name";
    config false;

    description "List of all the files present in the software package.";

    leaf name {
      type string;

      description
        "Name of the file installed in the slot.";
    }

    leaf version {
      type string;

      description
        "Version of the file installed in the slot";
    }
    leaf local-path {
      type string;
      mandatory true;

      description
        "Complete path of the file stored locally";
    }

    leaf integrity {
      type enumeration {
        enum OK {
          description "OK - indicates that file integrity is correct";
        }
        enum NOK {
          description "NOK - indicates corrupted file";
        }
      }
      config false;

      description
        "Result of the file integrity check (checksum calculation) during installation.";
    }
  }
}

}
 ./netopeer2-cli                                                           15:17:42
> connect
Interactive SSH Authentication
Type your password:
Password:
> get --filter-xpath /xran-software-management:software-inventory
DATA
<software-inventory xmlns="urn:xran:software-management:1.0">
  <software-slot>
    <name>SOFTWARE_SLOT1_RUNNING</name>
    <status>INVALID</status>
    <active>true</active>
    <running>true</running>
    <access>READ_WRITE</access>
    <product-code>HPRU</product-code>
    <vendor-code>SW</vendor-code>
    <build-id>sw</build-id>
    <build-name>sunwave crossfire</build-name>
    <build-version>V1.0</build-version>
  </software-slot>
  <software-slot>
    <name>SOFTWARE_SLOT2_CANDIDATE</name>
    <status>VALID</status>
    <active>false</active>
    <running>false</running>
    <access>READ_WRITE</access>
    <product-code>HPRU</product-code>
    <vendor-code>SW</vendor-code>
    <build-id>sw</build-id>
    <build-name>sunwave crossfire</build-name>
    <build-version>V1.0</build-version>
  </software-slot>
</software-inventory>

>
> user-rpc  --content install.xml
ERROR
	type:     application
	tag:      operation-failed
	severity: error
	path:     /xran-software-management:software-install/slot-name
	message:  Leafref "/software-inventory/software-slot/name" of value "SOFTWARE_SLOT2_CANDIDATE" points to a non-existing leaf.

the install.xml is as below:
<software-install xmlns="urn:xran:software-management:1.0">
<slot-name>SOFTWARE_SLOT2_CANDIDATE</slot-name>
</software-install>

--------- netopeer2-server  log ：
VERBOSE: All data nodes and constraints resolved.
VERBOSE: Resolving unresolved data nodes and their constraints...
VERBOSE: All data nodes and constraints resolved.
VERBOSE: Session 2: thread 0 event new RPC.
VERBOSE: Resolving unresolved data nodes and their constraints...
VERBOSE: There is no leafref "/software-inventory/software-slot/name" with the value "SOFTWARE_SLOT2_CANDIDATE", but it is not required.
VERBOSE: Must condition "/software-inventory/software-slot[name = current()][active = 'false' and running = 'false']" not satisfied, but it is not required.
VERBOSE: All data nodes and constraints resolved.
ERROR: (cl_rpc_send:3154) Error by processing of the request.
callback code :
static int data_provider_cb_software_management(const char *xpath, sr_val_t **values, size_t *values_cnt,
uint64_t request_id, const char *original_xpath, void *private_ctx)
{
sr_val_t *v = NULL;
unsigned int v_cnt;
int rc = SR_ERR_OK;
unsigned int slot;
unsigned char slot_num = 2;  /*at least 2 software slots*/
v_cnt =slot_num*per_slot_element_cnt;

printf("%s\r\n",xpath);
rc = sr_new_values(v_cnt, &v);
if (SR_ERR_OK != rc)
{
    return rc;
}
for(slot=0;slot<slot_num;slot++)
{
	fill_base_element_value(v,slot);
	fill_files_value(v,slot);
}

for (size_t i = 0; i < v_cnt; ++i)
{
    sr_print_val(v+i);
}

*values = v;
*values_cnt = v_cnt;

return rc;

}
static int data_requester(sr_session_ctx_t *session);
int data_provider_software_management_subscribe_register(sr_session_ctx_t *session)
{
sr_subscription_ctx_t *subscription = NULL;
int rc = SR_ERR_OK;
if(SR_ERR_OK != (rc=sr_dp_get_items_subscribe(session, Software_Management,
data_provider_cb_software_management, NULL, SR_SUBSCR_DEFAULT, &subscription)))
{
fprintf(stderr, "%s occurs error(%s) when registering for software management subscribe.\r\n", Software_Management, sr_strerror(rc));
}
}
Thanks & Regards，
yaxue

Hi,
I see you are using the old sysrepo and netopeer2 and I believe this use-case was simply not supported there. Please use the current sysrepo and netopeer2.
Regards,
Michal

Hi Michal,
Thanks for your response.
I will use the current  sysrepo and netopeer2.
Can you help me to check whether the sequence I used for this rpc software-install is correct?

Providing this software-inventory using a sr_dp_get_items_cb callback (set by sr_dp_get_items_subscribe()), so that client can get;
client  gets software-inventory by 'get --filter-xpath /xran-software-management:software-inventory';
3)client sends  user-rpc  --content install.xml

Thanks & Regards，
yaxue

Hi,
in the old sysrepo/netopeer2 there was no other way of providing state data, so yes, it is correct. The problem is that they are not used for any validation, just for returning to clients if they request it (by get, for instance). This was fixed in the new sysrepo.
Regards,
Michal

Hi,
you had best create a new issue with detailed description of your use-case, I will not be able to help you otherwise.


Replaced computation schedulers by io when relevant

Overview
RxJava's computation() is to be used on CPU intensive tasks. Most use cases in the DroidKaigi app are for I/O calls so I use the io scheduler instead.
See https://github.com/ReactiveX/RxJava/blob/363f0381c2fcc9df287d771ffd2826c64c998145/src/main/java/io/reactivex/schedulers/Schedulers.java#L90-L136

Thanks 👍


CLOUDSTACK-9852: This patch implements the storage lb feature

@anshul-gangwar Can you please check Travis failure?

@  There are no travis failures reported in ACS PR.


Question about the curVersion

Sorry, i just want to confirm. Is this the version from package.json or the versionName from build.gradle?
I already have an app available live on google playstore, do i need to upload a new apk first with this library installed in order to get an update?

My app's versionName in build.gralde is 3.0 and i just found out about this package which i think is very useful, i use to tell my users about an apk update using CodePush but that's just a message and this library's implementation is amazing. Thanks

This totally depends on your current approach. If package.json is the source of truth of android versions, and android version reads from package.json then yeah.
Keep in mind you're comparing the incoming android in-app-update patch version with whatever you pass to curVersion which typically is the current android version.

That's just one way of doing it. Another thing I tried was, I modified the local version of my project to be lower than the one in the store, and then it would always prompt to update to the store version, even if they were technically the same version.

This totally depends on your current approach. If package.json is the source of truth of android versions, and android version reads from package.json then yeah.
Keep in mind you're comparing the incoming android in-app-update patch version with whatever you pass to curVersion which typically is the current android version.

That's just one way of doing it. Another thing I tried was, I modified the local version of my project to be lower than the one in the store, and then it would always prompt to update to the store version, even if they were technically the same version.

I modified the local version of my project to be lower than the one in the store, and then it would always prompt to update to the store version, even if they were technically the same version.

I tried chaging the curVersion to 0.0.0 and the version in package.json to 0.0.0 as well and the result reason is always status 1 means there's no new version available

I modified the local version of my project to be lower than the one in the store, and then it would always prompt to update to the store version, even if they were technically the same version.

I tried chaging the curVersion to 0.0.0 and the version in package.json to 0.0.0 as well and the result reason is always status 1 means there's no new version available

Do you have code in your gradle file that reads the Android version from package.json? If not whatever version you're using in package.json is irrelevant, it's not read anywhere. Also, what version does the incoming update patch have? is there an incoming patch at all?
You have to take this step by step. Most people struggle because they don't know how to configure in app updates on Android. Remember this library is just a wrapper that exposes the functionality.

Do you have code in your gradle file that reads the Android version from package.json? If not whatever version you're using in package.json is irrelevant, it's not read anywhere. Also, what version does the incoming update patch have? is there an incoming patch at all?
You have to take this step by step. Most people struggle because they don't know how to configure in app updates on Android. Remember this library is just a wrapper that exposes the functionality.

@SudoPlz can't this library get version from the gradle and compare automatically rather than manually providing it ?
I used this library for android, it didn't ask for current version - https://github.com/kumparan/react-native-android-inapp-updates

Hi @ShivamJoker yeah that's an interesting suggestion. In our app we specifically wanted to avoid that, but I do see it may make sense for other projects.
That being said, it's very easy to get the app version using something like react-native-device-info.

@SudoPlz are you going to implement it or we will be needing to get it by using device info and provide it manually.
You can keep the function param optional and if user doesn't provide it then get it from native build itself ?

Yeah that's what I was thinking too. I think I'll bake that in whenever I find some free time (no promises though).
A pr would be welcome if you'd like to give it a shot.

Sure I'll give it shot


Unit test

Unit-Test

Unit-test created for following classes
Book
Person
Student
Teacher
Classroom
Rental
all classes that was created while implementing the Decorator design pattern

keenly expecting to see this project approved!!!

Thanks you for the positive feedback. We got what we expected.


Documentation not building on read the docs

RTD is having problems building pysat's develop branch. For some reason, the build is failing with, pandas 0.17.1 is installed but xarray requires versions > 0.19, or something like that. I don't know why it isn't just updating the pandas library right there......
It should work, but it doesn't. May not really be a pysat issue, but it still needs to be sorted out.

Docs are now building in the files_upgrade branch.


Typescript fails on Div and Button elements, if you give the onClick attribute a function as argument

glamorous version: 4.5.0
glamor version: 2.20.40
react version: 16.0.0
typescript version: 2.6.1, 2.53

Relevant code.

<Button css={ buttonStyle } onClick={() => Raven.lastEventId() && Raven.showReportDialog()}>
File Report
</Button>

What you did:
I tried to give a glamorous Div and a Button Element an onClick attribute with a Function as argument
What happened:
The following error is displayed:
Error:(30, 12) TS2322: Type '{ css: CSSProperties; onClick: () => void | ""; children: string; }' is not assignable to type 'IntrinsicAttributes & CSSProperties & ExtraGlamorousProps & HTMLProps<HTMLButtonElement> & { chil...'.
  Type '{ css: CSSProperties; onClick: () => void | ""; children: string; }' is not assignable to type 'CSSProperties'.
    Property 'onClick' is incompatible with index signature.
      Type '() => void | ""' is not assignable to type 'string | number | SingleOrArray<CSSPropertiesCompleteSingle, "alignContent" | "alignItems" | "ali...'.
        Type '() => void | ""' is not assignable to type 'ReactElement<any>'.

Reproduction:
I was not able to reproduce the problem using Stackblitz, but if you clone this repo
The issue is present in the src/index.tsx file
Problem description:
When the glamorous 'Button' element is given an the onClick attribute, typescript fails
Suggested solution:
If you change the CSSPropertiesLossy [glamorous/typings/css-properties.d.ts(l.1921)] interface to allow functions as a type, the error is not displayed, like so:

export interface CSSPropertiesLossy {
  [propertyName: string]:
    | string
    | number
    | CSSPropertiesComplete
    | undefined
    | Array<CSSPropertiesComplete[keyof CSSPropertiesComplete]>
    | CSSPropertiesLossy
    | React.ReactChild
      | Function
}

Hm... that's weird. I will investigate this.

Any updtates on this?

Actually,
const x: : CSSProperties | ExtraGlamorousProps | React.HTMLProps<HTMLButtonElement> {
    css: buttonStyle,
    onClick: () => console.log('Hello')
}

<Button {...x} >FileError</Button>

is works in your example repo, so I think the problem is react typing, not Glamorous one...

Glamorous Button has type of
React.SFC<CSSProperties | ExtraGlamorousProps | React.HTMLProps<HTMLButtonElement>>

So what does this mean exactly? Does it mean, that if you want to attach an onClick function to a button element, this can only be done with a with the object syntax you have shown in your previous reply?

@Vanluren
Sorry for delay. I'm little busy now days.
After some investigation, I think the problem is using indexed type with union type, instead of intersection type according to https://github.com/Microsoft/TypeScript/issues/20159.
For more example,
https://goo.gl/GxGXTN
I will make a PR for fix this intersection type.

@luke-john Could you check there's no problem with changing | to &?

Ah, I notice that type with | (or Union type) is local one where the real type use & (Intersection Type).
I'm really sorry for that. For this case, it's not a problem of typescript or react.
What I'm afraid is adding Function to CSSProperties making CSSProperties too weak.
@luke-john How about your opinion? Is adding Function to CSSPropertiesLossy (and therefore added to CSSProperties looks OK?

Thank @Vanluren for the detailed issue and @Ailrun for looking into this already.  I really enjoy how friendly and helpful people are on this project 💯.
Apologies for my lack of attention here, having a look at this I think this would be solved by having the named built in glamorous components use CSSPropertiesComplete rather than CSSProperties.   I suspect some tests would start failing though due to reliance on unexpected behaviour.
Re looking at the types though after some time away, there's a few things that could be simplified around the place 🙂.
I won't have time to look at any of this until next week at the earliest as I'm off on holidays 🍷☀.
As a temporary measure to get typesafety without asserting to an any you could do something like follows.
import { CSSProperties, CSSPropertiesComplete, ExtraGlamorousProps,  Button } from 'glamorous';

type TmpButton = React.StatelessComponent<
  React.HTMLProps<HTMLButtonElement> & ExtraGlamorousProps & CSSPropertiesComplete
>

const TmpButton = Button as TmpButton

...
<Button css={ buttonStyle } onClick={() => Raven.lastEventId() && Raven.showReportDialog()}>
    File Report
</Button>

When this is fixed,  glamorous might be the best css in ts package I've seen.

@luke-john is there anything I can assist you with on this matter? :) We are unfortunately also experiencing the same issue with the Input component.

We've just upgraded to the latest glamorous and #372 does not solve the issue :(

This project is now in an unmaintained status. Please see the README for more information.


Update ssl scenario

Fix scenario file
Add missing setup steps to jenkins-support.sh
Update job to perform correct ssl setup

Job completed successfully.
https://ci.suse.de/view/Cloud/view/QA/job/cloud-mkphyscloud-qa-scenario-1a/1275/
See env http://crowbar.qa4.cloud.suse.de/

Testing latest changes with https://ci.suse.de/view/Cloud/view/QA/job/cloud-mkphyscloud-qa-scenario-1a/1285/


[Swift] Link against the swift reflection library.

This is the first step to integrate RemoteMirrors in lldb.
rdar://problem/36477650

@jrose-apple / @gottesmm do you know a better way of getting to the library in the cmake build system?
@jimingham I need to hook this also up in the Xcode build system. What's the way of telling xcodebuild to link against a library?

You don't actually need the architecture, just the platform. I would expect you'd be able to use the CMake target name, swiftReflection-PLATFORM, but maybe that doesn't work.

@jrose-apple that doesn't seem to work. I noticed that the unittests use
swiftReflection${SWIFT_PRIMARY_VARIANT_SUFFIX}

but that doesn't work either.

@swift-ci please test and merge

This is the wrong way to do this. You should be using the export that you guys are already using from cmake.

force stopped the merge to discuss this with @gottesmm who's going to propose a better approach of handling this.

Thanks!

(for those listening in, I am going to show Davide how to do it tomorrow when I am in the office).

Will update this once the cmake bits land: https://github.com/apple/swift/pull/17525

CMake bits landed and everything looks good.

@swift-ci test and merge

(thanks @gottesmm for the help with the cmake bits on the swift side).

@gottesmm this is still broken for Linux. I'll take a closer look. Thanks for your help!

This is obsolete now.


vpnc-scripts: 2021-03-21 -> 2021-09-24

Motivation for this change
Inspired  by #143302, but done correctly by a human.  ;-)

[x] test at work this week

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

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

[x] Fits CONTRIBUTING.md.

Okay, worked fine for me all week this week; ready to merge.


Support JDK 19

> Running creator
    [creator]     Previous image with name "harbor.inoviagroup.se/v2t/v2t-transcription:commit-166be756b48bf7aaa324842c5f4cb02356cc1100" not found
    [creator]     ===> DETECTING
    [creator]     6 of 24 buildpacks participating
    [creator]     paketo-buildpacks/ca-certificates   3.4.0
    [creator]     paketo-buildpacks/bellsoft-liberica 9.7.0
    [creator]     paketo-buildpacks/syft              1.20.0
    [creator]     paketo-buildpacks/executable-jar    6.5.0
    [creator]     paketo-buildpacks/dist-zip          5.4.0
    [creator]     paketo-buildpacks/spring-boot       5.19.0
    [creator]     ===> RESTORING
    [creator]     ===> BUILDING
    [creator]
    [creator]     Paketo Buildpack for CA Certificates 3.4.0
    [creator]       https://github.com/paketo-buildpacks/ca-certificates
    [creator]       Launch Helper: Contributing to layer
    [creator]         Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
    [creator]
    [creator]     Paketo Buildpack for BellSoft Liberica 9.7.0
    [creator]       https://github.com/paketo-buildpacks/bellsoft-liberica
    [creator]       Build Configuration:
    [creator]         $BP_JVM_JLINK_ARGS           --no-man-pages --no-header-files --strip-debug --compress=1  configure custom link arguments (--output must be omitted)
    [creator]         $BP_JVM_JLINK_ENABLED        false                                                        enables running jlink tool to generate custom JRE
    [creator]         $BP_JVM_TYPE                 JRE                                                          the JVM type - JDK or JRE
    [creator]         $BP_JVM_VERSION              19.*                                                         the Java version
    [creator]       Launch Configuration:
    [creator]         $BPL_DEBUG_ENABLED           false                                                        enables Java remote debugging support
    [creator]         $BPL_DEBUG_PORT              8000                                                         configure the remote debugging port
    [creator]         $BPL_DEBUG_SUSPEND           false                                                        configure whether to suspend execution until a debugger has attached
    [creator]         $BPL_HEAP_DUMP_PATH                                                                       write heap dumps on error to this path
    [creator]         $BPL_JAVA_NMT_ENABLED        true                                                         enables Java Native Memory Tracking (NMT)
    [creator]         $BPL_JAVA_NMT_LEVEL          summary                                                      configure level of NMT, summary or detail
    [creator]         $BPL_JFR_ARGS                                                                             configure custom Java Flight Recording (JFR) arguments
    [creator]         $BPL_JFR_ENABLED             false                                                        enables Java Flight Recording (JFR)
    [creator]         $BPL_JMX_ENABLED             false                                                        enables Java Management Extensions (JMX)
    [creator]         $BPL_JMX_PORT                5000                                                         configure the JMX port
    [creator]         $BPL_JVM_HEAD_ROOM           0                                                            the headroom in memory calculation
    [creator]         $BPL_JVM_LOADED_CLASS_COUNT  35% of classes                                               the number of loaded classes in memory calculation
    [creator]         $BPL_JVM_THREAD_COUNT        250                                                          the number of threads in memory calculation
    [creator]         $JAVA_TOOL_OPTIONS                                                                        the JVM launch flags
    [creator]         Using Java version 19.* from BP_JVM_VERSION
    [creator]       No valid JRE available, providing matching JDK instead. Using a JDK at runtime has security implications.
    [creator]        : Contributing to layer
    [creator]       Warning: Dependency has no SHA256. Skipping cache.
    [creator]         Downloading from
    [creator]     unable to invoke layer creator
    [creator]     unable to get dependency
    [creator]     unable to download
    [creator]     unable to request
    [creator]     Get "": unsupported protocol scheme ""
    [creator]     ERROR: failed to build: exit status 1

JDK 19 is already released it seems: https://bell-sw.com/pages/downloads/#/java-19-current

+1. Just attempted to migrate my spring boot project and ran into the same issue.

Seems to be fixed now:
    [creator]         Using Java version 19.* from BP_JVM_VERSION
    [creator]       BellSoft Liberica JRE 19.0.0: Contributing to layer
    [creator]         Downloading from https://github.com/bell-sw/Liberica/releases/download/19%2B37/bellsoft-jre19+37-linux-amd64.tar.gz
    [creator]         Verifying checksum
    [creator]         Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
    [creator]         Warning: The JVM cacerts entries cannot be loaded with Java 18, for more information see: https://github.com/paketo-buildpacks/libjvm/issues/158

Closing.


Feols: speed up the creation of interacted fixed effects via fe1^fe2 syntax

Vectorizes the creation of interacted fixed effects by using pd.Series.str.cat instead  of the row-wisejoin in pd.Series.apply.
This PR aims to resolve py-econometrics/pyfixest#470

Cool! Thanks @leostimpfle - I'm at the gym at the moment but will take a look once I'm back =)

Indeed much faster:
import pyfixest as pf
import time
import pandas as pd
import numpy as np

df = pf.get_data(N = 10_000)
df.head()

fval = "f1^f2+f3"

data = df.copy()

tic = time.time()

for val in fval.split("+"):
    if "^" in val:
        vars = val.split("^")
        data[val.replace("^", "_")] = (
            data[vars[0]]
            .astype(pd.StringDtype())
            .str.cat(
                data[vars[1:]].astype(pd.StringDtype()),
                sep="^",
                na_rep=None,  # a row containing a missing value in any of the columns (before concatenation) will have a missing value in the result: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.cat.html
            )
        )

toc = time.time()
print(toc - tic)
# 0.016783714294433594

data.head()

data2 = df.copy()
tic = time.time()

for val in fval.split("+"):
    if "^" in val:
        vars = val.split("^")
        data2[val.replace("^", "_")] = data2[vars].apply(
            lambda x: (
                "^".join(x.dropna().astype(str)) if x.notna().all() else np.nan
            ),
            axis=1,
        )

toc = time.time()
print(toc - tic)
# 2.3184027671813965

data2.head()

And produces identical results!

The data type of "f1_f2" changes from object to str, but this doesn't matter - the fixed effects are converted to int at a later point in the code base, as demean requires integers as inputs.
This can be merged =) Thanks you and congrats to your first contribution to PyFixest @leostimpfle! 🎉

I will merge after the CI tests pass =)


chore: bdd-spring-1573060413 to 0.0.1

chore: Promote bdd-spring-1573060413 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment