Conditionally render Auth with magic link by accepting a prop from th…

What kind of change does this PR introduce?
Signing with magic link will render conditionally by accepting props from the user
Bug fix, feature, docs update, ...
Feature
What is the current behavior?
Sign in with magic link renders every time and unable to hide it in case user don't want this behavior
Please link any relevant issues here.
#246
What is the new behavior?
Hide magic link conditionally.
Additional context

@MildTomato, is there any changes I need to do in this PR?

looks great @Nazeeh21 🔥

:tada: This PR is included in version 0.33.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Question

Can I make the bot play better in intermediate mode?

Yes, if you are using the latest release (v1.3.2) change the GAME_LOBBY_ID line in constants.py to 850. if you are using the gui you can do it on the config tab.

okayyyyyyyyy i have 1.3.1 thx you are the best

I downloaded the new version and it keeps getting stuck. Is there a solution?

which new version? and just drop the latest log in the logs folder in here.


[swisspush/apikana#20] Add handling for new apikana argument 'useLeadingSlashes'.

This handles new apikana parameter introduced in swisspush/apikana#21.

This handles new apikana parameter introduced in swisspush/apikana#21.

Hmm. The default must be with leading slash.
So the option should be to remove the leading slash: --noLeadingSlash.
Or better, the option should be actually a prefix:
--generatedPathPrefix=/       # default
--generatedPathPrefix=        # no slash
--generatedPathPrefix=http://blabla

wdyt?

api.yaml has the fields host and basePath .
What about if basePath.endsWith('/') pathWithoutSlash else pathWithSlash?
Optionally a new parameter baseUrlcould be added to overwrite host and basePath.

Hmm. Could be a solution too.

The prefix approach is my preferred one.
BTW, I agree with your point on double negative.

Sorry, I missed your comment, Nidi.
Your solution is even better. It is completely consistent this way.

Ready to review :) (@nidi3, @lbovet)


Virtual Cloud Setup

Setting up a Virtual Cloud (VC) is currently done by specifying endpoints as environment variables when deploying the CS services. This approach is neither flexible nor convenient and should be replaced by a more mature kubernetes-native solution that allows for establishing a VC by deploying and modifying K8s custom resources.

See CSEP-0053 #54 for an initial design concept.


Create PR against Default Branch

Context
Testing #83 locally, I discovered that if the default branch was renamed from master to main, PRs raised against master would succeed but if a repository has only ever had a main branch, it would fail.
Change
Get the default branch from GitHub's API and fix up the specs.

Confirmation
https://github.com/envato/unwrappr-private-test/pull/1 successfully created.

Confirmation
https://github.com/envato/unwrappr-private-test/pull/1 successfully created.


Running 'make' fails to compile

compiling source/core/commandline.cpp...
In file included from source/core/moltengamepad.h:11,
from source/core/commandline.cpp:1:
source/core/devices/device.h:4:10: fatal error: libudev.h: No such file or directory
4 | #include <libudev.h>
|          ^~~~~~~~~~~
compilation terminated.
make: *** [Makefile:60: source/core/commandline.o] Error 1

Solution: sudo apt install libudev-dev


Extend syntax highlighting and completions for string types

I think it's awesome that Pylance supports syntax highlighting and completions in string type annotations.

Would it be possible to extend that? Below cast and TypeVar as example. NewType is also similar.

Lastly, type aliases. Variables explicitly annotated with TypeAlias should be strait forward. Some support for it seems to be implemented already. Implicit aliases are probably a bit more difficult. Although cases which can safely be inferred as alias might still be possible.

Example code
from typing import Callable, NewType, TypeAlias, TypeVar, cast

T = TypeVar("T", bound="SomeClass")
T2 = TypeVar("T2", "SomeClass", int)

def func(var) -> "SomeClass":
    return cast("SomeClass", var)

X = NewType("X", "SomeClass")

Alias1: TypeAlias = "Callable[[], SomeClass]"
Alias2 = Callable[[], "SomeClass"]

class SomeClass: ...

Thanks for the request. This is not something that is currently supported, but will reevaluate based on upvotes or community feedback.

Moving this issue to discussion as an enhancement request for comments and upvotes.


尝试VMess-TCP 最简单的配置但还是失败了，报 failed to find an available destination

你正在使用哪个版本的 V2Ray？
V2Ray 4.45.2（VPS 服务端）
V2Ray 5.0.7 （本地 客户端）
你的使用场景是什么？
使用Chrome走http代理访问特定网站
你看到的异常现象是什么？
本人研究过如何搭建shadowsocks-libev & nginx的VPS，但是最近发现梯子有些时断时续。最近想学习v2ray。但是最简单的第一步就遇到了阻碍。
简单来说，我按官方教程，以及给出的配置样本，https://github.com/v2fly/v2ray-examples/tree/master/VMess-TCP 来配置。但是反复尝试后都没有像之前配置SS那样成功，清空日志后，尝试用Chrome+SwitchyOmega，访问google.com，无法连接，得到
服务端日志：access.log很多时候为空。error.log没有意义内容，其实也就是空的。
客户端日志：access.log内容很平常。error.log反复报如下错误：
”app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp (服务器IP：端口号): i/o timeout dial tcp (服务器IP：端口号): operation was canceled] > common/retry: all retry attempts failed“
你期待看到的正常表现是怎样的？
和shadowsocks一样顺畅地利用Chrome科学上网
请附上你的配置
服务端配置：
{
    "log": {
        "loglevel": "warning",
        "access": "/var/log/v2ray/access.log", // 这是 Linux 的路径
        "error": "/var/log/v2ray/error.log"
    },
    "inbounds": [
        {
            "port": 10025, // 服务器监听端口
            "protocol": "vmess",
            "settings": {
                "clients": [
                    {
                        "id": "（**略去UUID**）",
                        "email": "（**略去**）"
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp"
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom"
        }
    ]
}

客户端配置：
{
  "log": {
    "loglevel": "warning", // 日志级别
    "access": "access.log", // 这是 Windows 系统的路径
    "error": "error.log"
  },
  "inbounds": [
    {
      "listen": "<IP_ADDRESS>",
      "port": 1082,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true,
        "ip": "<IP_ADDRESS>"
      }
    },
    {
      "listen": "<IP_ADDRESS>",
      "port": "1081",
      "protocol": "http"
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "（**VPS地址**）",
            "port": （**VPS端口号**）,
            "users": [
              {
                "id": "（**略去UUID**）"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp"
      },
      "tag": "proxy"
    },
    {
      "protocol": "freedom",
      "tag": "direct"
    }
  ]
}

请附上出错时软件输出的错误日志
服务器端错误日志：

2022/07/08 15:38:33 [Warning] V2Ray 4.45.2 started

客户端错误日志：
2022/07/08 23:38:00 [Warning] V2Ray 5.0.7 started
2022/07/08 23:38:08 [Warning] [3061016878] app/dispatcher: default route for tcp:www.google.com:443
2022/07/08 23:38:11 [Warning] [1182008375] app/dispatcher: default route for tcp:www.gstatic.com:443
2022/07/08 23:38:32 [Warning] [1631844035] app/dispatcher: default route for tcp:play.google.com:443
2022/07/08 23:38:37 [Warning] [2273922364] app/dispatcher: default route for tcp:www.google.com:443
2022/07/08 23:38:40 [Warning] [1915422247] app/dispatcher: default route for tcp:www.google.com:443
2022/07/08 23:38:40 [Warning] [4176613271] app/dispatcher: default route for tcp:www.google.com:443
2022/07/08 23:38:44 [Warning] [1182008375] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:38:56 [Warning] [2758718602] app/dispatcher: default route for tcp:mtalk.google.com:5228
2022/07/08 23:39:05 [Warning] [1631844035] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:10 [Warning] [2273922364] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:10 [Warning] [3717684811] app/dispatcher: default route for tcp:www.google.com:443
2022/07/08 23:39:10 [Warning] [3692689977] app/dispatcher: default route for tcp:www.gstatic.com:443
2022/07/08 23:39:13 [Warning] [1915422247] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:13 [Warning] [4176613271] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:19 [Warning] [4005244583] app/dispatcher: default route for tcp:avatars.githubusercontent.com:443
2022/07/08 23:39:19 [Warning] [3479553297] app/dispatcher: default route for tcp:github.com:443
2022/07/08 23:39:20 [Warning] [3984468597] app/dispatcher: default route for tcp:avatars.githubusercontent.com:443
2022/07/08 23:39:29 [Warning] [2758718602] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:43 [Warning] [3692689977] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:43 [Warning] [3717684811] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:52 [Warning] [3479553297] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:52 [Warning] [4005244583] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:39:53 [Warning] [3984468597] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:55:45 [Warning] [1810112335] app/dispatcher: default route for tcp:www.google.com:443
2022/07/08 23:55:45 [Warning] [774583441] app/dispatcher: default route for tcp:www.gstatic.com:443
2022/07/08 23:56:39 [Warning] [1008954874] app/dispatcher: default route for tcp:mtalk.google.com:5228
2022/07/08 23:57:12 [Warning] [1008954874] app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [dial tcp （**VPS服务器：端口号**）: i/o timeout dial tcp （**VPS服务器：端口号**）: operation was canceled] > common/retry: all retry attempts failed
2022/07/08 23:57:37 [Warning] [2737744302] app/dispatcher: default route for tcp:mtalk.google.com:443

请附上访问日志

2022/07/08 15:55:44 <IP_ADDRESS>:3338 accepted tcp:www.google.com:443 email:***
2022/07/08 15:55:45 <IP_ADDRESS>:3370 accepted tcp:www.gstatic.com:443 email:***

其它相关的配置文件（如 Nginx）和相关日志
无，最简化的配置
如果 V2Ray 无法启动，请附上 --test 命令的输出
如果 V2Ray 服务运行异常，请附上 journal 日志
V2Ray在VPS上运行正常，可以查到监听设置的端口; 使用https://tcp.ping.pe/（VPS服务器：端口号），得到的结果也全都是绿色的。
SELinux直接关闭了。
Firewall 配置了除了111都打开。
firewall-cmd --zone=public --add-port=0-110/tcp --permanent
firewall-cmd --zone=public --add-port=112-65535/tcp --permanent

想请教各位专家大佬，是否是这样简单的配置，直接就被GFW屏蔽了，一秒钟也通不过。步步为营学习的途径并不通——
即 https://github.com/v2fly/v2ray-examples/tree/master/VMess-TCP 此配置已经过时。

我目前也是这个情况，按照新白话文指南配置的vmess，运气好最多3秒，就不能过了，运气差点google.com只能tls层完成就过不了了


scenario that commitAsync() retry could outdated commits

Affects Version(s): 2.7.6

assumed that the first commit fails (by any network problems or something..) and the newer one success AND the older one retried and successed later. i think the new consumer could get so much older message after rebalance depends on retried offset. isn't there any need for guarantee the offset sequence on callback?

sorry for my carelessness i found that part on consumer coordinator


Refactor setup.py to use requirements files

Let's use the requirements files as the source of truth as we do in papermill and scrapbook.
cc/ @MSeal

I can quickly implement this if others are ok with the change.


pass multiple props to another screen.

I've seen resolutions for passing one prop. Can someone assist me on passing multiple props to another page. Right now i've placed the user input into "this.state". How do i pass that on?

 this.setState({nickName})}
                placeholder={"Nickname eg. Kieran Tross spot 1"}
                color={"black"}
                placeholderTextColor={"grey"}/>

 this.setState({hourlyRate})}
                placeholder={"hourly rate"}
                color={"black"}
                keyboardType='numeric'
                placeholderTextColor={"grey"}/>

 this.setState({description})}
                placeholder={"Describe your spot"}
                color={"black"}
                placeholderTextColor={"grey"}/>

