Problem with installing banditPAM

I've been following some discussions about install issues however I still can't seem to successfully install banditPAM. I'm getting a long error message that seems to indicate that building the wheel for banditPAM failed (full error attached).
I'm working with a MAC intel using Monterrey. I successfully install llvm  and armadillo.  To answer some questions asked previously:
When I try pip install ., I get:
ERROR: Directory '.' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.
When I execute gcc --version I get:
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-
dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-13<IP_ADDRESS>)
Target: x86_64-apple-darwin21.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
When I try pip3 -V I get:
pip 21.3.1 from /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pip (python 3.10)
I've tried multiple install commands (e.g. pip, pip3 etc.) but with no luck. Any suggestions would be greatly appreciated,
Thanks!
banditPAMError.txt

Hi @retzerjj , thanks for filing an issue. Could you try pip install banditpam? This should pull version 2.0.0 from PyPI.
The error message you surfaced (ERROR: Directory '.' is not installable. Neither 'setup.py' nor 'pyproject.toml' found.) also suggests that you may be trying to install the repository from the wrong root directory. If you'd like to install the code from source, could you run pip install --no-cache-dir -e . (note the trailing period) from the repo's root directory, e.g. /BanditPAM?

I also just took a closer look at your full error output and it looks like your LLVM installation is having trouble finding the C++ standard library headers. Did you try to install LLVM from source? If so could you run brew install llvm?
More helpful details are here: https://github.com/ThrunGroup/BanditPAM/blob/main/docs/install_mac.md

Thanks very much for your response. I did install llvm using brew. When executing the command again (brew install llvm) I get the following message:
Warning: llvm 13.0.0_2 is already installed and up-to-date.
To reinstall 13.0.0_2, run:
brew reinstall llvm
I next downloaded and extracted banditPAM and ran
pip install --no-cache-dir -e .
in the downloaded directory. It does indeed look like there is a problem finding the stdio.h header file (new error message text attached) but since the llvm installation looks ok, I'm not sure what to do next.
Thanks again very much
Note: not sure if this plays a role however armadillo appears to have been installed correctly too:
brew install armadillo

   Warning: armadillo 10.7.5 is already installed and up-to-date.

To reinstall 10.7.5, run:
brew reinstall armadillo
banditPAMError2.txt

Thanks @retzerjj ! Just to confirm, did you also install the xcode command line tools via the Mac installation guide? This post suggests that might be the issue

Hi @motiwari, yes I did. When I try
xcode-select --install

I get
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
Thanks again.

Interesting -- could you update the Xcode tools by opening the "App Store" app and Choosing "Updates" on the left-hand sidebar?
Also, does your /usr/local/ directory exist?

Hello @motiwari
I checked and I do have a /usr/local directory. I also checked and there was no update for xcode in the app store app.
I tried to update xcode command line tools (which were installed). I deleted them and re-installed from the command
line. I also noted that when I opened the xcode app it asked to install additional software and I did so.
I then re-booted the computer and after trying to install banditPAM (this time version 3) and it did in fact work!!
Many thanks for all your help!
However, I next went to install banditPAM on my macbook (apple silicon). I made sure I had armadillo/llvm installed and
xcode tools was present and updated. I now get a slightly different error saying, I believe, that it cant find
armadillo. I checked and it appears llvm is installed under homebrew, unlike on my iMac, but my path appears to be
correctly indicating where to look:
echo $PATH
/opt/homebrew/opt/llvm/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin
I've attached the error message to this note. Again, any suggestions would be greatly appreciated, your help is
invaluable!!
P.S. Two additional notes (not sure if they are material)
1. Apple released an update for command line tools which was installed on both machines
2. The iMac (where banditPAM installed successfully) is Intel based using a bash shell.
The MacBook Air (where the error is now being produced) is Apple M1 Silicon and uses a zsh shell.
Thanks again very much!
banditPAM_error_m1.txt

Hey @retzerjj , that's great to hear! Thanks for reporting back with the fix -- I've added this to the install guide to help future generations.
Regarding the new error on the Macbook Air, could you confirm you've run brew install armadillo and provide the output of brew --prefix armadillo?
Also, is there a file called armadillo in your /usr/local/include? If not, we may need to create a symlink there to your brew-installed armadillo (perhaps the brew link step did not complete successfully and raised an error when installing armadillo?). For example, here is the output on my machine:
>>>brew --prefix armadillo
/usr/local/opt/armadillo
>>>ls -alh /usr/local/include/armadillo
lrwxr-xr-x 1 motiwari admin 44 Nov 11 09:04 /usr/local/include/armadillo -> /usr/local/Cellar/armadillo/10.7.3/include/armadillo

By the way, the PATH variable is only used to search for executables and so won't help the linking problem. Instead, we may need to edit your LD_LIBRARY_PATH, which tells the linker where to look for libraries it needs, like armadillo.

Oh, it also looks like M1 Macs have changed some important directories. Thanks for surfacing this bug, I'll work on a fix!
In the meantime, you can likely get it to work by creating a symlink in a (new) /usr/local/include directory for armadillo, pointing to where brew has installed it

@retzerjj could you try the following command and let me know if it works? You may need a sudo:
sudo python3 -m pip install -e git+https://github.com/ThrunGroup/BanditPAM.git@m1_macs#egg=banditpam

Hello @motiwari ,
I tried your suggestions and my results are listed below

Here is the path I get when I execute "brew --prefix armadillo"
/opt/homebrew/opt/armadillo

I checked and there is no file called armadillo in "/usr/local/include"

I tried adding to my path in ~/.zshrc (based on recommendations from the link regarding M1 Mac important directory changes):
export HOMEBREW_PREFIX="/opt/homebrew"
export HOMEBREW_CELLAR="/opt/homebrew/Cellar"
export HOMEBREW_NO_ANALYTICS=1

I also tried creating a symlink with the command "sudo ln -s /opt/homebrew/opt /usr/local/include"
(which may or may not be correct). I was unable to compile banditPAM after this as well so I unlinked it.

I executed the command
"sudo python3 -m pip install -e git+https://github.com/ThrunGroup/BanditPAM.git@m1_macs#egg=banditpam"
The output in attached file "newInstallAttempt.txt"

Thanks again for all your help, Happy New Year!
newInstallAttempt.txt

Happy New Year, @retzerjj !
Could you try running the command below again? I just updated something.
sudo python3 -m pip install -e git+https://github.com/ThrunGroup/BanditPAM.git@m1_macs#egg=banditpam
If that still doesn't work, could you try running the following command
mkdir -p /usr/local/include && ln -s /opt/homebrew/opt/armadillo/include/armadillo /usr/local/include/armadillo
and then running pip install banditpam again?
If neither of those work, could you provide the output of the following command?
tree /opt/homebrew/opt/armadillo
A few tips that might help:

The problem is that on M1 Macs, the installation location of packages like armadillo has changed
If it is easier for you, you can provide your terminal output in pastes from PasteBin
You can use single backtick (the key to the left of the 1) for code formatting and triple backticks for

code block

Hello @motiwari
I am still unable to install banditPAM. It seems like the error is not related to not finding armadillo in /usr/local/include but rather maybe that an error is generated once it is found:
#include "armadillo_bits/config.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
error: command '/opt/homebrew/opt/llvm/bin/clang' failed with exit code 1
I also ran the tree command, output is in the attached txt file.
Thanks!
treeOutput.txt

@retzerjj We are making progress! Can you try one more time:
sudo python3 -m pip install -e git+https://github.com/ThrunGroup/BanditPAM.git@m1_macs#egg=banditpam

@motiwari
it looks like its not getting past the setup.py step (error attached
newError.txt
)

Looks like a similar error
newError2.txt
.

Sorry for the churn here, @retzerjj . Let me get my hands on an M1 Mac so I can debug locally and save you the time. I'll get back to you shortly

Thanks very much @motiwari, I very much appreciate it.

Hey @retzerjj , just letting you know I haven't forgotten about this. It turns out building for M1 Macs is much harder than I initially thought, but I'm making progress and should have an update soon

Fantastic! Thanks so much for doing this, I’ll look forward to your update,
Take care,
Joe

On Jan 10, 2022, at 11:12 PM, Mo Tiwari @.***> wrote:
Hey @retzerjj https://github.com/retzerjj , just letting you know I haven't forgotten about this. It turns out building for M1 Macs is much harder than I initially thought, but I'm making progress and should have an update soon
—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1009605548, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCRTCH5GGT243C33ICTUVO325ANCNFSM5K4PG5MA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.

Hi @retzerjj ; I think I was able to build the Python wheel for M1 Macs; could you install the appropriate wheel (attached) for your python version and let me know if it works?
E.g., download the wheel from the attached zip and run
pip install pip install banditpam-3.0.3a1-cp39-cp39-macosx_10_14_universal2.whl
Then run the code in Example 1?
A caveat: you'll have to use CPython 3.8+
banditpam-3.0.3a1-cp38-cp38-macosx_10_14_universal2.whl.zip
banditpam-3.0.3a1-cp39-cp39-macosx_10_14_universal2.whl.zip
banditpam-3.0.3a1-cp310-cp310-macosx_10_14_universal2.whl.zip

Hello @motiwari
The results of pip -V and python are below. Also the message I get when trying to install banditPAM from the terminal is shown.
Note that when the install did appear to work I was installing from the “terminal” tab inside of RStudio.
Thanks
Joe
Hello
It appears to install correctly:
However I’m getting errors when I try running the code:

from banditpam import KMedoids
TypeError: object of type 'module' has no len()
import numpy as np
import matplotlib.pyplot as plt
Generate data from a Gaussian Mixture Model with the given means:
np.random.seed(0)
n_per_cluster = 40
means = np.array([[0,0], [-5,5], [5,5]])
X = np.vstack([np.random.randn(n_per_cluster, 2) + mu for mu in means])
Fit the data with BanditPAM:
kmed = KMedoids(n_medoids=3, algorithm="BanditPAM")
NameError: name 'KMedoids' is not defined
kmed.fit(X, 'L2')
NameError: name 'kmed' is not defined

