Metadata Vanishing

Which service(blob, file, queue, table) does this issue concern?
blob
Which version of the Azurite was used?
3.31
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
Npm and Visual Studio code
What's the Node.js version?
20.14
What problem was encountered?
This is a really curious issue with metadata. As soon as I iterate over blob containers in code metadata vanish.
I don't know if it's a problem with Azurite Emulator or if the java lib is buggy. I tracked it down just to this iteration. No other operations done.
Also opened issue with azure spring boot
https://github.com/microsoft/spring-cloud-azure/issues/1063
Steps to reproduce the issue?

Install and run Azurite
Install and open Microsoft Azure Storage explorer
Open "Emulator & Attached" - Storage Accounts - Emulator - Blob containers
Create a container
right click properties
add metadata
use spring boot BlobServiceClient to iterate over paged response blobcontaineritem
After that metadata is gone
Could be any party involved losing it. Thought I try here for investigation

public Map<String, ConfigType> getConfigTypes() { Map<String, ConfigType> configTypes = new HashMap<>(); PagedIterable<BlobContainerItem> blobContainerItemPages = blobServiceClient.listBlobContainers(); Iterator<PagedResponse<BlobContainerItem>> iterator = blobContainerItemPages.iterableByPage().iterator(); while (iterator.hasNext()) { PagedResponse<BlobContainerItem> blobContainerItems = iterator.next(); processBlobContainerItems(blobContainerItems, configTypes); } return configTypes; } private void processBlobContainerItems(PagedResponse<BlobContainerItem> blobContainerItems, Map<String, ConfigType> configTypes) { for (BlobContainerItem blobContainerItem : blobContainerItems.getValue()) { BlobContainerClient blobContainerClient = blobServiceClient .getBlobContainerClient(blobContainerItem.getName()); List<String> versions = getBlobVersions(blobContainerClient); String latestVersionString = getLatestVersionString(versions); String description = getDescription(blobContainerItem); String title = getTitle(blobContainerItem); ConfigType configType = createConfigType(title, latestVersionString, versions, description); configTypes.put(blobContainerItem.getName(), configType); } }
If possible, please provide the debug log using the -d parameter, replacing <pathtodebuglog> with an appropriate path for your OS, or review the instructions for docker containers:
-d "<pathtodebuglog>"

Please be sure to remove any PII or sensitive information before sharing!
The debug log will log raw request headers and bodies, so that we can replay these against Azurite using REST and create tests to validate resolution.
Have you found a mitigation/solution?

Hi @Mojo1 ,
By "After that metadata is gone", do you mean you cannot see the container's metadata from Microsoft Azure Storage explorer anymore?
I'll try to reproduce the issue. Meanwhile, is it possible for your to share Azurite debug log?

debug.log

@Mojo1
From the debug log, we only see 3 requests:

Service_ListContainersSegment
Container_ListBlobFlatSegment
Container_ListBlobFlatSegment

We don't see any requests related with add/remove/get container metadata.
Could you please give the debug log from adding meta data to container meta data disappear?
Besides that, from the "Service_ListContainersSegment" request in the debug log, there is no "include=" with "metadata" in the request Uri. Per the rest API doc , in this case the container metadata won't be returned. Azurite behavior is aligned with this.

Yes because i don't do such requests and thats the Problem

@Mojo1
From your last debug log, there's "Container_SetMetadata" operation, and the meta data is already set to the container.
However, in the debug log, after set metadate, not see any operation to get metadate.
There are only 3 requests after set metadata:
Service_ListContainersSegment
Container_ListBlobFlatSegment
Container_ListBlobFlatSegment
None of them will get container metadata. Especially the "Service_ListContainersSegment" not has Uri parameter "include=metadata" , so metadata will not be returned.
Please check if your client send the correct request to Azurite to get metadata. (It looks you are using java SDK instead of storage explorer from user agent.)
Besides that, I have checked with storage explorer (version 1.33.1(98)), the metadata set to container can be get by right click on the container and choose properties.
Following is the related Azurite debug on my machine, you can see with above operation in storage explorer, it will send a "Container_GetProperties" request, and the container metadate will be returned.
So this looks not an Azurite issue, but your client code issue.
If you would like to get container metadata with "Service_ListContainersSegment" operation, please add "include=metadata" in the request Uri.
2024-07-08T01:55:32.359Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info BlobStorageContextMiddleware: RequestMethod=PUT RequestURL=http://<IP_ADDRESS>/devstoreaccount1/container-a?restype=container&comp=metadata RequestHeaders:{"host":"<IP_ADDRESS>:10000","connection":"keep-alive","x-ms-version":"2019-07-07","accept":"application/xml","x-ms-meta-key1":"value1","x-ms-meta-metadata1":"value","user-agent":"Microsoft Azure Storage Explorer/1.33.1 (win32) azsdk-js-storageblob/12.15.0 (NODE-VERSION v18.18.2; Windows_NT 10.0.22631)","x-ms-client-request-id":"36de40c7-c02e-4bab-ac24-caca507eb551","x-ms-date":"Mon, 08 Jul 2024 01:55:32 GMT","authorization":"SharedKey devstoreaccount1:eXiU+B65auRXQm2Hr02Ztu5ES05KhPVfL7UTPEaw9fs=","accept-language":"*","sec-fetch-mode":"cors","accept-encoding":"gzip, deflate","content-length":"0"} ClientIP=<IP_ADDRESS> Protocol=http HTTPVersion=1.1
2024-07-08T01:55:32.359Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info BlobStorageContextMiddleware: Account=devstoreaccount1 Container=container-a Blob=
2024-07-08T01:55:32.359Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 verbose DispatchMiddleware: Dispatching request...
2024-07-08T01:55:32.359Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info DispatchMiddleware: Operation=Container_SetMetadata
2024-07-08T01:55:32.360Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 verbose AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2024-07-08T01:55:32.360Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info PublicAccessAuthenticator:validate() Start validation against public access.
2024-07-08T01:55:32.360Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 debug PublicAccessAuthenticator:validate() Getting account properties...
2024-07-08T01:55:32.360Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 debug PublicAccessAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: container-a, blob:
2024-07-08T01:55:32.360Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 debug PublicAccessAuthenticator:validate() Skip public access authentication. Cannot get public access type for container container-a
2024-07-08T01:55:32.360Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info BlobSharedKeyAuthenticator:validate() Start validation against account shared key authentication.
2024-07-08T01:55:32.361Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info BlobSharedKeyAuthenticator:validate() [STRING TO SIGN]:"PUT\n\n\n\n\n\n\n\n\n\n\n\nx-ms-client-request-id:36de40c7-c02e-4bab-ac24-caca507eb551\nx-ms-date:Mon, 08 Jul 2024 01:55:32 GMT\nx-ms-meta-key1:value1\nx-ms-meta-metadata1:value\nx-ms-version:2019-07-07\n/devstoreaccount1/devstoreaccount1/container-a\ncomp:metadata\nrestype:container"
2024-07-08T01:55:32.361Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info BlobSharedKeyAuthenticator:validate() Calculated authentication header based on key1: SharedKey devstoreaccount1:eXiU+B65auRXQm2Hr02Ztu5ES05KhPVfL7UTPEaw9fs=
2024-07-08T01:55:32.361Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info BlobSharedKeyAuthenticator:validate() Signature 1 matched.
2024-07-08T01:55:32.362Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 verbose DeserializerMiddleware: Start deserializing...
2024-07-08T01:55:32.362Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info HandlerMiddleware: DeserializedParameters={"options":{"metadata":{"key1":"value1","metadata1":"value"},"requestId":"36de40c7-c02e-4bab-ac24-caca507eb551","leaseAccessConditions":{},"modifiedAccessConditions":{}},"restype":"container","comp":"metadata","version":"2019-07-07"}
2024-07-08T01:55:32.366Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 verbose SerializerMiddleware: Start serializing...
2024-07-08T01:55:32.366Z 4239c551-0a89-4e2d-8db4-dc1a45bd03a5 info EndMiddleware: End response. TotalTimeInMS=7 StatusCode=200 StatusMessage=undefined Headers={"server":"Azurite-Blob/3.31.0","etag":"\"0x23C678A3320D8C0\"","last-modified":"Mon, 08 Jul 2024 01:55:32 GMT","x-ms-client-request-id":"36de40c7-c02e-4bab-ac24-caca507eb551","x-ms-request-id":"4239c551-0a89-4e2d-8db4-dc1a45bd03a5","date":"Mon, 08 Jul 2024 01:55:32 GMT"}
2024-07-08T01:55:45.801Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info BlobStorageContextMiddleware: RequestMethod=GET RequestURL=http://<IP_ADDRESS>/devstoreaccount1/container-a?restype=container RequestHeaders:{"host":"<IP_ADDRESS>:10000","connection":"keep-alive","x-ms-version":"2019-07-07","accept":"application/xml","user-agent":"Microsoft Azure Storage Explorer/1.33.1 (win32) azsdk-js-storageblob/12.15.0 (NODE-VERSION v18.18.2; Windows_NT 10.0.22631)","x-ms-client-request-id":"20cd8d95-0010-4f59-8e58-dbf55dfcab7d","x-ms-date":"Mon, 08 Jul 2024 01:55:45 GMT","authorization":"SharedKey devstoreaccount1:ijVokZhLHvedpAA3jAjbcHSv3ALeKsFMzw2/R/dJ4hE=","accept-language":"*","sec-fetch-mode":"cors","accept-encoding":"gzip, deflate"} ClientIP=<IP_ADDRESS> Protocol=http HTTPVersion=1.1
2024-07-08T01:55:45.801Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info BlobStorageContextMiddleware: Account=devstoreaccount1 Container=container-a Blob=
2024-07-08T01:55:45.801Z 1b0f7548-f259-4922-95e2-226e5d5c4874 verbose DispatchMiddleware: Dispatching request...
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info DispatchMiddleware: Operation=Container_GetProperties
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 verbose AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info PublicAccessAuthenticator:validate() Start validation against public access.
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 debug PublicAccessAuthenticator:validate() Getting account properties...
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 debug PublicAccessAuthenticator:validate() Retrieved account name from context: devstoreaccount1, container: container-a, blob:
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 debug PublicAccessAuthenticator:validate() Skip public access authentication. Cannot get public access type for container container-a
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info BlobSharedKeyAuthenticator:validate() Start validation against account shared key authentication.
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info BlobSharedKeyAuthenticator:validate() [STRING TO SIGN]:"GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-client-request-id:20cd8d95-0010-4f59-8e58-dbf55dfcab7d\nx-ms-date:Mon, 08 Jul 2024 01:55:45 GMT\nx-ms-version:2019-07-07\n/devstoreaccount1/devstoreaccount1/container-a\nrestype:container"
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info BlobSharedKeyAuthenticator:validate() Calculated authentication header based on key1: SharedKey devstoreaccount1:ijVokZhLHvedpAA3jAjbcHSv3ALeKsFMzw2/R/dJ4hE=
2024-07-08T01:55:45.802Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info BlobSharedKeyAuthenticator:validate() Signature 1 matched.
2024-07-08T01:55:45.803Z 1b0f7548-f259-4922-95e2-226e5d5c4874 verbose DeserializerMiddleware: Start deserializing...
2024-07-08T01:55:45.803Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info HandlerMiddleware: DeserializedParameters={"options":{"requestId":"20cd8d95-0010-4f59-8e58-dbf55dfcab7d","leaseAccessConditions":{}},"restype":"container","version":"2019-07-07"}
2024-07-08T01:55:45.803Z 1b0f7548-f259-4922-95e2-226e5d5c4874 verbose SerializerMiddleware: Start serializing...
2024-07-08T01:55:45.803Z 1b0f7548-f259-4922-95e2-226e5d5c4874 info EndMiddleware: End response. TotalTimeInMS=2 StatusCode=200 StatusMessage=undefined Headers={"server":"Azurite-Blob/3.31.0","x-ms-meta-key1":"value1","x-ms-meta-metadata1":"value","etag":"\"0x23C678A3320D8C0\"","last-modified":"Mon, 08 Jul 2024 01:55:32 GMT","x-ms-lease-state":"available","x-ms-lease-status":"unlocked","x-ms-client-request-id":"20cd8d95-0010-4f59-8e58-dbf55dfcab7d","x-ms-request-id":"1b0f7548-f259-4922-95e2-226e5d5c4874","x-ms-version":"2024-08-04","x-ms-has-immutability-policy":"false","x-ms-has-legal-hold":"false"}
2024-07-08T01:55:59.554Z 	 info AccountDataStore:init() Refresh accounts from environment variable AZURITE_ACCOUNTS with value undefined
2024-07-08T01:55:59.554Z 	 info AccountDataStore:init() Fallback to default emulator account devstoreaccount1.