Hi @kingtross88 ! It looks like this is not a bug of the library nor a feature request, so I'll close it: I suggest next time you use Stack Overflow which is better suited for answering these types of questions. I also encourage you to join the Reactiflux community on Discord. There are React Native and React Navigation channels with helpful people who might be able to answer your question. I would also like to mention that there is a collection of helpful links and tutorials for React Navigation in the README which might be helpful for you.
If you believe that you are experiencing a bug or have a feature request, please open a new Issue following the dedicated template or submit a PR.


Update service account similar to access artifact account

Issue #, if available:
Description of changes:
The debian releases are still failing due to not having correct permissions. Comparing the differences between the nonDebian sns message and debian sns message is the service account used. Similar to https://github.com/aws/eks-distro-prow-jobs/pull/377
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve

/lgtm


added search bar to nav bar

@aharelick
Added search bar. No actual logic - super basic

lgtm for now, feel free to merge

sorry I think I might hold off on this - I have a better mockup that makes more sense with fitting everything on the nav bar

Can we close this pull request for now?


⚠ ClamAV has degraded performance

In f9292da, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 450 ms

Resolved: ClamAV performance has improved in b641ce2.


Renewal issue : The client lacks sufficient authorization

Hello,
I started with this error :

Fehler: Fehler bei der Installation des
SSL-Zertifikats von Let's Encrypt: Failed letsencrypt execution:
Traceback (most recent call last):
File "/opt/psa/var/modules/letsencrypt/venv/bin/letsencrypt", line 11, in
sys.exit(main())
File "/usr/local/psa/var/modules/letsencrypt/venv.9b7lw/local/lib/python2.7/site-packages/letsencrypt/cli.py",
line 1950, in main
plugins = plugins_disco.PluginsRegistry.find_all()
File "/usr/local/psa/var/modules/letsencrypt/venv.9b7lw/local/lib/python2.7/site-packages/letsencrypt/plugins/disco.py",
line 168, in find_all
plugin_ep = PluginEntryPoint(entry_point)
File "/usr/local/psa/var/modules/letsencrypt/venv.9b7lw/local/lib/python2.7/site-packages/letsencrypt/plugins/disco.py",
line 31, in init
self.plugin_cls = entry_point.load()
File "/usr/local/psa/var/modules/letsencrypt/venv.9b7lw/local/lib/python2.7/site-packages/pkg_resources/init.py",
line 2201, in load
self.require(args, *kwargs)
File "/usr/local/psa/var/modules/letsencrypt/venv.9b7lw/local/lib/python2.7/site-packages/pkg_resources/init.py",
line 2218, in require items = working_set.resolve(reqs, env, installer)
File "/usr/local/psa/var/modules/letsencrypt/venv.9b7lw/local/lib/python2.7/site-packages/pkg_resources/init.py", line 835, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
ContextualVersionConflict: (cryptography 1.1
(/opt/psa/var/modules/letsencrypt/venv.9b7lw/lib/python2.7/site-packages),
Requirement.parse('cryptography>=1.3'), set(['PyOpenSSL']))

So I did this :
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
and this:
cd /usr/local/psa/var/modules/letsencrypt/venv/bin./pip install --upgrade cryptography
And now I'have the problem about the acme challenge on an ubuntu 14.04 / plesk 12.5 :

authorization procedure. mydomain.fr (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://mydomain.fr/.well-known/acme-challenge/6jry12LYTyHk-69Iks4HC1HHm-SPKZHE3DepDGfoH-E [my.ip]: 404, www.mydomain.fr (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.mydomain.fr/.well-known/acme-challenge/fg1wVWE8ZAvej3U9MA5yclMkKb002w7vqrrHZcGVe2E [my.ip]: 404

I'v put an empty .htaccess file in the mydomain directory
I've try to service apache2 reload

But nothing work !

Now the mydomain.fr point to
/var/vhosts/default/htdocs
instead of
/var/www/vhosts/mydomain.fr/mydomain
And of course I can't renew the certificat.
Thanks to help

I've just try to uninstall / reinstall extension "Letsencrypt" and I still get the same error.

Have the same problem: https://github.com/plesk/letsencrypt-plesk/issues/90
No solution yet. Any ideas on how to update the certificates manually via terminal.

Hi @Crabtronic

Now the mydomain.fr point to
/var/vhosts/default/htdocs
instead of
/var/www/vhosts/mydomain.fr/mydomain

That means the problem is caused by the web server misconfiguration and could not be repaired with letsencrypt.
Usually helps execution: plesk sbin httpdmng --reconfigure-all

Thanks Xgin.
So I did what you suggest plesk sbin httpdmng --reconfigure-all and nothing change.
I still get the wrong redirect for the domain.
I still get the error to renew the certificat with letsencrypt

@Crabtronic your domain name seems to be resolved in the IP address different than Apache listens.
dig A ideeshaker.fr +short
<IP_ADDRESS>

curl -H "Host:ideeshaker.fr" http://<IP_ADDRESS>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<title>301 Moved Permanently</title>

Moved Permanently

The document has moved here.

<address>Apache Server at ideeshaker.fr Port 80</address>

Please, make sure you have chosen the same IP address in DNS and Plesk.

Argh
I didn't see it.  It was the bad ip. I've three.
You're awesome. If one day you want to see Monaco, Nice, Villeneuve Loubet I'll be please to receive you and/or to make you the guide.
THANKS A LOT !!!!

Glad to see the problem solved!


Image not get fit inside herocard,Thumbnail card.

Hello Folks,
I want to set image in hero/thumbnail card within cards boundaries. The image get set to card but not getting fit inside card. how can i achieve it. Please guide me.

Which channel are you using?

I have faced similar issue with using Skype channel. The image kept getting scaled down and then cropped on the upper and lower edges. The image dimension was 512x512.

I tried with facebook and skype and getting the same issue.

Hi @chetanmekha and @abhishan, the behavior depends on the channel.
For Facebook, the image will be displayed uncropped if the aspect ratio is 1.91:1. You can see documentation here: https://developers.facebook.com/docs/messenger-platform/send-api-reference/generic-template
For Skype, I don't have the aspect ratio handy, but I've asked the Skype team to help clarify.

Hello Team,
Thanks for the feedback. I am little bit excited regarding Image scaling functionality, up to when we can expect this to get's delivered to us?

The aspect ratio for Skype is 16:9 (see https://docs.botframework.com/en-us/skype/getting-started/#cards-and-buttons). The image is scaled (while maintaining the aspect ratio) up or down in size until it minimally covers the image space, and then cropped horizontally and vertically from the center.

Is it possible to limit no of images to show in screen with any parameter?
Also image size in not able to get reduced?
Please help me

Please add a feature in hero card and thumbnail card to fix the size of the image. @dandriscoll

@singhsurya You are commenting on a closed issue. If you have a new feature request, please open a new issue.
However, as stated by Dan earlier in this thread: the channel is responsible for image size rendering.  So, a feature request to allow specifying image size would most likely need to be filed with the channel's forum.


timeout on GNU/Linux is in milliseconds, not seconds

version 5.4.3
Specifying timeout: 5 on my machine causes the notification to "instantly" disappear.  Using a timeout of 5000 has the desired effect of a 5 second timeout.
Also, using wait: true without timeout seems to have no effect.
cat /etc/debian_version
bullseye/sid

cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux bullseye/sid"
NAME="Debian GNU/Linux"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

uname -a
Linux desmas-l.desmas 5.2.0-2-amd64 #1 SMP Debian 5.2.9-1 (2019-08-18) x86_64 GNU/Linux

notify-send --version
notify-send 0.7.8

dunst --version
Dunst - A customizable and lightweight notification-daemon 1.4.1 (2019-07-03)

aptitude show libnotify-dev dunst
Package: libnotify-dev
Version: 0.7.8-1
State: not installed
Multi-Arch: same
Priority: optional
Section: libdevel
Maintainer: Debian GNOME Maintainers<EMAIL_ADDRESS>Architecture: amd64
Uncompressed Size: 79.9 k
Depends: libnotify4 (= 0.7.8-1), gir1.2-notify-0.7 (= 0.7.8-1), libglib2.0-dev (>= 2.26), libgdk-pixbuf2.0-dev
Breaks: libnotify-dev:i386 (!= 0.7.8-1)
Replaces: libnotify-dev:i386 (< 0.7.8-1)
Description: sends desktop notifications to a notification daemon (Development files)
 A library that sends desktop notifications to a notification daemon, as defined in the Desktop Notifications spec. These notifications can be used to inform the user about an event or display some form of information without getting in the user's way.

 This package contains the include files and static library.
Tags: devel::library, role::devel-lib

Package: dunst
Version: 1.4.1-1
State: installed
Automatically installed: yes
Priority: optional
Section: x11
Maintainer: Nikos Tsipinakis<EMAIL_ADDRESS>Architecture: amd64
Uncompressed Size: 176 k
Depends: libc6 (>= 2.17), libcairo2 (>= 1.10.0), libgdk-pixbuf2.0-0 (>= 2.31.1), libglib2.0-0 (>= 2.35.8), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.22.0), libx11-6, libxext6, libxinerama1, libxrandr2 (>= 2:1.5.0), libxss1, init-system-helpers (>= 1.52),
         default-dbus-session-bus | dbus-session-bus
Recommends: sensible-utils
Conflicts: dunst:i386
Provides: notification-daemon
Description: dmenu-ish notification-daemon
 Dunst is a highly configurable and lightweight notification-daemon: The only thing it displays is a colored box with unformatted text. The whole notification specification (non-optional parts and the "body" capability) is supported as long as it fits into this look &
 feel.

 Dunst is designed to fit nicely into minimalistic windowmanagers like dwm, but it should work on any Linux desktop.
Homepage: https://dunst-project.org/
Tags: uitoolkit::gtk

Hi @nmschulte! Thanks for raising the issue. What resolution would you want for this? Also, are you using node-notifier in the generic cross-platform way or are you using the platform specific option?
We've currently got a note in the readme about the lack of wait support in notify-send (which I guess we could add if that's desired... wait is just a predefined timeout).
I hesitate to have timeout automatically convert to seconds (aka multiply the passed in value by 1000) since that'd be a breaking change, but I'd be open to adding a timeout-seconds flag that you can use for notify-send that will convert for you?