I suspect this is because I’m not installing using CPython however I can’t seem to find instructions for downloading / installing CPython on a Mac. Is there a GitHub site that would have the instructions/code?
Thanks
Joe

On Jan 26, 2022, at 9:35 AM, Joseph Retzer @.***> wrote:

Begin forwarded message:
From: Mo Tiwari @.*** @.>>
Subject: Re: [ThrunGroup/BanditPAM] Problem with installing banditPAM (Issue #167)
Date: January 25, 2022 at 3:45:14 PM CST
To: ThrunGroup/BanditPAM @. @.>>
Cc: Joseph Retzer @. @.>>, Mention @. @.>>
Reply-To: ThrunGroup/BanditPAM @. @.***>>
Hi @retzerjj https://github.com/retzerjj ; I think I was able to build the Python wheel for M1 Macs; could you install the appropriate wheel (attached) for your python version and let me know if it works?
E.g., download the wheel from the attached zip and run
pip install pip install banditpam-3.0.3a1-cp39-cp39-macosx_10_14_universal2.whl
Then run the code in Example 1 https://github.com/ThrunGroup/BanditPAM#example-1-synthetic-data-from-a-gaussian-mixture-model?
A caveat: you'll have to use CPython 3.8+
banditpam-3.0.3a1-cp38-cp38-macosx_10_14_universal2.whl.zip https://github.com/ThrunGroup/BanditPAM/files/7937399/banditpam-3.0.3a1-cp38-cp38-macosx_10_14_universal2.whl.zip
banditpam-3.0.3a1-cp39-cp39-macosx_10_14_universal2.whl.zip https://github.com/ThrunGroup/BanditPAM/files/7937404/banditpam-3.0.3a1-cp39-cp39-macosx_10_14_universal2.whl.zip
banditpam-3.0.3a1-cp310-cp310-macosx_10_14_universal2.whl.zip https://github.com/ThrunGroup/BanditPAM/files/7937409/banditpam-3.0.3a1-cp310-cp310-macosx_10_14_universal2.whl.zip
—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1021638296, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCW3I2ONRMFWRADDRK3UX4KWVANCNFSM5K4PG5MA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.

On Jan 26, 2022, at 12:28 PM, Mo Tiwari @.***> wrote:
Thanks @retzerjj https://github.com/retzerjj ! It's strange; pip install -i https://test.pypi.org/simple/ banditpam==3.0.3a1 should not have succeeded unless you're using CPython. In the pip output, did it somehow fall back to a previous version? What's the output if you run python -c "import platform; print(platform.python_implementation())"?
CPython should be the default Python implementation when using Anaconda https://www.anaconda.com/, which I highly recommend!
If you're running CPython, the version is >=3.8, and you're still getting this error, could you provide the output of the following commands?
a) the output when you open a python shell:

python
Python 3.8.12 | packaged by conda-forge | (default, Oct 12 2021, 21:50:38)
[Clang 11.1.0 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
b) the output of pip -V

—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1022474790, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCSNHHJYFRGSBK5TTHLUYA4MBANCNFSM5K4PG5MA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.

@retzerjj I'm having the same problem when trying to install banditpam on my Mac M1[unresolved]. For the time being, I've tried Anaconda and installed banditpam there, and it's working.

Hello Sudhir,
Thats great. Could you let me know how you installed it through Anaconda? I tried adding the plpi channel but it does not show up. I also tried to install the .whl file downloaded from GitHub but I’m not able to do that (not sure how to access the file).
Thanks & take care,
Joe

On Feb 1, 2022, at 7:18 AM, Sudhir Kumar Suman @.***> wrote:
@retzerjj https://github.com/retzerjj I'm having the same problem when trying to install banditpam on my Mac M1[unresolved]. For the time being, I've tried Anaconda and installed banditpam there, and it's working.
—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1026833899, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCRDQ4UD5OBHPTAKYLDUY7MQ7ANCNFSM5K4PG5MA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.

Hmmm it seems Sudhir deleted his comment, but we owe a thank you to him!
@retzerjj you can install Python from Anaconda here; it should provide instructions on how to activate the appropriate Anaconda environment after you've installed it. By the way, did you copy-paste the wrong information in this comment?
Probably it works on Anaconda because I did at least something right when creating the M1 Mac wheels; but I've also heard from others that the wheels don't work with Miniconda or other Python installations. I'll leave this issue open until the package is working everywhere

Yes, Banditpam was successfully installed, but I was unable to use it because it displayed an error while importing it.
"ImportError: dlopen(/Users/sudhirwork/anaconda3/lib/python3.9/site-packages/banditpam.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '__ZTWN4arma19mt19937_64_instanceE'"

It appears my .png attachments of my error messages are not visible in my email, is there another way I could send them?
I have Anaconda installed with multiple versions of Python (3.9 and 3.10 included). I also added pypi as a channel. However, bandiPAM does not appear in the “Not Installed” file list and I’m not sure how to install the .whl file I downloaded using Anaconda.

On Feb 1, 2022, at 3:57 PM, Mo Tiwari @.***> wrote:
Hmmm it seems Sudhir deleted his comment, but we owe a thank you to him!
@retzerjj https://github.com/retzerjj you can install Python from Anaconda here https://www.anaconda.com/; it should provide instructions on how to activate the appropriate Anaconda environment after you've installed it. By the way, did you copy-paste the wrong information in this comment https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1026161508?
Probably it works on Anaconda because I did at least something right when creating the M1 Mac wheels; but I've also heard from others that the wheels don't work with Miniconda or other Python installations. I'll leave this issue open until the package is working everywhere
—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1027325733, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCQWHQPLRAWYT23BGXDUZBJN7ANCNFSM5K4PG5MA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.

Sorry for the late response @retzerjj . I'm not sure how to attach pictures by email-replying to Github email notifications, but if you sign into Github and view this link, you can attach an image in the comment box.
At the moment, I'm not sure what to do for this because I can't reproduce your or Sudhir's error locally without an M1 Mac. Two of my friends with M1 Mac where able to use the M1 wheel successfully, but another one surfaced an error like this:
ImportError: dlopen(/Users/frieda/miniconda3/envs/behavior/lib/python3.8/site-packages/banditpam.cpython-38-darwin.so, 0x0002): symbol not found in flat namespace '_omp_get_max_threads'

This looks like this is different from Sudhir's error message, which seems to be complaining about an armadillo symbol.
I ordered an M1 Mac on 12/29/21, but it still won't be delivered until 3/10/22 (presumably due to existing supply chain issues). If you provide your error message then I can investigate it when I receive the M1 Mac

When I install banditPAM from the console in my RStudio session, it appears to install w/o error. However when I try to import the KMedoids function I get:

from banditpam import KMedoids
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/banditpam.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace ‘_omp_get_max_threads'

Thanks
Joe

On Feb 7, 2022, at 5:39 PM, Mo Tiwari @.***> wrote:
Sorry for the late response @retzerjj https://github.com/retzerjj . I'm not sure how to attach pictures by email-replying to Github email notifications, but if you sign into Github and view this link https://github.com/ThrunGroup/BanditPAM/issues/167, you can attach an image in the comment box.
At the moment, I'm not sure what to do for this because I can't reproduce your or Sudhir's error locally without an M1 Mac. Two of my friends with M1 Mac where able to use the M1 wheel successfully, but another one surfaced an error like this:
ImportError: dlopen(/Users/frieda/miniconda3/envs/behavior/lib/python3.8/site-packages/banditpam.cpython-38-darwin.so, 0x0002): symbol not found in flat namespace '_omp_get_max_threads'
This looks like this is different from Sudhir's error message, which seems to be complaining about an armadillo symbol.
I ordered an M1 Mac on 12/29/21, but it still won't be delivered until 3/10/22 (presumably due to existing supply chain issues). If you provide your error message then I can investigate it when I receive the M1 Mac
—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1032050304, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCWPZAIY6AFLVPAB453U2BJZNANCNFSM5K4PG5MA.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.

Hi @retzerjj , my apologies for the late response. I've still been unable to acquire an M1 Mac to test this locally, so to unblock you I've deleted the offending functions and shipped a new version to PyPI.
When the new builds for v3.0.4 hit PyPI in about an hour, you should be able to run pip install --upgrade banditpam and upgrade to a version runnable on M1 Macs.
If the issue persists, please let me know and I'll take a look.

Hi,
Thanks for doing this. Quick update, when I try loading KMedoids from banditPAM I get the following error:

from banditpam import KMedoids
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/banditpam.cpython-310-darwin.so,
0x0002): symbol not found in flat namespace ‘__ZTWN4arma19mt19937_64_instanceE'

Best
Joe

On Apr 21, 2022, at 8:57 PM, Mo Tiwari @.***> wrote:
Hi @retzerjj https://github.com/retzerjj , my apologies for the late response. I've still been unable to acquire an M1 Mac to test this locally, so to unblock you I've deleted the offending functions and shipped a new version to PyPI.
When the new builds for v3.0.4 hit PyPI in about an hour, you should be able to run pip install --upgrade banditpam and upgrade to a version runnable on M1 Macs.
If the issue persists, please let me know and I'll take a look.
—
Reply to this email directly, view it on GitHub https://github.com/ThrunGroup/BanditPAM/issues/167#issuecomment-1105925287, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP5KCVD45IFL3GMRDG6J33VGIBSFANCNFSM5K4PG5MA.
You are receiving this because you were mentioned.

Hey Joe, the output of your first command (pip install banditpam) shows that you currently have BanditPAM v3.0.4 installed. If you run pip install --upgrade banditpam and try to run a python script that runs import banditpam, what output do you get?

I managed to update the package using
python3.10 -m pip install --upgrade banditpam
however when I try to load Kmedoids I get:

from banditpam import KMedoids
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/banditpam.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_omp_get_max_threads'