However, I believe there is still an issue. Here is my situation:
I create metadata in Storage Explorer.
Then, I fetch the blob container data with the SDK.
Afterward, when I check in Storage Explorer, the metadata has been deleted.
Even if I do not include the &include=metadata parameter, the metadata should remain intact.

@Mojo1
Thanks for your reply!
However, why you think "the metadata has been deleted."
 Actually Get should not update anything on server.)
If "the metadata has been deleted", please give the Azurite debug log from add the metadata, to the request you think metadata should be return but not return.
From the before debug log, we only see metadata been added, but not see a request to retrieve metadata.

Here is a new log.

In line 15 there is the PUT request which creates the metadata: "x-ms-meta-examplekey":"exampleValue"
In line 33 there is a GET request returning the metadata in line 46: "x-ms-meta-examplekey":"exampleValue" (I closed the properties in Storage explorer and opened it again - verifing the metadata is still there)
In line 93 there is a GET request returning the metadata in line 106: "x-ms-meta-examplekey":"exampleValue" (I closed the properties in Storage explorer and opened it again - verifing the metadata is still there)
In line 133 it's the GET request from SDK. Without metadata which is okay because i didnt's put include=metadata
Line 152 SDK GET request for blob container vehicles-de with answer in line 170.  Without metadata which is okay because i didnt's put include=metadata
Line 171 SDK GET request for blob container vehicles-fr with answer in line 186.  Without metadata which is okay because i didnt's put include=metadata
line 337 NOW Request form Storage Explorer again it the same GET request as in line 33 but the metadata "x-ms-meta-examplekey":"exampleValue" is missing

So there has been ONE Put requests and a lot of GET requests. Still data changes
debug.log

@Mojo1
Thanks for the new log!
I can repro this issue now.
It looks list container request with "&include=metadata" will clear the container metadata, the related code is: https://github.com/Azure/Azurite/blob/ef2e3128400d775acd11872be85af60b00faae31/src/blob/handlers/ServiceHandler.ts#L334
It looks the above code will not only clear metadate in the return value, but also the metadate of the container on server.
@EmmaZhu , would you please help to look at how to fix this issue?

I have raised a PR to fix this issue: https://github.com/Azure/Azurite/pull/2426

Okay, thanks everybody
communication sometimes hardest task for all parties) So keep up the good work

Isn't this now again an issue with 3.33.0? We have tests running fine with 3.32.0 and now with latest the metadata is gone (again).


Cross-reference lines

Would it be possible to add cross-reference lines to OHIF viewer when browsing series with different image planes that mark the intersection of the image planes ? This would really help in better correlation of the anatomy.

Closing because this is a duplicate which has been asked many times:
https://github.com/OHIF/Viewers/issues/747
https://github.com/OHIF/Viewers/issues/1060
One of these was actually already asked by YOU: https://github.com/OHIF/Viewers/issues/619


6th monitor blank on hyprland-git and aquamarine-git

Already reported ? *

[X] I have searched the existing open and closed issues.

Regression?
No
System Info and Version
 System/Version info
❯ hyprctl systeminfo -c
Hyprland 0.44.0 built from branch main at commit 22b1370ae512c92d84bbcd4cff2a3f8a4496c994  (IME: Fixup IME popup candidate windows position when scale is not 1.0 (8117)).
Date: Mon Oct 14 13:03:16 2024
Tag: v0.44.0-43-g22b1370a, commits: 5342
built against aquamarine 0.4.3

flags set:
debug

System Information:
System name: Linux
Node name: devbox
Release: 6.11.3-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Thu, 10 Oct 2024 20:11:06 +0000

GPU information:
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M] [1002:744c] (rev c8) (prog-if 00 [VGA controller])
15:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Raphael [1002:164e] (rev c9) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

======Config-Start======

Config File: /home/joe/.config/hypr/hyprland.conf: Read Succeeded

#      ░▒▒▒░░░░░▓▓          ___________
#    ░░▒▒▒░░░░░▓▓        //___________/
#   ░░▒▒▒░░░░░▓▓     _   _ _    _ _____
#   ░░▒▒░░░░░▓▓▓▓▓▓ | | | | |  | |  __/
#    ░▒▒░░░░▓▓   ▓▓ | |_| | |_/ /| |___
#     ░▒▒░░▓▓   ▓▓   \__  |____/ |____/
#       ░▒▓▓   ▓▓  //____/

$scrPath = $HOME/.local/share/bin # set scripts path

# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄

# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=DP-1,3840x2160@144.0,3840x0,1,bitdepth,10,transform,2
monitor=DP-2,3840x2160@159.97,3840x2160,1,bitdepth,10
monitor=HDMI-A-1,3840x2160@120.0,7680x2160,1,bitdepth,10
monitor=HDMI-A-3,3840x2160@120.0,0x2160,1,bitdepth,10
monitor=DP-3,3840x2160@159.97,0x0,1,bitdepth,10,transform,2
monitor=HDMI-A-2,3840x2160@60.0,7680x0,1,bitdepth,10,transform,2
# █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█
# █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█

# See https://wiki.hyprland.org/Configuring/Keywords/

exec-once = $scrPath/resetxdgportal.sh # reset XDPH for screenshare
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = dbus-update-activation-environment --systemd --all # for XDPH
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = $scrPath/polkitkdeauth.sh # authentication dialogue for GUI apps
exec-once = ironbar # launch the system bar
exec-once = blueman-applet # systray app for Bluetooth
exec-once = dunst # start notification demon
exec-once = udiskie --no-automount # front-end that allows to manage removable media
exec-once = nm-applet --indicator # systray app for Network/Wifi
exec-once = wl-paste --type text --watch cliphist store # clipboard store text data
exec-once = wl-paste --type image --watch cliphist store # clipboard store image data
exec-once = $scrPath/swwwallpaper.sh # start wallpaper daemon
exec-once = $scrPath/batterynotify.sh # battery notification

# █▀▀ █▄░█ █░█
# ██▄ █░▀█ ▀▄▀

# See https://wiki.hyprland.org/Configuring/Environment-variables/

env = PATH,$PATH:$scrPath
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1

# █ █▄░█ █▀█ █░█ ▀█▀
# █ █░▀█ █▀▀ █▄█ ░█░

# See https://wiki.hyprland.org/Configuring/Variables/

input {
    kb_layout = us
    follow_mouse = 1

    touchpad {
        natural_scroll = no
    }

    sensitivity = 0
    force_no_accel = 1
    numlock_by_default = true
}

# See https://wiki.hyprland.org/Configuring/Keywords/#executing

device {
    name = epic mouse V1
    sensitivity = -0.5
}

# See https://wiki.hyprland.org/Configuring/Variables/

gestures {
    workspace_swipe = true
    workspace_swipe_fingers = 3
}

# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█

# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/

dwindle {
    pseudotile = yes
    preserve_split = yes
}

# See https://wiki.hyprland.org/Configuring/Master-Layout/

master {
    new_status = master
}

# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄

# See https://wiki.hyprland.org/Configuring/Variables/

misc {
    vrr = 0
    disable_hyprland_logo = true
    disable_splash_rendering = true
    force_default_wallpaper = 0
}

xwayland {
    force_zero_scaling = true
}

# █▀ █▀█ █░█ █▀█ █▀▀ █▀▀
# ▄█ █▄█ █▄█ █▀▄ █▄▄ ██▄

source = ~/.config/hypr/animations.conf
source = ~/.config/hypr/keybindings.conf
source = ~/.config/hypr/windowrules.conf
source = ~/.config/hypr/themes/common.conf # shared theme settings
source = ~/.config/hypr/themes/theme.conf # theme specific settings
source = ~/.config/hypr/themes/colors.conf # wallbash color override
source = ~/.config/hypr/monitors.conf # initially empty, to be configured by user and remains static
source = ~/.config/hypr/userprefs.conf # initially empty, to be configured by user and remains static

# Note: as userprefs.conf is sourced at the end, settings configured in this file will override the defaults

Config File: /home/joe/.config/hypr/animations.conf: Read Succeeded

# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█

# See https://wiki.hyprland.org/Configuring/Animations/

animations {
    enabled = yes
    bezier = wind, 0.05, 0.9, 0.1, 1.05
    bezier = winIn, 0.1, 1.1, 0.1, 1.1
    bezier = winOut, 0.3, -0.3, 0, 1
    bezier = liner, 1, 1, 1, 1
    animation = windows, 1, 6, wind, slide
    animation = windowsIn, 1, 6, winIn, slide
    animation = windowsOut, 1, 5, winOut, slide
    animation = windowsMove, 1, 5, wind, slide
    animation = border, 1, 1, liner
    animation = borderangle, 1, 30, liner, loop
    animation = fade, 1, 10, default
    animation = workspaces, 1, 5, wind
}

Config File: /home/joe/.config/hypr/keybindings.conf: Read Succeeded

# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀
# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█

# See https://wiki.hyprland.org/Configuring/Keywords/
#  &  https://wiki.hyprland.org/Configuring/Binds/

# Main modifier
$mainMod = Super # super / meta / windows key

# Assign apps
$term = kitty
$editor = code
$file = dolphin
$browser = firefox

# Window/Session actions
bindd = $mainMod+Shift, P,Color Picker , exec, hyprpicker -a # Pick color (Hex) >> clipboard#
bind = $mainMod, Q, exec, $scrPath/dontkillsteam.sh # close focused window
bind = Alt, F4, exec, $scrPath/dontkillsteam.sh # close focused window
bind = $mainMod, Delete, exit, # kill hyprland session
bind = $mainMod, W, togglefloating, # toggle the window between focus and float
#bind = $mainMod, G, togglegroup, # toggle the window between focus and group
bind = Alt, Return, fullscreen, # toggle the window between focus and fullscreen
bind = $mainMod, L, exec, swaylock # launch lock screen
bind = $mainMod+Shift, F, exec, $scrPath/windowpin.sh # toggle pin on focused window
bind = $mainMod, Backspace, exec, $scrPath/logoutlaunch.sh # launch logout menu
bind = Ctrl+Alt, W, exec, killall ironbar || ironbar # toggle waybar