Using node-notifier in the generic cross-platform way; notifier.notify({ timeout: 5 }).
I imagined a breaking change to make Linux/notify-send timeout option work generically; multiply the value by 1000 before passing along to notify-send/...  I've already worked around the issue for myself.
An alternative option would work well too, of course.  timeout-seconds, or perhaps timeout-milliseconds if the timeouts are meant to support fractional values.

Ah, what did you do in your project to work around it?
I'm currently leaning towards timeout-seconds but I'll have to chat with @mikaelbr to see what he thinks of breaking change to make it more cross-platform or splitting the platforms a little more with different options 🤷♂

I simply stopped relying on the feature.  Admittedly not the ideal solution.
Also, you could "bundle" the "quirks" under an option: enable-quirks, enable-fixes, etc.


[WFCORE-656] Category and logger updates

Various updates to logger categories and use static loggers where necessary.

Core - Full Integration Build 874 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Linux Build 1627 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Windows Build 1267 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Windows Build 1267 outcome was SUCCESS using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests passed: 3108, ignored: 66 Build time: 0:20:22

Linux Build 1627 outcome was FAILURE using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests failed: 5 (5 new), passed: 3092, ignored: 66 Build time: 0:21:52
Build problems:
Failed tests detected
Process exited with code 1
Failed tests
org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTPSWithSecureInterface: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: org.jboss.as.test.integration.domain.SSLMasterSlaveOneWayTestCase.testReadSlaveStatusFromMaster: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: org.jboss.as.test.integration.domain.DomainControllerMigrationTestCase: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: <no details avaliable>

Linux Build 1628 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

retest this please

Looks good; feel free to merge assuming tests are ok.

Core - Full Integration Build 874 outcome was SUCCESS using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests passed: 2858, ignored: 414, muted: 1 Build time: 0:50:09

Linux Build 1628 outcome was FAILURE using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests failed: 8 (3 new), passed: 3089, ignored: 66 Build time: 0:21:06
Build problems:
Failed tests detected
Process exited with code 1
Failed tests
org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTPS: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTP: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTPWithSecureInterface: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTPSWithSecureInterface: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: org.jboss.as.test.integration.domain.SSLMasterSlaveOneWayTestCase.testReadSlaveStatusFromMaster: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: org.jboss.as.test.integration.domain.DomainControllerMigrationTestCase: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: <no details avaliable>

Core - Full Integration Build 876 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Windows Build 1269 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Linux Build 1630 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Windows Build 1269 outcome was FAILURE using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests failed: 8 (8 new), passed: 3100, ignored: 66 Build time: 0:22:00
Build problems:
Failed tests detected
Failed tests
org.jboss.as.test.manualmode.deployment.DeploymentScannerUnitTestCase.testStartup: <no details avaliable>

org.jboss.as.test.manualmode.management.cli.CustomVaultInCLITestCase.testWrongVaultPassword: <no details avaliable>

org.jboss.as.test.manualmode.management.cli.CustomVaultInCLITestCase.testNonExistingVaultPassword: <no details avaliable>

org.jboss.as.test.manualmode.management.cli.CustomVaultInCLITestCase.testRightVaultPassword: <no details avaliable>

org.jboss.as.test.manualmode.vault.CustomVaultInModuleTestCase: <no details avaliable>

org.jboss.as.test.manualmode.vault.VaultPasswordsInCLITestCase.testWrongVaultPassword: <no details avaliable>

org.jboss.as.test.manualmode.vault.VaultPasswordsInCLITestCase.testRightVaultPassword: <no details avaliable>

org.wildfly.core.test.standalone.mgmt.HTTPSConnectionWithCLITestCase.testTrustedCLICertificate: <no details avaliable>

Linux Build 1630 outcome was FAILURE using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests failed: 6, passed: 3091, ignored: 66 Build time: 0:22:00
Build problems:
Failed tests detected
Process exited with code 1
Failed tests
org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTPWithSecureInterface: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase.testHTTPSWithSecureInterface: <no details avaliable>

org.jboss.as.test.integration.domain.HTTPSManagementInterfaceTestCase: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: org.jboss.as.test.integration.domain.SSLMasterSlaveOneWayTestCase.testReadSlaveStatusFromMaster: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: org.jboss.as.test.integration.domain.DomainControllerMigrationTestCase: <no details avaliable>

org.jboss.as.test.integration.domain.AdminOnlyModeTestCase: <no details avaliable>

Core - Full Integration Build 876 outcome was SUCCESS using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests passed: 2857, ignored: 414, muted: 2 Build time: 0:49:26

retest this please

Core - Full Integration Build 877 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Windows Build 1270 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Linux Build 1631 is now running using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7

Windows Build 1270 outcome was SUCCESS using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests passed: 3108, ignored: 66 Build time: 0:20:29

Linux Build 1631 outcome was SUCCESS using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests passed: 3108, ignored: 66 Build time: 0:22:45

Core - Full Integration Build 877 outcome was FAILURE using a merge of a5cf90306f455739cde01d277174dc9a37bce0f7
Summary: Tests failed: 1 (1 new), passed: 2856, ignored: 414, muted: 2 Build time: 0:49:29
Build problems:
Failed tests detected
Failed tests
org.jboss.as.test.integration.ejb.remote.distinctname.JarDeploymentDistinctNameTestCase.testRemoteSLSBInvocation: <no details avaliable>


[rant] This module's name is misleading

This module should be providing pure copy and cut  functions and let the user decide how to use them in their code.

First of all, thank you for being so polite. I honestly couldn't care less about your opinion since you clearly didn't spend at least a minute reading the source code.
This an open source project and if you feel like it doesn't solve your problem, use another thing or create your own. Remember kid, you're not obligated to use this.


User login

Right now the same user will always be logged in because in /providers/AuthProvider.tsx I have a hardcoded private_key, we should obviously pass the user's private_key instead.
I think @GBKS and whoever has a strong opinion on the matter should think about the best way to approach the login flow from a user's perspective. After creating an account users will need a way to enter their private_key to sign in. We currently have the modal below which users can use to restore their account, but with the new backend it's no longer possible to retrieve private_key's from local storage, this means we cannot login users automatically after their access_token expires, and so the question is whether the modal below is the one we want to present to our users for logging in again, or whether we want a different way for users to enter their private_key to 'log in'.

This still looks good to me.

Closing this issue for now. We can revisit in later milestones.

Re-opening this issue. Kevin will provide more context.

With our new backend system the account creations process goes like this:

User navigates to savingsatoshi.com
User clicks on user button, the "Sign in" modal pops up:

3. The user has no account yet, so he/she clicks on "Dont have an account?", which opens the "Sign Up" modal:

User creates an account by:
a.  Choosing an avatar
b. Either generate a private key (like we did before) and copy + save it, or enter a private key themselves.
User presses "Create account" button, which sends the data that was input to the backend, which creates a record in the DB.
The user clicks on his/her avatar, which opens the "Account" modal:

This allows users to logout, and in the future perhaps manage account settings (change avatar, etc).

As you can see from the screenshots @GBKS, I've done my best to come up with some layouts that make sense, but they are very much designed by a programmer, so I need your help to make this look pretty.

If I understand this screen correctly, if someone enters in a personally generated privkey an account will get created. Even if that is the case, I don't think we should have copy that tells them that.
To make it simpler, we should just say something like: "Enter your private key to below to sign into your account and restore your progress".

Then if they don't, they can click the "Don't have an account" link.

I'm also wondering if we maybe want to replace the user button with two links for "Sign in" and "Create account" for unauthorized users, to help them get where they need to be faster.

Most platforms I use default to either signing in or creating an account. I think it makes sense to default to signing in for saving satoshi and then having them click another link to create an account because it's a game.

A learner creates an account after completing the first chapter. The first chapter is open to everyone and no progress is saved if a learner does not complete it.
From my understanding, the current flow prevents learners from accessing chapter 1 without logging in. That creates an unnecessary hurdle and complexity of key management for curious learners from experiencing the game.

Reopening this issue. It seems as forcing a log-in before attempting ch.1 is too much friction.


Add gas tanks throw damage

About the PR

Why / Balance

:trollface:
Technical details

Media

Peek 2023-09-11 17-51.webm
Breaking changes

ThrownEvent

ByRefEvent
user field is now nullable.

Changelog

:cl:

tweak: Gas tanks now deal damage when thrown. Be sure to hold them when opening valve... or not.

It seems a little strange to me that "damage target on thrown" is being singled out for gas tanks and not other entities, too. Why specifically gas tanks?

It seems a little strange to me that "damage target on thrown" is being singled out for gas tanks and not other entities, too. Why specifically gas tanks?

It seems a little strange to me that "damage target on thrown" is being singled out for gas tanks and not other entities, too. Why specifically gas tanks?

We could add this to some more dangerous items like crowbars or knives. With gas tanks I thought it would be funny because they can fly in random directions causing some havoc.

overall i think adding thrown damage to more things is good i would be in favor of adding it to a lot of other should-really-be-damaging entities. im especially ok w it on this because of the gas tank valve spinny

Blunt Damage should scale with item mass. Also sharp stuff should have more damage.


allow custom maps to set fasbtall panels

making FastballAddPanelSpawnsForLevel global to allow custom maps to set panel spawns :>

it's already global

oh i missed that somehow nvm


feat: S3 bucket-name validation

This adds regex validation for the S3 bucket name.
Moreover, it decouples the bucket name from the bean qualifier name, which is the value passed in the constructor. I found it a little confusing that we were overriding it via the setter.

It is unclear because we do, in my opinion, a dirty hack.
We pass the qualifier name in the constructor.
https://github.com/micronaut-projects/micronaut-object-storage/blob/master/object-storage-core/src/main/java/io/micronaut/objectstorage/AbstractObjectStorageConfiguration.java#L33
And then, we lose the qualifier name when we override the setter to use it for the bucket name.
I think this PR allows the user to retrieve the qualifier name and the bucket name easily. I don't see the drawback of having an extra field.  Moreover, it adds bucket name validation.

Closed via https://github.com/micronaut-projects/micronaut-object-storage/pull/94


GH-185: Dont Populate Ack for Non-Manual Ack Modes - 1.0.x BackPort