From: Mo Tiwari @.>
Date: Friday, March 3, 2023 at 4:33 PM
To: motiwari/BanditPAM @.>
Cc: Joseph Retzer @.>, Mention @.>
Subject: Re: [motiwari/BanditPAM] Problem with installing banditPAM (Issue #167)
Hey Joe, the output of your first command (pip install banditpam) shows that you currently have BanditPAM v3.0.4 installed. If you run pip install --upgrade banditpam and try to run a python script that runs import banditpam, what output do you get?
—
Reply to this email directly, view it on GitHubhttps://github.com/motiwari/BanditPAM/issues/167#issuecomment-1454215518, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAP5KCSGOTU5U4QU3IXWGN3W2JWSDANCNFSM5K4PG5MA.
You are receiving this because you were mentioned.Message ID: @.***>

Thanks @retzerjj . Unfortunately I spent several days trying to debug this issue and wasn't able to fix it. I'm not sure how this could possibly be happening, as the necessary libraries like OpenMP are statically linked within the Python wheel.
It seems that other users are experiencing the same issue (#230 ); if they are able to find a solution, I'll update this threada.

Note to self: https://github.com/ContinuumIO/anaconda-issues/issues/12933 looks relevant

I got the same error ImportError: /root/venv/lib/python3.9/site-packages/banditpam.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev on Deepnote .

The banditpam package is installed via requirements.txt

Thanks @thucnc, I'll let you know if I find a solution. @Adarsh321123 could you try installing banditpam on a Deepnote workbook and see if you're able to reproduce the result?

Sorry for the late response, @motiwari. I am able to reproduce the result. Specifically, after installing the banditpam package via requirements.txt as @thucnc mentioned, I ran a cell with the Python code from banditpam import KMedoids and got this exception: ImportError: /root/venv/lib/python3.9/site-packages/banditpam.cpython-39-x86_64-linux-gnu.so: undefined symbol: _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev.

Hi @retzerjj @SumanSudhir @thucnc I believe we have finally diagnosed the source of the problem.
TL;DR: Could you please install Anaconda from https://github.com/conda-forge/miniforge#miniforge3 specifically for arm64 (Apple Silicon)? It's critical to install from the link in the screenshot below. After you have changed your Python installation, pip install banditpam should work and you should be able to run the examples in the README.

More context: We realized that the default installer for Anaconda, even on M1 Macs, runs in x86_64 mode (likely using Rosetta). This causes a problem at runtime because the libraries installed for arm64 machines via brew install libomp armadillo are the arm64 versions on M1 Macs, if you're using the appropriate version of brew for M1 Macs. Because the default installer Anaconda for M1 Macs runs in x86_64 mode, it tries to download the x86_64 version of python packages via pip (see this comment which explicitly shows the x86_64 version of the package being installed). At runtime, it's unable to dynamically load the arm64 versions of the necessary libraries like LibOMP and Armadillo. The situation should be fixed by downloading and using the arm64 version of Anaconda, which should also download the arm64 versions of the banditpam python wheels.

Hi, I'm running into a similar issue. I'm not using anaconda, I'm just using pyenv/python.
❯ python
Python 3.10.7 (main, Nov  2 2022, 15:27:56) [Clang 14.0.0 (clang-14<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.machine()
'arm64'
>>> import banditpam
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(..../.venv/lib/python3.10/site-packages/banditpam.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_omp_get_max_threads'
>>>

Hi @li-dennis, could you provide the output of the following two commands?
brew --prefix armadillo and python -m pip install --ignore-installed --no-cache-dir banditpam?

Sorry, just seeing this :) sure
❯ brew --prefix armadillo
/opt/homebrew/opt/armadillo
❯ python -m pip install --ignore-installed --no-cache-dir banditpam
Collecting banditpam
  Downloading banditpam-4.0.2-cp310-cp310-macosx_11_0_arm64.whl (241 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 241.8/241.8 kB 2.3 MB/s eta 0:00:00
Installing collected packages: banditpam
Successfully installed banditpam-3.0.4

Something is weird about that output -- it looks like you're downloading v4.0.2 but then the output says you installed banditpam-3.0.4.
In any case, I think we know the root cause of the problem and are trying to fix.

Ah, yeah, my bad -- was messing around with pipenv and v3.0.4 as well to see if the fault lied there so there was some version mismatching
❯ python -m pip install --ignore-installed --no-cache-dir banditpam

Collecting banditpam
  Downloading banditpam-4.0.2-cp310-cp310-macosx_11_0_arm64.whl (241 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 241.8/241.8 kB 2.1 MB/s eta 0:00:00
Installing collected packages: banditpam
Successfully installed banditpam-4.0.2
❯ python
Python 3.10.7 (main, Nov  2 2022, 15:27:56) [Clang 14.0.0 (clang-14<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import banditpam
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(.../.venv/lib/python3.10/site-packages/banditpam.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_omp_get_max_threads'


Base for devos

I'm speaking purely on behalf of myself, but I would find it excitinh if this can be brought into a shape that it will be easy for devos to built upon.
I see the great powers that both projects combined could yield out of flakes and for its users.
I sense devos is at a moment where it would wish to consolidate its library and declare concise and reusable interfaces.
It looks like you (coming from the other end of flake-utils) already have gone down that route.
Some time ago, I tried to achive something similar myself with https://github.com/numtide/flake-utils/pull/18. But the whole PR and it's shape perfectly reveals where I stand in terms of nix-skills 😉
So I would love to see a good bunch of collaboration striving for getting this and devos, both in a shape where devos could adopt / inherit this library without braking any features.
I think for devos it would be good / convenient, until reaching 1.0 to have such a well-defined (and well-guarded) library in-tree.
@gytis-ivaskevicius what do you think?
@nrdxp what do you think?
@Pacman99 what do you think?

I like the idea and I think it would be really cool, but I do see some potential issues with this. I think @gytis-ivaskevicius direction for this project is fairly different from devos and if we rely on this is as a base it would likely hurt their ability to experiment and solidify this project. It is nice for devos library to be in tree since we still have a long way to go for a stable api, and being able to change library functions and add new features in the same PR/commit is really helpful.
But I do love that we have connected these two projects. I think we can all benefit from bouncing ideas off of each other to figure out the best practices. As @nrdxp puts it, the goal is a "community consensus". So I think this issue thread would be a great place to communicate between each other. And eventually decide if we want to incorporate the two somehow, or if we decide not to then at least maintain some collaboration.

I think we can steal the naming variant of shared prefix, like in sharedOverlays, etc. instead of extern.  "Shared" is "shared in my whole environment", "extern" is "extern to my own stuff", but inputs.something-different-than-self does make rhis already clear. So while "extern" is somewhat redundant "shared" is extra information.

I like the Builder suffix as it clearly reveals the builder paradigm. In devos the builder paradigm somewhat blurred. It is till distributed across many places and also the api in those places is not conceived to obey the ultra concise and high level api of the builder pattern: mkSystemFlake = nixosConfigurationBuilder { channel } mkHomeManagerFlake = hmConfigurationBuilder { channel }. The builder pattern makes dependency injection (channels) really blissfully simple. Big 👍

The code example leads me to another point: the layered approach (genericConfigurationBuilder / nixosConfigurationBuilder). I think @Pacman99, reading you between the lines, my understanding is that you also have a need or would very much welcome such a layered approch (e.g. mkHmConfiguration = hmConfigurationBuilder`)

Yeah I like the builder too. But I was thinking for devos to instead take a more nixpkgs style approach. Maybe you could pass overlays for devos that override lib functions. Devos 'builders' are blurred because each builder is very unique and does a lot, so I'm not sure builders is the best approach there.
Yes I would! Proper home manager support is something I want in devos(we're almost there!). And I have a PR open to add mkHomeConfiguration as a lib function. And a layered approach would be nice and a generic configuration builder would be cool. Perhaps it could be used for the isoConfig too.
Also we should probably move this discussion to the devos repo, since this issue is more relevant to how devos should work than about flake-utils-plus.

I think that it would be really cool to collaborate on something like this and I would like to note that I do not see much if any issues with DevOS implementing this particular flake, but that would quite possibly result in code redundancy due to the fact that DevOS strongly enforces file structure and flake-utils-plus leaves it up to the user to decide.
Anyways, since you guys piqued my curiosity (And that part of me that wishes to show off Nix superiority :D ) I will spend some time working on my version of DevOS and I guess after that we will compare the results :)
So I guess here are the candidates:

Original
Pacman99 take
My take (and yes, this is THE greatest repository name anyone can think of)

If anyone wishes to reach me - probably the best way to do so is via Discord @Gytis#0001 (Tho I am not closing this issue, or at very least not until the issue on devos GitHub gets created)
Also, later today I will create some new branch on this repo in which ill get rid of deprecated code (I left most of the old code there to preserve a smile on early adopters faces), and also I will tweak the existing code structure so it would be easier to customize it and implement in use cases like this one. So if anyone wishes to join in - use that

Sounds all pretty good!

DevOS strongly enforces file structure and flake-utils-plus leaves it up to the user to decide.

DevOS strives to also offer a congruent file system layout to a broader community. In a global social sharing model — one of the (social) dimensions of nix superiority — it will be (quite) easier for people to browse over each other's config.
On the other hand, I do think that the scattered way it is currently implemented is in need of some abstraction. Or in other words, the FSH needs to be implemented upfront of builders and builders need to become strictly unaware of this concern. @Pacman99 's take already nicely implements this.

I'd be glad to move forward on this and build off existing solutions rather than try and do everything in house (exactly what I was trying to eliminate with devos in the first place) and I'm well aware of the uninviting complexity that has evolved over time.
The main thing I've been pondering lately as well (part of the reason I haven't made any major changes recently) is how to properly reduce it. I'm glad I'm not the only one thinking about this and I'm sure we'd come up with a better solution together.
I will probably be fairly short on time for the coming month at least though, so I'm thinking about dishing out write access to large contributors of DevOS to keep the PR's moving. @gytis-ivaskevicius, if you are really willing to use your work and integrate it, I'd be glad to include you in this, as it seems our goals are aligned.

Finally got around to all this. Just reviewed @Pacman99 PR, looks really nice :+1: https://github.com/divnix/devos/pull/206#pullrequestreview-622314750

@gytis-ivaskevicius, if you are really willing to use your work and integrate it, I'd be glad to include you in this, as it seems our goals are aligned.

Our goals seem to be aligned, but flake-utils-plus will never beat a custom-built solution like @Pacman99 built since our approach is a little different, here are few core differences:

flake-utils-plus is a simple abstraction that is more of a "choose your own adventure" kind of thing.
DevOS - is a whole framework that introduced additional structure and concepts - for example "suites" - in flake-utils-plus world this would be something along the lines of this https://github.com/gytis-ivaskevicius/nixfiles/blob/master/flake.nix#L46-L55 or in case of a user having lots of suites to deal with - it could be specified in some suites.nix file or something along those lines. Heck, maybe some users prefer mySuiteName.nix with content as such: {...}: { imports = [ ./modules/a.nix  ./modules/b.nix]; }. In other words - I leave it up to the user to figure out.
flake-utils-plus has a limitation of not depending on nixpkgs (Its because I hope one day to merge it all to flake-utils repo)
@Pacman99 did an excellent job with adding type safety which I can not do due to the point above

That is a really good comparison and covers my exact opinion on the issue. I don't know if I personally will use flake-utils-plus but I really like the project and I think it is a very positive addition to the nix flakes ecosystem.
I think a similar analogy can be gnome vs tiling WM/kde:

When you use gnome, you end up following a specific format of desktop usage that the gnome devs prescribe and if you don't like it, you usually have ask for the format to be changed upstream - or send changes upstream yourself.
While with i3 or other tiling wm's you can change pretty much anything without an actual change in upstream i3. And similarly when using kde, there are so many options to tweak that you can change your desktop format without an upstream kde change.

Devos is some people working together towards a common format(gnome), while flake-utils-plus is more of a simpler library that gives you the tools to create your own format(i3/kde). Even though my PR does attempt to allow you to change the filesystem format, in the end you are still following the devos method of suites/profiles and other devos concepts.

Its because I hope one day to merge it all to flake-utils repo.

Nice! Strategically, to meet the "community consensus" goals,  anything DevOS does needs to be in a position to be rebased on your work, once that happens.
All in all, according to the goals, DevOS' framework-ish parts are better suited to be a value-added instead of an alternative.
So let's make sure DevOS is a prime stakeholder of any emerging library implementation, that might "graduate" into numtide/flake-utils. numtide/flake-utils acts — power of its widespread adoption — in a way as a quality gateway and strong community signal, here.

https://github.com/divnix/devos/pull/232

Will go over all that later today and maybe ill finally put some work into 1.1.0 release (staging branch). I am a little busy these days but I'm sure ill find some time for it.

At any rate, take them with a grain of salt. On the API PR that I linked above, you might find some more context to see where we're currently standing.

I'll look into it once I get home. I was under impression that DevOS will use purpose-built implementation written by pacman99.
If this is going to become part of DevOS - I guess quite a bit more cooperation from my side is required.
Also, I might as well hook you up with write access to the repo. (Tho you will not be allowed to push to master or anything like that)

To be honest, you have already made a good enough api which fits well with our goal. I have a few changes I plan to send as PR's, but I would say those are overall improvements to flake-utils-plus and not even specific to devos.
So consider us just a larger user of flake-utils-plus, and users who are very willing to contribute back :)
Other than reviewing, we will try not to put too much work for this on you.

Okay, a couple of things:

Both of you have write access, master branch is protected
I trust you guys enough to do merges yourselves
No matter the change I'd like to see examples updated accordingly, its just a nice overview
I don't think that patching currently works on staging (It is quite an annoying thing to maintain, not sure if we are supporting it :/ ) Related: https://github.com/NixOS/nix/issues/3920
If you guys have a Discord or something along those lines - I feel like it would be useful to create a bit more intimate communication channel between us ;) My Discord tag is Gytis#0001
For a proper review of PR's - I think the only solution is to actually properly test it. Maybe at this point, some actual tests should be created, even if it's semi-manual. Main test cases:

nix flake show
nix build /path/to/flake#nixosConfigurations.HOSTNAME.config.system.build.toplevel
Possibly evaluate a few attributes nixosConfigurations.HOSTNAME.config (honestly, probably this test case is not necessary, not sure :/ )

If you guys are up for it - I'm pretty sure that lib argument is kinda needed for all this. (It should be passed as flake output and should become part of user system configurations as well)

What exactly would you guys like me to do/work on?

No matter the change I'd like to see examples updated accordingly, its just a nice overview

I realize now that examples are your method of documentation, so I will make sure to update existing PR's before merging.

I don't think that patching currently works on staging (It is quite an annoying thing to maintain, not sure if we are supporting it :/ ) Related: NixOS/nix#3920

patching is cool, but overlays usually does the job for most cases. And then there are those instances when you just copy a file from nixpkgs and edit it locally. So I'm not against removing it, but its up to you.

If you guys have a Discord or something along those lines - I feel like it would be useful to create a bit more intimate communication channel between us ;) My Discord tag is Gytis#1

Mine's ParthivS#2050, I think your missing something, that username doesn't exist for me. But go ahead and send me a request.

For a proper review of PR's - I think the only solution is to actually properly test it. Maybe at this point, some actual tests should be created, even if it's semi-manual. Main test cases:

My brother uses flake-utils-plus, so I just set his utils input to a path on my system and have been testing with that. So my PR's should be tested thoroughly. I usually just do a nix flake check as that does most testing for you. But I can start checking if the configuration builds too.

What exactly would you guys like me to do/work on?

For the host rename, it might be better for you to do them, since we don't know all about where profiles is used in the repo, and also I want to leave the final rename decision to you. But I think @blaggacao has already outlined a lot of goals as github issues.

May I get some sort of update from DevOS side of things as well as some update on fup issues and status of these branches - what's holding them back? https://github.com/gytis-ivaskevicius/flake-utils-plus/branches (Also some of those branches are crying for rebase)

We are already sketching on first attempts to rebase, I think what currently blocks us is:

#42 #43 #44

Overall good progress and we are in the final round.

I was looking over devos/lib just now. I really don't understand a lot of it :D (like use-cases of half of those functions) but I am quite confident that flake-utils-plus would like to steal these two specimens:
https://github.com/divnix/devos/blob/api-next/lib/devos/recImport.nix
https://github.com/divnix/devos/blob/api-next/lib/devos/devosSystem.nix (I'm thinking about filterAttrs over inputs and if required input exist - add hm/iso entries. WIll play around with its implementation someday)

Make sure to look at api-next branch :-)

Beginning of the project:

Small little helper that will probably get merged with actual flake-utils repo
The current state of the project:
Uhhh, will numtide even going to consider accepting this much of code :eyes:

from the other side: divnix/devos#270

Since fup is merged in - do you guys think that this should be closed? I guess the same goes for the issue above?

Immediate goal achieved.
:clap:  :clap:  :clap:  :clap:  :clap:  :clap:  :clap:
:cocktail: :cocktail: :cocktail: :cocktail: :cocktail: :cocktail: :cocktail:


popup for view occurrences is not working for non authenticated users

This has been resolved and pushed to dev1 and dai servers.


Install recommended fonts by using real tex-common

Instalaltion time 5m 14s

Works in main without any (real) hack.


Fix types for Text, TextFactory and TextCreator

This PR (delete as applicable)

Updates the Documentation

Describe the changes below:
The TextCreator was lacking types for its config parameter, so I added a TextConfig type. The TextFactory typed its style parameter as 'object', I changed it to TextStyle. Lastly, I changed the type of Text's padding property to TextPadding, as that type is used other places (like in TextStyle, which can be used to set that padding property).
Let me know if I missed something with regards to TextConfig, I tried typing it similar to how it was done with for instance TileSprite and TileSpriteConfig, based on what object properties TextCreator seemed to use.

Looks good to me 👍


Unable to retrieve the resource after attaching one local service using SAS URI

Storage Explorer Version: 1.9.0_rel/1.9.0_20190625.3
Platform/OS: Linux Ubuntu/macOS High Sierra/Windows 10
Architecture: ia32/x64
Regression From: Not a regression
Bug Description
Unable to retrieve resource after attaching one local service using SAS URI.
Steps to Reproduce

Make sure Storage Emulator has been started.
Expand 'Local & Attached' -> 'Storage Accounts' ->'Emulator - Default Ports(Key)' -> 'Tables' node.
Create a new table -> Get the SAS URI for the created table.
Attached the table using SAS URI.
Check the result.

Expected Experience
The attached table appears under the 'Tables' in the (Attached Containers) section.
Actual Experience
Unable to retrieve the resource.

Additional Context
Maybe the local service cannot be attached using SAS URI.
I cannot attached other tables for now due to the error. Could you help me to handle the error?

Hi, this is a very rare use case and we decided not to fix it soon. If any customer comes to us for this, we will revisit and make a fix.


[Branch-1.8] Disable client-side metrics by default

@apc999 regenerate docs?

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/4216/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/4228/
Test FAILed.

@calvinjia  PTAL

alluxio-bot, merge this please.


fixieai deploy failing

fixieai deploy for my Fixie agent is failing w/ 500, though fixieai serve works fine. My other simple hello_world agent succeeds.
Only difference as far as I know is that I have a .gitignore, import openai, and import another .py file (that is referenced in gitignore). That py file just stores the env variable, and seems to work fine when serving.
Using WLS Ubuntu. Python 3.10.6

Fixed by adding requirements.txt with openai dependency


Latest update giving library error.

Me again sorry, looks like the latest build is throwing the following:
10.08.2020 14:43:36 : Unexpected makemkvcon output:
rm: cannot remove '*.tmp': No such file or directory
makemkvcon: error while loading shared libraries: libmakemkv.so.1: cannot open shared object file: No such file or directory
It repeats several times before giving up:
10.08.2020 14:44:36 : Unexpected makemkvcon output:
10.08.2020 14:44:36 : Too many errors, ejecting disk and aborting
makemkvcon: error while loading shared libraries: libmakemkv.so.1: cannot open shared object file: No such file or directory

Yup, there is a build error (that did not stop the build itself) which leads to ffmpeg. Hopefully updating to ffmpeg 4.3.1 fixes this

Just pulled the new build and that still complains about the same dependency FYI

Currently no idea how to fix this. Any help is welcome.


serde_json 1.0.3 broke Diesel's build

The following code will compile successfully on its own, but fails if extern crate serde_json; is added where serde_json is 1.0.3. 1.0.2 will compile successfully.
fn returns_generic_vec_result<T>() -> Result<Vec<T>, ()> {
    Ok(Vec::new())
}

fn main() {
    let bools = vec![true, false];
    let stuff = returns_generic_vec_result().unwrap();
    assert_eq!(bools, stuff);
}

I believe that this commit is what broke things. That is technically a minor breaking change as defined in RFC #1105. That said, I personally think that implementing a trait that is not defined in your library for a type that is not defined in your library should be reserved for semver-major, as it can cause completely unrelated code to break in surprising and hard to debug ways (like this case). I figured I'd bring it to your attention either way

Thanks for reporting this! I will be more mindful of new trait impls in the future.

Cc @ehuss, should this be mentioned in the semver compatibility rules / guidelines?

That's a weird one!  I added it to the list at https://github.com/rust-lang/cargo/issues/8736. It might already be covered by one of the other "implement a trait can break things" entries, but this seems subtly different. I'm not too familiar with the inference algorithm, so I'm not sure how best to express inference issues (there's also a question of whether or not we should consider inference changes as breaking).


Fix typo in Built-In Routing Conventions

Looks like this line was accidentally modified with the line above by d040956d4112a903044c9b842a91fa6ec0c66751 - I replaced the line from the previous revision.

Docs Build status updates of commit c89a001:
:warning: Validation status: warnings

File
Status
Preview URL
Details

Odata-docs/webapi/built-in-routing-conventions.md
:warning:Warning
View
Details

Odata-docs/webapi/built-in-routing-conventions.md

[Warning] Missing attribute: author. Add the current author's GitHub ID.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@stprior , thanks for the contribution.


Youtube music provider HTTP 401: Unauthorized

What version of Music Assistant has the issue?
2.0.0b28
The problem
When I playing an album of youtube music, suddenly the music stop after few played track.
I genereted new cookie but same problem
How to reproduce
I select play now album and after few tracks the music stop
Relevant log output
2023-04-20 11:10:34 ERROR asyncio  -- Task exception was never retrieved
future: <Task finished name='Task-8' coro=<MetaDataController.start_scan..scan_artist_metadata() done, defined at /usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/metadata.py:82> exception=Exception('Server returned HTTP 401: Unauthorized.\nYou must be signed in to perform this operation.') created at /usr/local/lib/python3.11/site-packages/music_assistant/server/server.py:252>
source_traceback: Object created at (most recent call last):
File "/usr/local/bin/mass", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.11/site-packages/music_assistant/main.py", line 108, in main
run(
File "/usr/local/lib/python3.11/site-packages/aiorun.py", line 273, in run
loop.run_forever()
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
self._run_once()
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1914, in _run_once
handle._run()
File "/usr/local/lib/python3.11/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/music.py", line 99, in start_sync
self.mass.metadata.start_scan()
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/metadata.py", line 105, in start_scan
self.mass.create_task(scan_artist_metadata)
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/server.py", line 252, in create_task
task = self.loop.create_task(target(*args, **kwargs))
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/metadata.py", line 99, in scan_artist_metadata
await self.mass.music.artists.get(artist.item_id, artist.provider, lazy=False)
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/media/base.py", line 168, in get
details = await self.get_provider_item(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/media/base.py", line 416, in get_provider_item
if item := await provider.get_item(self.media_type, item_id):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/models/music_provider.py", line 253, in get_item
return await self.get_artist(prov_item_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/ytmusic/init.py", line 248, in get_artist
if artist_obj := await get_artist(prov_artist_id=prov_artist_id):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/ytmusic/helpers.py", line 30, in get_artist
return await asyncio.to_thread(_get_artist)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/threads.py", line 25, in to_thread
return await loop.run_in_executor(None, func_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/ytmusic/helpers.py", line 22, in _get_artist
artist = ytm.get_artist(channelId=prov_artist_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/ytmusicapi/mixins/browsing.py", line 210, in get_artist
response = self._send_request(endpoint, body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/ytmusicapi/ytmusic.py", line 146, in _send_request
raise Exception(message + error)
Exception: Server returned HTTP 401: Unauthorized.
You must be signed in to perform this operation.
2023-04-20 11:11:11 ERROR pychromecast.socket_client  -- [All Google Device(<IP_ADDRESS>):32248] Error reading from socket.
Additional information
No response
What version of Home Assistant Core are your running
2023.4.5
What type of installation are you running?
Home Assistant OS
On what type of hardware are you running?
Raspberry Pi

@MarvinSchenkel ??

Do you have another player you can try this on? Just want to check that it is indeed an issue with the music provider and not the player...

Do you have another player you can try this on? Just want to check that it is indeed an issue with the music provider and not the player...

Hi, this morning I disable YM provider and I play 40 tracks from files system provider with no error. Normally with YM for 12 tracks I need to press play 2 or 3 time to listen all tracks :)

Ok in an upcoming release the cookie method of authentication is being replaced so let’s see if that fixes it.

Please try this again with beta 30

Same issue
2023-05-15 12:24:20 ERROR asyncio  -- Task exception was never retrieved
future: <Task finished name='Task-34' coro=<MetaDataController.start_scan..scan_artist_metadata() done, defined at /usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/metadata.py:82> exception=Exception('Server returned HTTP 401: Unauthorized.\nYou must be signed in to perform this operation.') created at /usr/local/lib/python3.11/site-packages/music_assistant/server/server.py:252>
source_traceback: Object created at (most recent call last):
File "/usr/local/bin/mass", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.11/site-packages/music_assistant/main.py", line 108, in main
run(
File "/usr/local/lib/python3.11/site-packages/aiorun.py", line 273, in run
loop.run_forever()
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 607, in run_forever
self._run_once()
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1914, in _run_once
handle._run()
File "/usr/local/lib/python3.11/asyncio/events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/music.py", line 562, in on_sync_task_done
self.mass.metadata.start_scan()
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/metadata.py", line 105, in start_scan
self.mass.create_task(scan_artist_metadata)
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/server.py", line 252, in create_task
task = self.loop.create_task(target(*args, **kwargs))
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/metadata.py", line 99, in scan_artist_metadata
await self.mass.music.artists.get(artist.item_id, artist.provider, lazy=False)
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/media/base.py", line 166, in get
details = await self.get_provider_item(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/controllers/media/base.py", line 435, in get_provider_item
if item := await provider.get_item(self.media_type, item_id):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/models/music_provider.py", line 253, in get_item
return await self.get_artist(prov_item_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/ytmusic/init.py", line 284, in get_artist
if artist_obj := await get_artist(prov_artist_id=prov_artist_id):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/ytmusic/helpers.py", line 41, in get_artist
return await asyncio.to_thread(_get_artist)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/threads.py", line 25, in to_thread
return await loop.run_in_executor(None, func_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/music_assistant/server/providers/ytmusic/helpers.py", line 33, in _get_artist
artist = ytm.get_artist(channelId=prov_artist_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/ytmusicapi/mixins/browsing.py", line 210, in get_artist
response = self._send_request(endpoint, body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/ytmusicapi/ytmusic.py", line 132, in _send_request
raise Exception(message + error)
Exception: Server returned HTTP 401: Unauthorized.
You must be signed in to perform this operation.

Can you remove the YTM provider and re-add and confirm the OAUTH flow appears to work correctly. If it does and you still have this issue then think about what you might have that is non standard in your install or network setup (eg.

Also please confirm you are using YouTube music premium

Could not reproduce this locally, but I added authentication while receiving artist information. This should not be required, since artist information can be retrieved without authentication, but I guess you have added some private artists / users / pages in your library.
Should be resolved in the next beta (31), so let's verify that when it is released.

@michaeldufour has this been resolved in the latest beta?

@OzGav @MarvinSchenkel Since the last beta so far we don't have any issue with the YT provider, no authentification error in the MA log.
Thanks for your help


move CircuitExt implementation to their corresponding circuit in zkevm-circuit repo

It is cleaner to implement CircuitExt in the crate where the circuit is actually defined, i.e., inside zkevm-circuit repo.
We cannot do it right now because zkevm-circuit somehow relies on snark-verifier. If we move the CircuitExt implementation to  zkevm-circuit,  it will creates a cyclic dependency.
We will revisit this issue later.

default implementation has been added to CircuitExt so the subcircuits do not need to implement CircuitExt. See
https://github.com/scroll-tech/snark-verifier/blob/f6d18e4a9f2756698d30af3a110511abc45a92f3/snark-verifier-sdk/src/lib.rs#L93-L108
https://github.com/scroll-tech/snark-verifier/blob/663d40c117b7953981dff671af58f216e3962e6d/snark-verifier-sdk/src/circuit_ext.rs#L7-L28
cc @icemelon


Feature Request: QueryEntity#selectEntityAction accept multiple EntityActions

I'm submitting a...

[ ] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report
[ ] Performance issue
[x] Feature request
[ ] Documentation issue or request
[ ] Support request
[ ] Other... Please describe:

Current behavior
QueryEntity#selectEntityAction currently accepts a single EntityActions or none,
Expected behavior
QueryEntity#selectEntityAction should accept multiple EntityActions similarly to ngrx's ofType operator.
What is the motivation / use case for changing the behavior?
In our app we sometime need to listen to a subset or all of EntityActions, in order to get these actions we need to use RxJS merge operator and select each EntityActions separately, for example:
    merge(
      this.itemQuery.selectEntityAction(EntityActions.Add),
      this.itemQuery.selectEntityAction(EntityActions.Remove)
    ).subscribe(() => {
      // ... do something accordingly
    });

A workaround is to expose a selector which holds the above code.
With selectEntity accepting multiple EntityActions the above code could be reduced to:
    this.itemQuery
      .selectEntityAction(EntityActions.Add, EntityActions.Remove)
      .subscribe(() => {
        // ... do something accordingly
      });

Would be happy to submit a PR if needed :)

That could realy help my project too. We encountered it also

Hi, we would be glad if you create a PR. I think about something like this:

selectEntityAction(...actions: EntityActions[]): Observable<IDType[] | EntityAction<IDType>> {

    if (actions.length === 0) {
        return this.store.selectEntityAction$;
    }

    return this.selectEntityAction$.pipe(
        filter(action => actions.include(action.type),
        map(({ type, ids }) => ({ [type]: ids })))
    );

}

The result would be objects like { [EntityActions.Update]: [1,2,3,4] } with the action as key and the ids as value.

@xbaun I wonder whether it's worth to check if the array has only single element to keep current behavior or to be consistent and change even for a single action type.

@xbaun I encountered a weird test assert while implementing, in entityActions.spec.ts there is call to entityStore.remove() with now parameters.
After debugging and going over the code it seems that is emits a { type: EntitiesActions.Remove, ids } where ids are set to null.
The mentioned test asserts it emits ids as [3, 4] and somehow passes, am I missing something?

Seems to be an error in the specs: After each entity store function call spy.mockClear(); should be called and therefor the last test seems to be wrong.
@NetanelBasal There seems also to be a failure in entityStore.remove() which probably should not emit an entity action if no arguments are provided to remove.

Why? it means to remove all.

Ok I see. But the emitted entity action has the ids payload set to null, instead of the complete entity stores ids array.

This is a bug.

@NetanelBasal created issue #503 to fix this before moving on with this feature


sass @import files not compiled on change

If you watch an entire dir with sass, changed @import files will be compiled on change, because changes will be detected by sass.
This is not possible in assetic, due to the fact that you can not add a dir path as an asset to Assetic.
So everytime a @import file is changed, the main file where the @imports's are defined need to be 're-saved' to make shure all the new stuff gets compiled.

@jverdeyen @nicolopignatelli check these bundles: CompassElephantBundle and LessElephantBundle


When you stop and resume capture session, orientation detection doesn't work anymore

I have modified the demo project in order to add the possibility to switch to another screen and then come back. This way, viewWillDisappear is called on ViewController, and then viewWillAppear is called again, resulting in stopCaptureSession being called and then resumeCaptureSession. In that case, when you try to switch from portrait to landcape, the preview is all skewed.

Thanks for spotting this one. It's fixed.


sentry: Reduce http timeout.

This helps reduce the impact on busy uwsgi processes in case there are slow timeout failures of Sentry servers.  The p99 is less than 300ms, and p99.9 per day peaks at around 1s, so this will not affect more than .1% of requests in normal operation.
This is not a complete solution (see #26229); it is merely stop-gap mitigation.

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Good idea, merged, thanks @alexmv!

Backported to 7.x as 61b5577cf49ef1bb5b11f6840e449809474058e0.


Pre-support for C++20

What problem does this PR solve?
Issue Number: ref #5993
Problem Summary:
What is changed and how it works?
Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/build

/build

/build

/rebuild

/run-all-tests

/merge


An abnormal interrupt occurred during operation ,based on win10's cmd

An abnormal interrupt occurred during operation ,based on win10's cmd.

This question comes up occasionally

I'm sorry but it's impossible to help you with this information alone. Notice also that if you aren't certain this is a bug in Robot Framework itself and are mainly looking for help, it would be better to send question to actual support forums such as our Slack and email list. This issue tracker is for bug reports and enhancement requests in Robot Framework core.


When scanning, callback method not called for some advertisements received, causes memory leak

We are running a scanner indefinitely on our ESP32, with duplicates enabled and maxResult == 0.
This results in continues decrease of available memory.
W are getting a lot of advertisements (vrom for me unknown devices) which are added to the scanResult m_advertisedDevicesVector but for which the callback method is never called, and hence they are never removed from the vector.
To test this I added some code to periodically remove all advertisements in the vector that are older than 10 sec, and now my memory use is stable.
I can't find any documentation on the event_type's that are used in if statements in NimBKEScan.cpp (around line 143) so I don;t know what the root cause of this is. Why is the onResult() method for these advertisements never called, but for other advertisements the callback is called?
Hope anyone can shed some light on this

This is caused by active scanning. If a scan response is never received the device will remain in the buffer until the response is received and the callback called. Try testing with active scanning disabled and let me know.

thanks. this seemed to have solve the problem.  now let's hope that now of
the devices we use need active scanning ...
Op vr 25 nov. 2022 17:26 schreef h2zero @.***>:

This is caused by active scanning. If a scan response is never received
the device will remain in the buffer until the response is received and the
callback called. Try testing with active scanning disabled and let me know.
—
Reply to this email directly, view it on GitHub
https://github.com/h2zero/NimBLE-Arduino/issues/481#issuecomment-1327677374,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAE2WLEBDFJJMWHPFMQFS53WKDSD3ANCNFSM6AAAAAASLOSJDQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


Effects of running with LazyDFU

Smooth Boot's wiki says:

Smooth Boot will work alongside LazyDFU.

while LazyDFU's readme says:

LazyDFU takes a similar implementation approach to Smooth Boot: both mods do not try to modify DFU. However, LazyDFU is superior to Smooth Boot as it does not compile DFU rules at all, which is the most expensive part of the game startup process.

In comparison, Smooth Boot will instead limit the number of threads that compile DFU rules and run them at a lower priority.

Could you elaborate a bit more on what are the effects of running the two together.
From my understanding, LazyDFU will make the game startup faster while Smooth Boot will continue to keep it stable afterwards by adjusting the way it is threaded. Is that correct?

Basically, LazyDFU will improve the initial starting time, and Smooth Boot will make the game run smoother during parallel workloads (loading assets, generating chunks, etc).
Smooth Boot improves the initial loading speed by making DFU run with a lower number of threads and at a lower priority, so that the main threads used for loading can take up more CPU time. LazyDFU prevents DFU from initializing at startup altogether. So if you have LazyDFU installed, Smooth Boot will not improve loading times much further.
The other use of Smooth Boot is for changing thread priority and the number of threads Minecraft uses for parallel workloads. This is useful when Minecraft is pegging the CPU to 100% and slowing down other programs. In these situations, reducing the thread count and thread priority will make Minecraft take up less CPU. It could also reduce stuttering during gameplay if less CPU time is stolen from the main thread during these workloads.

Thank you!


Support other types of rounding

Round up (the current behavior)
Round down
Round toward 0
Round away from 0
Round to even
Round to odd

Potentially:

Round randomly
Floor
Ceiling

I found a good list and explanation at https://www.mathsisfun.com/numbers/rounding-methods.html

I could just add a bunch of functions:

round_tie_up_to(factor)
round_tie_down_to(factor)
round_tie_toward_0_to(factor)
round_tie_away_from_0_to(factor)
round_tie_even_to(factor)
round_tie_odd_to(factor)

And their try_ partners.
Alternatively, I could do something like round_to(factor, Tie::AwayFromZero). I suppose the factor could be an argument on the rounding method: round_to(Tie::AwayFromZero(factor)), but that doesn’t seem as clear.


Specify request headers as additional parameters

As outlined in https://github.com/mbryzek/apidoc/issues/519 this may not be the ideal solution. @mbryzek thoughts?

Not happy with this solution. I believe #524 is the better approach.

@mbryzek this should be compatible with the swagger spec now, see http://swagger.io/specification/.
Can we deprecate global (service-level) headers?

Nice!

@mbryzek do you think this is good to go?

The test failure appears to be spurious


Add 1.8.0-rc3

I've added it on master, and also made the switch that the aarch64 builds are now the default for Mac starting with 1.8.0-rc3. Thanks for the PR, though :)


Don't unregister commands when REAPER quits

according to Justin's comment:
"SWS should be updated to not unregister IDs it doesn't own (or not unregister IDs at all, really)"
https://forum.cockos.com/showthread.php?p=2509487#post2509487
Would probably supersede #1591.
I've left SWSUnregisterCmd() in because it's also used by Cycle actions (FlushCycleactions()).

:white_check_mark: Build sws 697-master completed (commit https://github.com/reaper-oss/sws/commit/cd5bc92a39 by @nofishonfriday)

Windows 64-bit

build/BuildUtils/SWS_Template.ReaperLangPack
build/BuildUtils/whatsnew.html
build/reaper_sws-x64.pdb
build/sws-<IP_ADDRESS>-Windows-x64-dont-unregister-cmds-on-quit-cd5bc92a.exe

Windows 32-bit

build/BuildUtils/SWS_Template.ReaperLangPack
build/BuildUtils/whatsnew.html
build/reaper_sws-x86.pdb
build/sws-<IP_ADDRESS>-Windows-x86-dont-unregister-cmds-on-quit-cd5bc92a.exe

macOS x86 64-bit

build/sws-<IP_ADDRESS>-Darwin-x86_64-dont-unregister-cmds-on-quit-cd5bc92a.dmg

macOS x86 32-bit

build/sws-<IP_ADDRESS>-Darwin-i386-dont-unregister-cmds-on-quit-cd5bc92a.dmg

macOS ARM 64-bit

build/sws-<IP_ADDRESS>-Darwin-arm64-dont-unregister-cmds-on-quit-cd5bc92a.dmg

Linux x86 64-bit

build/sws-<IP_ADDRESS>-Linux-x86_64-dont-unregister-cmds-on-quit-cd5bc92a.tar.xz

Linux x86 32-bit

build/sws-<IP_ADDRESS>-Linux-i686-dont-unregister-cmds-on-quit-cd5bc92a.tar.xz

Linux ARM 64-bit

build/sws-<IP_ADDRESS>-Linux-aarch64-dont-unregister-cmds-on-quit-cd5bc92a.tar.xz

Linux ARM 32-bit

build/sws-<IP_ADDRESS>-Linux-armv7l-dont-unregister-cmds-on-quit-cd5bc92a.tar.xz

:white_check_mark: Build sws 698-master completed (commit https://github.com/reaper-oss/sws/commit/99ac178f2e by @nofishonfriday)

Windows 64-bit

build/BuildUtils/SWS_Template.ReaperLangPack
build/BuildUtils/whatsnew.html
build/reaper_sws-x64.pdb
build/sws-<IP_ADDRESS>-Windows-x64-dont-unregister-cmds-on-quit-99ac178f.exe

Windows 32-bit

build/BuildUtils/SWS_Template.ReaperLangPack
build/BuildUtils/whatsnew.html
build/reaper_sws-x86.pdb
build/sws-<IP_ADDRESS>-Windows-x86-dont-unregister-cmds-on-quit-99ac178f.exe

macOS x86 64-bit

build/sws-<IP_ADDRESS>-Darwin-x86_64-dont-unregister-cmds-on-quit-99ac178f.dmg

macOS x86 32-bit

build/sws-<IP_ADDRESS>-Darwin-i386-dont-unregister-cmds-on-quit-99ac178f.dmg

macOS ARM 64-bit

build/sws-<IP_ADDRESS>-Darwin-arm64-dont-unregister-cmds-on-quit-99ac178f.dmg

Linux x86 64-bit

build/sws-<IP_ADDRESS>-Linux-x86_64-dont-unregister-cmds-on-quit-99ac178f.tar.xz

Linux x86 32-bit

build/sws-<IP_ADDRESS>-Linux-i686-dont-unregister-cmds-on-quit-99ac178f.tar.xz

Linux ARM 64-bit

build/sws-<IP_ADDRESS>-Linux-aarch64-dont-unregister-cmds-on-quit-99ac178f.tar.xz

Linux ARM 32-bit

build/sws-<IP_ADDRESS>-Linux-armv7l-dont-unregister-cmds-on-quit-99ac178f.tar.xz

I think it's better to still properly unregister anything that was registered when unloading, even though omitting it is technically OK from REAPER's side.
I haven't checked, but wouldn't there be a chance of a script's atexit running after SWS has partially unloaded, running a SWS action leading to a use-after-free?

I think it's better to still properly unregister anything that was registered when unloading, even though omitting it is technically OK from REAPER's side.

Hm...to me it seems to contradict with what Justin is saying ("not unregister IDs at all, really").
Could you elaborate on your reasoning?

I meant that while it can be safe to omit unregistering extension actions from REAPER's side, it might not be so from SWS' side. (Plus in general it's good practice for software to cleanup after itself, even if technically the OS does it anyway.)
I thought for instance a buggy script doing
function loop() reaper.defer(loop) end
reaper.defer(loop)

reaper.atexit(function()
  reaper.Main_OnCommand(reaper.NamedCommandLookup('_SWSSNAPSHOT_OPEN'), 0)
end)

...would lead to using g_pSSWnd after it has been freed.
But I've just checked, that isn't actually the case, as action callbacks are disabled. So the above is an non-issue.
https://github.com/reaper-oss/sws/blob/b8bb9af7935ae2ef6e92f17faeff54064658e447/sws_extension.cpp#L658-L659

Ok, closing this one. :)


customizable clock?

Love the theme and the widgets!
I noticed that you're using images for the clock. I understand that's an easy way to get it to display correctly in all environments, but have you considered adding just a text clock? That would make it way more customizable with fonts, time formats, etc.
thank you! 🙏🏼

Also I notice that you're shipping with compiled .pyc files for core and engine. Would you consider releasing the source files for this? I'd love to take a look :)

You can change it. it's been open since 2023.2.


Man page

Autogenerate a man page based on our cli commands.

Agree that we need to do this, but we are already heavily scheduled for the first public MVP.

Closed by #198.

Not quite closed yet since it will only build for one of the platforms.

@kenperkins totally made me comment somewhere to confirm his email rules.


(WIP) (PUP-8705) Add SRV record support with caching

This commit adds SRV support to Puppet::Rest::Client. It also updates
our existing SRV support to cache the DNS record list, to cut down on
the number of DNS lookups we do.

The Network::Resolver is now a class that stores the result of the DNS
lookup. TTL checking for this cache will come in a later commit.

The Rest::Client will cache the first server it can talk to during
server resolution and only revisit the DNS listings if that server
can no longer be reached.

I'd love a second set of eyes to confirm what I'm seeing in the Ruby Resolv::DNS code, namely that it looks like they throw away the TTLs for resources, see https://github.com/ruby/ruby/blob/trunk/lib/resolv.rb#L576-L585 which percolates out to https://github.com/ruby/ruby/blob/trunk/lib/resolv.rb#L498, which is what they expose and document to be called by users. We might be able to pry several levels deeper to get them, but I'm a little leery of crossing the line into "private" API.

CLA signed by all contributors.

If I'm reading the docs right, it says the objects returned should be a Resolv::DNS::Resource subclass, which all should have ttl defined on them. The ttl of the instance is set in get_rr. If I followed it right it gets there from fetch_resources -> a Requester subclass -> Message -> MessageDecoder.

Yeah I think you're right, I found that spot right after posting my previous comment (of course). I really hate that they don't expose the way to set this at all, because it will make testing a little weird, but oh well.

This is build on top of https://github.com/puppetlabs/puppet/pull/6833 and will need to be rebased once that is merged.

jenkins please test this

Acceptance tests passed. Squashing commits.


Admin Forms Page

As an admin, I want to manage groups and users of the CCM website by adding users to groups, so that they can perform their work.
[Story Points: 2]
[Priority: Medium]
[Risk: Medium]
This is a subtask of #21
Demo steps:
Given I'm logged in as an admin,
From the home page I can view the admin section,
From the admin section I can go to a page to edit and manage groups,
From there, I can click "Add" to go to the add users page, and add users to the group

https://github.com/JamesPartsafas/ConcordiaCurriculumManager/assets/77465567/99990f53-55ae-4593-ad61-ea1902d37652


About the difference between DCFST-18 tracker file and DCFST-50 tracker file

Hi author, thanks for your wonderful work. As you mentioned in the ReadMe, there are two different tracker files for DCFST-18 and DCFST-50 separately, but it seems that the only difference between  DCFST-18 and DCFST-50 should only be the network layer number. So, 1) why two different tracker files are necessary? 2) what's the main differences between two tracker files? 3)can I use tracker file of DCFST-50 to track DCFST-18 model and get similar performance with the reported results in paper?
Thank you very much!

Thank you for your attention！In fact, there is no essential difference between the two tracker files. The most direct reason for the two versions is to catch up with the deadline of VOT2019, we wrote a rough version in a short time, that is DCFST-18 file. Later, in order to better show our method in the submited paper, we re-optimized part of the implementation details of DCFST-18 tracker to make it more efficient and part of the details more reasonable, then DCFST-50 file came up. You can test any tracker file with any backbone. We just provide DCFST-18 file to reproduce the result of the paper perfectly. In fact, DCFST-50 is recommended.

Thank you for your attention！In fact, there is no essential difference between the two tracker files. The most direct reason for the two versions is to catch up with the deadline of VOT2019, we wrote a rough version in a short time, that is DCFST-18 file. Later, in order to better show our method in the submited paper, we re-optimized part of the implementation details of DCFST-18 tracker to make it more efficient and part of the details more reasonable, then DCFST-50 file came up. You can test any tracker file with any backbone. We just provide DCFST-18 file to reproduce the result of the paper perfectly. In fact, DCFST-50 is recommended.

I got it! Thanks for your reply.


Submit extension to marketplaces

Submitted

[x] Chrome
[x] Firefox
[x] Edge (Chromium)

Approved

[x] Chrome
[x] Firefox
[x] Edge (Chromium)

Edge (Chromium) approved! Thank you!

Thanks for letting us know :)


[Gamecube] HW2 Shutdown Button Combination Collision

For HW2 setups, the power shutdown button combination collides with that of Super Smash Bros Melee’s back to menu command. (L+R+A+Start)
Would suggest changing it to something else to avoid inadvertent shutdowns, especially in a popular game.

v1.9 will make combo function customizable.
As a workaround you could map one of the unused button to make the combo via the advance config mapping.
Example with playstation label for SRC and gamecube label for DST:
SRC DST
L1 L digital
L1 R digital
L1 Start
L1 A
Click the "+' button in web page to add extra mapping. Leave all other columns to default value.
with that mapping pressing L1 will result in combo L+R+Start+A

You can now modify the macro buttons in v1.9
See https://github.com/darthcloud/BlueRetro/releases/tag/v1.9


fix(readme): update submodule docs

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


KIE Sandbox: Write e2e tests of GitHub and Bitbucket integration

Originally reported by @porcelli

Related:

#244

depends on defining the matrix  https://github.com/bamoe/private-bamoe-issues/issues/200
and this task needs to be broken down


Update AboutUs to include PPP link

Pull Request Test Coverage Report for Build 230

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 83.12%

Totals

Change from base Build 229:
0.0%

Covered Lines:
2408

Relevant Lines:
2897

💛  - Coveralls


[.Net][Input.Choiceset's Text's foreground Doesn't Adapt to Parent's Container Background color]

Platform
What platform is your issue or question related to? (Delete other platforms).

.NET WPF

Details

As the screenshot shows, text's foreground color doesn't adapts to parent view's background color
However, this scenario works with Input.Toggle as shown in the screenshot below:

Explain your issue. If you just have a question, please post on StackOverflow instead.

@nesalang, is this a WPF renderer only bug? What is the behavior on the other platforms here? This looks like something we should fix - @RebeccaAnne , @paulcam206 , @matthidinger , @dclaux  for thoughts/comments here also.

@nesalang, is this a WPF renderer only bug? What is the behavior on the other platforms here? This looks like something we should fix - @RebeccaAnne , @paulcam206 , @matthidinger , @dclaux for thoughts/comments here also.

@shalinijoshi19
UWP has same issues.
we haven't defined behavior for text foreground color for inputs.


Can't install package with pip install

To reproduce:
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'  # or pip install '.[dev]', pip install .

Error:

On my system with python3.11 all three variants of the commits just works!


SublimeLinter 4 will stop supporting inline settings

We're making big changes to SublimeLinter and version 4 will no longer support inline settings. Users should migrate to configuration features of their particular linter, in this case to mypy config files.
Additionally we now recommend against replication such configuration features in SL linter plugins. When you update this plugin you could consider removing any such settings to simplify and future-proof it.

Related: #16.


2019 05 01 wallet ammonite scripts pt2

This is built on top of #450 and supersedes #430
If you look at #430, we have had issues with jeromq when trying to link a bitcoind instance to our chain project via zmq. This PR links a bitcoind instance to our chain project using ChainSync which is introduced in #450. Now we sync our internal chain state in bitcoin-s via rpc instead of zmq.
To run this script you need to do
$ sbt "doc/run doc/src/main/scala/org/bitcoins/doc/wallet/create-wallet.sc"

I did have issues running the script multiple (a single run works) times in the sbt console. I believe this has something to do with sharing the same jvm as sbt, but I tried using fork in run := true in our doc project and that did not work. This is probably because I don't understand the relationship between sbt, ammonite, and the script.

It looks like you deleted secp256k1jni/natives/linux_64/libsecp256k1.la. I take it this was not on purpose?

d36a2e0 attempts to fix the problems i'm having with closing the zmq subscriber.
Related reading I used to fix this problem
https://github.com/zeromq/jeromq/issues/116
https://stackoverflow.com/questions/38215839/jeromq-subscriber-in-a-runnable
I think my issue was a combination of two things.

Not using setLinger(). This setting on the socket gives us a deadline for our subscribers to consume a message before it is discarded. See the setLinger() documentation for more information.
Using subscriber.close() to close the underlying network socket. I think I got bad advice from someone about trusting context.term() to release the underlying resources.

Coverage decreased (-0.3%) to 90.369% when pulling<PHONE_NUMBER>613b8d15d22662f34ae071cd01b526 on Christewart:2019-05-01-wallet-ammonite-scripts-pt2 into b63d6e44bf11f7423f0776b99b889d24e80d40e1 on bitcoin-s:node.


Make "error 64" after succesfully building OSX backend

haskelldo-core-<IP_ADDRESS>: copy/register
Installing executable(s) in
/Users/.../haskell-do/core/.stack-work/install/x86_64-osx/lts-7.14/8.0.1/bin
Completed 67 action(s).
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make: *** [build-back-osx] Error 64

Seems like the cp comand from the osx target was not executing correctly, just fixed it in the latest commit, can you confirm?

@ocramz Does this thing keeps happening with the new Makefile?

I'm really puzzled. The commands work when run individually, but not from makefile.
When I run make build-back-osx, the $(stack path .. ) command is simply erased, and obviously it can't find the binary in the wrong path. This is what gets echoed on terminal:
cd core &&\
		stack build &&\
		cp /bin/haskelldo-core ../gui/dist/bin/haskelldo-core-darwin
cp: /bin/haskelldo-core: No such file or directory

@ocramz, please, could you try modifying the command and writing it in backticks like
`stack path ..`/bin/...

?

Yep, this works!
So this should be the recipe:
build-back-osx:
	cd core &&\
		stack build &&\
		cp `stack path --local-install-root`/bin/haskelldo-core ../gui/dist/bin/haskelldo-core-darwin
		cd ..


CIP-???? | Bitwise operations

This adds bitwise operations to supplement the ones in CIP-122.
Human-readable version

Since CIP-0122 is not yet merged in and "official" wouldn't it make sense to add this logic to that CIP before proceeding? I can see the value add of this but wonder what benefit we gain by breaking it up into two different CIPs rather than a single CIP to be implemented?

p.s. @kozross at the CIP meeting just finished, we were wondering why these newer methods were not either added to CIP-0058 or submitted with an attempt to deprecate CIP-0058 (also asked in https://github.com/cardano-foundation/CIPs/pull/806#discussion_r1617537219).

p.s. @kozross at the CIP meeting just finished, we were wondering why these newer methods were not either added to CIP-0058 or submitted with an attempt to deprecate CIP-0058 (also asked in #806 (comment)).

These newer methods are modifications (and fairly minor ones) of CIP-58 equivalents. Deprecation of CIP-58 is already functionally the case anyway (as the Plutus team rejected the CIP-58 implementation): is there a more formal process I need to go through for actual deprecation of CIP-58?

@kozross then I believe it would be best to submit a PR on CIP-0058 changing the header text from
Status: Proposed

to whatever best explains how it's "deprecated" or "superseded" (whichever language you think is best), e.g.
Status: Inactive (deprecated by CIP-0121 and CIP-0122)

according to CIP-0001 > Status: Inactive.
BTW when you submit that PR (we can also submit it for you, if you let us know what exact status to change to), I would also contribute some format cleanup before we put it to rest because it was missed in https://github.com/cardano-foundation/CIPs/issues/389 for that effort.

I think 'superseded' is the right term here. Will send that PR ASAP.

@rphair - Done. Great to hear my work is up to standard!


Default, hard coded path to markdown.css is wrong

I installed this plugin by using Package Control's Add Repository functionality. The plugin gets installed in the sublimetext-markdown-preview folder. MarkdownPreview.py references the markdown.css file using a different path, Markdown Preview. This makes the command fail.
In MarkdownPreview.py I've replaced
styles = open(os.path.join(sublime.packages_path(), 'Markdown Preview', 'markdown.css'), 'r').read()

with
styles = open('markdown.css', 'r').read()

and it works. If the CSS is always going to be at the same place as MarkdownPreview.py, I don't think the whole path is necessary.

you mean when installed from git repo, the folder is sublimetext-markdown-preview and when from package manager its in Markdown Preview ?
Not specifying the path does not always work :/
It doesnt on my machine

I installed the plugin by using the Add Repository command in Package Control and giving it the plugin's URL, https://github.com/revolunet/sublimetext-markdown-preview. This added the following two entries in my Package Control.sublime-settings file:
"installed_packages":
[
	"sublimetext-markdown-preview"
],
"repositories":
[
	"https://github.com/revolunet/sublimetext-markdown-preview"
]

When I issued the Markdown Preview: Preview Current File command, nothing happened. I checked the console and I found that it failed because it could not find the CSS file in the Markdown Preview folder.
First I changed the code to use the sublimetext-markdown-preview folder, and it worked.
Then I thought that since the CSS is located at the same folder as MarkdownPreview.py, maybe I did not have to specify a full path. So, I removed the path altogether and it worked.
If I've understood correctly, the repo uses sublimetext-markdown-preview as the plugin's root folder. Downloading the code by hand and unzipping it also gets you the same folder, sublimetext-markdown-preview-REVISION-HASH. On the other hand, MarkdownPreview.py uses Markdown Preview as a folder, which doesn't exist anywhere.

now the plugin checks for both cases : package manager path and git repo path.
hope this is ok for you

Great, it looks like it's working OK. Thanks a lot


Can I force OkHTTP to negotiate an H2 session ?

I would like to access HTTP sites (draft-14) with OkHTTP. So I tried an earlier version of it (v2.0.0 of november) that is supposed to support draft-14. But OkHTTP always seem to fall-back (or directly uses) to HTTP 1.1 whatever the site.

Our bug tracker is for feature requests and bug reports only. Please try stack overflow for how-to!


git describe

Before submitting your issue, please make sure that you've checked all of the checkboxes below.

[x] You're running the latest release version of Deployer.
[x] Ensure that you're running at least PHP 5.6.4, you can check this by running php -v
[x] You've ran composer install --no-dev from the root of your installation.
[x] You've ran npm install --production from the root of your installation.
[x] You've ran rm -rf bootstrap/cache/* from the root of your installation.
[x] You have restarted the queue listener and node socket server.

Hi there,
This is more request for a feature or just talk. I want to export git describe before compiling npm run dev so i can use this variable inside of Laravel or Vue.js app. But Deployer downlaod the file via ZIP so there is no access to git repo.
How can I solve this? I can only see sha variable in commands.
Thanks
P

Hey, sorry for the late reply, can you show me what git describe does, can't seem to get it working.
The git repo is available on the deployer server so in theory I can create a variable with the content of the output
(it keeps a mirror of it then uses git archive and uploads that, it use to clone the repo on the servers but if you had a large repo as we did at work at the time it took a very long time to deploy as it cloned a new copy each time)

Hi @REBELinBLUE ,
if you use tags and branches then it looks like this:
1.0.9-292-ge72b455

Be great to be able to run some git command or expose this in ENV?
Thanks

I'm looking for something similar, except for the command 'git describe --tags --long'. It generates a similar version string except it also looks at lightweight tags and outputs the hash even when on the commit tag.
If I could write the output to a file on de remote server that would be great!

@cerw No because that isn't a standard git feature, it is specific to the github/bitbucket/gitlab etc APIs so wouldn't work with things like plan old self hosted git repostiries. See resources/scripts/deploy/CreateReleaseArchive.sh to see what it does

@mdriessen Makes sense, I'll have a look at adding 2 more tags for those 2 cases tomorrow but I think I need to look at a way to run commands on the deployer server to create other tags because no doubt there will be more needed at some point

Custom tags sounds like a great feature but adding a tag for the describe command would be sufficient for my use case. Thanks for your help!

Really sorry, I started on it and then hit a bit of a roadblock (trying to figure out what to do if you aren't using a tag) and then got really busy at work. Willing to accept PRs if you want to take a look, if not hopefully I will get time this week to look into it