# Application shortcuts
bind = $mainMod, Return, exec, $term # launch terminal emulator
bind = $mainMod, E, exec, $file # launch file manager
bind = $mainMod, C, exec, $editor # launch text editor
bind = $mainMod, F, exec, $browser # launch web browser
bind = Ctrl+Shift, Escape, exec, $scrPath/sysmonlaunch.sh # launch system monitor (htop/btop or fallback to top)

# Rofi menus
bind = $mainMod, A, exec, pkill -x rofi || $scrPath/rofilaunch.sh d # launch application launcher
bind = $mainMod, Tab, exec, pkill -x rofi || $scrPath/rofilaunch.sh w # launch window switcher
bind = $mainMod+Shift, E, exec, pkill -x rofi || $scrPath/rofilaunch.sh f # launch file explorer

# Audio control
#bindl  = , F10, exec, $scrPath/volumecontrol.sh -o m # toggle audio mute
#bindel = , F11, exec, $scrPath/volumecontrol.sh -o d # decrease volume
#bindel = , F12, exec, $scrPath/volumecontrol.sh -o i # increase volume
bindl  = , XF86AudioMute, exec, $scrPath/volumecontrol.sh -o m # toggle audio mute
bindl  = , XF86AudioMicMute, exec, $scrPath/volumecontrol.sh -i m # toggle microphone mute
bindel = , XF86AudioLowerVolume, exec, $scrPath/volumecontrol.sh -o d # decrease volume
bindel = , XF86AudioRaiseVolume, exec, $scrPath/volumecontrol.sh -o i # increase volume

# Media control
bindl  = , XF86AudioPlay, exec, playerctl play-pause # toggle between media play and pause
bindl  = , XF86AudioPause, exec, playerctl play-pause # toggle between media play and pause
bindl  = , XF86AudioNext, exec, playerctl next # media next
bindl  = , XF86AudioPrev, exec, playerctl previous # media previous

# Brightness control
bindel = , XF86MonBrightnessUp, exec, $scrPath/brightnesscontrol.sh i # increase brightness
bindel = , XF86MonBrightnessDown, exec, $scrPath/brightnesscontrol.sh d # decrease brightness

# Move between grouped windows
bind = $mainMod CTRL , H, changegroupactive, b
bind = $mainMod CTRL , L, changegroupactive, f

# Screenshot/Screencapture
bind = $mainMod, P, exec, $scrPath/screenshot.sh s # partial screenshot capture
bind = $mainMod+Ctrl, P, exec, $scrPath/screenshot.sh sf # partial screenshot capture (frozen screen)
bind = $mainMod+Alt, P, exec, $scrPath/screenshot.sh m # monitor screenshot capture
bind = CTRL+Shift, P, exec, $scrPath/screenshot.sh p # all monitors screenshot capture

# Custom scripts
bind = $mainMod+Alt, G, exec, $scrPath/gamemode.sh # disable hypr effects for gamemode
bind = $mainMod+Alt, Right, exec, $scrPath/swwwallpaper.sh -n # next wallpaper
bind = $mainMod+Alt, Left, exec, $scrPath/swwwallpaper.sh -p # previous wallpaper
bind = $mainMod+Alt, Up, exec, $scrPath/wbarconfgen.sh n # next waybar mode
bind = $mainMod+Alt, Down, exec, $scrPath/wbarconfgen.sh p # previous waybar mode
bind = $mainMod+Shift, R, exec, pkill -x rofi || $scrPath/wallbashtoggle.sh -m # launch wallbash mode select menu
bind = $mainMod+Shift, T, exec, pkill -x rofi || $scrPath/themeselect.sh # launch theme select menu
bind = $mainMod+Shift, A, exec, pkill -x rofi || $scrPath/rofiselect.sh # launch select menu
bind = $mainMod+Shift, W, exec, pkill -x rofi || $scrPath/swwwallselect.sh # launch wallpaper select menu
bind = $mainMod, V, exec, pkill -x rofi || $scrPath/cliphist.sh c # launch clipboard
bind = $mainMod+Shift, V, exec, pkill -x rofi || $scrPath/cliphist.sh # launch clipboard Manager
bind = $mainMod, K, exec, $scrPath/keyboardswitch.sh # switch keyboard layout
bind = $mainMod, slash, exec, pkill -x rofi || $scrPath/keybinds_hint.sh c # launch keybinds hint

# Move/Change window focus
bind = $mainMod, Left, movefocus, l
bind = $mainMod, Right, movefocus, r
bind = $mainMod, Up, movefocus, u
bind = $mainMod, Down, movefocus, d
bind = Alt, Tab, movefocus, d

# Switch workspaces
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Switch workspaces to a relative workspace
bind = $mainMod+Ctrl, Right, workspace, r+1
bind = $mainMod+Ctrl, Left, workspace, r-1

# Move to the first empty workspace
bind = $mainMod+Ctrl, Down, workspace, empty

# Resize windows
binde = $mainMod+Shift, Right, resizeactive, 30 0
binde = $mainMod+Shift, Left, resizeactive, -30 0
binde = $mainMod+Shift, Up, resizeactive, 0 -30
binde = $mainMod+Shift, Down, resizeactive, 0 30

# Move focused window to a workspace
bind = $mainMod+Shift, 1, movetoworkspace, 1
bind = $mainMod+Shift, 2, movetoworkspace, 2
bind = $mainMod+Shift, 3, movetoworkspace, 3
bind = $mainMod+Shift, 4, movetoworkspace, 4
bind = $mainMod+Shift, 5, movetoworkspace, 5
bind = $mainMod+Shift, 6, movetoworkspace, 6
bind = $mainMod+Shift, 7, movetoworkspace, 7
bind = $mainMod+Shift, 8, movetoworkspace, 8
bind = $mainMod+Shift, 9, movetoworkspace, 9
bind = $mainMod+Shift, 0, movetoworkspace, 10

# Move focused window to a relative workspace
bind = $mainMod+Ctrl+Alt, Right, movetoworkspace, r+1
bind = $mainMod+Ctrl+Alt, Left, movetoworkspace, r-1

# Move active window around current workspace with mainMod + SHIFT + CTRL [←→↑↓]
$moveactivewindow=grep -q "true" <<< $(hyprctl activewindow -j | jq -r .floating) && hyprctl dispatch moveactive
binded = $mainMod SHIFT $CONTROL, left,Move activewindow to the right,exec, $moveactivewindow -30 0 || hyprctl dispatch movewindow l
binded = $mainMod SHIFT $CONTROL, right,Move activewindow to the right,exec, $moveactivewindow 30 0 || hyprctl dispatch movewindow r
binded = $mainMod SHIFT $CONTROL, up,Move activewindow to the right,exec, $moveactivewindow  0 -30 || hyprctl dispatch movewindow u
binded = $mainMod SHIFT $CONTROL, down,Move activewindow to the right,exec, $moveactivewindow 0 30 || hyprctl dispatch movewindow d

# Scroll through existing workspaces
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/Resize focused window
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bindm = $mainMod, Z, movewindow
bindm = $mainMod, X, resizewindow

# Move/Switch to special workspace (scratchpad)
bind = $mainMod+Alt, S, movetoworkspacesilent, special
bind = $mainMod, S, togglespecialworkspace,

# Toggle focused window split
bind = $mainMod, J, togglesplit

# Move focused window to a workspace silently
bind = $mainMod+Alt, 1, movetoworkspacesilent, 1
bind = $mainMod+Alt, 2, movetoworkspacesilent, 2
bind = $mainMod+Alt, 3, movetoworkspacesilent, 3
bind = $mainMod+Alt, 4, movetoworkspacesilent, 4
bind = $mainMod+Alt, 5, movetoworkspacesilent, 5
bind = $mainMod+Alt, 6, movetoworkspacesilent, 6
bind = $mainMod+Alt, 7, movetoworkspacesilent, 7
bind = $mainMod+Alt, 8, movetoworkspacesilent, 8
bind = $mainMod+Alt, 9, movetoworkspacesilent, 9
bind = $mainMod+Alt, 0, movetoworkspacesilent, 10

Config File: /home/joe/.config/hypr/windowrules.conf: Read Succeeded

# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█

# See https://wiki.hyprland.org/Configuring/Window-Rules/

windowrulev2 = opacity 0.90 0.90,class:^(firefox)$
windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$
windowrulev2 = opacity 0.90 0.90,class:^(code-oss)$
windowrulev2 = opacity 0.90 0.90,class:^(Code)$
windowrulev2 = opacity 0.80 0.80,class:^(code-url-handler)$
windowrulev2 = opacity 0.80 0.80,class:^(code-insiders-url-handler)$
windowrulev2 = opacity 0.80 0.80,class:^(kitty)$
windowrulev2 = opacity 0.80 0.80,class:^(org.kde.dolphin)$
windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$
windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$
windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$
windowrulev2 = opacity 0.80 0.80,class:^(qt6ct)$
windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$
windowrulev2 = opacity 0.80 0.80,class:^(Slack)$
windowrulev2 = opacity 0.80 0.70,class:^(org.pulseaudio.pavucontrol)$
windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$
windowrulev2 = opacity 0.80 0.70,class:^(org.qbittorrent.qBittorrent)$
windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$
windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$
windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrulev2 = opacity 0.80 0.70,class:^(polkit-gnome-authentication-agent-1)$
windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.gtk)$
windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.hyprland)$
windowrulev2 = opacity 0.70 0.70,class:^([Ss]team)$
windowrulev2 = opacity 0.70 0.70,class:^(steamwebhelper)$
windowrulev2 = opacity 0.70 0.70,class:^(Spotify)$
windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Free)$
windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Premium)$

windowrulev2 = opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt
windowrulev2 = opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(vesktop)$ # Vesktop
windowrulev2 = opacity 0.80 0.80,class:^(discord)$ # Discord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ # WebCord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt
windowrulev2 = opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(Signal)$ # Signal-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.github.flattool.Warehouse)$ # Warehouse-Gtk

windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$
windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$
windowrulev2 = float,title:^(About Mozilla Firefox)$
windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = float,class:^(firefox)$,title:^(Library)$
windowrulev2 = float,class:^(kitty)$,title:^(top)$
windowrulev2 = float,class:^(kitty)$,title:^(btop)$
windowrulev2 = float,class:^(kitty)$,title:^(htop)$
windowrulev2 = float,class:^(vlc)$
windowrulev2 = float,class:^(kvantummanager)$
windowrulev2 = float,class:^(qt5ct)$
windowrulev2 = float,class:^(qt6ct)$
windowrulev2 = float,class:^(nwg-look)$
windowrulev2 = float,class:^(org.kde.ark)$
windowrulev2 = float,class:^(org.pulseaudio.pavucontrol)$
windowrulev2 = float,class:^(blueman-manager)$
windowrulev2 = float,class:^(nm-applet)$
windowrulev2 = float,class:^(nm-connection-editor)$
windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$