Fixes: https://github.com/spring-projects/spring-kafka/issues/185
If a listener is an AcknowledgingMessageListener, do not provide an ack if
the container is not configured for manual acks.

@artembilan - we need to release 1.1.1 and 1.0.4 when these are merged.


Implement use of response_url

According to: https://api.slack.com/surfaces/modals/using#modal_response_url, blocks can pass through response_url_enabled to get a response_url which enables best practice usage of ephemeral messages. This seems like a basic adding and passing of a parameter in:

[ ] Slack::BlockKit::Element::ConversationsSelect#initialize
[ ] Slack::BlockKit::Element::ConversationsSelect#as_json
[ ] Slack::BlockKit::Layout::Input#conversation_select

Happy to submit a PR.

Hey @synth -- this sounds great!
I haven't made much use of modals via Slack Apps. Is ConversationSelect the only element which can have a response_url_enabled parameter? Or can this be generalised to all input blocks?

It seems these new parameters make sense only for some block elements. In particular,

conversations_select is missing response_url_enabled and default_to_current_conversation
multi_conversations_select is missing default_to_current_conversation
channels_select is missing response_url_enabled

Thanks @CGA1123 !


Feedback on graph validator in ingest

Prepare a research plan to evaluate the impact of the graph validator, and how it works for wranglers.
Aim to trace the next 5 data projects ingested, and test with at least one project with over 800 entities.
2 of US wranglers
2 of ours
present insights for improvements

@gabsie got feedback session from 2 wranglers
Targetting the UCSC wranglers next for feedback

@gabsie thinks for now we can close this one - and we are addressing the errors issue. we can open a new ticket afterwards for later feedback.


feat(hooks): filter by multiple states with inverse

closes #147

Nice addition! Could you also add this for the other useXByState functions?

Yes good shout. was thinking that. should I do that in this PR or open another one?

Nice addition! Could you also add this for the other useXByState functions?

Yes good shout. was thinking that. should I do that in this PR or open another one?

This PR would be fine.

LGTM! Just as a minor note: stuff like invertSearch really needs external documentation. Maybe have to bring it up again during the WG call.

That's an excellent shout! - and agreed. I'll bring it up Thursday. On the plus side this only extends and doesn't change the previous behaviour.

LGTM! Just as a minor note: stuff like invertSearch really needs external documentation. Maybe have to bring it up again during the WG call.

Agree! This addition is pretty useful. And it's true that the invertSearch might not be pretty intuitive at a first sight, but if you are looking for "records not in state" you'll certainly understand its purpose.
However, using a separate method for extenal interface could be clearer as well, although I don't know how to name it in a fancy way. useXNotInState ? useXInStateDifferentFrom ?

LGTM! Just as a minor note: stuff like invertSearch really needs external documentation. Maybe have to bring it up again during the WG call.

Agree! This addition is pretty useful. And it's true that the invertSearch might not be pretty intuitive at a first sight, but if you are looking for "records not in state" you'll certainly understand its purpose.
Defining a separate method for this purpose in the external interface could be clearer as well, although I don't know how to name it in a fancy way. useXNotInState ? useXInStateDifferentFrom ?

I am okay with keeping the API like this, but it was more just a general point that I would really like to "enforce" proper TSDoc on public functions. It can help so much and we as maintainers just have to pay a bit more attention that they are kept up-to-date.

LGTM! Just as a minor note: stuff like invertSearch really needs external documentation. Maybe have to bring it up again during the WG call.

Agree! This addition is pretty useful. And it's true that the invertSearch might not be pretty intuitive at a first sight, but if you are looking for "records not in state" you'll certainly understand its purpose.
Defining a separate method for this purpose in the external interface could be clearer as well, although I don't know how to name it in a fancy way. useXNotInState ? useXInStateDifferentFrom ?

I am okay with keeping the API like this, but it was more just a general point that I would really like to "enforce" proper TSDoc on public functions. It can help so much and we as maintainers just have to pay a bit more attention that they are kept up-to-date.

for sure. agreed

I quite like the useXNotInState suggestion, as it removes the need for a invert boolean. One of the lessons I've learned from the clean code book is that switch booleans can almost always be prevented by using two methods that do the inverse.
Especially since we don't use an object to pass the param, the boolean is quite opaque in it's working. If you see code like this, my first guess (without looking at docs, etc..) would still be that all credentials with state done would be returned:
useCredentialsByState([CredentialState.Done], true)

While with a different method it would be clear that that's not the case:
useCredentialsNotInState([CredentialState.Done])

I quite like the useXNotInState suggestion, as it removes the need for a invert boolean. One of the lessons I've learned from the clean code book is that switch booleans can almost always be prevented by using two methods that do the inverse.
Especially since we don't use an object to pass the param, the boolean is quite opaque in it's working. If you see code like this, my first guess (without looking at docs, etc..) would still be that all credentials with state done would be returned:
useCredentialsByState([CredentialState.Done], true)

While with a different method it would be clear that that's not the case:
useCredentialsNotInState([CredentialState.Done])

@TimoGlastra nice idea. I'll have a go at that. thanks


Fix a typo in VideoEncoder_TEST.

The same typo is also in ign-common4 and main branches.

Looks like mpg rather than mp4 passes in the CI, is this the right behavior though?

Looks like mpg rather than mp4 passes in the CI, is this the right behavior though?

I see why you made this change, but it causes the test to fail. I don't understand the code well enough to say why

I see why you made this change, but it causes the test to fail. I don't understand the code well enough to say why

I agree that the change is correct, but the failure is very strange.

The issue here was that the test was calling Start twice without a Stop or Reset in between the two Start calls.  I have added some more comprehensive tests to test default, mpg, and mp4 encoding, as well as testing the multiple Start case.


Make tests

I have no idea how to test the App itself, I can start making test for the filter to make sure they work but other than that i dont know

Also integrate workflows

If you started developing everithing without unit or integration tests could be frustrating to start now with those "low level" tests, that doesn't ensure that your app does what is suppose to do. So one thing that you could try is to make some E2E tests as regretion tests, I mean, to make sure that what works is still working after any change.  Taking the core features and start by making some happy path tests of them.
The only anoying thing with this particular kind of App is how to mock the external APIs without touching too much code (or any code ideally). In that case I think trying mockito could help to mock the API responses or a less intrusive  option could be an external mock service as hoverfly that is not too hard to configure.

Thanks for the suggestions, One thing I'm struggling with right now is making tests, specially those that require something "external" like functions that make API calls and testing a function that make directories, how can I write tests for those? I'll be investigating more about this

closed in #29


docs: quickstart and helm vmss-prototype docs

This PR adds more concrete documentation to help folks experiment with actually using vmss-prototype.

cc @Michael-Sinz @devigned @craiglpeters @mboersma @CecileRobertMichon


What is the lifetime of a CosmosDB emulator instance started via Start-CosmosDBEmulator cmdlet during ci

Inside one of our Azure Devops build definitions, we have the following steps:

dotnet restore solution file
visual studio build solution file (includes unit test projects)
start cosmos db emulator with a specific datapath location using the Start-CosmosDBEmulator powershell cmdlet that came with Azure CosmosDB emulator without rate limiting and a default partition count of 100
transform app.config file(s) of unit test dlls
In this step, we are appending Agent.Id to the databasename that will be used when connecting to CosmosDB emulator to ensure that multiple builds on the same build server will not affect each other. For example, if databasename in app.config is equal to test_assemblies then it will become test_assemblies12. The test fixture takes care of creating the database at startup and destroying it upon teardown.
execute visual studio test against unit test projects

We use on-premise bare metal build servers and have installed Azure CosmosDB emulator on it.
There are 12-16 instances of Azure Devops build agent running per server and this is by design to minimize the number of software installations we have to maintain.
#Expected behavior
Once an instance of Azure CosmosDB emulator is running, we expect it stay up across multiple builds jobs on the same build server.
Thus, if build 12345 job is queued first and starts the emulator, another build 12346 that is queued should be able to find it in a running state instead of in a stopped state.
Likewise, I expected the build which started the emulator instance to finish with the emulator still running and available for subsequent builds.
##Actual behavior
From time to time, the unit test dlls will fail connecting to the local cosmosdb emulator. Sometimes, it will fail near the end of the tests by exhibiting slow operations. The build definition is not checking the emulator status in step 3. Instead, it is just calling Start-CosmosDBEmulator.
Is there another way to run cosmosdb in a persistent way similar to a windows service? There is an Azure Devops task for running CosmosDB emulator as a container and we may try that but the question remains the same. Can we keep the container running consistently and have it be accessible by multiple builds/unit tests concurrently? I prefer not to use that task because I'd need to bind a host folder and install certificates each time the container starts.

Closing this issue as it is a duplicate of #33048


Apple Silicon Release

Is your feature request related to a problem? Please describe.

App Store release supports Intel architecture only. It seems working fine with Rosetta 2, but we know universal binary is better.

Describe the solution you'd like
Release universal binary.
Additional context
Vimari Apple Silicon Build on M1 Mac works fine with no code change.

Does anyone know how to build it with Xcode without an Apple developer account?

Does anyone know how to build it with Xcode without an Apple developer account?


Tests/feature

E2E Test
Steps:

Go to the homepage and check that nothing is instantiated
Open the SPARC Dataset list and check if the dataset count matches
Load a SPARC dataset, checking its folders
Load another SPARC Dataset, to assess the multiple loaded dataset feature
Load a dataset through its ID
Load a dataset through its URL - skipped due to https://github.com/MetaCell/sds-viewer/issues/154
Load a dataset from the Local System - skipped due to https://github.com/MetaCell/sds-viewer/issues/153

Screen recording:
https://user-images.githubusercontent.com/99416933/221551102-edcaac1e-ec67-4a44-b5bc-c4461bfaf709.mov

@SimaoBolota-MetaCell Loving the automated tests! 🙂👍 Thanks for the video


S3 store resource failed when upgrading to v1.2.x

Describe the bug
After upgraded to v1.2.0, in my example project the S3 features tests failed.
Expected behavior
I can not find a change of S3 in the v1.2.0 in the change log.
Current behavior
Throw exception like this.
exception while calling s3 with unknown operation:
Unable to find operation for request to service s3:
PUT /, Request ID: aad88e9e-fb98-4511-ad89-dad5818b0068,
Extended request ID: s9lzHYrFp76ZVxRcpX9+5cjAnEH2ROuNkd2BHfIa6UkFVdtjf5mKR3/eTPFvsiP/XV/VLi31234=

The Github build result: https://github.com/hantsy/aws-sdk-kotlin-spring-example/actions/runs/8866024453/job/24342942185
Steps to Reproduce

Check out my example project, https://github.com/hantsy/aws-sdk-kotlin-spring-example
Run test: https://github.com/hantsy/aws-sdk-kotlin-spring-example/blob/master/src/test/kotlin/com/example/demo/StorageServiceTest.kt

Possible Solution
No response
Context
No response
AWS Kotlin SDK version used
1.9.23
Platform (JVM/JS/Native)
Java 21/JVM
Operating System and version
Windows 10 Pro

Oh, it is my fault about the forcePathStyle value setting after a refactoring.


Updating trigger handler to unset system fields if the record type is…

… not household or 1:1, and if the record is not the bucket account.
Critical Changes
Changes
Issues Closed

Fixes #1887
Fixes #2030

Not quite ready for review, this change causes a bunch of tests to fail for some reason.

@njjc the code and tests look fine, but the error strings on several of the asserts seems incorrect, and thus confusing as to what the intent is.  thanks.


Add a parameter inference example to the docs

Codecov Report

Merging #233 (7e81607) into main (f9ecff5) will decrease coverage by 0.10%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main     #233      +/-   ##
==========================================
- Coverage   95.63%   95.53%   -0.10%
==========================================
  Files          33       33
  Lines        1191     1188       -3
==========================================
- Hits         1139     1135       -4
- Misses         52       53       +1

see 4 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


ocamlPackages.owl: init at 0.7.1

Motivation for this change
Add a package and its dependencies (eigen, owl-base).
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[x] macOS
[x] other Linux distributions

[NA] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[NA] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[NA] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @

@GrahamcOfBorg build ocamlPackages.owl

Maybe you could tweak the EIGEN_FLAGS environment variable on Aarch64 (see: https://github.com/owlbarn/eigen/blob/068a74666322f575e32795ee9290b92a30e4a123/eigen/dune#L4-L6). Currently build fails with:

gcc: error: unrecognized command line option '-mfpmath=sse'

@vbgl -- flags adjusted on Aarch64.

Owl itself has the same issue with SSE-related flags, so it might make more sense to set platforms to x86_64 rather than make all these changes manually.

That’s up to you, as maintainer of these packages: do you want to figure out the right installation parameters for these architectures that you don’t use, or just claim that the package is only available for the architecture that you use.
Minor notes:

eigen-0.1.5 is out
You don’t have to “substituteInPlace” to change the compilation flags: simply setting the “EIGEN_FLAGS” and “OPTFLAGS0” environment variables should be enough.

Since I have no way to test on these architectures, I've just set platforms to x64 for now, which together with the Eigen version bump simplifies the derivation considerably.

You’ve made a good choice.
Final nitpick: eigen won’t build with OCaml < 4.04 Can you please add a “minimumOCamlVersion” to that derivation? Thanks.

@vbgl - done!

Thanks!


Enable Travis CI build for running unit tests on Linux environment

[ ] Enable repo in Travis CI
[ ] Update readme with the Travis CI build status badge

Note: Travis CI config is already in master via merged PR #767

@jeremydmiller This should be a quick one to do since it is just enabling the project in Travis CI which allow us to run unit tests on a Linux env. Config is already in master and it will start working right of the bat.

So, um, what do I need to do?

Sign in to travis-ci.org site using "Sign in with GitHub"
Goto your profile page(click on your name link on top right) within the site. This will start syncing the projects list from Github
Enable jasperfx/marten

Since we already have the Travis CI config .travis.yml in our root folder. CI build will start working automatically.
Let me know once you do that, I will send a PR to add a build badge for Travis CI in the readme file.


disable bf16 for attention_mask

What does this PR do?
as title, will remove mul from here
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

@regisss
the following test seems not work correctly, any ideas?


change number_of_decimal_places to upper_bound?

ask for PM's advice.

We determined that we replace number_of_decimal_places with atol (and rtol if relevant).
This is implemented with issue https://github.com/QuantestPy/quantestpy/issues/108


ray serve get stuck when loading two or more applications

This is my .yaml configuration file:
# Serve config file
#
# For documentation see:
# https://docs.ray.io/en/latest/serve/production-guide/config.html

host: <IP_ADDRESS>
port: 8000

applications:
- name: demo_app
  route_prefix: /a
  import_path: ray_vllm_inference.vllm_serve:deployment

  runtime_env:
    env_vars:
      HUGGING_FACE_HUB_TOKEN: hf_1234
    pip:
    - ray_vllm_inference @ git+https://github.com//asprenger/ray_vllm_inference
  args:
    model: facebook/opt-13b
    tensor_parallel_size: 4
  deployments:
  - name: VLLMInference
    num_replicas: 1
    # Maximum backlog for a single replica
    max_concurrent_queries: 10
    ray_actor_options:
      num_gpus: 4

- name: demo_app2
  route_prefix: /b
  import_path: ray_vllm_inference.vllm_serve:deployment

  runtime_env:
    env_vars:
      HUGGING_FACE_HUB_TOKEN: hf_1234
    pip:
    - ray_vllm_inference @ git+https://github.com//asprenger/ray_vllm_inference
  args:
    model: facebook/opt-13b
    tensor_parallel_size: 4
  deployments:
  - name: VLLMInference
    num_replicas: 1
    # Maximum backlog for a single replica
    max_concurrent_queries: 10
    ray_actor_options:
      num_gpus: 4

I attempt to execute it using the command serve run config2.yaml. However, the deployment process stuck and  never complete. Here are the logs:
[logs]
2024-01-11 12:58:28,970 INFO scripts.py:442 -- Running config file: 'config2.yaml'.
2024-01-11 12:58:30,870 INFO worker.py:1664 -- Started a local Ray instance. View the dashboard at <IP_ADDRESS>:8265
2024-01-11 12:58:33,757 SUCC scripts.py:543 -- Submitted deploy config successfully.
(ServeController pid=1450442) INFO 2024-01-11 12:58:33,752 controller 1450442 application_state.py:386 - Building application 'demo_app'.
(ServeController pid=1450442) INFO 2024-01-11 12:58:33,756 controller 1450442 application_state.py:386 - Building application 'demo_app2'.
(ProxyActor pid=1450530) INFO 2024-01-11 12:58:33,727 proxy <IP_ADDRESS> proxy.py:1072 - Proxy actor 4b0df404e3c5af4bd834d1ab01000000 starting on node b411128da157f5f64092128c212c0000973bfecd12b3e94b3d648495.
(ProxyActor pid=1450530) INFO 2024-01-11 12:58:33,732 proxy <IP_ADDRESS> proxy.py:1257 - Starting HTTP server on node: b411128da157f5f64092128c212c0000973bfecd12b3e94b3d648495 listening on port 8000
(ProxyActor pid=1450530) INFO:     Started server process [1450530]
(ServeController pid=1450442) INFO 2024-01-11 12:58:42,180 controller 1450442 application_state.py:477 - Built application 'demo_app' successfully.
(ServeController pid=1450442) INFO 2024-01-11 12:58:42,182 controller 1450442 deployment_state.py:1379 - Deploying new version of deployment VLLMInference in application 'demo_app'.
(ServeController pid=1450442) INFO 2024-01-11 12:58:42,284 controller 1450442 deployment_state.py:1668 - Adding 1 replica to deployment VLLMInference in application 'demo_app'.
(ServeController pid=1450442) INFO 2024-01-11 12:58:42,302 controller 1450442 application_state.py:477 - Built application 'demo_app2' successfully.
(ServeController pid=1450442) INFO 2024-01-11 12:58:42,304 controller 1450442 deployment_state.py:1379 - Deploying new version of deployment VLLMInference in application 'demo_app2'.
(ServeController pid=1450442) INFO 2024-01-11 12:58:42,406 controller 1450442 deployment_state.py:1668 - Adding 1 replica to deployment VLLMInference in application 'demo_app2'.
(ServeReplica:demo_app:VLLMInference pid=1468450) INFO 2024-01-11 12:58:45,015 VLLMInference demo_app#VLLMInference#WArOfC vllm_serve.py:76 - AsyncEngineArgs(model='facebook/opt-13b', tokenizer='facebook/opt-13b', tokenizer_mode='auto', trust_remote_code=False, download_dir=None, load_format='auto', dtype='auto', seed=0, max_model_len=None, worker_use_ray=False, pipeline_parallel_size=1, tensor_parallel_size=4, max_parallel_loading_workers=None, block_size=16, swap_space=4, gpu_memory_utilization=0.9, max_num_batched_tokens=None, max_num_seqs=256, max_paddings=256, disable_log_stats=False, revision=None, tokenizer_revision=None, quantization=None, engine_use_ray=False, disable_log_requests=False, max_log_len=None)
(ServeReplica:demo_app2:VLLMInference pid=1468458) INFO 2024-01-11 12:58:45,021 VLLMInference demo_app2#VLLMInference#xOjgzS vllm_serve.py:76 - AsyncEngineArgs(model='facebook/opt-13b', tokenizer='facebook/opt-13b', tokenizer_mode='auto', trust_remote_code=False, download_dir=None, load_format='auto', dtype='auto', seed=0, max_model_len=None, worker_use_ray=False, pipeline_parallel_size=1, tensor_parallel_size=4, max_parallel_loading_workers=None, block_size=16, swap_space=4, gpu_memory_utilization=0.9, max_num_batched_tokens=None, max_num_seqs=256, max_paddings=256, disable_log_stats=False, revision=None, tokenizer_revision=None, quantization=None, engine_use_ray=False, disable_log_requests=False, max_log_len=None)
(ServeReplica:demo_app:VLLMInference pid=1468450) SIGTERM handler is not set because current thread is not the main thread.
(ServeReplica:demo_app:VLLMInference pid=1468450) Calling ray.init() again after it has already been called.
(ServeController pid=1450442) WARNING 2024-01-11 12:59:12,292 controller 1450442 deployment_state.py:1996 - Deployment 'VLLMInference' in application 'demo_app' has 1 replicas that have taken more than 30s to initialize. This may be caused by a slow __init__ or reconfigure method.
(ServeReplica:demo_app2:VLLMInference pid=1468458) SIGTERM handler is not set because current thread is not the main thread.
(ServeReplica:demo_app2:VLLMInference pid=1468458) Calling ray.init() again after it has already been called.
(ServeController pid=1450442) WARNING 2024-01-11 12:59:12,494 controller 1450442 deployment_state.py:1996 - Deployment 'VLLMInference' in application 'demo_app2' has 1 replicas that have taken more than 30s to initialize. This may be caused by a slow __init__ or reconfigure method.
(ServeController pid=1450442) WARNING 2024-01-11 12:59:42,363 controller 1450442 deployment_state.py:1996 - Deployment 'VLLMInference' in application 'demo_app' has 1 replicas that have taken more than 30s to initialize. This may be caused by a slow __init__ or reconfigure method.
(ServeController pid=1450442) WARNING 2024-01-11 12:59:42,566 controller 1450442 deployment_state.py:1996 - Deployment 'VLLMInference' in application 'demo_app2' has 1 replicas that have taken more than 30s to initialize. This may be caused by a slow __init__ or reconfigure method.
(ServeController pid=1450442) WARNING 2024-01-11 13:00:12,441 controller 1450442 deployment_state.py:1996 - Deployment 'VLLMInference' in application 'demo_app' has 1 replicas that have taken more than 30s to initialize. This may be caused by a slow __init__ or reconfigure method.
(ServeController pid=1450442) WARNING 2024-01-11 13:00:12,645 controller 1450442 deployment_state.py:1996 - Deployment 'VLLMInference' in application 'demo_app2' has 1 replicas that have taken more than 30s to initialize. This may be caused by a slow __init__ or reconfigure method.

Interestingly, when I disable the demo_app2 application within the configuration by commenting it out, the deployment proceeds without any issues.. I have 8 GPUs on my server, so, it should be enough for configuration provided above.
I've also attempted to create my own deployment in Python, bypassing the use of the ray_vllm_inference library, but I encountered the same problems. I noticed that the vLLM application seems to be utilizing the incorrect GPUs. When I logged the CUDA_VISIBLE_DEVICES variable in the initialization function, it displayed 0,1,2,3. However, according to nvidia-smi, vLLM is actually using GPUs 4,5,6,7.
In an attempt to troubleshoot, I created a custom deployment using the SDXL model (also two). This worked perfectly, with the model using the exact GPUs as specified in the CUDA_VISIBLE_DEVICES variable.

I've found the problem, and posted it here


Add details around SmartBFT for fabric and the fact that the legacy 1.4 and 2.2 Fabric SDKs are unlikely to work

Fabric will not update any of the legacy SDKs to work correctly with a BFT orderer. Only the peer gateway api will work correctly.
We should document this so it is clear

Done


Component initialization with Iron Router, Jquery, Materialize

Struggling here with what would otherwise be a simple $( document ).ready(). Not sure what I'm doing wrong, or if there's an edge case.
Materialize needs jquery components to be initialized on DOM ready. Finding a way to initialize components on all views is surprisingly tricky.
see here: http://meteortabsissue.meteor.com
From reading the docs: this should initialize everything the sub-templates require:
Template.layout.rendered = function(){

  $('ul.tabs').tabs()

  }
}