windowrulev2 = float,class:^(Signal)$ # Signal-Gtk
windowrulev2 = float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk
windowrulev2 = float,class:^(app.drey.Warp)$ # Warp-Gtk
windowrulev2 = float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt
windowrulev2 = float,class:^(yad)$ # Protontricks-Gtk
windowrulev2 = float,class:^(eog)$ # Imageviewer-Gtk
windowrulev2 = float,class:^(io.github.alainm23.planify)$ # planify-Gtk
windowrulev2 = float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk
windowrulev2 = float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk
windowrulev2 = float,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk
windowrulev2 = float,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk

# █░░ ▄▀█ █▄█ █▀▀ █▀█   █▀█ █░█ █░░ █▀▀ █▀
# █▄▄ █▀█ ░█░ ██▄ █▀▄   █▀▄ █▄█ █▄▄ ██▄ ▄█

layerrule = blur,rofi
layerrule = ignorezero,rofi
layerrule = blur,notifications
layerrule = ignorezero,notifications
layerrule = blur,swaync-notification-window
layerrule = ignorezero,swaync-notification-window
layerrule = blur,swaync-control-center
layerrule = ignorezero,swaync-control-center
layerrule = blur,logout_dialog

Config File: /home/joe/.config/hypr/themes/common.conf: Read Succeeded

# █▀▀ █░█ █▀█ █▀ █▀█ █▀█
# █▄▄ █▄█ █▀▄ ▄█ █▄█ █▀▄

exec = hyprctl setcursor Bibata-Modern-Ice 20
exec = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Ice'
exec = gsettings set org.gnome.desktop.interface cursor-size 20

# █▀▀ █▀█ █▄░█ ▀█▀
# █▀░ █▄█ █░▀█ ░█░

exec = gsettings set org.gnome.desktop.interface font-name 'Cantarell 10'
exec = gsettings set org.gnome.desktop.interface document-font-name 'Cantarell 10'
exec = gsettings set org.gnome.desktop.interface monospace-font-name 'CaskaydiaCove Nerd Font Mono 9'
exec = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba'
exec = gsettings set org.gnome.desktop.interface font-hinting 'full'

# █▀ █▀█ █▀▀ █▀▀ █ ▄▀█ █░░
# ▄█ █▀▀ ██▄ █▄▄ █ █▀█ █▄▄

decoration {
    dim_special = 0.3
    blur {
        special = true
    }
}

Config File: /home/joe/.config/hypr/themes/theme.conf: Read Succeeded
exec = gsettings set org.gnome.desktop.interface icon-theme 'Tela-circle-dracula'
exec = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha'
exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

general {
    gaps_in = 30
    gaps_out = 60
    border_size = 2
    col.active_border = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
    col.inactive_border = rgba(b4befecc) rgba(6c7086cc) 45deg
    layout = dwindle
    resize_on_border = true
}

group {
    col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
    col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
    col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
    col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
}

decoration {
    rounding = 10
    drop_shadow = false

    blur {
        enabled = yes
        size = 6
        passes = 3
        new_optimizations = on
        ignore_opacity = on
        xray = false
    }
}

layerrule = blur,waybar

======Config-End========

Description
Hi. I recently switched back to Hyprland after using KDE6 for a few months and have encountered an issue with one of my monitors.
I have a multi-monitor setup with 3 LG 27GP950B and 3 LG 27GN950B monitors connected to an AMD 7900XTX GPU and a 7950X3D iGPU, which is being used to output to two monitors as my GPU has only 4 ports. However, the monitor connected to HDMI-A2 does not turn on, and the screen stays black with no input. When running hyprctl monitors, I see that HDMI-A-2 is listed with "currentFormat: Invalid".
Interestingly, I was able to get it to turn on last night, so I know the monitor itself is functional. Additionally, this monitor works perfectly fine when using SDDM and KDE6, windows and everything else. I did not have 6 monitors the last time I used Hyprland, so I suspect it might be related to my current setup.
I've found some reports that seem to describe a similar issue, but I'm unsure if they are directly related to my case.
Troubleshooting Done:

Tried xrandr to force different resolutions and refresh rates but received a BadMatch (invalid parameter attributes) error.
Verified that the monitor works properly in KDE and SDDM environments.
Checked kernel logs and found no obvious errors related to the HDMI port or monitor detection.
Attempted various combinations of resolution, refresh rate, and bit depth in Hyprland without success.

How to reproduce
Constant issue.
Crash reports, logs, images, videos
`❯ hyprctl monitors
Monitor DP-1 (ID 0):
<EMAIL_ADDRESS>at 3840x0
	description: LG Electronics 27GN950 010NTXRJ5922
	make: LG Electronics
	model: 27GN950
	serial: 010NTXRJ5922
	active workspace: 1 (1)
	special workspace: 0 ()
	reserved: 0 0 0 0
	scale: 1.00
	transform: 2
	focused: no
	dpmsStatus: 1
	vrr: false
	solitary: 0
	activelyTearing: false
	disabled: false
	currentFormat: XRGB2101010
	availableModes<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Monitor DP-2 (ID 1):
<EMAIL_ADDRESS>at 3840x2160
	description: LG Electronics LG ULTRAGEAR+ 301NTABFP552
	make: LG Electronics
	model: LG ULTRAGEAR+
	serial: 301NTABFP552
	active workspace: 2 (2)
	special workspace: 0 ()
	reserved: 0 0 0 48
	scale: 1.00
	transform: 0
	focused: yes
	dpmsStatus: 1
	vrr: false
	solitary: 0
	activelyTearing: false
	disabled: false
	currentFormat: XRGB2101010
	availableModes<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Monitor HDMI-A-1 (ID 2):
<EMAIL_ADDRESS>at 7680x2160
	description: LG Electronics LG ULTRAGEAR+ 210NTSU3B326
	make: LG Electronics
	model: LG ULTRAGEAR+
	serial: 210NTSU3B326
	active workspace: 3 (3)
	special workspace: 0 ()
	reserved: 0 0 0 0
	scale: 1.00
	transform: 0
	focused: no
	dpmsStatus: 1
	vrr: false
	solitary: 0
	activelyTearing: false
	disabled: false
	currentFormat: XRGB2101010
	availableModes<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Monitor HDMI-A-2 (ID 3):
<EMAIL_ADDRESS>at 7680x0
	description: LG Electronics 27GN950 008NTWG7R329
	make: LG Electronics
	model: 27GN950
	serial: 008NTWG7R329
	active workspace: 4 (4)
	special workspace: 0 ()
	reserved: 0 0 0 0
	scale: 1.00
	transform: 2
	focused: no
	dpmsStatus: 1
	vrr: false
	solitary: 0
	activelyTearing: false
	disabled: false
	currentFormat: Invalid
	availableModes<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Monitor HDMI-A-3 (ID 4):
<EMAIL_ADDRESS>at 0x2160
	description: LG Electronics LG ULTRAGEAR+ 308NTXR18818
	make: LG Electronics
	model: LG ULTRAGEAR+
	serial: 308NTXR18818
	active workspace: 5 (5)
	special workspace: 0 ()
	reserved: 0 0 0 0
	scale: 1.00
	transform: 0
	focused: no
	dpmsStatus: 1
	vrr: false
	solitary: 0
	activelyTearing: false
	disabled: false
	currentFormat: XRGB2101010
	availableModes<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Monitor DP-3 (ID 5):
<EMAIL_ADDRESS>at 0x0
	description: LG Electronics 27GN950 111NTZNLF109
	make: LG Electronics
	model: 27GN950
	serial: 111NTZNLF109
	active workspace: 6 (6)
	special workspace: 0 ()
	reserved: 0 0 0 0
	scale: 1.00
	transform: 2
	focused: no
	dpmsStatus: 1
	vrr: false
	solitary: 0
	activelyTearing: false
	disabled: false
	currentFormat: XRGB2101010
	availableModes<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>`

Found a way to get the monitor working but i couldnt consider it a fix by any means.
I made multiple config options, for different scaling, for fun.
After toggling back and forth between them like 10+times, it just turned on, was super laggy.
Used TTY to swap one more time and it worked, no lag at least.
`# HIRES 1 scale
monitor=DP-1,3840x2160@144.0,3840x0,1,bitdepth,10,transform,2
monitor=DP-2,3840x2160@159.97,3840x2160,1,bitdepth,10
monitor=HDMI-A-1,3840x2160@120.0,7680x2160,1,bitdepth,10
monitor=HDMI-A-3,3840x2160@120.0,0x2160,1,bitdepth,10
monitor=DP-3,3840x2160@159.97,0x0,1,bitdepth,10,transform,2
monitor=HDMI-A-2,3840x2160@60.0,7680x0,1,bitdepth,10,transform,2
LORES 1.25 scale
#monitor=DP-1,3840x2160@144.0,3072x0,1.25,bitdepth,10,transform,2
#monitor=DP-2,3840x2160@159.97,3072x1728,1.25,bitdepth,10
#monitor=HDMI-A-1,3840x2160@120.0,6144x1728,1.25,bitdepth,10
#monitor=HDMI-A-3,3840x2160@120.0,0x1728,1.25,bitdepth,10
#monitor=DP-3,3840x2160@159.97,0x0,1.25,bitdepth,10,transform,2
#monitor=HDMI-A-2,3840x2160@60.0,6144x0,1.25,bitdepth,10,transform,2
MINIRES 1.5 scale
monitor=DP-1,3840x2160@144.0,2560x0,1.5,bitdepth,10,transform,2
monitor=DP-2,3840x2160@159.97,2560x1440,1.5,bitdepth,10
monitor=HDMI-A-1,3840x2160@120.0,5120x1440,1.5,bitdepth,10
monitor=HDMI-A-3,3840x2160@120.0,0x1440,1.5,bitdepth,10
monitor=DP-3,3840x2160@159.97,0x0,1.5,bitdepth,10,transform,2
monitor=HDMI-A-2,3840x2160@60.0,5120x0,1.5,bitdepth,10,transform,2
MINISCULERES 1.75 scale
monitor=DP-1,3840x2160@144.0,2194x0,1.75,bitdepth,10,transform,2
monitor=DP-2,3840x2160@159.97,2194x1234,1.75,bitdepth,10
monitor=HDMI-A-1,3840x2160@120.0,4388x1234,1.75,bitdepth,10
monitor=HDMI-A-3,3840x2160@120.0,0x1234,1.75,bitdepth,10
monitor=DP-3,3840x2160@159.97,0x0,1.75,bitdepth,10,transform,2
monitor=HDMI-A-2,3840x2160@60.0,4388x0,1.75,bitdepth,10,transform,2
PICORES 2 scale
monitor=DP-1,3840x2160@144.0,1920x0,2,bitdepth,10,transform,2
monitor=DP-2,3840x2160@159.97,1920x1080,2,bitdepth,10
monitor=HDMI-A-1,3840x2160@120.0,3840x1080,2,bitdepth,10
monitor=HDMI-A-3,3840x2160@120.0,0x1080,2,bitdepth,10
monitor=DP-3,3840x2160@159.97,0x0,2,bitdepth,10,transform,2
monitor=HDMI-A-2,3840x2160@60.0,3840x0,2,bitdepth,10,transform,2
`


Unrecognised atom type in UFF for S atom

I have two molecules CS(C)(C)=O and O=S1(S)C[NH2+]C2CC3=C(C=C21)OC=CC3.  I think there is nothing out of the ordinary with these molecules, in fact I can read them without a problem in the RDKit.  However I get the following warning:
>>> mol = Chem.MolFromSmiles('CS(C)(C)=O')
>>> molH = Chem.AddHs(mol)
>>> AllChem.EmbedMolecule(molH)
[17:40:13] UFFTYPER: Unrecognized atom type: S_5+6 (1)
0

Which leads to my first question -  should this throw a UFF warning/error considering I might not use UFF and decide to minimize using MMFF ?
Of course when I try to UFF minimize, this fails (since the atom type is not supported):
>>> AllChem.UFFOptimizeMolecule(molH)
[17:46:02] UFFTYPER: Unrecognized atom type: S_5+6 (1)
[17:46:02]

****
Pre-condition Violation
bad params pointer
Violation occurred on line 52 in file /opt/RDKit_2013_09_1/Code/ForceField/UFF/AngleBend.cpp
Failed Expression: at2Params
****

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: Pre-condition Violation

I guess my second question is: is this a general deficiency with the UFF forcefield? or is this defined in UFF but not implemented in RDKit?  Is a try catch the best way to test for this condition coming up (and perhaps in the catch do an MMFF minimization if this happens before giving up)?
Thanks
JP

Hi, some extra input on this issue. It seems that if the atom type parameters are missing in UFF, the geometry optimization may end up to rather exploded results, still returning 0 (GO converged). See the following snippet, in which the test molecule has a six-valent sulfur (-SF5 group), which is also unparametrized in UFF.
from rdkit import Chem
from rdkit.Chem import AllChem

mol=Chem.MolFromSmiles("COC(=O)[C@@H](O)C(C)(C)NC(=O)Nc1ccc(S(F)(F)(F)(F)F)cc1")
mol=Chem.AddHs(mol)
print ("Embedding return value (S=SP3D2): ", AllChem.EmbedMolecule(mol))
print (Chem.MolToMolBlock(mol), file=open("SF5_embedded_sp3d2.mol",'w+'))
print ("UFF return value (S=SP3D2): ", AllChem.UFFOptimizeMolecule(mol, maxIters=400))
print (Chem.MolToMolBlock(mol), file=open("SF5_opt_sp3d2.mol",'w+'))

mol.GetAtomWithIdx(17).SetHybridization(Chem.rdchem.HybridizationType.SP3)
print ("Embedding return value (S=SP3): ",AllChem.EmbedMolecule(mol))
print (Chem.MolToMolBlock(mol), file=open("SF5_embedded_sp3.mol",'w+'))
print ("UFF return value (S=SP3): ", AllChem.UFFOptimizeMolecule(mol, maxIters=400))
print (Chem.MolToMolBlock(mol), file=open("SF5_opt_sp3.mol",'w+'))

This looks like a bug to me: even though the missing atom parameter warning is given, the geometry (in SF5_opt_sp3d2.mol) shouldn't end up that bad? The GO apparently fails to pick up any default parameterization in this case. If the sulfur hybridization is manually changed to SP3, the result looks better (of course, the sulfur coordination is still wrong due to wrong hybridization).
In OpenBabel/Avogadro implementation of UFF they seem to have done some patches to fix the parameter deficiencies. Don't know if this helps, but anyway, here's one mailing list thread about it:
https://sourceforge.net/p/openbabel/mailman/message/24792558/

Hi,
I encountered the same problem for some molecules i generated.  there is actually a relatively thread-safe way to get the warning as string it is based on rdkit blog :  http://rdkit.blogspot.com/2016/03/capturing-error-information.html
Here is my implementation , to solve the issue :
`import os
import pandas as pd
from rdkit import Chem
from rdkit.Chem import AllChem
import multiprocessing as mp
import subprocess
from io import StringIO
import sys
def write_mol(path,mol):
with open(path,'w+') as file:
file.write(Chem.MolToMolBlock(mol))
file.close()
def smiles2molfile(pair):
smiles= pair[0]
path=pair[1]
failure_status = False
mol= Chem.MolFromSmiles(smiles)
sio = sys.stderr = StringIO()
AllChem.EmbedMolecule(mol)
error_log =sio.getvalue()
if error_log:
error_list=error_log.split()
index=int(error_list[-1].replace("(","").replace(")",""))
atom_type= error_list[-2]
if atom_type == "S_5+6":
mol.GetAtomWithIdx(index).SetHybridization(Chem.rdchem.HybridizationType.SP3)
AllChem.EmbedMolecule(mol)
else:
failure_status= True
if  not failure_status :
    write_mol(path,mol)
else:
    pass

return failure_status

def molfile2pdbqtfile(path,pH=7.4):
new_path= path.replace(".mol",".pdbqt")
subprocess.run(f"obabel {path} -O {new_path} -p {pH} --partialcharge gasteiger".split())
os.remove(path)
df = pd.read_csv("some_csvfile.csv")
output_dir= "structures_3D/"
os.makedirs(output_dir,exist_ok=True)
pair_list= [[smiles, os.path.join(output_dir,f"ligand_{i}.mol")] for i,smiles in enumerate(df["smiles"][:100])]
with mp.Pool(mp.cpu_count()) as pool:
failure_status_list=pool.map(smiles2molfile,pair_list)
pool.close()
pool.join()
_,path_list=zip(*pair_list)
path_list= [ path for i,path in enumerate(path_list) if not failure_status_list[i] ]
for path in path_list:
molfile2pdbqtfile(path)
`
Hope , it will help someone who stumbles on the same issue

Thanks for posting those ideas!


NPM install is failing with gradle build

It is working fine when i an doing it using npm install but failing with error when doing same using gradle build.
Date: 2018-08-15T14:55:54.105Z[2m 12s]
Hash: c0b0517e6acca9d5c08corer-frontend:npm_run_build
Time: 24446ms
chunk {0} styles.8aa95f48d192b815dbee.bundle.css (styles) 133 kB [initial] [rendered]
chunk {1} polyfills.997d8cc03812de50ae67.bundle.js (polyfills) 84 bytes [initial] [rendered]
chunk {2} main.ee32620ecd1edff94184.bundle.js (main) 84 bytes [initial] [rendered]
chunk {3} inline.318b50c57b4eba3d437b.bundle.js (inline) 796 bytes [entry] [rendered]
ERROR in : Unexpected value 'undefined' exported by the module 'HTMLEscapeUnescapeModule in D:/code/poc/common-libs/novus-datastore-explorer/novus-datastore-explorer-frontend/node_modules/html-escape-unescape/html-escape-unescape.d.ts'
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>build: ng build --prod
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      C:\Users\mduhan\AppData\Roaming\npm-cache_logs\2018-08-15T14_55_54_176Z-debug.log
:../novus-datastore-explorer-frontend:npm_run_build (Thread[Daemon worker Thread 4,5,main]) completed. Took 1 mins 8.942 secs.
FAILURE: Build failed with an exception.
Gradle details :-1:
plugins {
id "com.moowork.node" version "0.13"
}
// configure gradle-node-plugin
node {
version = '8.9.1'
npmVersion = '6.2.0'
download = true
workDir = file("${project.projectDir}/node")
nodeModulesDir = file("${project.projectDir}/")
}
// clean node/node_modules/dist
task npmClean(type: Delete) {
final def webDir = "${rootDir}/products-web"
delete "${webDir}/node"
delete "${webDir}/node_modules"
delete "${webDir}/dist"
delete "${webDir}/coverage"
}
// clean task for npm
task clean {}
clean.dependsOn(npmClean)
// build task for npm
task build {}
build.dependsOn(npm_install)
build.dependsOn(npm_run_build)
// assemble task for npm
task assemble {}
assemble.dependsOn(build)
// check task for npm
task check {}
check.dependsOn(npm_run_test)
// run all task
task runAll{}
runAll.dependsOn(npm_run_start)

Getting the same Error here:
ERROR in : Unexpected value 'undefined' exported by the module 'HTMLEscapeUnescapeModule in /path/to/my/project/node_modules/html-escape-unescape/html-escape-unescape.d.ts'

Most likely you have not installed he

I am getting same error:
ERROR in : Unexpected value 'undefined' exported by the module 'HTMLEscapeUnescapeModule in Path/to/project/node_modules/html-escape-unescape/html-escape-unescape.d.ts'
Did any one resolved this?

Same error here

Need help, same issue

same problem.
Angular 8

just ng update


[FEATURE] Upgrade to pydantic>=2.0.0

Pydantic V2 has been released recently. It brings with a lot of changes in its core, mainly that it has been rewritten to Rust which makes it much much faster (between 5x - 50x faster).
We're using pydantic.BaseModel pretty much everywhere... The FeedbackRecord is a pydantic.BaseModel. One FeedbackDataset can have more than 1000 records easily, so I think we would be able to see some performance improvement once we update to pydantic>=2.0
Thing to take into consideration:

Many methods names of the BaseModel class have been changed. There is a v1 to v2 migration guide https://docs.pydantic.dev/latest/migration/ and also a tool https://github.com/pydantic/bump-pydantic to help with it.
If we update to pydantic>=2.0, then we need to update the API to use fastapi>=0.100.0 which is the release that comes with pydantic>=2.0 support.

Any updates on this? Or potentially just making the current setup using pydantic v1 compatible with pydantic v2, as for instance done in langchain? Thanks!
https://github.com/langchain-ai/langchain/tree/master/libs/langchain/langchain/pydantic_v1

I'm also keen on seeing support for this – my team have recently upgraded our data access layer to use pydantic>=2.0 which now unfortunately means we can't use argilla and our data access layer in the same environment

I agree that this would be very useful if you have the bandwith to tackle it.
With the scheduled release of Ray 2.9.0 next week, Argilla will be the last library in our tech stack that does not support pydantic >= 2.0.0

I'm also very keen on upgrading this to pydantic v2, currently we have upgraded our SDK to pydantic v2 and Argilla is the only dependency that relies on pydantic v1 and is this holding back our data science team from using the latest version of our sdk.

Bumping on this – would love to add Argilla to our stack but this is currently blocking us.

Same here. Any estimate of when you are planning to ship the upgrade?

@bergr7 and @minaamshahid @besaleli @THOR300 @dbuades @kdutia @todowa @dbuades, this should be covered in the next release==1.22.0 thanks to @gabrielmbmb 💪🏽

@bergr7 @minaamshahid @besaleli @THOR300 @dbuades @kdutia @todowa and @dbuades, this should be covered in the next release==1.22.0 thanks to @gabrielmbmb 💪🏽

@davidberenstein1957 this is great news!
@gabrielmbmb I don't know if you've seen but there's a transformation tool for updating pydantic version which I found quite useful when updating our stack.
Please see this here.
More than happy to help out with this, just drop me an email at<EMAIL_ADDRESS>

Ref: #4466

Hi devs! I'm wondering if there's any plan to upgrade to pydantic v2 for argilla_server. I noticed many unit tests and CI/CD steps in argilla_v1 required pip installing both argilla_server and argilla, which would cause an error since argilla_server still have the pydantic >= 1.10.7,< 2.0 dependency pin.


optimized tortoise weight support