However, this only works on a hard page refresh, and not with links routing the views.
So instead you would have to initialize on each template that element will be used
Template.x.rendered ...
Template.y.rendered ...
See the code here:
https://github.com/keyscores/meteortabsissue/

@cmather Is there an API I'm not seeing? Or is this an edge case?

Templates aren't re-rendered unless they need to be. Usually the layout
doesn't change so it's only rendered once.
On Wed, Apr 8, 2015 at 11:50 AM, keyscores<EMAIL_ADDRESS>wrote:

@cmather https://github.com/cmather Is there an API I'm not seeing? Or
is this an edge case?
—
Reply to this email directly or view it on GitHub
https://github.com/iron-meteor/iron-router/issues/1309#issuecomment-91002403
.

Thanks @cmather
I understand that layout runs once. My issue is how do I get a jquery component initialized on any/all views?
Doesn't it seem odd that we can't reproduce on DOM ready with meteor and iron router?

It's more an issue with how Meteor works than a routing issue. Meteor templates get compiled into javascript which then renders to the page. You can use the rendered callback like you have above to know whether the template is in the dom. In this case you probably want to use the rendered callback for the actual template where the jQuery will be applied vs. doing it in the layout.

Thanks for this. You suggest the rendered call back would have to be applied to each template correct? I did this in my example above. That means if I have N templates, I need N helpers. Thats doesn't seem right. Am I missing something?

@cmather Just to be clear, I need this component on N nested templates, possibly nested N times. How can I know when every template is loaded?


Add styling to the "Native Code Required" banners

Fixes #1839.
This PR adds styling to the "Native Code Required" banners across the all docs. The color has been selected from the few mockups which all were based on the colors from React Native schemes and images (example). The design was based on the currently widely used note/quote boxes.
Expo logo file has been taken from the Expo branding page.
Preview

I love it! It's good that we are finally styling these call outs! One thought: @brentvatne might have opinions on the colors—we had a violet option, but went with pink to draw more attention. Let me grab his eyes!

Bottom banner has a different content because it was the initial version based on the Expo color (the rest of mocks are based on the colors from the RN images/resources):

@brentvatne It would be nice to have official Expo logo also in SVG format.

This is great @Simek! I love that it links folks out to the relevant page from the Expo documentation to help eliminate any confusion.
I think the purple one (or as we say at Expo, blurple) is my favourite! The others (except the red) are good too.
SVGs are here: https://github.com/expo/logos. I believe logo type A is the one you're looking for: https://github.com/expo/logos/blob/master/svg/logo-type-a.svg

@brentvatne I favor the violet since we use it as a secondary color in other parts of the docs. I am curious why violet says "error" more than blurple? We can go with the pink if it's a blocker

@rachelnabors - gotcha! I wanted to ensure it wasn't used in other context along with an "🚨🚨🚨 Error!" type message and it seems like it's not so I defer to your judgement on what is most effective and aesthetic!


Add visually hidden page headers to summary templates

What is the context of this PR?
Adds hard coded visually hidden table headers to the ListCollector, Hub and Summary/SectionSummary templates in order to help screen readers navigate the columns.
List collector: Name of person, Action
List summary (within question): Name of person
Hub: Name of section or person, Section progress, Access section
Section/Final summary: Question, Answer given, Change answer
How to review
Check that the new hidden headers have been added and match the Trello Card.
Checklist

[ ] New static content marked up for translation
[ ] Newly defined schema content included in eq-translations repo

 Add Visually hidden Table headers for all tables (S)


How to get val loss in 3.x?

I have seen Validation Loss During Training #7971.
but there is no workflow in base/default_runtime.py.
my mmdetection version is 3.x

Sorry, the val loss calculation in version 3.x is not yet supported. We will support it in the next few releases.

Any updates on this??

Why doesn't mmdetection 3.x include validation loss? Has it been removed for a specific reason? This is a critical feature because, without validation loss, we cannot assess whether a model is overfitting or generalizing. Does mmdetection suggest any alternative methods for addressing this? I'm feeling concerned and confused because I couldn't find anything related to this issue in the documentation.

No, the Validation Loss is not supported yet. The only way to check the overfitting is by looking at mAP scores over trained and validation data.
There is a way to get validation loss, but it's more of a hack by creating hooks in the pipeline.

Anything more on the hacking with the hooks, you can point me to?

no update yet?

No, the Validation Loss is not supported yet. The only way to check the overfitting is by looking at mAP scores over trained and validation data.
There is a way to get validation loss, but it's more of a hack by creating hooks in the pipeline.

@abdksyed could you share how to log mAP on the training dataset while training?

@HOOKS.register_module()
class FindIoU(Hook):
    def __init__(self, name):
        os.makedirs("bestepochs", exist_ok=True)
        # Some Necessary Variables for me
        self.bestIoU = 0
        self.bestepoch = None
        self.name = name
        self.metric = BinaryJaccardIndex()

        # RGB format
        self.CLS2COLOR = {
            1: (228,0,120), # Red
            2: (42, 82, 190), # Blue
            3: (3, 192, 60) # Green
        }

        # define our custom x axis metric
        wandb.define_metric("coco/epoch")
        # define which metrics will be plotted against it
        # My OWN Custom Metrics, YOU CAN HAVE YOUR LOSS METRIC HERE
        wandb.define_metric(
          "coco/pGen1IoU", step_metric="coco/epoch", step_sync=False)
        wandb.define_metric(
          "coco/pGen2IoU", step_metric="coco/epoch", step_sync=False)
        wandb.define_metric(
          "coco/meanIoU", step_metric="coco/epoch", step_sync=False)

        self.artifact = wandb.Artifact(self.name, type='model')

    def after_val(self, runner, **kwargs):
        IoUs = []
        # TO LOAD THE MODEL FROM THE RECENT WEIGHT FILE
        checkpoint_file = runner.work_dir + f"/epoch_{runner.epoch}.pth"
        model = init_detector(runner.cfg, checkpoint_file, device='cuda:0')
        meanIoU = []
        val_file = runner.cfg.val_dataloader.dataset.ann_file
        test_file = runner.cfg.test_dataloader.dataset.ann_file
        for f_type, json_path in zip(['pGen1', 'pGen2'], [val_file, test_file]):

            # json_path = f"{data_type}.json"
            coco = COCO(json_path)
            img_dir = f"combined_data"
            cat_ids = coco.getCatIds()
            frames = {}
            for idx, img_data in coco.imgs.items():
                anns_ids = coco.getAnnIds(imgIds=img_data['id'], catIds=cat_ids, iscrowd=None)
                anns = coco.loadAnns(anns_ids)

                truth_mask = coco.annToMask(anns[0])
                for i in range(1,len(anns)):
                    truth_mask = np.maximum(truth_mask,coco.annToMask(anns[i])*1)

                img = f'combined_data/{img_data["file_name"]}'  # or img = mmcv.imread(img), which will only load it once
                # PERFORMING INFERENCE
                result = inference_detector(model, img)
                # outputs = predictor(im)

                pred_mask = np.zeros_like(truth_mask)
                for i in result.pred_instances.masks.type(torch.int8):
                    pred_mask = np.maximum(pred_mask, i.to('cpu').numpy().astype(np.uint8))

                # frame = label2rgb(pred_mask, cv2.imread(img), alpha=0.3, bg_label=0)*255

                target = torch.tensor(truth_mask)
                preds = torch.tensor(pred_mask)

                intersection_mask = np.logical_and(pred_mask == 1, truth_mask == 1)
                pred_mask[truth_mask == 1] = 2
                pred_mask[intersection_mask] = 3
                # Repeating Channels to make it three channels
                pred_mask = np.tile(pred_mask[..., np.newaxis], (1,1,3))

                # red -> Wrong Predicted, blue -> Ground Truth, green -> Correct Predicted
                frame = io.imread(img)
                for color_id in range(1,4):
                    mask = np.where(pred_mask == (color_id,)*3, self.CLS2COLOR[color_id], 0).astype('uint8')
                    frame = cv2.addWeighted(frame, 1.0, mask, 0.5, 0)

                frames[img_data["file_name"]] = frame

                IoUs.append(self.metric(preds, target).item())

            size1,size2,_ = frame.shape
            out = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), 1, (size2, size1), True)
            # Sorting the frames according to frame number eg: p3_frame_000530..PNG
            for _,i in sorted(frames.items(), key=lambda x: x[0]):
                out_img = cv2.cvtColor(i, cv2.COLOR_BGR2RGB)
                out.write(out_img)
            out.release()

            # Convert MPV4 codec to libx264 codec
            input_file = 'output.mp4'
            output_file = f_type+'.mp4'
            clip = VideoFileClip(input_file)
            clip.write_videofile(output_file, codec='libx264')

            # Collect all meanIoUs for all Generalization Patients
            meanIoU.append(sum(IoUs)/len(IoUs))
            print(f"IoU: {sum(IoUs)/len(IoUs)}")

            # axes are (time, channel, height, width)
            wandb.log({f"{self.name}_{f_type}_epoch_{runner.epoch}": wandb.Video(output_file)})

        for IoU, log in zip(meanIoU, ['pGen1', 'pGen2']):
            wandb.log({f'coco/{log}':IoU, 'coco/epoch':runner.epoch})

        meanIoU = sum(meanIoU)/len(meanIoU)
        if meanIoU > self.bestIoU:
            self.bestIoU = meanIoU
            self.bestepoch = checkpoint_file

        print(f"meanIoU: {meanIoU}")
        wandb.log({'coco/iou':meanIoU, 'coco/epoch':runner.epoch})

        print(f"Saving checkpoint of epoch {runner.epoch} to wandb")
        self.artifact.add_file(checkpoint_file, name=f'epoch_{runner.epoch}.pth')
        # wandb.log_artifact(self.artifact)
    def after_run(self,runner, **kwargs):
        shutil.copy(self.bestepoch, f"bestepochs/{self.name}.pth")
        print(f"Saving best checkpoint to wandb")
        self.artifact.add_file(self.bestepoch, name=f"best.pth")
        wandb.log_artifact(self.artifact)

This was a hook which I implemented for finding IoU values after each epoch. here after_val function is something which will run after validation has been performed. after_run will be called after the entire run. There are similar functions like before_val and so on, which are mentioned in the docs (https://mmdetection.readthedocs.io/en/latest/user_guides/useful_hooks.html#how-to-implement-a-custom-hook)
I was doing inference and getting the mask of the prediction to find the IoU with the ground truth mask, and also create videos of the frames and save them in weights and biases. You can change the logic of the code, but function names and all will be same for you

@abdksyed thanks for sharing this code. This appears to be a way to compute mask IoU loss over the validation set. You mentioned that there's a way to get the mAP on the train set as well:

No, the Validation Loss is not supported yet. The only way to check the overfitting is by looking at mAP scores over trained and validation data.
There is a way to get validation loss, but it's more of a hack by creating hooks in the pipeline.

Could you share that approach? Thanks!

@willcray
Yes, for train loss, you can use after_train_epoch and for val loss similar.

Does anyone have an example script that gets the validation loss using the hook approach?

Same question, can anyone share how to get the validation loss using the hook approach?

This would be a very useful feature and would appreciate an update on this @RangiLyu .

Any update on the feature?

有没有人有一个使用钩子方法获得验证损失的示例脚本？

this maybe useful
https://github.com/open-mmlab/mmdetection/issues/11331#issuecomment-2069851373

Does anyone have an example script that gets the validation loss using the hook approach?

this may be useful
https://github.com/open-mmlab/mmdetection/issues/11331#issuecomment-2069851373

The loss computation seems to be more on the mmengine side.
#open-mmlab/mmengine/issues/1486

@Ileal16 this is now included in v0.10.5 of MMengine.
However, as explained here, MMDetection will need to update the predict functions of its models to also return the loss.
You can workaround this by overriding creating a custom model (likely by overriding whichever MMDet model you're using) and appending the loss to the end of its "predict" mode in its forward function. This is illustrated in the MMEngine PR here.
Ideally MMDetection would add this to all of its default models, so this works out of the box.

Thank you all for your attention to this issue. Recently, I found that mmcls 0.25.0 involves validation loss. In short, it's about putting model.train() in model.eval(), and then calculating the loss as in forward_train.

Hey, guys. I did it.

hey, guys. I did it. Perhaps my implementation is quite simple and immature, but I hope it can serve as a reference for everyone. If you encounter any bugs while using my method, I would appreciate your feedback (I don’t know how to insert images in the text, and the images I have contain Chinese, so I’ll just describe the modifications in text form).
The versions of mmdetection and other related libraries I’m using are as follows:
•	mmdetection version: 3.3 [any version of mmdetection 3.x should work]
•	mmengine version: 0.8.3 [I've only tested this version; I’m unsure about other versions]
•	mmcv version: 2.1.0 [I have tested mmdetection 3.1 with mmcv 2.0.1, and mmdetection 3.3 with mmcv 2.1.0].
The following instructions assume you are constructing the project from source code.
The following instructions assume you are constructing the project from source code.
The following instructions assume you are constructing the project from source code.
Core Idea:

Add loss calculation in the run_iter part of ValLoop.

Create a new hook that overrides after_val_iter and after_val_epoch to calculate validation loss.

Adding Loss Calculation in the run_iter Part of ValLoop:
a)	Calculating the mini-batch validation loss:
Path: mmengine/mmengine/model/base_model/base_model.py
Line: 132-133 (def val_step ← class BaseModel)
[1]Code after modification:
data = self.data_preprocessor(data, False)
# return self._run_forward(data, mode='predict')  # type: ignore
outputs = {'predict_output':self._run_forward(data, mode='predict'),
'loss':self.parse_losses(self._run_forward(data, mode='loss'))}
return outputs # type: ignore
[2]Explanation of the code:
·self.data_preprocessor: Preprocessing the data for prediction.
·self._run_forward: Runs the forward pass based on the mode. In this case, the mode is set to predict, so loss is not
calculated. To obtain the loss without affecting the original return values, we can add another mode called loss.
b)	Post-processing the mini-batch validation loss:
Path: mmengine/mmengine/runner/loops.py
Line: 382-384 (def run_iter ← class ValLoop)
[1]Code after modification:
with autocast(enabled=self.fp16):
outputs = self.runner.model.val_step(data_batch)
# self.evaluator.process(data_samples=outputs, data_batch=data_batch)
self.evaluator.process(data_samples=outputs['predict_output'],data_batch=data_batch)
[2] Explanation of the code:
·self.runner.model.val_step: Obtains the mini-batch validation loss.
·self.evaluator.process: Handles the post-processing of mini-batch predictions. Since we modified outputs in step [1] to return both the prediction and the loss as a dictionary, we use outputs['predict_output'] here to replace the original output.

Creating a New Hook to Override after_val_iter and after_val_epoch for Validation Loss Calculation:
I will analyze this part later tonight. This part is quite simple, and for after_val_epoch, I’ll reference the loss calculation from after_train_iter. (The content above was translated into English by GPT.)"

Creating a New Hook to Override after_val_iter and after_val_epoch for Validation Loss Calculation:
Path Directory: mmdet/engine/hooks
You need to create a new hook script under this folder. You can name the script val_loss.py (I'll directly show the contents I’ve added):
================================================================================
import torch
from typing import Dict, Optional
from mmengine.hooks import Hook
from mmengine.runner import Runner
from mmdet.registry import HOOKS

@HOOKS.register_module()
class ValLoss(Hook):
"Save and print valid loss info"
def __init__(self,
             loss_list=[]) -> None:
    self.loss_list = loss_list

def after_val_epoch(self,
                    runner,
                    metrics: Optional[Dict[str, float]] = None) -> None:
    """
        Figure every loss base self.loss_list and add the output information in logs.
    """
    if len(self.loss_list) > 0:
        loss_log = {}
        for lossInfo in self.loss_list:
            for tmp_loss_name, tmp_loss_value in lossInfo.items():
                loss_log.setdefault(tmp_loss_name, []).append(tmp_loss_value)
        for loss_name, loss_values in loss_log.items():
            runner.message_hub.update_scalar(f'val/{loss_name}_val', torch.mean(torch.stack(loss_values)))

def after_val_iter(self,
                   runner: Runner,
                   batch_idx: int,
                   data_batch: Optional[dict] = None,
                   outputs: Optional[dict] = None) -> None:
    """ Save all loss in self.loss_list.

    Args:
        outputs (Dict): the outputs include the outputs of prediction and loss, but we only need loss.
                        All loss will save in self.loss_list.
    """
    if 'loss' in outputs:
        self.loss_list.append(outputs['loss'][1])

================================================================================
When you finish the above steps, don't forget to add the relevant content in init.py.
When you finish the above steps, don't forget to add the relevant content in init.py.
When you finish the above steps, don't forget to add the relevant content in init.py.

Hey everyone, I just came across this thread and want to share what I do :)
TLDR: I create an extra dataloader vor val loss calculations and call a modified model.train_step (without gradient updates) from a hook 'before_train_iter' (because train loss is also before gradient updates). Of course you can run the hook at different hook points as well. This dependings on you setting and needs.
Create an extra dataloader in Runner
from itertools import cycle
from mmengine.runner import Runner
from mmengine.registry import RUNNERS

@RUNNERS.register_module()
class CustomRunner(Runner):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.val_loss_dl = CustomRunner.build_val_loss_dl(self._train_dataloader, self._val_dataloader)

    @staticmethod
    def build_val_loss_dl(train_dataloader, val_dataloader, return_fixed_batch=False):
        # have to be unitialized
        assert isinstance(train_dataloader, dict)
        assert isinstance(val_dataloader, dict)

        # ensure val dataloader for loss calculation uses same sampler/pipeline as train dl (just switch anns and imgs)
        dl = copy.deepcopy(train_dataloader)
        dl['dataset']['ann_file'] = copy.deepcopy(val_dataloader['dataset']['ann_file'])
        dl['dataset']['data_prefix'] = copy.deepcopy(val_dataloader['dataset']['data_prefix'])
        dl = CustomRunner.build_dataloader(dl)
        return cycle(dl)

In a custom logger hook run train_step without gradient updates
Add to config with custom_hooks = [dict(type=CustomLoggerHook)]
from contextlib import nullcontext
import torch
from mmengine.dist import all_reduce_dict
from mmengine.runner.amp import autocast
from mmengine.hooks import Hook
from mmengine.registry import HOOKS

@HOOKS.register_module()
class CustomLoggerHook(Hook):
    priority = 'BELOW_NORMAL'
    def __init__(self, interval: int = 100):
        self.interval = interval

    def before_train_iter(self,
                          runner,
                          batch_idx: int,
                          data_batch: DATA_BATCH = None) -> None:

        if self.every_n_train_iters(runner=runner, n=self.interval):
            outputs = self._get_loss_on_val_batch(runner)  # losses on val data
            all_reduce_dict(outputs, op='mean')
            val_loss = {}
            for k, v in outputs.items():
                val_loss[k] = v.item()  # cuda to cpu
            # do whatever you want with the loss from here, e.g. log it :)
            # or integrated this in a different hook...

    def _get_loss_on_val_batch(self, runner):
        # we basically run model.train_step but with:
        #
        #     - model.eval() so we don't update batch_norm stats with val data!!!
        #     - torch.no_grad() so we don't produce gradients
        #     - no optim_wrapper.update_params but we have no gradients anyway
        #     - manual amp context instead of optim_wrapper.optim_context() so we don't change anything inside
        #       the optim_wrapper but still get correct amp loss. Not sure if this is actually necessary but
        #       let's not fiddle with optim_wrapper. Maybe we could simply use the context just without calling
        #       optim_wrapper.update_params() but I'm not sure so we just avoid it.
        #
        # see: https://github.com/open-mmlab/mmengine/blob/main/mmengine/model/base_model/base_model.py#L84
        model = runner.model
        if is_model_wrapper(model):  # unwrap DDP
            model = model.module
        data = next(runner.val_loss_dl)
        amp = hasattr(runner.optim_wrapper, 'cast_dtype')
        cast_dtype =  getattr(runner.optim_wrapper, 'cast_dtype', None)
        model.eval()
        with torch.no_grad():
            with autocast(dtype=cast_dtype) if amp else nullcontext():
                data = model.data_preprocessor(data, True)
                losses = model._run_forward(data, mode='loss')  # type: ignore
                parsed_losses, log_vars = model.parse_losses(losses)  # type: ignore
        model.train()
        return log_vars

@JohannesTheo : I would like to use the custom runner in the rtmdet ins config, but where to set the runner_type='CustomRunner'?

Hey @danielsagmeister-cw, sry I forgot to mention but I'm using mmdet 3.3.0. In that case, tools/train.py will instantiate the runner here. You can put the following somewhere in your config (assuming you have a file custom_runner.py and a your_config.cfg right next to it):
from .custom_runner import CustomRunner
runner_type = CustomRunner

or if you are using the text based configs:
# I'm not 100% sure about the correct path etc. but,
# you need the custom_imports to trigger the registry mechanism
custom_imports = dict(imports=['.custom_runner'], allow_failed_imports=False)
runner_type ='CustomRunner'

If you are using mmdet 2.x however, the mechanism will be different. The runner is instantiated here and defined as runner=dict(type=...), for instance here. Note that during the transition of mmdet 2 to 3, a lot of things where moved, also the registry mechanism for Runners, from mmcv to mmengine. Things will be different there and you have to follow the call chain to understand whats going on. My example from above will most likely not work and needs some adjustments.

it can more easlier?


Added tests for jsx-curly-spacing that deal with comments in children.

See also:
https://github.com/yannickcr/eslint-plugin-react/issues/648#issuecomment-327519650

@ljharb Does this seem good to merge? I'm also running into this problem.

I've rebased this, and one test is still failing.

Notably, the one failing test is just about failing to remove a space from before a }; no comments are removed.