Overview / Motivation
optimized tortoise atx support
The Task
When the Tortoise count votes on a given block B, it multiplies each vote by the weight of the voting block.
Practically, we probably need to have a `weight count' for patterns.
Implementation Notes
TODO: Add links to relevant resources, specs, related issues, etc...
Contribution Guidelines
Important: Issue assignment to developers will be by the order of their application and proficiency level according to the tasks complexity. We will not assign tasks to developers who have'nt introduced themselves on our Gitter dev channel

Introduce yourself on go-spacemesh dev chat channel - ask our team any question you may have about this task
Fork branch develop to your own repo and work in your repo
You must document all methods, enums and types with godoc comments
You must write go unit tests for all types and methods when submitting a component, and integration tests if you submit a feature
When ready for code review, submit a PR from your repo back to branch develop
Attach relevant issue to PR

Connected to https://github.com/spacemeshos/go-spacemesh/issues/1827

irrelevant for new verifying tortoise


[Feature Request] Add Continue button when ChatGPT message length is reached.

Given
When ChatGPT message length is reached Server-Sent Event contains finish_reason='length' instead of null or 'stop'.
data.detail.choices[0].finish_reason === 'length'
Acceptance criteria
As a user, when ChatGPT response message length is reached, I wish to have clickable "Continue" button to let ChatGPT complete its response.
As a user, I would like to see the continue button in the same place where the 'Stop Responding' one is seen.

ok, You don't see this sign of data.detail.choices[0].finish_reason === 'length' all the time.

Yes, I don't. But when the stream ends with finish_reason=length the button should appear.
{"id":"chatcmpl-xxx","object":"chat.completion.chunk","created":1718290711,"model":"gpt-4o-2024-05-13","system_fingerprint":"xxx","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"length"}]}

Можете ли вы привести несколько примеров и моделей ключевых слов?

Можете ли вы привести несколько примеров и моделей ключевых слов?

To trigger this behaviour just ask any OpenAI's model to generate an long response. The only difference is the last chunk contains 'length' instead of 'stop'.

P. S. On the screenshot is a bit modified site.
bject":"chat.completion.chunk","created":1718291604,"model":"gpt-4o-2024-05-13","system_fingerprint":"fp_319be4768e","choices":[{"index":0,"delta":{"content":" effort"},"logprobs":null,"finish_reason":null}]} | 19:13:42.230 |
  | message | {"id":"chatcmpl-9ZgQeD4GtxTkaLBvU8E89lKIOEXic","object":"chat.completion.chunk","created":1718291604,"model":"gpt-4o-2024-05-13","system_fingerprint":"fp_319be4768e","choices":[{"index":0,"delta":{"content":"."},"logprobs":null,"finish_reason":null}]} | 19:13:42.230 |
  | message | {"id":"chatcmpl-9ZgQeD4GtxTkaLBvU8E89lKIOEXic","object":"chat.completion.chunk","created":1718291604,"model":"gpt-4o-2024-05-13","system_fingerprint":"fp_319be4768e","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"length"}]} | 19:13:42.230

ok


Timeout triggered, -223 left...

Hi ,
I'm using the docker image. I ran the run.py from the eval/karonte_stats/.Just for information: after 3 days of running, one process is still not finished. The output says:
[..]
      | 2020-02-17 08:32 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:37 | Karonte  |  Timeout triggered, -216 left....
INFO      | 2020-02-17 08:37 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:42 | Karonte  |  Timeout triggered, -217 left....
INFO      | 2020-02-17 08:42 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:47 | Karonte  |  Timeout triggered, -218 left....
INFO      | 2020-02-17 08:47 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:52 | Karonte  |  Timeout triggered, -219 left....
INFO      | 2020-02-17 08:52 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:57 | Karonte  |  Timeout triggered, -220 left....
INFO      | 2020-02-17 08:57 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:58 | Karonte  |  Timeout triggered, -221 left....
INFO      | 2020-02-17 08:58 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:58 | Karonte  |  Timeout triggered, -222 left....
INFO      | 2020-02-17 08:58 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:59 | Karonte  |  Timeout triggered, -223 left....
INFO      | 2020-02-17 08:59 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds

Seems like the timeout counter does not check when its time to terminate. Seems like it is the NETGEAR r_9000 fw:
$ ps a | grep karonte
  7027 pts/1    S+     0:00 sh -c python tool/karonte.py config/NETGEAR/r_9000.json ./eval/karonte_stats/results//NETGEAR/r_9000.json
  7031 pts/1    Rl+  5850:44 python tool/karonte.py config/NETGEAR/r_9000.json ./eval/karonte_stats/results//NETGEAR/r_9000.json

Cheers

This happens when another process keeps catches the SIGUSR1, which karonte
throws to stop the analysis.
Unfortunately, this is a known bug. I suggest you kill and restart the
analysis, this problem usually does not happen.
On Mon, 17 Feb 2020 at 01:09, phros<EMAIL_ADDRESS>wrote:

Hi ,
I'm using the docker image. I ran the run.py from the eval/karonte_stats/.Just
for information: after 3 days of running, one process is still not
finished. The output says:
[..]
| 2020-02-17 08:32 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:37 | Karonte  |  Timeout triggered, -216 left....
INFO      | 2020-02-17 08:37 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:42 | Karonte  |  Timeout triggered, -217 left....
INFO      | 2020-02-17 08:42 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:47 | Karonte  |  Timeout triggered, -218 left....
INFO      | 2020-02-17 08:47 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:52 | Karonte  |  Timeout triggered, -219 left....
INFO      | 2020-02-17 08:52 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:57 | Karonte  |  Timeout triggered, -220 left....
INFO      | 2020-02-17 08:57 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:58 | Karonte  |  Timeout triggered, -221 left....
INFO      | 2020-02-17 08:58 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:58 | Karonte  |  Timeout triggered, -222 left....
INFO      | 2020-02-17 08:58 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
INFO      | 2020-02-17 08:59 | Karonte  |  Timeout triggered, -223 left....
INFO      | 2020-02-17 08:59 | Karonte  |  Hard Timeout triggered, but we are in z3, trying again in 30 seconds
Seems like the timeout counter does not check when its time to terminate.
Seems like it is the NETGEAR r_9000 fw:
$ ps a | grep karonte
7027 pts/1    S+     0:00 sh -c python tool/karonte.py config/NETGEAR/r_9000.json ./eval/karonte_stats/results//NETGEAR/r_9000.json
7031 pts/1    Rl+  5850:44 python tool/karonte.py config/NETGEAR/r_9000.json ./eval/karonte_stats/results//NETGEAR/r_9000.json
Cheers
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ucsb-seclab/karonte/issues/5?email_source=notifications&email_token=AAH5GZF2QB5D7SOT4QD2SLTRDJH3TA5CNFSM4KWNODVKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IN63DDA,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAH5GZFHQ7I6VBA2GQIZWN3RDJH3TANCNFSM4KWNODVA
.

--
Nilo Redini
Site: www.badnack.it
Twitter: badnack
Skype: badnack
PGP key: http://www.badnack.it/Keys/PbKey

Ok. Thanks


Add unit tests

Codecov Report

Merging #13 (eab6ca9) into master (29d09df) will increase coverage by 19.78%.
The diff coverage is 8.87%.

@@             Coverage Diff             @@
##           master      #13       +/-   ##
===========================================
+ Coverage    0.00%   19.78%   +19.78%
===========================================
  Files          13       19        +6
  Lines         367      556      +189
  Branches        0       76       +76
===========================================
+ Hits            0      110      +110
- Misses        367      444       +77
- Partials        0        2        +2

Impacted Files
Coverage Δ

colcon_cache/event_handler/__init__.py
30.76% <0.00%> (+30.76%)
:arrow_up:

colcon_cache/event_handler/store_lockfile.py
0.00% <0.00%> (ø)

colcon_cache/package_selection/cache.py
0.00% <0.00%> (ø)

colcon_cache/package_selection/lock.py
0.00% <0.00%> (ø)

colcon_cache/subverb/old_capture.py
0.00% <0.00%> (ø)

colcon_cache/task/capture/git.py
0.00% <0.00%> (ø)

colcon_cache/verb/cache.py
0.00% <0.00%> (ø)

colcon_cache/verb_handler/__init__.py
0.00% <0.00%> (ø)

colcon_cache/verb_handler/build.py
0.00% <0.00%> (ø)

colcon_cache/verb_handler/cache.py
0.00% <0.00%> (ø)

... and 19 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e2f5115...eab6ca9. Read the comment docs.


Cannot open notes which use Database folder or Kanban board plugins

Details
Hi, when I open notes from homepages, all notes work except for those ones which uses Kanban or DB Folder plugins.
When I click them, page flashes for a moment and then comes back to home.
Steps to reproduce
Create some DB Folder or Kanban notes, backlink them in home page, open them.
Debug information
Console doesn't print anything
Checklist

[X] I updated to the latest version of the plugin.

From my testing I can reproduce similar results (though in my case, the tab becomes empty) in the current 3.2.1 build but this should be fixed in 38e2f6b87f81381d1c9e7b5f857043b0e47f149b which will be incorporated in 3.3.

Thank you very much!

Hi @mirnovov , I've just updated to version 3.3 but I continue to see the same error.

Can you send me your debug info? This is available via a button at the bottom of Homepage's settings. Also, are they just normal links on your homepage, or ones generated by another plugin?

Hi! My links are normal links in an unordered list
These are debug info:
{"version":3,"homepages":{"Main Homepage":{"value":"Homepage","kind":"File","openOnStartup":true,"hasRibbonIcon":false,"openMode":"Keep open notes","manualOpenMode":"Keep open notes","view":"Reading view","revertView":true,"openWhenEmpty":true,"refreshDataview":true,"autoCreate":false,"autoScroll":false,"pin":false,"commands":[],"alwaysApply":false}},"separateMobile":false,"_defaultViewMode":"preview","_livePreview":"default","_focusNewTab":"default","_plugins":["recent-files-obsidian","obsidian-kanban","dbfolder","dataview","quickadd","obsidian-spaced-repetition","text-snippets-obsidian","obsidian-banners","homepage"],"_internalPlugins":["file-explorer","global-search","switcher","graph","backlink","canvas","outgoing-link","tag-pane","page-preview","templates","note-composer","command-palette","editor-status","bookmarks","outline","word-count","workspaces","file-recovery"],"_obsidianVersion":"1.3.5"}

Thanks, I've been able to reproduce this and will release a fix in the next version.

Hey @mirnovov I've tested it and it works now, thank you very much!


code not formatted properly

code not formatted properly like BotStateExtensions.cs

The commit above should fix this issue.


Avoid goroutine leak and associated memory leak on specific case

Avoid goroutine leak and associated memory leak on specific case described below:
Is it possible than goroutine in charge of reading the req.replyCh channel will no longer waiting on this channel if:

sendTimeoutTimer timer is done;
incoming response message is arrived;
before removed requestID on the c.respMap.

So in this cas, goroutine launched by readResponseLoop will be forever blocked (it is goroutine leak) on write into response.replyCh channel.
In order to avoid this situation, it is better to make buffer channel will always accept one write (even if the reader is no longer waiting on read channel).

Even it is very rare (or impossible except if the goscheduler is stopped while big GC?) case because goroutine still waiting oneMoreSecondTimer in parallel of deleting requestID from the c.respMap.

Another solution can be to modify how we manage the reply after the sendTimeoutTimer is done with something like that:
Index: connection.go
<+>UTF-8
===================================================================
diff --git a/connection.go b/connection.go
--- a/connection.go	(revision 01c34ce3f42c5c08d148e06a7412867eadca60fd)
+++ b/connection.go	(date<PHONE_NUMBER>771)
@@ -376,17 +376,11 @@
 		// if we have UnmatchedMessageHandler set, then we want reply
 		// to not be lost but handled by it.
 		if c.Opts.InboundMessageHandler != nil {
-			go func() {
-				oneMoreSecondTimer := time.NewTimer(time.Second)
-				defer oneMoreSecondTimer.Stop()
-
+			defer func() {
 				select {
 				case resp := <-req.replyCh:
 					go c.Opts.InboundMessageHandler(c, resp)
-				case <-oneMoreSecondTimer.C:
-					// if no reply received within 1 second
-					// we return from the goroutine
-					return
+				default:
 				}
 			}()
 		}

In this case, we are sure always read req.replyCh after removed from the map c.respMap and manage the reply with c.Opts.InboundMessageHandler.
Two cases are possibles:
1st case:

reply received just before locking the mutex for removing requestID from the map c.respMap, then reply will write into replyCh;
req.replyCh, we will read it just before to leave (with the defer) and manage the replay with go c.Opts.InboundMessageHandler(c, resp);

2nd case:

no reply receiver before removing the requestID from  the map c.respMap
the defer will take the default entry of select case (in this case we doesn't launch the goroutine block into oneMoreSecondTimer that doesn't very useful because in majority of case the wait one second is too long because the requestID will be removed quickly)

@jerome-laforge your approach here looks to the point: https://github.com/moov-io/iso8583-connection/pull/41#issuecomment-1506828814 It reaches the goal in a more elegant manner (no need to wait for 1 second even if it's an edge case).
I would suggest one tiny change there to always defer not only when if c.Opts.InboundMessageHandler:
--- a/connection.go
+++ b/connection.go
@@ -373,23 +373,19 @@ func (c *Connection) Send(message *iso8583.Message) (*iso8583.Message, error) {
        case <-sendTimeoutTimer.C:
                err = ErrSendTimeout
                // reply can still be sent after SendTimeout received.
-               // if we have UnmatchedMessageHandler set, then we want reply
-               // to not be lost but handled by it.
-               if c.Opts.InboundMessageHandler != nil {
-                       go func() {
-                               oneMoreSecondTimer := time.NewTimer(time.Second)
-                               defer oneMoreSecondTimer.Stop()
-
-                               select {
-                               case resp := <-req.replyCh:
+               // if we have InboundMessageHandler set, then we want reply
+               // to be handled by it
+               defer func() {
+                       select {
+                       case resp := <-req.replyCh:
+                               if c.Opts.InboundMessageHandler != nil {
                                        go c.Opts.InboundMessageHandler(c, resp)
-                               case <-oneMoreSecondTimer.C:
-                                       // if no reply received within 1 second
-                                       // we return from the goroutine
-                                       return
                                }
-                       }()
-               }
+
+                       default:
+                               return
+                       }
+               }()
        }

I appreciate your time and contributions! Thank you!

@alovak

I would suggest one tiny change there to always defer not only when if c.Opts.InboundMessageHandler:

Thanks, it is better suggest as in majority of case InboundMessageHandler is defined.

I appreciate your time and contributions! Thank you!

It is I who thank you for setting this driver in open source.
Another little point, in order to ensure that we never lost even on race condition with:

incoming response that has already found requestID from c.respMap
removing the requestID from c.respMap

I propose you to set in the critical path (i.e. between the lock/unlock mutexc.pendingRequestsMu) the write incoming response into the channel response.replyCh. Since the channel response.replyCh is buffered by accepting one write, then the goroutine will never blocked into the mutex c.pendingRequestsMu, and so this mutex will never be locked indefinitely on this write. You can seen this proposition here (with all previous modifications): https://github.com/jerome-laforge/iso8583-connection/blob/d5507a0859d08dc0768eaeeef2ee81a025a09319/connection.go#L606
Is it acceptable for you?

@jerome-laforge I'm trying to avoid buffering channels here as it's easy to miss the issue with such an approach.
Let's make replyCh unbuffered. It seems there are no ways now for goroutine in the read loop to be blocked :D

First of all, I want to thank for your great support @alovak.

@jerome-laforge I'm trying to avoid buffering channels here as it's easy to miss the issue with such an approach.

Ok, I will remove the buffering channel. But if you can find easily the pointer to resource where I can read some information about mentioned issue with buffering channel, it would be great. Because, in production, I am using without observable problem the buffering channel for example with stopping short with fan-out/fan-in or similar pattern.

Let's make replyCh unbuffered. It seems there are no ways now for goroutine in the read loop to be blocked :D

I am going to explain the steps for this case (even If this case is very unlikely), and I let you decide if  this case is problematic or not:

if goroutine (let call it producer) in func (c *Connection) handleResponse(rawMessage []byte) has found the requestID in c.respMap[reqID] map (but not write into response.replyCh <- message channel yet)
if, in meantime, sending goroutine (let call it consumer) in func (c *Connection) Send(message *iso8583.Message) (*iso8583.Message, error) is unblocked because the timer sendTimeoutTimer in  has expired
then consumer goroutine deletes requestID from c.respMap[reqID] map
then consumer goroutine trying to consume <-req.replyCh chan before quitting (via the defer) but producer doesn't write message into channel. So consumer goroutine is no longer reading the channel.
the producer goroutine write into response.replyCh <- message channel, and it will be blocked forever (since consumer is no longer reading on channel because consumer quitting Send func and the channel is not buffering channel) and moreover we will miss this incoming response.

If it is problematic case for you, I think that we can:

make replyCh channel as buffering channel with size of 1
protect the writing into response.replyCh <- message by c.pendingRequestsMu mutex.

So with this both things (buffering channel & writing protected by mutex), two cases are possible when race condition with sendTimeoutTimer` timer has expired and receiving incoming response:
case 1:

consumer goroutine takes the mutex
consumer deletes the requestID from map,
consumer releases the mutex,
the producer goroutine won't find the requestID from map (protected by mutex)
the producer will manage the incoming response with InboundMessageHandler func or handleError func

case 2:

producer takes the mutex,
producer finds the requestID into the map
producer writes the incoming response into response.replyCh <- message unblocked  channel (because it is buffering channel)
producer releases the mutex
consumer deletes requestID from map (protected by mutex) and it is not possible to delete the entry from the map, and consequently deferred reading the <-req.replyCh by consumer with before writing by producer

I think the mutex and buffered channel makes sense and I don't think we can reliably detect case #1 or #2, but our error messages should hint that either may have happened.

I'm getting back to this PR as I missed the discussion :(


Update Unified paths

Update Unified paths on https://e3sm-project.github.io/zstash/_build/html/master/getting_started.html

Resolved by #169


Hackage documentation missing.

The documentation for the latest version of this package is missing on Hackage. They've been pending on Hackage for some time, this usually indicated that Hackage wasn't able to build the package.
Is it possible for you to manually upload the package using cabal upload --doc, please?
Thanks!
CC @carldong

I'm not maintaining this package anymore. If you could give me your Hackage id I'll add you as a maintainer so that you can update the package / upload haddocks etc.

Is this package deprecated? https://hackage.haskell.org/package/sdl2-ttf there seem to be two packages with similar names an authors

I stopped maintaining this package a long time ago so someone forked it. sdl2-ttf is that fork.


Source of Variability in BFGS BSpline Registration?

I believe BFGS should be deterministic, but I am seeing variability in the convergence behaviour when performing a registration twice on the same image pair (see example below).

Elapsed Iterations - Run 1: 36
Final Metric Value - Run 1: -0.8261218809138697

Elapsed Iterations - Run 2: 31
Final Metric Value - Run 2: -0.8193961659593083

This variability is greater than what I would expect from machine precision, but perhaps it is round-off error? I set the metric sampling to be regular in the example below. Are there other stochastic elements that could contribute to the discrepancies?
`
import SimpleITK as sitk
import numpy as np

moving = sitk.GetImageFromArray(np.random.rand(100, 100))
bx = sitk.BSplineTransformInitializer(moving, (3,3), 3)
displacements = np.random.uniform(-5, 5, len(bx.GetParameters()))
bx.SetParameters(displacements)
fixed = sitk.Resample(moving, bx)

for i in range(2):
    rx = sitk.ImageRegistrationMethod()
    ix = sitk.BSplineTransformInitializer(fixed, (3,3), 3)
    rx.SetInitialTransform(ix)
    rx.SetMetricSamplingStrategy(rx.REGULAR)
    rx.SetMetricAsCorrelation()
    rx.SetMetricUseFixedImageGradientFilter(False)
    rx.SetOptimizerAsLBFGSB(numberOfIterations=100)

    tx = rx.Execute(fixed, moving)
    print("Elapsed Iterations - Run {:d}:".format(i+1), rx.GetOptimizerIteration())
    print("Final Metric Value - Run {:d}:".format(i+1), rx.GetMetricValue())

`

What is the behavior if you se the seed parameter in this member function:
https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ImageRegistrationMethod.html#a8b891c62404a8dc5010241fea619c932
On Nov 17, 2017, at 6:43 PM, Scott Sibole <notifications<EMAIL_ADDRESS>wrote:
I believe BFGS should be deterministic, but I am seeing variability in the convergence behaviour when performing a registration twice on the same image pair (see example below).
Elapsed Iterations - Run 1: 36
Final Metric Value - Run 1: -0.8261218809138697
Elapsed Iterations - Run 2: 31
Final Metric Value - Run 2: -0.8193961659593083
This variability is greater than what I would expect from machine precision, but perhaps it is round-off error? I set the metric sampling to be regular in the example below. Are there other stochastic elements that could contribute to the discrepancies?
`
import SimpleITK as sitk
import numpy as np
moving = sitk.GetImageFromArray(np.random.rand(100, 100))
bx = sitk.BSplineTransformInitializer(moving, (3,3), 3)
displacements = np.random.uniform(-5, 5, len(bx.GetParameters()))
bx.SetParameters(displacements)
fixed = sitk.Resample(moving, bx)
for i in range(2):
rx = sitk.ImageRegistrationMethod()
ix = sitk.BSplineTransformInitializer(fixed, (3,3), 3)
rx.SetInitialTransform(ix)
rx.SetMetricSamplingStrategy(rx.REGULAR)
rx.SetMetricAsCorrelation()
rx.SetMetricUseFixedImageGradientFilter(False)
rx.SetOptimizerAsLBFGSB(numberOfIterations=100)
tx = rx.Execute(fixed, moving)
print("Elapsed Iterations - Run {:d}:".format(i+1), rx.GetOptimizerIteration())
print("Final Metric Value - Run {:d}:".format(i+1), rx.GetMetricValue())

`
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/SimpleITK/SimpleITK/issues/342, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AATmJfgiuqrD8dD6qvFo8FdLL4Rjr2Xaks5s3hoNgaJpZM4Qiw8X.

Interesting that the RNG seed would be set there. Thanks for pointing that out. This did indeed remove the variability. However, one needs to also be careful not to use seed=0, since that is the enumerator value for sitkWallClock. I made this mistake initially...
Adding,
rx.SetMetricSamplingPercentage(0.1, seed=42)
to the original code produced:

Elapsed Iterations - Run 1 26
Final Metric Value - Run 1 -0.8190323782545297
Elapsed Iterations - Run 2 26
Final Metric Value - Run 2 -0.8190323782545297