Sweet, looks like this is good to go (see my commit message for details about what the problem was).


Calling auth.validateRequest fails with AUTH_INVALID_ACCESS_TOKEN when using Prisma adapter

Summary
In a basic reproduction, following the Prisma Adapter setup guide and following the email and password guide leads to auth.validateRequest failing with AUTH_INVALID_ACCESS_TOKEN.
I'm not sure if this is related to #8. I'm also fairly new to using SvelteKit so it's possible I've messed something up elsewhere, but I believe I've followed the lucia guides to a tee.
Reproduction
For the reproduction I setup a simple repository with a detailed README for instructions on how to setup + reproduce the issue.
https://github.com/gabewomble/lucia-sveltekit-with-prisma

Bad documentation, my bad. On the Getting started page:

The access token should be send as a bearer token in the authorization header. Lucia does not rely on http-only cookies to verify the user in endpoints to prevent CSRF attacks.

So you have to send the request like:
fetch("/some-endpoint", {
   headers: {
      Authorization: `Bearer ${accessToken}`
   }
}

That should fix the problem. I'll make sure to make the docs clearer.

Thanks for clarifying, and I'd be glad to contribute to the docs as well if any help is needed!

That’ll be great to have some fresh eyes to look over the docs!


Facilities can be specified by ID, but then resources are destroyed and recreated after the provider normalizes to names

I wish I had a good log of this happening, but I created a spot market request in the facility c9dcbd06-6797-4096-b648-1be16dd5d833 (dfw2) and it worked correctly. I then applied again, and the plan included destroying all my spot market requests, and recreating them, because the provider recorded the actual facility as dfw2. Maybe a reasonable option here is rejecting UUID-based facilities?

Closing this since it relates to a deprecated feature #312


[p50] Dropbox hasn't completed synch for several days

Similar to https://github.com/130s/hut_10sqft/issues/467, on p50 several days ago when I moved large number of files (total several GB worth of text files), then Dropbox seems to have stopped showing progress in sync. So I did follow the same steps in https://help.dropbox.com/installs-integrations/sync-uploads/stuck-syncing#permission
# sudo chown "$USER" "$HOME"/data/Dropbox
sudo chown -R "$USER" ~/data/Dropbox ~/.dropbox
sudo chattr -R -i ~/data/Dropbox
sudo chmod -R u+rw ~/data/Dropbox ~/.dropbox

First command would change the owner of ALL files under $HOME, which I feel less confident. So skipped.
chattr command yielded a lot of chattr: Operation not supported while reading flags on X error but that seems to be files being symlink according to superuser.com#q755285.

Not showing progress so I'll go ahead going "advanced reinstall" route.
I had to customize some parts of it where file/dir didn't exist on my computer or wrong path.
dropbox stop
dropbox status  # Should report "not running"
# rm -rf ~/.dropbox-dist
echo "Original instruction rm doesn't copy anything. In case of trouble I keep it for now" && mv ~/.dropbox-dist ~/.dropbox-dist_20201010
rm -rf /var/lib/dropbox
#rm -rf ~/.dropbox*
rm -rf ~/.dropbox
sudo apt-get remove nautilus-dropbox
sudo apt-get remove dropbox
#rm /etc/apt/source.d/dropbox
echo "Instruction is using a wrong path" && sudo rm /etc/apt/sources.list.d/dropbox.list
sudo chown "$USER" "$HOME"
sudo chown -R "$USER" ~/data/Dropbox
sudo chattr -R -i ~/data/Dropbox && sudo chmod -R u+rw ~/data/Dropbox

We'll see how this goes, hopefully after not so many hours...

No progress.
I see:
$ dropbox filestatus
.com.apple.timemachine.supported:                           unwatched
.iTunes Preferences.plist:                                  unwatched
file1: 							    unwatched
file2:							    unwatched
:

I ran  dropbox update and it seems to have downloaded something. We'll see.

Done!
$ dropbox: load fq extension '/home/noodle/.dropbox-dist/dropbox-lnx.x86_64-108.4.453/PyQt5.QtDBus.cpython-37m-x86_64-linux-gnu.so'

Unable to monitor entire Dropbox folder hierarchy. Please run "echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p" and restart Dropbox to fix the problem.

$ dropbox stop
$ dropbox start

Then I vaguely remember I increased 0, so I did add 0.
$ echo fs.inotify.max_user_watches=1000000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p
fs.inotify.max_user_watches=1000000
fs.inotify.max_user_watches = 100000
fs.inotify.max_user_watches = 1000000

That was it. Now files are syncing.
My guess is that by coincidence large amount of files moved and also OS upgraded, and /etc/sysctl.conf got restored so that the previously set values were gone. St@pid dropbox Linux client for not notifying anything about that.


Encoders error messages should include info of what type an object is when it's not the expected one

A lot of my tests are failing because of TypeError coming from the encoders, and the error message is not very helpful.
  File "[REDACTED].venv/lib64/python3.9/site-packages/fast_update/copy.py", line 90, in Int
    raise TypeError(f'expected type {int} was {type(v)}')
TypeError: expected type <class 'int'>

I think it would make debugging much easier if it said what type the object was. For example:
  File "[REDACTED].venv/lib64/python3.9/site-packages/fast_update/copy.py", line 90, in Int
    raise TypeError(f'expected type {int} was {type(v)}')
TypeError: expected type <class 'int'> was <class 'NoneType'>

Best would of course be if it also said what field the issue is in, but that might be harder to do.

Yeah good point, gonna make this more explicit. As you already said, field or even row/obj backtracking will be alot harder, as the code currently tries very hard to process things fast. Will see what I can do about that.

@mikicz Giving the field name as argument to the encoders has only small perf penalty (<<5%), so gonna add that for easier debugging.


Translated to French

I have translated README.md to French
Resolves #35

@madebygps @rishabkumar7 Kindly review the changes


Test if and endpoint in web api is use full to retrieve a list of urls to make the correct api calls.

We could define something like an endpoints service in angular that makes an http request for a controller that has defined the list of nodes and urls in order to make request to predefined urls. All in a single place

this can live in a per project base strategy


Fix adoption for topic resource

Issue 1778
Description of changes:
In close relation with this PR: https://github.com/aws-controllers-k8s/sqs-controller/pull/32; this PR addresses the invalid: spec.name: Required value error during adoption of an existing Topic resource.
status:
  conditions:
  - message: 'Topic.sns.services.k8s.aws "<TOPIC_NAME>" is invalid: spec.name: Required value'
    status: "False"
    type: ACK.Adopted

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/ok-to-test

@A-Hilaly do you think you have time to cut a new release of the SNS controller today? Sorry, I'm out of commission for a bit.

Sure sending one soon!


Add way to output a 'release info' thing

Problem
More and more projects want access to the release info for a release as a whole. The changesets action already does this.
Proposed solution
Expose this. The two important things are to:

output the md as it currently is in the action version comment
have a command to write it to a file.

I think it would make sense to attach config for this to the version command itself to output this as a file.

This basically: https://docs.npmjs.com/adding-dist-tags-to-packages


FabricClient in C#

Is it advisable to create a FabricClient instance and keep it for the lifetime of the service (due to its high creation cost)?

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

ID: 7e5a3ffd-a040-465e-949a-67183fa6d722
Version Independent ID: 0e4dde2e-b4dd-d2d6-8b4e-e67f2f43b828
Content: Azure Service Fabric deployment with FabricClient - Azure Service Fabric
Content Source: articles/service-fabric/service-fabric-deploy-remove-applications-fabricclient.md
Service: service-fabric
GitHub Login: @erikadoyle
Microsoft Alias: edoyle

@mcurko We are checking this and we will get back to you.

@erikadoyle Would you be able to help answer this question? It is an advisory question.

Yes, this is advisable. You should create a singleton instance of FabricClient.

Hi @mcurko, See above comment for resolution.
#please-close