I do feel that this is very nonintuitive behaviour though, since setting the sampling strategy to REGULAR would suggest there is no need for an RNG. Is it possible that the sampling strategy is being ignored?

Here is the implementation of the REGULAR sampling strategy:
https://github.com/InsightSoftwareConsortium/ITK/blob/b260bae77729fecf2b3ff772343adb6299399838/Modules/Registration/RegistrationMethodsv4/include/itkImageRegistrationMethodv4.hxx#L956-L983
So each regular place sample is displaced with a gaussian distribution with 1/3 the pixel spacing. This is a technique to reduce aliasing that may happen during the sampling of the metric.
Yes it should be documented better in the SimpleITK and ITK interfaces.

Okay this was very enlightening. I see the benefit of this behaviour in protecting us from ourselves as far as aliasing goes. Perhaps, the REGULAR sampling strategy could default to a set seed value, so the aliasing could be reduced, but the behaviour would still be repeatible.

I believe this question has been answered. Please feel free or re-open if needed.


Async generators

Scenarios like these are not currently supported:
@unsync
def my_gen(block_size):
    while block := slow_read(block_size):
        yield from block

async def my_consumer():
    async for item in my_gen(1000):
         print(f"Found item: {item}")

They will error out by not finding __aiter__. At first sight this is easy to add, and I was planning to just drop a PR and walk off, but there are a few design decisions here.
Should we just call next() on whatever thread in the thread pool as __anext__ is called? Or should we trap a thread for the lifetime of the iterator, detecting iterator abandonment using the weakref module? Should that be exposed as an option in the decorator?

I would be interested I think to first see how best to handle "standard" async iterators, like:
@unsync
async def my_gen():
  for item in some_thing:
    yield whatever

My main first concern is the blocking API calls will have to be made more complicated to handle this async iterator case. With that ground work I think it will be easier to consider this use case of converting conventional iterators to async ones. (Which is a super a cool idea by the way!)

Hm, I hadn't considered that. Part of the problem is that async iterators are rich objects that receive calls with arguments and whatnot. There's even more thought involved than I initially thought! :)
Convenient PEP link: https://www.python.org/dev/peps/pep-0525/


Documentation and tests

I want to refactor again how dialogues are generated, but to do so, I want to have a pipeline to test my changes (without going through our AWS infrastructure and training real models). The best way is to bring in the Makefiles we use for homeworks and tutorials, which this PR does.

Should we add documentations for the starter code for schema.org and multiwoz as well?

We should, yes. I'll let you document the starter code for schema.org, and I'll deal with the multiwoz stuff when it becomes more stable.


Import project failed in Android Studio ("Sync failed")

Hi,
I'm trying to import a project in Android Studio, and the plugin seems to have a problem running BazelInfo:
com.google.idea.blaze.base.command.info.BlazeInfoException: blaze info failed with exit code: 2
Full log: https://pastebin.com/K0JYK05y
I believe the command it's trying to run is a few lines above in the log:
/home/oferb/opt/bazel_0_12/bazel-release-0.12.0/bazel-bin/src/bazel info --tool_tag=ijwb:AndroidStudio --curses=no --color=yes --experimental_ui=no --progress_in_terminal_title=no --
Copying and running in the terminal works, with the following output: https://pastebin.com/di7dXf8v
Let me know if I can help repro or debug this issue more (you can reach me at oferb@ :) )

The "While parsing option --client_env=: Variable definitions must be in the form of a 'name=value' assignment" looks similar to https://github.com/bazelbuild/intellij/issues/108.
Can you try the workaround about 'GTK_MODULES' environment variable?

Indeed, unset GTK_MODULES did the trick.
Any idea how this could be fixed 'out-of-the-box'?

The bazel-side issue is https://github.com/bazelbuild/bazel/issues/3196. Closing as a dupe of that.
The underlying JDK bug has already been fixed, so it will work out of the box once JetBrains update their bundled JDK past Java 8u161.


First Project fails on Windows

Version
No response
Problem Area
react-native-pytorch-core (core package)
Steps to Reproduce
I am trying to install PyTorchLive on Windows 10 machine.

Already have Python installed.
I followed steps in https://pytorch.org/live/docs/tutorials/get-started-manually/ to install reactnative development environment
Am able to successfully run the react-native sample application.
npx react-native init MyFirstProject --template react-native-template-pytorch-live give the following error:
Welcome to React Native!
Learn once, write anywhere

√ Downloading template
√ Copying template
√ Processing template
√ Executing post init script
× Installing dependencies
error Error: Command failed: npm install
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/react
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>npm ERR! node_modules/@react-native-community/masked-view
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

Expected Results
No response
Code example, screenshot, or link to repository
No response

@rmadhira86, I don't have Windows 10 but tested it on Windows 11 and it successfully passed the init:

Looking at the error message, it seems to be an issue with yarn not being able to resolve peer dependencies. What does the following command output on your machine?
yarn config get registry
Is this error consistently reproducible for you, e.g., does it happen every time you run the npx react-native init MyFirstProject --template react-native-template-pytorch-live command?
If yes, you can try the following steps to get you unblocked:

npx react-native init MyFirstProject --template react-native-template-pytorch-live (ok if it fails)
cd .\MyFirstProject\
yarn --> My hunch is that it fails here on your machine
cd .\models\
.\venv\Scripts\activate
pip install -r .\requirements.txt
python .\make_models.py
cd ..
npx react-native run-android

Quick update, after updating the masked-view package to 0.1.11 this error disappear but another incompatibility comes up with the ts-jest and jest packages.

So, how do you update these package in reactive native?

@anthonyweidai
I updated the masked-view version in package.json but for the jest issue I haven't found any package not generating an error so I just went with the npm install --force option for now.

I had the same issue on Windows 10 while following the Get Started Manually tutorial. For me the cause was that I did not have yarn installed. Use choco install yarn to install it.
As a complete novice I had to overcome several difficulties to make the PyTorch Live app work via Windows 10 on a Pocophone F1 with Android 10. Tell me if you encounter any more issues, maybe I can help. :smile:

Thanks for providing a solution, @pot2mayo!
Do you want to submit a PR that updates the masked-view version for the template?
PS: PyTorch Live uses yarn, which means versions are locked in the yarn.lock file

@raedle
My solution is not good enough for a PR since it still require to use the force mode for installing packages.
Ideally we'd like a versioning that is compatible across all packages without forcing.

The new PlayTorch API, the PlayTorch app + Snack, and the PlayTorch Expo config plugin are now better alternatives to experiment with on-device ML models.
Closing this issue due to inactivity. Please reopen if this is still ongoing!


Problems with noting the kind node image version

What type of PR is this?
/kind documentation
What this PR does / why we need it:
In the actual use of kurator, it does not specify the relationship between the version of kind and the node image used, which may lead to user errors when using it. So we added a note about it.

why need this? I don't think it needs to be a 1-on-1 match.

It doesn't need to be a 1-on-1 match, but in my actual use of kurator, I got an error when creating a cluster using the 1.25.3 version of the node image. The reason is because the node image versions don't match. So I feel the need to clarify.


Python 3 Kernel Issue

Description:
I have a Windows 10 laptop that I am trying to run hydrogen through atom on for a Python 3 use case. I have installed anaconda and ipykernel using the instructions detailed on the nteract website associated with Hydrogen but I am receiving consistently some error with the kernel that I am using.
Steps to Reproduce:
Versions:
Windows 10
Atom    : 1.38.2
Electron: 2.0.18
Chrome  : 61.0.3163.100
Node    : 8.9.3
Plugins:
No plug-ins active
Logs:
Traceback (most recent call last):
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\runpy.py", line 193, in _run_module_as_main "main", mod_spec)
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\runpy.py", line 85, in _run_code exec(code, run_globals)
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\ipykernel_launcher.py", line 15, in from ipykernel import kernelapp as app
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\ipykernel__init__.py", line 2, in from .connect import
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\ipykernel\connect.py", line 18, in import jupyter_client
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\jupyter_client__init__.py", line 4, in from .connect import
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\jupyter_client\connect.py", line 23, in import zmq
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\zmq__init__.py", line 47, in from zmq import backend
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\zmq\backend__init__.py", line 40, in reraise(*exc_info)
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\zmq\utils\sixcerpt.py", line 34, in reraise raise value
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\zmq\backend__init__.py", line 27, in _ns = select_backend(first)
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\zmq\backend\select.py", line 28, in select_backend mod = import(name, fromlist=public_api)
File "C:\Users\andrew.gatherer\anaconda3\envs\my_conda\lib\site-packages\zmq\backend\cython__init__.py", line 6, in from . import (constants, error, message, context, ImportError: DLL load failed: The specified module could not be found.

This issue seems to lie not on Hydrogen side, but just on Anaconda's.
The last line says you may not set the env path properly. Setting env paths to anaconda3/your-env/share/ or somewhere else might help.
@GathererA
I'm going to close this issue cause Hydrogen doesn't seem to have to handle this kind of issue.
But feel free to reopen this if you find this issue is actually caused by Hydrogen.


Keep socket creation/bind/listen outside the loop (IDFGH-1790)

@LoloVTS Thanks for the contribution and sorry for the very slow turnaround. We will look into this PR. Thanks.

It seems that this improvement has already been implemented in b7bfcf3c936ac8eeb3f130abd1dc69436dfeae53.


AMBARI-24011: Add workaround to hide client modules in the dashboard

Change-Id: Ie69b4e0ca654d59952807694cf2f3f24d6b74c0d
What changes were proposed in this pull request?
Add workaround to hide client modules in the dashboard until we figure out how to represent client modules across mpacks.
How was this patch tested?
mvn clean test
19688 passing (20s)
46 pending
Please review Ambari Contributing Guide before opening a pull request.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/2563/
Test FAILed.
Test FAILured.


Circular reference in Relations to Other Signs

The Gloss MAAKT-NIET-UIT has a Homonym with itself in panel Relations to Other Signs.

I adjusted the Gloss Detail View to ignore circular Homonyms.
(This is in the branch that hasn't been merged yet, with the Minimal Pairs panel.)
Perhaps it ought to be checked when the user wants to add a relation to another sign that it's not circular?
There may exist other circular relations in the database. The MAAKT-NIET-UIT I happened to find.
A warning could be shown in the Relations to Other Signs.

Good point @susanodd . I've removed this one, but we should check to avoid the creation of new ones. Incidentally: what happens if we remove a sign that is involved in a reference, are the relations to this sign in other entries automatically deleted?

Good question! I will find out.

It looks like deletion is done within the database django python code. (Code supporting signbank, in django/db/models/deletion.py and django/db/models/query.py etc.)
I found that I was not able to delete a sign from within Gloss Detail View, in spite of there being a button for this when editing the sign. The code expects to jump back to Admin List View (admin_gloss_list) but that didn't work because I wasn't at an Admin page.
I need to figure out what the control flow ought to be. I wasn't able to delete a sign to check.
It should just be that relations of a deleted sign also get deleted (by the underlying database python code). It seems that some data is stored about deleted information. There are also two different kinds of permissions: can_delete_unpublished, can_delete_published.
We probably need to confirm whether these are checked for in the appropriate places.

Yes, deleting a gloss also deletes relations involving it.

:-)

@ocrasborn @susanodd Can this issue be closed?

This seems to have been repaired but never closed.