Did the Sonos API change?

I've been trying to get SoCo (and then ruby sonos) working, but whenever I pass a Spotify URI to queue/play I'm just getting back Soap errors.
This applies to MusicService.search:
results = Spotify.search('tracks', 'watercolour') - Soap error
...and Zone.add_to_queue when I use Spotipy to get the URI and then convert it myself
track1URI = results['tracks']['items'][0]['uri']
id = Spotify.sonos_uri_from_id(track1URI)
i = CrewRoom.add_to_queue(id) # - Soap error

The hardware is on the latest version. If it's fault on my end then I'll submit some documentation updates for future newbies, but I'm not that experienced with this ecosystem or Soap so thought it best to ask.

@lawrenceakka @KennethNielsen
Would anyone be able to shed some light on this, please?

Hallo @Nick-Lucas
I think I'll need a little more information. Are you using the new services code for the spotify object? In general, add_to_queue does not accept just a uri, it needs a queueable item, which is an object that has a certain set of properties. You can see an example of this when using the functions for the local music library (soco.music_library.get_tracks) that it returns Didl objects which has all the right properties.
You should not need an external module in order to use Spotify, however, the music service code in SoCo is fairly new, so right now, a little work is required before the returned search results can be added to the queue. You can see an example of how to do it in this jist: https://gist.github.com/lawrenceakka/2d21dca590b4fa7e3af2
In the example, the ids are hardcoded, but they could be pulled out of the metadata returned by the search method on the service object.
Since this is fairly new code, I think it is expected to be a little hard to figure out, so no need to add extra info at this point.

Hi Kenneth,
Thanks for this and the code example, I will have play tonight. I'll at very least drop my working code back here for future reference.
I did have to update my SoCo to the master branch as the latest release doesn't contain .music_services so if there's a specific most stable commit you can recommend I'll move to it.

No, as I said. The music services code is pretty new. We used to have (well technically still do) a dedicated Spotify plugin, but it is as of very recently useless because Spotify obsoleted the API that it used.

This worked great, thank you so much!
I still had some issues with Spotify.search, but it was an authentication error so probably my fault.
Spotipy is ultimately a more flexible API for search so I will probably continue to use it anyway.
Again I'd be happy to contribute back documentation at the very least so I'll keep up with the project, although probably when I'm a better Python coder!
Quick dump of what I ended up doing for anyone else to stumble on this thread:

import soco
from soco.data_structures import DidlItem, DidlResource
from soco.music_services import MusicService
from soco.compat import quote_url

import spotipy

zones = soco.discover()
crew = [zone for zone in zones if zone.player_name == "Crew Room"][0]
CrewRoom = soco.SoCo(crew.ip_address)

# Search for track on Spotipy
Spotipy = spotipy.Spotify()
results = Spotipy.search("granite pendulum", 1)
track1URI = results['tracks']['items'][0]['uri']

def add_from_service(item_id, service, device, is_track=True):
    item_id = quote_url(item_id.encode('utf-8'))
    didl_item_id = "0fffffff{0}".format(item_id)

    if not is_track:
        uri = 'x-rincon-cpcontainer:' + didl_item_id
    else:
        uri = service.sonos_uri_from_id(item_id)

    res = [DidlResource(uri=uri, protocol_info="DUMMY")]
    didl = DidlItem(title="DUMMY",
        parent_id="DUMMY",
        item_id=didl_item_id,
        desc=service.desc,
        resources=res)

    return device.add_to_queue(didl) - 1

# Add and play
i = add_from_service(track1URI, Spotify, CrewRoom, True)
CrewRoom.play_from_queue(i)


Send text message via Twilio

Our new "sms" app in WeVoteServer gets all ready to send a text message. This issue is to get actual sending set up with Twilio. (Dale can provide the developer account with credits.)
The sending should happen in this file:
WeVoteServer/sms/models.py
...in the SMSManager function: send_scheduled_sms_via_twilio
Please add variables for Twilio configuration settings to this file (not including the actual credentials):
WeVoteServer/config/environment_variables-template.json

Hi @DaleMcGrew, can I take this one on?

Hi @utsab I'm sorry I didn't close this -- it is already completed.


Research analytics tools suitable for Flank business metrics

Research available analytics tools to measure business metrics.
Some random examples: Google Analytics, Heap, Hotjar.
Please compare it with Mixpanel. Is Mixpanel suitable for tracking proposend metrics in #2011 ?

I think mixpanel is good. https://github.com/Flank/flank/blob/master/docs/analytics_comparsion.md

I checked a mixpanel and yes it's fine.
I prepared some reports according to #2011. You can check them here. The rest of the reports will be created in #2029. Currently Flank doesn't report some data to mixpanel like costs, test duration, and Flank version so this will be implemented in #2030

OK, closing this ticket


XFail intermittent http test_bag

[ ] Tests added / passed
[ ] Passes flake8 dask

It seems like we can't figure out what's going on here.  This disrupts normal development on the project but is itself a bit peripheral.  XFailing for now.
cc @martindurant

Yeah, I guess so.


Shows spinner in the fzf instance as if it's loading

The fzf instance shows the spinner as if it's searching for something, I think it's because the stdin isn't closed
Example:

It seems to be fixed by dropping stdin in the output() method
After:

Code Before:
    pub fn output(self) -> Option<String> {
        let output = self.instance?.wait_with_output().ok()?;
        Some(String::from_utf8_lossy(&output.stdout).trim().to_string())
    }

Code After:
    pub fn output(self) -> Option<String> {
    	drop(self.stdin);
        let output = self.instance?.wait_with_output().ok()?;
        Some(String::from_utf8_lossy(&output.stdout).trim().to_string())
    }

Hi, thanks for your issue and for providing the fix! I'll make the change and release it

Just released this to crates.io, updating your Cargo.toml to `"0.1.4" will fix this issue


Create Greek translation of README.md

Checklist

[x] I acknowledge that all my contributions will be made under the project's license.

hi there @MIP2000, thanks for your contribution.
I'm currently looking for somebody who is fluent in Greek to review it. Thanks for your patience!

Hey, can i suggest a person who is fluent in Greek to review it?


feat(forms): one-sided input range

https://www.figma.com/file/vnzYfrwIISRYkr2iYE5TcD/DS-Atoms?node-id=13343%3A8984
Suggestions on how to resolve the type errors are welcome

type errors fixed, thanks! @ajkl2533

@ajkl2533 added type descriptions and RangeTemplate


Implement the TUI

https://github.com/crossterm-rs/crossterm

Cursive

I'm not a rust developer but I saw this: https://github.com/fdehau/tui-rs It's also based on crossterm but it looks like that it has already some "widgets" for the TUI.

Yes I saw it also, it is good you mention it. Thanks!

Hello @soywod I'm interested in helping you with the TUI.
But I'm pretty new to rust. I've just finished the book yesterday and I played a little bit with tui-rs so my "code quality" sucks probably, but I'm ready to improve that. Do you have any suggestions where I could start (if it's fine for you) and which TUI-crate you'd like to use?

First of all, thanks for wanting to help!
I think tui-rs is a good choice. For the backend I would go with crossterm, but you are free to use whatever.
The only thing I would like to keep is the monorepo. I would like to keep all tools related to Himalaya in this repo (vim plugin, emacs pluging, UI, TUI, GUI etc). For now, Himalaya has only one Cargo.toml, I think some refactor is necessary to turn it into a monorepo with workspaces.

The only thing I would like to keep is the monorepo.

Yes please! That's a really good idea IMO, splitting up things only add unnecessary complexity!

I think some refactor is necessary to turn it into a
monorepo with workspaces

Why? There's no need for that! Just add a subcommand for launching the tui! And, if you want, make the feature a compile time option.
No need for a workspace IMO!

I'd say that I'll create a subdirectory will all the TUI stuff. I'll call it probably tui.

Just add a subcommand for launching the tui!

I agree to that. Calling himalaya --tui for example.

Calling himalaya --tui for example.

Or even less to type: himalaya tui

Why? There's no need for that!

I was thinking to use directly Rust functions instead of using the JSON API. So I think it makes sense to have workspaces to manage those crates, what do you think @matthiasbeyer?

Why not have the GUI feature in the source of himalaya itself?

Indeed, makes sense. Let's go for that!

Why not have the GUI feature in the source of himalaya itself?

Because I'd like to separate it from the "backend" of himalaya, so we have a clear structure in the future as well. By the way, do you mean TUI instead of GUI?

Ah, yes to all points (GUI was caused by autocorrect on my phone, sorry)

@soywod so it's fine for you, if I (try) to implement it in a extra-directory: src/tui?

Yes, you can go for it!

Is it any news about it?

Yes! Take a look into the draft and scroll down to the last messages.
TL;DR
The PR-Draft isn't given up. It's just stopping at the moment because:

I'm waiting for my new laptop (I don't want to develop on a USB-Stick anymore... neovim is even lagging in the TTY....)
We'll improve the API code of himalaya

Then the TUI implementation can be continued!

But I'm glad that more people want a TUI for himalaya ^^

In the mean time, I implemented my own TUI in bash. You need sed, sd and fzf. Add the following to your bashrc:
alias stripcolors="sed 's/\x1B\[[0-9;]\{1,\}[A-Za-z]//g'"

# $1=email ID
# $2=flags
hread() {
  himalaya $2 read -t html $1 | w3m -T text/html
}

# $1=flags (ignore $1 in sd capture group)
hmenu() {
  hread $(himalaya $1 | stripcolors | fzf | sd '^(\d{1,10})\s│.+' '$1') "$1"
}

Example usage:
$ himalaya

UID  │FLAGS │SUBJECT                                                                                │SENDER                                             │DATE
6659 │      │Your Twitch Account - Successful Log-in                                                                             │Twitch                                             │<censored>
6658 │      │Your Twitch Login Verification Code                                                                                │Twitch                                             │<censored>
[ ... ]

$ hread 6659 # Open the email in w3m for easy viewing

$ himalaya -a otheraccount # Pass additional flags

UID  │FLAGS │SUBJECT                                                                                │SENDER                                             │DATE
6659 │      │Your Twitch Account - Successful Log-in                                                                             │Twitch                                             │<censored>
6658 │      │Your Twitch Login Verification Code                                                                                │Twitch                                             │<censored>
[ ... ]

$ hread 6659 "-a otheraccount" # Pass additional flags

If you're too lazy to enter the email ID 6659 into a terminal, use hmenu:
$ hmenu # Lists all the emails in a TUI, select the email you want to view with arrow keys and enter

$ hmenu "-a otheraccount" # Pass additional flags

I also made my experimental TUI using skim and w3m
sk --ansi -c 'himalaya list -s 200' --preview "himalaya read {1} -t html | w3m -T text/html" --bind 'space:execute(himalaya reply {1}),esc:execute(himalaya delete {1}),ctrl-f:execute(himalaya forward {1})' --reverse --header-lines=2

Press space to reply Press esc to delete Press ctrl+f to forward a message

Cool!
Why not fzf?

@timsofteng  definitely. There's no specific reason over fzf. Here is an fzf version.
mail(){

  FZF_DEFAULT_COMMAND='himalaya list -s 200' \
  fzf --bind 'space:execute(himalaya reply {1}),esc:execute(himalaya delete {1}),ctrl-f:execute(himalaya forward {1})' \
      --preview 'himalaya read {1} -t html | w3m -T text/html' \
      --header-lines=2\
      --header 'Space: Reply, Esc: Delete, Ctrl-f: Foward, Ctrl-c: Exit'\
      --layout=reverse\
      --ansi

}

I think would be great to implement some kind of cache Himalaya ( Now it's a bit slow cause every time we need to do an IMAP request)

The cache is already planned.

Also, some ways to customize the display columns.

Hint
If anyone has more time and motivation (I don't mean it in a bad way) than me, then you can create your own fork and implement the TUI because at the moment I'm pretty much exhausted by my university and I'd like to complete my eduacational project first... and... sadly the code in my fork isn't up to date anymore...
I'm sorry about this and everyone who were believing in me doing this... ._.
Currently I can't give an exact date or time when I can get back to this and I also don't want you guys to wait for me although I haven't done that much in the last days/weeks for himalaya.

Don't worry @TornaxO7, this is an open source project were people help whenever they have time. No pressure. I personally have more free time these days, I will try to continue your work. Thank you anyway for your initiative!

What is the status of TUI ? Many people would be interested to use himalaya interactively, without vim.

What is the status of TUI ?

For now, the TUI feature is in pending state. I would like to finish other issues before taking back this one (like backends for example https://github.com/soywod/himalaya/issues/295).

Many people would be interested to use himalaya interactively

To be honest, it is not the main aim of himalaya. The main purpose of this tool is to interact in a CLI way with your emails (console, script etc). I see the TUI feature as a bonus. I hope you understand.

I understand, thanks for your answer.

Expanded on @guilhermeprokisch fzf script:
mail() {
  SEARCH_QUERY='
    if [[ "{q}" = "'\'''\''" || "{q}" = "$(echo {)q}" ]]; then
      script -t 0 -q /dev/null himalaya list -s 100 --max-width $COLUMNS
    else
      if [[ -f "$TMPDIR/fzhim_qry" ]]; then
        query=$(eval "echo {q}")
      else
        query="OR OR SUBJECT {q} FROM {q} BODY {q}"
      fi
      script -t 0 -q /dev/null himalaya search -s 100 --max-width $COLUMNS $query
    fi
  '
  FZF_DEFAULT_COMMAND=$SEARCH_QUERY fzf \
    --disabled \
    --bind 'enter:change-preview:himalaya read {1} -t html | w3m -T text/html -cols $FZF_PREVIEW_COLUMNS -o display_link_number=1' \
    --bind "enter:+reload:sleep 0.1; $SEARCH_QUERY" \
    --bind 'ctrl-j:change-preview()+down' \
    --bind 'ctrl-k:change-preview()+up' \
    --bind 'down:change-preview()+down' \
    --bind 'up:change-preview()+up' \
    --bind 'esc:change-preview()' \
    --bind 'ctrl-n:execute:himalaya reply {1}' \
    --bind "ctrl-n:+reload:sleep 0.1; $SEARCH_QUERY" \
    --bind 'ctrl-a:execute:himalaya attachments {1}' \
    --bind "ctrl-r:reload:$SEARCH_QUERY" \
    --bind "change:change-preview()+reload:sleep 0.25; $SEARCH_QUERY" \
    --bind 'ctrl-q:change-prompt(Query > )+execute-silent:touch $TMPDIR/fzhim_qry' \
    --bind 'ctrl-f:change-prompt(> )+execute-silent:rm -f $TMPDIR/fzhim_qry' \
    --preview-window "top" \
    --header "enter: read email, ctrl-n: reply, ctrl-a: attachments, ctrl-q: query mode, ctrl-f: normal mode, ctrl-r: reload, ctrl-c: exit" \
    --header-lines 2 \
    --ansi

  rm -f $TMPDIR/fzhim_qry
}

Changes made:

Himalaya is tricked into thinking it's running in a TTY, so colours are output (it would be really nice if this were possible using a flag!)
IMAP querying is used for search, not fzf

Can toggle between two modes: the raw query or searching from/subject/body

preview closes when navigating around , meaning stuff won't be marked as read unintentionally
removed a couple commands i don't use

It's pretty opinionated and tailored towards how I use email but hopefully some people find this useful!
I haven't looked much into how unsafe the eval usage is there, but it seems basically fine to me (i'm unescaping stuff escaped by fzf for execution), especially as it's only the user using the program who is able to input stuff in there.

Himalaya is tricked into thinking it's running in a TTY, so colours
are output (it would be really nice if this were possible using a
flag!)

Does this resource 1 helps you?

It's pretty opinionated and tailored towards how I use email but
hopefully some people find this useful!

Thanks for sharing, feel free to also share in the Tips section of the
wiki!
On 27 Mar 2022, at 16:34 (+0200), soywod/himalaya wrote:

Expanded on @guilhermeprokisch fzf script:
mail() {
 SEARCH_QUERY='
 if [[ "{q}" = "'\'''\''" || "{q}" = "$(echo {)q}" ]]; then
 script -t 0 -q /dev/null himalaya list -s 100 --max-width $COLUMNS
 else
 if [[ -f "$TMPDIR/fzhim_qry" ]]; then
 query=$(eval "echo {q}")
 else
 query="OR OR SUBJECT {q} FROM {q} BODY {q}"
 fi
 script -t 0 -q /dev/null himalaya search -s 100 --max-width $COLUMNS $query
 fi
 '
 FZF_DEFAULT_COMMAND=$SEARCH_QUERY fzf \
 --disabled \
 --bind 'enter:change-preview:himalaya read {1} -t html | w3m -T text/html -cols $FZF_PREVIEW_COLUMNS -o display_link_number=1' \
 --bind "enter:+reload:sleep 0.1; $SEARCH_QUERY" \
 --bind 'ctrl-j:change-preview()+down' \
 --bind 'ctrl-k:change-preview()+up' \
 --bind 'down:change-preview()+down' \
 --bind 'up:change-preview()+up' \
 --bind 'esc:change-preview()' \
 --bind 'ctrl-n:execute:himalaya reply {1}' \
 --bind "ctrl-n:+reload:sleep 0.1; $SEARCH_QUERY" \
 --bind 'ctrl-a:execute:himalaya attachments {1}' \
 --bind "ctrl-r:reload:$SEARCH_QUERY" \
 --bind "change:change-preview()+reload:sleep 0.25; $SEARCH_QUERY" \
 --bind 'ctrl-q:change-prompt(Query > )+execute-silent:touch $TMPDIR/fzhim_qry' \
 --bind 'ctrl-f:change-prompt(> )+execute-silent:rm -f $TMPDIR/fzhim_qry' \
 --preview-window "top" \
 --header "enter: read email, ctrl-n: reply, ctrl-a: attachments, ctrl-q: query mode, ctrl-f: normal mode, ctrl-r: reload, ctrl-c: exit" \
 --header-lines 2 \
 --ansi

rm -f $TMPDIR/fzhim_qry
}

Changes made:

Himalaya is tricked into thinking it's running in a TTY, so colours are output (it would be really nice if this were possible using a flag!)
IMAP querying is used for search, not fzf
Can toggle between two modes: the raw query or searching from/subject/body
preview closes when navigating around , meaning stuff won't be marked as read unintentionally
removed a couple commands i don't use

It's pretty opinionated and tailored towards how I use email but hopefully some people find this useful!
I haven't looked much into how unsafe the eval usage is there, but it seems basically fine to me (i'm unescaping stuff escaped by fzf for execution), especially as it's only the user using the program who is able to input stuff in there.
--
Reply to this email directly or view it on GitHub:
https://github.com/soywod/himalaya/issues/24#issuecomment-1079944050
You are receiving this because you were mentioned.
Message ID: @.***>

--
Cordialement
Clément DOUIN
Développeur Web Full-Stack
https://soywod.me

Does this resource [1] helps you?

Sorry to clarify, it's the other way around - I want colours, himalaya didn't want to give them to me
It's possible to override by setting $TERM in termcolor but himalaya is slightly stricter so using script is required, as far as I can tell

Thanks for sharing, feel free to also share in the Tips section of the wiki!

Going to add mailboxes support and then will do :)

It's possible to override by setting $TERM in termcolor but himalaya
is slightly stricter so using script is required, as far as I can
tell

Interesting, maybe an argument could be introduced to force colors or
not. If this argument is missing then we can fallback to the auto
way. Feel free to open an issue if you find this relevant!

Going to add mailboxes support and then will do :)

Great, thank you :)
On 28 Mar 2022, at 10:43 (+0200), soywod/himalaya wrote:

Does this resource [1] helps you?

Sorry to clarify, it's the other way around - I want colours, himalaya didn't want to give them to me
It's possible to override by setting $TERM in termcolor but himalaya is slightly stricter so using script is required, as far as I can tell

Thanks for sharing, feel free to also share in the Tips section of the wiki!

Going to add mailboxes support and then will do :)
--
Reply to this email directly or view it on GitHub:
https://github.com/soywod/himalaya/issues/24#issuecomment-1080363825
You are receiving this because you were mentioned.
Message ID: @.***>

--
Cordialement
Clément DOUIN
Développeur Web Full-Stack
https://soywod.me

Feel free to open an issue if you find this relevant!

Need to learn a bit of Rust first (I've written C++ before, shouldn't be that hard right? 😅) and then hoping to be able to contribute some stuff myself :)

@callumacrae Thx for the updated script.
Any idea how to make it work on fish? Or maybe how to run it from inside fish shell?
Thx!

@callumacrae Thx for the updated script. Any idea how to make it work on fish? Or maybe how to run it from inside fish shell?
Thx!

dunno, from a quick google it looks like fish scripting is completely different to zsh / bash and doesn't even try to be interoperable - but i've never used fish before so can't really help much
i'd suggest saving the script in a file with a bash or zsh hashbang and calling it as a script, not a function - although you'll also need to modify the $SHELL variable when you call fzf or it'll try to run the scripts in strings in fish too, and I doubt that works
also, you can find the latest version of the script (with multi-account support and a couple other improvements) here: https://github.com/callumacrae/dotfiles/blob/master/zsh/mail.zsh

@callumacrae yeah fish is wildly different. I had actually tried giving it a go before pinging you. But I know it's just a pain 😂
So, I figured that i can create the zsh file, then in fish do zsh mail.zsh, making sure I run the mail function at the end.
While, it does run, I am getting this error.
Is it related to the variables you are using and that i would have to update, or something else?

@piotryordanov
I've made some changes to the script:

Works in both bash and zsh
Sets SHELL to /bin/bash so that the subcommands always run in bash
Documented how to set it up in bash/zsh/fish

It wasn't working for you because fzf executes things in the shell specified by $SHELL, which for you was fish - passing bash as SHELL fixes the issue.
https://github.com/callumacrae/dotfiles/blob/master/zsh/mail.zsh
(i think future discussion should probably be on my dotfiles repository, not here 😅)

Need to learn a bit of Rust first (I've written C++ before, shouldn't
be that hard right? 😅)

The ownership system is really special and needs some time to be
understood, even when coming from C++. But for sure, it may help a lot!

and then hoping to be able to contribute some stuff myself :)

Awesome :)
On 28 Mar 2022, at 11:28 (+0200), soywod/himalaya wrote:

Feel free to open an issue if you find this relevant!

Need to learn a bit of Rust first (I've written C++ before, shouldn't be that hard right? 😅) and then hoping to be able to contribute some stuff myself :)
--
Reply to this email directly or view it on GitHub:
https://github.com/soywod/himalaya/issues/24#issuecomment-1080408799
You are receiving this because you were mentioned.
Message ID: @.***>

--
Cordialement
Clément DOUIN
Développeur Web Full-Stack
https://soywod.me

I gather all Himalaya issues to the same bug tracker, so I transfer the issue here.


Fix up istio workloadentries CRD

This didn't look right, think there's a typo in the workloadentries definition.

Thanks for this David, are you able to sign this commit off? e.g.
commit 3333ab380a35e0af8813dfad38fff5ccc14567bc (HEAD -> refs/heads/istio-datagatherer, refs/remotes/origin/istio-datagatherer)
Author: Charlie Egan<EMAIL_ADDRESS>Date:   Mon Mar 1 12:03:48 2021 +0000

    Fix typo in variable name

    Signed-off-by: Charlie Egan<EMAIL_ADDRESS>

/release-note-none

/lgtm


Enable CI, fix on 32 bit

Please enable Travis and AppVeyor here, as long as there are still important packages that haven't migrated to the replacement.

thanks

Thanks for fixing the 32-bit thing, sorry about that.

This is why we turn tests on.

Bump. Please enable Travis and AppVeyor if you can.


Exclude recently connected devices prior to filtering by date.

Closes #268.
This change moves the "exclude recently connected" filtering to before the last-connected-before or created-before filtering. This better matches the expected behavior that we've been told about by our customers.
I also added a test for this change to document this behavior.

Added. Let me know if you'd like me to update the wording at all.


no make_unexpected with nsel_USES_STD_EXPECTED

I'm using the library indirectly via BehaviorTree.CPP.
Using a recent clang(17.0.3)/gcc(14.1) the code doesn't compile anymore due to make_unexpected not being available.
I currently patched this locally by adding this into the #if nsel_USES_STD_EXPECTED path (~ line 253):
constexpr auto make_unexpected(E&& value)
{
  return std::unexpected(std::forward<E>(value));
}

If wanted, I can submit a PR with the change or maybe I'm doing something wrong here?

Thanks for looking into it.
The challenge here lies in the expected-lite being used by other libraries taking the  liberty in using the P0323R suggested feature throughout their codebase. My suggestion is merely a quick-fix, trying to forward the ´std::unexpected{}´-idiom to the ´make_unexpected´ functionality.

I'll add make_expected() unconditionally for use with std::expected().
Have yet to correct the test suite for use with std::expected, which wasn't yet available at the time of writing.

Argh, I now realise it's (also) about make_unexpected()...
Will continue tomorrow.

@martinmoene  Thanks for tackeling the issue. I'll try to the current head in my scenario and advise the authors of BehaviorTree.CPP to use a new release, as soon as available.

Currently adapting the test suite for when std:: exception is  being used.
Will make a release after that, presumably v0.8.0.

Just tested compliation with gcc and clang locally, looks good, so the issue can be closed,
Thank you again for the speedy solution

Thanks for your feedback & you're welcome.

@psyinf Released expected-lite v0.8.0.


openssl/evp.h header file not found when trying to install mongodb extension

I'm struggling with installing the mongodb extension via phpbrew --debug ext install mongodb since it always fails with:
In file included from /Users/hauke/.phpbrew/build/php-7.0.12/ext/mongodb/src/contrib/php-ssl.c:31:
/Users/hauke/.phpbrew/build/php-7.0.12/ext/mongodb/src/contrib/php-ssl.h:33:10: fatal error: 'openssl/evp.h' file not found
#include <openssl/evp.h>
         ^
1 error generated.
make: *** [src/contrib/php-ssl.lo] Error 1

A gist to the log output is found here.
I also tried phpbrew --debug ext install mongodb -- --with-openssl=/usr/local/opt/openssl which also fails with the above error.
A gist to this log output is found here.
For the corresponding PHP I used phpbrew --debug install 7.0.12 +default +dbs +openssl=/usr/local/opt/openssl which seems to work fine. SSL support seems to be working there.
The build log from the PHP compilation is found here.
I try all this on an OS X 10.11.6 and phpbrew 1.22.5.
The SSL is "keg-only" installed via homebrew:
openssl: stable 1.0.2j (bottled) [keg-only]
SSL/TLS cryptography library
https://openssl.org/
/usr/local/Cellar/openssl/1.0.1f (1,229 files, 10.6M)
  Poured from bottle on 2014-01-21 at 04:25:33
/usr/local/Cellar/openssl/1.0.1j (1,236 files, 10.6M)
  Poured from bottle on 2014-10-17 at 22:17:12
/usr/local/Cellar/openssl/1.0.1k (1,236 files, 10.7M)
  Poured from bottle on 2015-01-08 at 20:26:52
/usr/local/Cellar/openssl/1.0.2a-1 (1,633 files, 12.3M)
  Poured from bottle on 2015-03-19 at 17:33:54
/usr/local/Cellar/openssl/1.0.2d_1 (1,638 files, 12.1M)
  Poured from bottle on 2015-07-13 at 20:46:23
/usr/local/Cellar/openssl/1.0.2g (1,678 files, 12.0M)
  Poured from bottle on 2016-05-01 at 14:10:22
/usr/local/Cellar/openssl/1.0.2h_1 (1,691 files, 12M)
  Poured from bottle on 2016-06-03 at 20:53:45
/usr/local/Cellar/openssl/1.0.2j (1,695 files, 12M)
  Poured from bottle on 2016-10-10 at 12:33:39
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/openssl.rb
==> Dependencies
Build: makedepend ✘
==> Options
--universal
	Build a universal binary
--without-test
	Skip build-time tests (not recommended)
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include
    PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig

Am I holding it wrong? Any help appreciated!

I met same problem, and I believe it is the bug of the mongodb extension tar.
I assumed the following will works,but it is not

ensure that you installed openssl using brew brew install openssl
then phpbrew install 7.0.13 +default +mysql +openssl=/usr/local/opt/openssl
and then, phpbrew ext install mongodb

actually, i found that php development env is must complicate on MacOS than on CentOS.
and phpbrew save a lot, but it is still complicate, I think I will use virtual machine on mac to develop php web site.
workaround:

download the extension install package, the tar file in the console
build it(you muck specify the include and lib path in the Makefile)
just phpize -> ./configure -> make -> make install
go to the var/db path make a ini just like other ini files

wish you good luck :)

I'm not sure if this thread is still active. I too have spent a day in debugging this issue. I figured out that specifying the openssl dir during the ./configure step will resolve it.
So I used below -
phpbrew ext install mongodb -- --with-openssl-dir=/usr/local/opt/openssl
This perfectly worked for me. Many people do the mistake here -
It is --with-openssl-dir- NOT --with-openssl=.
Happy Coding!!

The issue seems to be resolved and closed now.


bigquery-unittest-added

Describe your changes :

I worked on the adding unit test in big query.

Type of change :

[x] Improvement

Checklist:

[x] I have read the CONTRIBUTING document.
[x] I have performed a self-review of my own.
[ ] I have tagged my reviewers below.
[x] I have commented on my code, particularly in hard-to-understand areas.
[x] My changes generate no new warnings.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] All new and existing tests passed.

Reviewers
@ayush-shah @harshach @pmbrull

@codingwithabhi can you check why the pytests are failing

@codingwithabhi can you add bigquery code coverage alongwith sql_source.py and column_type_parser.


fix(layout sider): 修复md 布局时, 展开收起侧边栏会导致白边的问题

General

✏ Mark the necessary items without changing the structure of the PR template.

[x] Pull request template structure not broken

Type

ℹ What types of changes does your code introduce?

👉 Put an x in the boxes that apply

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Checklist

ℹ Check all checkboxes - this will indicate that you have done everything in accordance with the rules in CONTRIBUTING.

👉 Put an x in the boxes that apply.

[x] My code follows the style guidelines of this project
[x] Is the code format correct
[x] Is the git submission information standard?
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

preview
before

after


use keplr plugin

sample: create_list_nft_msg

@Senna46
plz review in your good time.
I changed the format to push msgs to the instance.data.msgs array.

@yutaro-elk Is this change for transactions including multi-msgs in the future and not related to the operation now?

That's right. I can't be sure if it's really not needed right now because I don't fully grasp the use case, but I intend to.


Add "control plane cluster update"

Control plane cluster update should be a new ansible role that is not part of the default set and must be called explicitly and has a selector based on provider. The ansible role should perform the upgrade/downgrade (should be the same process) tasks as laid out in the following tickets:
gke: this is a no-op, gke controls its own control plane with no user input
aws: #219
-- this may be completed best by completing #60 first

duplicate of #295


Limit nesting depth

This allows callers to limit input size to bound allocations / CPU, without needing to introspect the provided JSON to protect against internal decoder stack depth overflow.
See also https://tools.ietf.org/html/rfc7159#section-9 and golang issue 31789

cc @taowen

thanks! just for planning purposes, is there a target date for tagging a release that will include this?

https://github.com/json-iterator/go/releases/tag/1.1.8

just noticed the new tag is missing a leading v: https://github.com/json-iterator/go/issues/412


[Feature] Add Markdown Extra support

In particular, it would be great to be able to use Footnotes and Definition Lists from Markdown Extra.

Multimarkdown and Pandoc also support footnotes. Footnotes in particular are really important for academic style emails.
See https://github.com/adam-p/markdown-here/issues/94 for more details on footnotes and links to issues in Marked (which is what markdown-here uses for its parsing IIUC).


Dark/black mode

With the OLED screen on iPhone X, it would be really cool to have a dark/black mode in the app so it's more comfortable to read in the dark and saves battery power.

Changing the code. I'll create two themes: onde for normal visuals and another for black mode. Will add theme swap on About screen. Any suggestions?

We will have in a near future the Settings screen and there will be a good place to have the option to change the style mode.

In order to fulfill the dark/black mode requirement, it is important to put all visual customizations under themify's control. I have already changed the way the UINavigationBar is customized - now it is using Themify to set the title font and color. Next step is to move all color customization to the PList which represents the visual theming. So, the last step is to create the dark theme and give to the user ways to change it freely.

@ronflima After you have extracted the values, let me know and I can create the black theme :)


3D Tiles Sandcastle Demos

Fixes https://github.com/AnalyticalGraphicsInc/cesium/issues/5506
Demos (the first 5 are also in the main Showcases tab):

3D Tiles BIM (Power Plant model from Bentley)
3D Tiles Point Cloud (Chappes Church)
3D Tiles Photogrammetry (AGI building)

Some artifacts when skipLevelOfDetail is on due to thin roof walls

3D Tiles Feature Picking (NYC CityGML)
3D Tiles Feature Styling (NYC CityGML)
3D Tiles Adjust Height (commonly requested code sample on the forum)
3D Tiles Batch Table Hierarchy
3D Tiles Formats (a simplified version of the original 3D Tiles demo)
3D Tiles Inspector
3D Tiles Interactivity (annotations, print metadata, zoom to, hide feature abilities from the original 3D Tiles demo)
3D Tiles Point Cloud Styling

To do:

[x] Demos still need attribution. Is a sentence at the top of the demo code sufficient?
[x] Tilesets are currently hosted on my personal Composer account.

Demos still need attribution. Is a sentence at the top of the demo code sufficient?

Yes, later these may be embedded in the tileset, https://github.com/AnalyticalGraphicsInc/3d-tiles/issues/55

Tilesets are currently hosted on my personal Composer account.

Please address this soon so it doesn't delay the 1.35 release tomorrow.  If we can't address this by about noon, we'll ship with these urls and update in the next release.

Also please add an indoor example like the San Miguel.  Perhaps @likangning93 can help.

Updated CHANGES.md in master for this. 3340d144652744479d6f68138dceb0d35de56162

Ready with the San Miguel model under the 3D Tiles Interior name. Thanks for tiling it @likangning93.

Looks great!


Fix some incorrect types of socket.io.d.ts / node.d.ts.

Hi,
I fixed some incorrect types of socket.io.d.ts + node.d.ts. ;)

@progre could you review this PR?

[ ] node.d.ts
[ ] socket.io.d.ts

note
http://nodejs.org/api/child_process.html#child_process_child_send_message_sendhandle

looks good to me.
in my humble opinion, Socket is inherit from EventEmitter.
i.e.
interface Socket extends NodeJS.EventEmitter {

what do you think?

Maybe it will error:

! EventEmitter#emit(event: string, ...args: any[]) => boolean
! Socket#emit(event: string, ...args: any[]) => Socket
https://github.com/Automattic/socket.io/blob/master/lib/socket.js#L162

hmm, it's you're right.
this looks good to me. @vvakame

@progre thanks!
@kanreisa thanks mate!


Include map in two tests using map, but not including it

Added #include <map> to another two unit tests lacking it.

Thanks for doing this! (Sorry it took a bit to come in to review)
Looks like there actually are a few things other than map that need to be included as well.

Yes, I only searched for std::map in test/cpp files, haven't check vector or string. Up for it :) ?

I would feel better about this if we updated all of the other necessary includes as well.
If I get around to it I can do the other changes myself if you don't want to.

Sure, but what types is there to look for..?
Map and vector of course, but what more? I have only implemented the first few exercises of exercism C++ track so I don't really know what is used, and looking throw all test files kind of spoils the fun of exercism a bit ...
If I get an exhaustive list of types, I can easily fix this.

Off the top of my head it's probably just vector and string, but I really don't know without looking through them all.
I will just go ahead and merge this one. Thanks :)


Model collapses and not able to scroll if the screen height is low

Description
Model collapses and not able to scroll if the screen height is low
CodeSandbox/Snack link
https://docs.nativebase.io/modal
Steps to reproduce

Go to the doc link using web (https://docs.nativebase.io/modal)
Resize the browser height to a low value
Open the modal

NativeBase Version
3.4.10
Platform

[ ] Android
[ ] CRA
[X] Expo
[ ] iOS
[ ] Next

Other Platform
No response
Additional Information
The problem were found on React Native web. Haven't verify the behavior on React Native app.

Thanks for reporting @himgodfreyho . We will look into this.


Program erroneously uses uninitialized virtual registers: $r34351

Compiling amm of this branch of concentrated-liquidity results in the following error
error: Internal compiler error: Program erroneously uses uninitialized virtual registers: $r34351
Please file an issue on the repository and include the code that triggered this error.

I will also note, you must be using a master branch sway compiler or you will encounter another ICE which has now been fixed

The register in question is used in a logd:
logd $zero $r34346 $r34345 $r34347

Indeed, $r34345 is not initialized in the intermediate assembly (pre-allocation). I'm looking into why that's the case.

The problematic log is in
    require(add_liquidity || (amount < position.liquidity || amount == position.liquidity), FullMathError::Overflow);

in _update_position(..) in pool.sw. Haven't figured out why yet.

I reduce the problem to
contract;

pub enum FullMathError {
    Overflow: (),
    DivisionByZero: (),
}

use std::u128::*;

abi ConcentratedLiquidityPool {
    fn collect();
}

impl ConcentratedLiquidityPool for Contract {
    fn collect() {
        let amount = U128 {
            upper: 0,
            lower: 0,
        };
        let add_liquidity = false;
        require(add_liquidity || (amount < U128::from((0, 0)) || amount == U128::from((0, 0))), FullMathError::Overflow);
    }
}

fails with:
error: Internal compiler error: Program erroneously uses uninitialized virtual registers: $r25

Will take a look as soon as I can. cc @otrho


[BUG] eww looks for xml config only.

Checklist before submitting an issue

[X] I have searched through the existing closed and open issues for eww and made sure this is not a duplicate
[X] I have specifically verified that this bug is not a common user error
[X] I am providing as much relevant information as I am able to in this bug report (Minimal config to reproduce the issue for example, if applicable)

Description of the bug
eww logs

┏━━━━━━━━━━━━━━━━━━━━━━━┓
┃Initializing eww daemon┃
┗━━━━━━━━━━━━━━━━━━━━━━━┛

 2022-11-28T05:47:55.650Z INFO  eww::server > Loading paths: config-dir: /home/fahim/.config/eww, ipc-socket: /run/user/1000/eww-server_L2hvbWUvZmFoaW0vLmNvbmZpZy9ld3c=, log-file: /home/fahim/.cache/eww_L2hvbWUvZmFoaW0vLmNvbmZpZy9ld3c=.log
 2022-11-28T05:47:55.659Z ERROR eww         > Failed to load eww config file /home/fahim/.config/eww/eww.xml

As the eww.yuck file exists in the directory, shouldn't it look for that also? I'm using the wayland build.
Reproducing the issue
No response
Expected behaviour
No response
Additional context
No response

Eww hasn't supported xml for a loooong while now, I assume you're just on a very old version. Try reinstalling or building the latest version or eww!

Eww hasn't supported xml for a loooong while now, I assume you're just on a very old version. Try reinstalling or building the latest version or eww!

well, i did installed the latest versin. tried installing manually and from aur also, still getting this.


Error when running cleanup on version 0.24.0

Noticed when using net-sim tools to provision nodes. When the topology is "destroyed", net-sim tools will run the  standard cleanup command(--cleanup). CL will then generate the following error. TIA!
(venv) juliopdx@containerlab:~/repos/cl-nst-demo/priv$ time netlab down server.yml

Step 1: Checking virtualization provider installation
============================================================
.. all tests succeeded, moving on

Step 2: stopping the lab
============================================================
INFO[0000] Parsing & checking topology file: clab.yml
ERRO[0000] error deleting lab directory: unlinkat /home/juliopdx/repos/cl-nst-demo/priv/clab-ebgp/B/flash: directory not empty
INFO[0000] Destroying lab: ebgp
INFO[0001] Removed container: clab-ebgp-B
INFO[0002] Removed container: clab-ebgp-A
INFO[0002] Removed container: clab-ebgp-E
INFO[0002] Removed container: clab-ebgp-F
INFO[0002] Removed container: clab-ebgp-C
INFO[0002] Removed container: clab-ebgp-G
INFO[0002] Removed container: clab-ebgp-D
INFO[0002] Removing containerlab host entries from /etc/hosts file

thanks @JulioPDX
indeed, it seems one feature added in 0.24 broke the deletion sequence in certain cases
will check that

@JulioPDX do you mind trying the fix?
You can download the fixed binary by running the following command
docker run --rm -v $(pwd):/workspace ghcr.io/oras-project/oras:v0.12.0 pull ttl.sh/clab-7da5a5e0:1d

this will add ./containerlab binary in your current directory
you then can move it over to /usr/bin for it to replace the old one
mv ./containerlab /usr/bin

Actually we rushed with making 0.24.1 available with some critical fix. So I packed this one into it as well
Hope it will work fine now

Works great! Thank you


Spyder

Installation Guide

Go to Tools -> Preferences
Then Appearance -> Create new scheme
Specify the scheme of the text editor by pasting the following colors into the correct speculation below:

Text:
Normal text: #f8f8f2
Comment: #6272a4
String: #f1fa8c (yellow)
Number: #bd93f9 (purple)
Keyword: #ff79c6 (pink)
Builtin: #8be9fd (cyan)
Definition: #50fa7b (green)
instance #bd93f9 (again purple)
Highlight:
Current Cell and line: #44475a
Occurance: #ffb86c (orange)
Matched parens: #50fa7b (green)
Unmatched parens: #ff5555 (red)
Link: #bd93f9 (purple)
Background:
Background and Side areas: #282a36

Heya! If you're looking to get your theme added as a additional Dracula org sub-theme, you'll want to create a new repo based off the Dracula theme template and then use that as your link here to have something to request for transfer into the org.
The standardized theme repo helps keeps things consistent across the (many) ports of Dracula themes. It also helps to have (at least one) screenshot of the theme, so people have an idea of what it looks like without having to configure it all just to look; same goes for the install section too.
Think you could fork the template repo and update accordingly with your theme's appropriate info and then update this issue, so this issue has a better chance of making it in to the official org? Thanks!

... and if this for the Spyder IDE, Dracula actually already has an official repo for that here:

https://github.com/dracula/spyder-dracula

If this is the same spyder, I'd suggest opening an issue in that repository, to provide feedback/recommendations/changes on the theming there, if any.
Otherwise, this issue can be closed. Thanks!

It's live now!
https://draculatheme.com/spyder-ide
https://github.com/dracula/spyder-ide


Suggestion: Give the Dimensional Transceiver a slight RF/t buff.

Currently the Dimensional Transceiver can transfer 20,480 RF/t per direction. That's usually enough for most applications, but it falls slightly short of being able tu supply a Speed 3 Ender Quarry from ExUtils, which consumes roughly 24,000 RF/t. I think an increase to either 25k or 32k would do the Transceiver good in terms of popularity. I rarely see people using it on your usual popular Let's Plays and streams, everybody runs straight to TE Tesseracts. (Note: I'm not advocating infinite everything here, just giving it a bit more utility.)
And yes, I do know that it's configurable, but defaults matter. Most packs go with the default values, and when I run a server with a FTB pack for example I can hardly make all my users all change their configs manually. (In that light, having the client get the values from the server instead of relying on their own settings would also be great.)

Client taking values from the server is part of EnderCore, problem is the EnderIO config is so expansive it would take me hours to make the switch. I will get to it eventually. Meanwhile I think 20k is a perfectly reasonable default.


Kubernetes workers have not joined the cluster

I'm running Proxmox VE 8.03 with 4x Ubuntu 22.04 VMs, 1x master (control-plane) and 3x workers
Using release 2023.10.0 and after running task ansible:install  successfully and the kubectl command
kubectl get nodes -o wide
I got the following output:
NAME            STATUS   ROLES                       AGE   VERSION        INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
control-plane   Ready    control-plane,etcd,master   30m   v1.28.2+k3s1   <IP_ADDRESS>   <none>        Ubuntu 22.04.3 LTS   5.15.0-86-generic   containerd://1.7.6-k3s1

The worker node did not join the cluster as intended. I check the status of the k3s service on a worker and noticed that it failed to get the CA certs.
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 6443 (#0)
* ALPN: offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Request CERT (13):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Certificate (11):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: O=k3s; CN=k3s
*  start date: Oct  8 06:06:36 2023 GMT
*  expire date: Oct  7 06:06:36 2024 GMT
*  issuer: CN=k3s-server-ca@1696745196
*  SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
* using HTTP/2
* h2 [:method: GET]
* h2 [:scheme: https]
* h2 [:authority: <IP_ADDRESS>:6443]
* h2 [:path: /cacerts]
* h2 [user-agent: curl/8.1.2]
* h2 [accept: */*]
* Using Stream ID: 1 (easy handle 0x15380da00)
> GET /cacerts HTTP/2
> Host: <IP_ADDRESS>:6443
> User-Agent: curl/8.1.2
> Accept: */*
>
< HTTP/2 200
< content-type: text/plain
< content-length: 566
< date: Sun, 08 Oct 2023 15:49:25 GMT
<
-----BEGIN CERTIFICATE-----
redacted
-----END CERTIFICATE-----
* Connection #0 to host <IP_ADDRESS> left intact

After doing a bit of research on my own I came across this post on assign multiple ip to VM using cloud-init
. I'm using a Single Master in my setup given my previous experience with a 3 quorum master and Etcd where my cluster would eventually fail days after.
Has anyone experience my current issue using Proxmox and assigning multiple IPs. Clearly it works as I can communicate from my network to the newly assigned IP, but the workers fail to do so.
I'm still researching.

Fixed. This was a networking issue.

Fixed. This was a networking issue.

What was the fix?


unable to find bean reference csvCreator while initialising

I'm submitting a ...  (check one with "x")
[X] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/ceolter/ag-grid/blob/master/CONTRIBUTING.md#question

Current behavior
agGrid is throwing exception errors when running IE:
ag-Grid: unable to find bean reference csvCreator while initialising GridApi
ag-Grid: unable to find bean reference csvCreator while initialising  Object
ag-Grid: unable to find bean reference csvCreator while initialising GridPanel
ag-Grid: unable to find bean reference csvCreator while initialising BeanStub
ag-Grid: unable to find bean reference csvCreator while initialising  Object
ag-Grid: unable to find bean reference csvCreator while initialising ClipboardService
ag-Grid: unable to find bean reference csvCreator while initialising  Object
Tested with Chrome (59.0.3071.115 64-bit) and not getting these errors.
Expected behavior
agGrid should not be throwing these errors. ;-)
Minimal reproduction of the problem with instructions
STEPS TO REPRODUCE:
Using IE 11 run in developer mode (F12) and navigate to
https://www.ag-grid.com/javascript-grid-export/?framework=all#gsc.tab=0
You will see multiple errors in the console log
What is the motivation / use case for changing the behavior?
agGrid should not be throwing any errors.
Please tell us about your environment:
Windows 7, IE 11

ag-Grid version: X.X.X
ag-Grid v12.0

Browser:
"Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; rv:11.0) like Gecko"

Language: ES5

This was fixed in our latest release 12.0.1

Bug was fixed in Chrome, but still reprodused for me in IE11.

I get the same error in Chrome/FireFox/IE11 while using ag-grid 12.0.1
I use ag-grid in an angular web application (ag-grid-angular 12.0.0), and use angular-cli for building. The error is only thrown for a production build (ng build --prod) but not for a development build (ng build).

im getting this one ag-Grid: unable to find bean reference frameworkOverrides while initialising BeanStub

@luis-aranda I was getting the same issue, for me it was happening because i didn't clear the gridApi reference in my componentWillUnmount. So i was using gridApi even after ag-grid was unmounted.

@luis-aranda I was getting the same issue, for me it was happening because i didn't clear the gridApi reference in my componentWillUnmount. So i was using gridApi even after ag-grid was unmounted.

Can you please elaborate on that ? I am experiencing exactly the same issue!
 ag-Grid: unable to find bean reference frameworkOverrides while initialising BeanStub
@atfzl Do you mind showing how did you de-reference it in componentWillUnmount

This is what i did:
class Table extends React.Component {
  onGridReady = (api) => {
    this.gridApi = api;
  }

  componentWillUnmount() {
    this.gridApi = undefined;
  }

  render() {
     return <AgGridReact
                   onGridReady={event => {
                     this.onGridReady(event.api);
                   }}
                />;
  }
}

Thank you that did not help me though. I am having same issues as @luis-aranda

I also got the same error as @luis-aranda followed by another error -
TypeError: Cannot read property 'addEventListenerOutsideAngular' of null
Have you guys find any solutions?

@ankushjamdagani
Unfortunately no, I have been struggling with these error for a month or so. Very frustrating as we are enterprise clients and pay for this software :(
For us the error always gets triggered when we use setFilterModel() on columnApi.
But it seems that they fixed it here https://www.ag-grid.com/ag-grid-changelog/?fixVersion=21.2.0
AG-3246 but it still is happening.
@makinggoodsoftware Any ideas why ?

@ievgenk
I have the same issue, using the same ag-grid version.
My workaround was:
if (!($event.api as any).gridCore.destroyed) {
              $event.columnApi.setColumnState([...]);
            }

In my case, the root cause of this error was that I am trying to use the API of grid which has been unmounted.
And my solution was whenever grid is remounted again API object has to replaced.
onGridReady(params) { this.gridApi = params.api; }


Optimize websocket import to not compile tokio

This is a small change that makes sure to only compile the necessary bits of the websocket crate.

@1c3t3a The cargo.toml moved into the engineio directory (due to crate split)

Yep, I saw that. Should be fine now.


How to use multiple GPUs?

I have two GPUs in my machine. Is there a way to use multiple gpus for training? I can see training is not fully utilizing the GPU memory as well

Hey, parallel GPU usage should be a simple addition by wrapping the generator and discriminator(s) in a DataParallel module, for example in Image2Image.py. Do you want to make this addition yourself and then submit a pull request so I can add it to the codebase?
For GPU utilisation, it's true that some training loops are a bit GPU-starved because of slow data loading. This only applies to some tasks I think though - which one are you trying? We could investigate together how to speed things up in this regard.


Control flow for element access expressions

Draft version, just want to see how performance is. Code is copied from property access path and needs to be de-duped. Previously this wasn't being done as far as I remember.
Fixes #28081

@typescript-bot run perf

@typescript-bot perf test this

Hm, no change in perf? That can't be right. I'm going to add a micro-benchmark to the perf test suite and report its results.

I just wrote a stress test for this code. It's of the form:
function stress(o: { [s: string]: "aa" | "ab" | "ac" | ... }) {
  o["x"] = o["z"] === "de" ? "ff" : "ip";
  // many more lines like this...
  return [o['x'], o['y'], o['z']] as const
}

It scales quite well; check time at 100 lines was 0.28 seconds, at 1000 lines it was 0.5 and at 10,000 it was 0.6. Memory increases from 128 MB to 157 MB which is not bad.
What didn't work as well was code like this:
function stress(o: { [s: string]: "aa" | "ab" | "ac" | ... }, x: string, y: string, z: string) {
  o[x] = o[z] === "de" ? "ff" : "ip";
  // many more lines like this...
  return [o[x], o[y], o[z]] as const
}

It scales linearly or a little worse, up to 5.5 seconds and 178 MB for 16,000 lines.
I'll see if I can get a newer code base or two added to our performance suite although I'm not sure what is a good test for this change.

Update: with more data points, it's pretty clear that the second example scales exponentially, not linearly.

Well, this PR is as ready to go as it'll ever be. Any opinions @ahejlsberg?
@rbuckton any idea for good code bases that would show off real-world perf? My synthetic benchmark is intentionally unrepresentative.

From the brief discussion in the 6/28 design meeting (#32357), @rbuckton raised the question of performance on a stress test, which is a variant of the first where identifiers of literal type are substituted for literals. I expect performance to be about the same.
function stress(o: { [s: string]: "aa" | "ab" | "ac" | ... }, x: 'x', y: 'y', z: 'z') {
  o[x] = o[z] === "de" ? "ff" : "ip";
  // many more lines like this...
  return [o[x], o[y], o[z]] as const
}

I did some additional performance investigation, using the same synthetic stress test as above with 3 variants:
Variant 1 - Literal, Narrowing
function stress(o: { [s: string]: "aa" | "ab" | "ac" | ... }) {
  o["x"] = o["z"] === "de" ? "ff" : "ip";
  // many more lines like this...
  return [o['x'], o['y'], o['z']] as const
}

Variant 2 - Primitive, Non-Narrowing
function stress(o: { [s: string]: "aa" | "ab" | "ac" | ... }, x: string, y: string, z: string) {
  o[x] = o[z] === "de" ? "ff" : "ip";
  // many more lines like this...
  return [o[x], o[y], o[z]] as const
}

Variant 3 - Literal Type, Non-Narrowing
function stress(o: { [s: string]: "aa" | "ab" | "ac" | ... }, x: 'x', y: 'y', z: 'z') {
  o[x] = o[z] === "de" ? "ff" : "ip";
  // many more lines like this...
  return [o[x], o[y], o[z]] as const
}

The most important result is that in real-world scenarios, this change never makes a significant difference in compile time: the second two variants don't actually create flow nodes in the binder, so control flow quits early as there's nothing to analyze. This means that no narrowing happens, of course. Inserting flow nodes only for element accesses with literal access expressions was a performance decision from quite some time ago. As far as I know, we have no reason to revisit that decision.
The first variant does narrow, but only 1000 lines. After that, control flow throws an error "The containing function or module body is too large for control flow analysis."
So I cut the stress tests down to 1000 lines and did a before/after comparison of them:

As you can see, the worst case is less than 50% increase per very-long function. I think that's acceptable given the improvement in narrowing for the common case.


botservice extension never seems to be able to provision MS Apps.

Extension name (the extension in question)
botservice
Description of issue (in as much detail as possible)
Regardless of the account (corporate AD account, ADFS account, microsoft account) the CLI extension can never provision a MS App Id & password in order to create a bot.
I can confirm that I can get a token because I've looked into the source code of the extension and used the same details to get a code. The access code appears to be valid but on any call to https://dev.botframework.com/api/botApp/provisionConvergedApp returns with a 403 forbidden and never succeeds. As you can imagine this stops bot channel registrations being created automatically, which is exactly what we want to do with the cli.
I can provide any more details needed to debug this.
Thanks,
James

A quick update; if I edit the extension to use 72f988bf-86f1-41af-91ab-2d7cd011db47 as the tenantId (the one that the Azure Portal uses when calling the same url) it works.


SPFx 1.15 listview extension issue

Target SharePoint environment
SharePoint Online
What SharePoint development model, framework, SDK or API is this about?
SharePoint Add-ins
Developer environment
Windows
What browser(s) / client(s) have you tested

[ ] 💥 Internet Explorer
[X] 💥 Microsoft Edge
[ ] 💥 Google Chrome
[X] 💥 FireFox
[ ] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[ ] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details

browser version latest
SPFx version 1.15
Node.js version v16.16.0
etc

Describe the bug / error
Just tried to create a listview extension (commandset) and found out that the visibility of the button does not work as it used to (e.g. in 1.14). I do not believe that the substitution of the event (from
onListViewUpdated to listViewStateChangedEvent) is to blame, instead it gives me the impression that the .visible property of the command, does not work in 1.15
No need to post a sample code: One may try it with the code that results from the scuffolding - simply run it, and experiment by selecting and de-selecting a document in a document library. The visibility state of the "COMMAND_1" is not normal
Anyone who has experienced this issue?
Steps to reproduce

Create a new application customiser (commandset)
run "gulp serve"
select and de-select documents and watch the visibility of COMMAND_1

The behaviour is not consistent- the button on the ribbon, appears with 0 selected items and hides with a document selected
Expected behavior
COMMAND_1 should be visible ONLY if one decument is selected

Noticed the same thing... I found you need to tell SPFx that the view should be refreshed if you make changes to your buttons: this.raiseOnChange();
This is what I put in my course:
private _onListViewStateChanged = (args: ListViewStateChangedEventArgs): void => {

  // only update visibility of the selected rows changed
  if (args.stateChanges !== ListViewAccessorStateChanges.SelectedRows) {
    return;
  }

  // if exactly one / two items selected, show correct button
  const oneItemSelected: Command = this.tryGetCommand('ONE_ITEM_SELECTED');
  oneItemSelected.visible = this.context.listView.selectedRows!.length === 1;

  const twoItemSelected: Command = this.tryGetCommand('TWO_ITEM_SELECTED');
  twoItemSelected.visible = this.context.listView.selectedRows!.length > 1;

  // update command bars
  this.raiseOnChange();
}

@andrewconnell is correct. To apply the changes right away you need to call this.raiseOnChange().
Without this call the changes will be applied when the list will be repainted based on internal logic and user interactions.
We will uncomment this call by default to avoid confusion.

Thank you both. May I suggest that the scuffolding (in future versions) adds this code - inexperienced users (like me !!!) are expecting that the code produced should work without intevening manually.
Thanks again, I will give it a try and let you know

May I suggest that the scuffolding (in future versions) adds this code - inexperienced users (like me !!!) are expecting that the code produced should work without intevening manually.

It isn't just inexperienced users @acreff... seasoned ones too! 🤪
I've been using SPFx since before it was GA in 2017 and it stumped me when I was upgrading all the sample projects in my course two weeks ago. It's not an obvious behavior change from prior versions of SPFx.


docs: ternary relationships

Added Ternary relationships to docs.

Coverage remained the same at 96.057% when pulling 74c43b781870da194d5346848c0d6f6b32c07d3a on rafaelkallis:master into 604d1825007b9e03141efceaf3291b92460e3e2e on Vincit:master.

Coverage remained the same at 96.057% when pulling 74c43b781870da194d5346848c0d6f6b32c07d3a on rafaelkallis:master into 604d1825007b9e03141efceaf3291b92460e3e2e on Vincit:master.

Thanks for the feedback, updated the PR.

Coverage remained the same at 96.057% when pulling f667145c135847755611c5a156d75302004476fb on rafaelkallis:master into 604d1825007b9e03141efceaf3291b92460e3e2e on Vincit:master.

Coverage remained the same at 96.057% when pulling f667145c135847755611c5a156d75302004476fb on rafaelkallis:master into 604d1825007b9e03141efceaf3291b92460e3e2e on Vincit:master.

Coverage remained the same at 96.057% when pulling f667145c135847755611c5a156d75302004476fb on rafaelkallis:master into 604d1825007b9e03141efceaf3291b92460e3e2e on Vincit:master.


Breadcrumbs

There is already feature request available for breadcrumbs feature. We should close one.
https://github.com/Teradata/covalent/issues/1053

@viccsjain I will close out this issue and use #1053 since it has more history on it.


Remove 'IsIPv6Cluster' function

What this PR does / why we need it:
We use IsIPv6Cluster in tests that use ISCSI PVC's and at probes tests
this function is no longer needed, this PR removes it.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

NONE

/cc @AlonaKaplan

Mostly, what I don't understand is in 6e43c39 .
Instead of 'skipping' always, we now skip in each test. I'm aware you do this because you gotta check the presence of an IPv6 addr on the ISCSI pod.
I personally would rather keep the skips in the BeforeEach part, since it does the same with less code ... You could rebase this PR #4139 and use the libnet.IsClusterDualStack function to know if you're expected to skip or not.

Keeping Skip at before each will skip the test for dual stack clusters and we do want to run those tests on dual stack lane(s).
Since CreateISCSITargetPod returns podIP (at the current state) on dual stack and single ipv4 clusters it will always be IPv4 and the test will run, we should skip those tests only if CreateISCSITargetPod returns IPv6 address.

Changes:

Rebased
Use cirros VM's in probe test (test id's 1200 and 1202)

Rebase please, lets see lanes pass

Mostly, what I don't understand is in 6e43c39 .
Instead of 'skipping' always, we now skip in each test. I'm aware you do this because you gotta check the presence of an IPv6 addr on the ISCSI pod.
I personally would rather keep the skips in the BeforeEach part, since it does the same with less code ... You could rebase this PR #4139 and use the libnet.IsClusterDualStack function to know if you're expected to skip or not.

Keeping Skip at before each will skip the test for dual stack clusters and we do want to run those tests on dual stack lane(s).
Since CreateISCSITargetPod returns podIP (at the current state) on dual stack and single ipv4 clusters it will always be IPv4 and the test will run, we should skip those tests only if CreateISCSITargetPod returns IPv6 address.

But you don't need to check that from the CreateISCSITargetPod pod - that exact same behavior will happen if you check the podIP on a virt-handler. Personally, I'd prefer if you'd do something like https://github.com/kubevirt/kubevirt/blob/master/tests/libnet/cluster.go#L15 but only getting the podIP (or assuring you having a single IP).

CreateISCSITargetPod

Mostly, what I don't understand is in 6e43c39 .
Instead of 'skipping' always, we now skip in each test. I'm aware you do this because you gotta check the presence of an IPv6 addr on the ISCSI pod.
I personally would rather keep the skips in the BeforeEach part, since it does the same with less code ... You could rebase this PR #4139 and use the libnet.IsClusterDualStack function to know if you're expected to skip or not.

Keeping Skip at before each will skip the test for dual stack clusters and we do want to run those tests on dual stack lane(s).
Since CreateISCSITargetPod returns podIP (at the current state) on dual stack and single ipv4 clusters it will always be IPv4 and the test will run, we should skip those tests only if CreateISCSITargetPod returns IPv6 address.

But you don't need to check that from the CreateISCSITargetPod pod - that exact same behavior will happen if you check the podIP on a virt-handler. Personally, I'd prefer if you'd do something like https://github.com/kubevirt/kubevirt/blob/master/tests/libnet/cluster.go#L15 but only getting the podIP (or assuring you having a single IP).

So what you suggest is to check if the cluster is dual-stack using the function you mentioned before the tests starts?
BTW this is how we skip those test before using isIPv6Cluster

CreateISCSITargetPod

Mostly, what I don't understand is in 6e43c39 .
Instead of 'skipping' always, we now skip in each test. I'm aware you do this because you gotta check the presence of an IPv6 addr on the ISCSI pod.
I personally would rather keep the skips in the BeforeEach part, since it does the same with less code ... You could rebase this PR #4139 and use the libnet.IsClusterDualStack function to know if you're expected to skip or not.

Keeping Skip at before each will skip the test for dual stack clusters and we do want to run those tests on dual stack lane(s).
Since CreateISCSITargetPod returns podIP (at the current state) on dual stack and single ipv4 clusters it will always be IPv4 and the test will run, we should skip those tests only if CreateISCSITargetPod returns IPv6 address.

But you don't need to check that from the CreateISCSITargetPod pod - that exact same behavior will happen if you check the podIP on a virt-handler. Personally, I'd prefer if you'd do something like https://github.com/kubevirt/kubevirt/blob/master/tests/libnet/cluster.go#L15 but only getting the podIP (or assuring you having a single IP).

So what you suggest is to check if the cluster is dual-stack using the function you mentioned before the tests starts?
BTW this is how we skip those test before using isIPv6Cluster

CreateISCSITargetPod

Mostly, what I don't understand is in 6e43c39 .
Instead of 'skipping' always, we now skip in each test. I'm aware you do this because you gotta check the presence of an IPv6 addr on the ISCSI pod.
I personally would rather keep the skips in the BeforeEach part, since it does the same with less code ... You could rebase this PR #4139 and use the libnet.IsClusterDualStack function to know if you're expected to skip or not.

Keeping Skip at before each will skip the test for dual stack clusters and we do want to run those tests on dual stack lane(s).
Since CreateISCSITargetPod returns podIP (at the current state) on dual stack and single ipv4 clusters it will always be IPv4 and the test will run, we should skip those tests only if CreateISCSITargetPod returns IPv6 address.

But you don't need to check that from the CreateISCSITargetPod pod - that exact same behavior will happen if you check the podIP on a virt-handler. Personally, I'd prefer if you'd do something like https://github.com/kubevirt/kubevirt/blob/master/tests/libnet/cluster.go#L15 but only getting the podIP (or assuring you having a single IP).

So what you suggest is to check if the cluster is dual-stack using the function you mentioned before the tests starts?
BTW this is how we skip those test before using isIPv6Cluster

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

This PR scope is isIPv6Cluster function as preparation for removing kind-k8s-1.17-ipv6 lane.
The function  SkipIscsiPVCWithIPv6Test is not about checking if the cluster is dual stack, I was asked to extract that check to a function.
I do follow the principals you mentioned by creating such function which is SkipIscsiPVCWithIPv6Test
the other way to skip those tests is by using IsDualStackCluster which you dont want.
My scenario is not skip if pure IPv6, its about skipping tests that use ISCSI PV configured with IPv6.
In all tests that use ISCSI PV's, the pattern is creating iscsi target pod, based on that pod IP address
create PV and PVC.
In case that 'CreateISCSITargetPod' returned IPv6 we need to skip those tests (#4150)
I do not adapt tests that use CreateISCSITargetPod to dual stack because it wont work for the IPv6 part
this is why skipping if the iscsi target pod is IPv6  may look awkward to you

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

This PR scope is isIPv6Cluster function as preparation for removing kind-k8s-1.17-ipv6 lane.
The function SkipIscsiPVCWithIPv6Test is not about checking if the cluster is dual stack, I was asked to extract that check to a function.
I do follow the principals you mentioned by creating such function which is SkipIscsiPVCWithIPv6Test
the other way to skip those tests is by using IsDualStackCluster which you dont want.
My scenario is not skip if pure IPv6, its about skipping tests that use ISCSI PV configured with IPv6.
In all tests that use ISCSI PV's, the pattern is creating iscsi target pod, based on that pod IP address
create PV and PVC.

My point is that if virt-handler has a single ipv6 address, then the pod you're creating for the ISCSI pod will also have a single IPv6 addres. Thus, you can perform the skip on a single place, instead of having to create the pod, and only afterwards skip the test.
Other than requiring less code, it reaches the same conclusion faster - your proposed solution does meaningless work on an ipv6 cluster (ok, we want to remove that lane, but still .... ) since it creates a pod, then skips the test.

In case that 'CreateISCSITargetPod' returned IPv6 we need to skip those tests (#4150)
I do not adapt tests that use CreateISCSITargetPod to dual stack because it wont work for the IPv6 part
this is why skipping if the iscsi target pod is IPv6 may look awkward to you

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

This PR scope is isIPv6Cluster function as preparation for removing kind-k8s-1.17-ipv6 lane.
The function SkipIscsiPVCWithIPv6Test is not about checking if the cluster is dual stack, I was asked to extract that check to a function.
I do follow the principals you mentioned by creating such function which is SkipIscsiPVCWithIPv6Test
the other way to skip those tests is by using IsDualStackCluster which you dont want.
My scenario is not skip if pure IPv6, its about skipping tests that use ISCSI PV configured with IPv6.
In all tests that use ISCSI PV's, the pattern is creating iscsi target pod, based on that pod IP address
create PV and PVC.

My point is that if virt-handler has a single ipv6 address, then the pod you're creating for the ISCSI pod will also have a single IPv6 addres. Thus, you can perform the skip on a single place, instead of having to create the pod, and only afterwards skip the test.
Other than requiring less code, it reaches the same conclusion faster - your proposed solution does meaningless work on an ipv6 cluster (ok, we want to remove that lane, but still .... ) since it creates a pod, then skips the test.

In case that 'CreateISCSITargetPod' returned IPv6 we need to skip those tests (#4150)
I do not adapt tests that use CreateISCSITargetPod to dual stack because it wont work for the IPv6 part
this is why skipping if the iscsi target pod is IPv6 may look awkward to you

Got it, I can drop that skip and the test will work for both single stack IPv6 and dual stack,
by using IPv4 for those PV tests but thats fine now that the context name changed we have some kind of documentation.
How is that?
(@AlonaKaplan @oshoval  I guess this is what you meant in other discussion)

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

This PR scope is isIPv6Cluster function as preparation for removing kind-k8s-1.17-ipv6 lane.
The function SkipIscsiPVCWithIPv6Test is not about checking if the cluster is dual stack, I was asked to extract that check to a function.
I do follow the principals you mentioned by creating such function which is SkipIscsiPVCWithIPv6Test
the other way to skip those tests is by using IsDualStackCluster which you dont want.
My scenario is not skip if pure IPv6, its about skipping tests that use ISCSI PV configured with IPv6.
In all tests that use ISCSI PV's, the pattern is creating iscsi target pod, based on that pod IP address
create PV and PVC.

My point is that if virt-handler has a single ipv6 address, then the pod you're creating for the ISCSI pod will also have a single IPv6 addres. Thus, you can perform the skip on a single place, instead of having to create the pod, and only afterwards skip the test.
Other than requiring less code, it reaches the same conclusion faster - your proposed solution does meaningless work on an ipv6 cluster (ok, we want to remove that lane, but still .... ) since it creates a pod, then skips the test.

In case that 'CreateISCSITargetPod' returned IPv6 we need to skip those tests (#4150)
I do not adapt tests that use CreateISCSITargetPod to dual stack because it wont work for the IPv6 part
this is why skipping if the iscsi target pod is IPv6 may look awkward to you

Got it, I can drop that skip and the test will work for both single stack IPv6 and dual stack,
by using IPv4 for those PV tests but thats fine now that the context name changed we have some kind of documentation.
How is that?
(@AlonaKaplan @oshoval I guess this is what you meant in other discussion)

but on kind you dont have ipv4 so how would it work?

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

This PR scope is isIPv6Cluster function as preparation for removing kind-k8s-1.17-ipv6 lane.
The function SkipIscsiPVCWithIPv6Test is not about checking if the cluster is dual stack, I was asked to extract that check to a function.
I do follow the principals you mentioned by creating such function which is SkipIscsiPVCWithIPv6Test
the other way to skip those tests is by using IsDualStackCluster which you dont want.
My scenario is not skip if pure IPv6, its about skipping tests that use ISCSI PV configured with IPv6.
In all tests that use ISCSI PV's, the pattern is creating iscsi target pod, based on that pod IP address
create PV and PVC.

My point is that if virt-handler has a single ipv6 address, then the pod you're creating for the ISCSI pod will also have a single IPv6 addres. Thus, you can perform the skip on a single place, instead of having to create the pod, and only afterwards skip the test.
Other than requiring less code, it reaches the same conclusion faster - your proposed solution does meaningless work on an ipv6 cluster (ok, we want to remove that lane, but still .... ) since it creates a pod, then skips the test.

In case that 'CreateISCSITargetPod' returned IPv6 we need to skip those tests (#4150)
I do not adapt tests that use CreateISCSITargetPod to dual stack because it wont work for the IPv6 part
this is why skipping if the iscsi target pod is IPv6 may look awkward to you

Got it, I can drop that skip and the test will work for both single stack IPv6 and dual stack,
by using IPv4 for those PV tests but thats fine now that the context name changed we have some kind of documentation.
How is that?
(@AlonaKaplan @oshoval I guess this is what you meant in other discussion)

but on kind you dont have ipv4 so how would it work?

It wont this is why we need the skip for now :man_shrugging:

I may have lost the scope of this PR, please keep me honest; you're writing a function that checks if the cluster is deploying using pure IPv6 configuration (no IPv4) - that doesn't check the dns service (what we currently have); it checks instead the network configuration of a pod you've created.
I'm saying that you don't need to check that pod - any pod on the system will give you the same information: virt-handler for instance.
And no, I don't want you to use that function; I want you to follow those principles, and write one suited to your scenario - which is to skip on 'pure' IPv6.
Did I somehow miss-understand what you're attempting to do?

This PR scope is isIPv6Cluster function as preparation for removing kind-k8s-1.17-ipv6 lane.
The function SkipIscsiPVCWithIPv6Test is not about checking if the cluster is dual stack, I was asked to extract that check to a function.
I do follow the principals you mentioned by creating such function which is SkipIscsiPVCWithIPv6Test
the other way to skip those tests is by using IsDualStackCluster which you dont want.
My scenario is not skip if pure IPv6, its about skipping tests that use ISCSI PV configured with IPv6.
In all tests that use ISCSI PV's, the pattern is creating iscsi target pod, based on that pod IP address
create PV and PVC.

My point is that if virt-handler has a single ipv6 address, then the pod you're creating for the ISCSI pod will also have a single IPv6 addres. Thus, you can perform the skip on a single place, instead of having to create the pod, and only afterwards skip the test.
Other than requiring less code, it reaches the same conclusion faster - your proposed solution does meaningless work on an ipv6 cluster (ok, we want to remove that lane, but still .... ) since it creates a pod, then skips the test.

In case that 'CreateISCSITargetPod' returned IPv6 we need to skip those tests (#4150)
I do not adapt tests that use CreateISCSITargetPod to dual stack because it wont work for the IPv6 part
this is why skipping if the iscsi target pod is IPv6 may look awkward to you

Got it, I can drop that skip and the test will work for both single stack IPv6 and dual stack,
by using IPv4 for those PV tests but thats fine now that the context name changed we have some kind of documentation.
How is that?
(@AlonaKaplan @oshoval I guess this is what you meant in other discussion)

but on kind you dont have ipv4 so how would it work?

It wont this is why we need the skip for now

of course but again i saw "Got it, I can drop that skip" so it raised an alert.

@ormergi: PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@ormergi: PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Rebsed
@AlonaKaplan

@ormergi please notice https://github.com/kubevirt/kubevirt/pull/4156 was merged

Rebase only

Changes:

Removed skips from ISCSI PV tests that checks if the cluster is IPv6 and related commits
Align with CreateNFSTargetPod:

Changed CreateISCSITargetPod to return pod objects instead of IP address
Make use of libnet.GetPodIpByFamily

Changed tests title to specify using ISCSI target pod IPv4 address

/retest

/approve
/hold please just fix the small comment regarding one of the commit messages. Once done, you can remove the hold.

/approve
/hold please just fix the small comment regarding one of the commit messages. Once done, you can remove the hold.

Thanks
/unhold

Thanks for making the changes.
/lgtm
Now let's wait for greens.

Thanks :)


File does not found Printing.vue

Hi @jbesw and @benjamin_l_s, I just found this issue.
In this code, it say to import Printing.vue
frontends/vue-barista-app/src/App.vue
But seems I cannot find it on component folder. would you like to check this first?
=================
Second, I saw this repo is quite different when deploy using tutorial app.
Reference: https://workshop.serverlesscoffee.com/0-setup/2-self-hosted.html
Is this because application has modified?
Thanks

Hi @testerslol123 , the Printing component contains some code that cannot be shared publicly, at least at the moment. As a workaround, you can remove the import and associated lines. The workshop will work without that component.


circular reference when JSON.stringify an element with attached event listener

zone.js might break code where an object has an HTMLElement inside and another code tries to JSON.stringify it.
Without zone.js
HTMLElement is serialized to {} by JSON.stringify:

With zone.js 0.8.5 and an event attached to the element

@sod, thank you for posting the issue, I will make a PR to fix this one.


Question about distributed query exection in Thanos

I recently did a proof of concept for distributed query execution using the Thanos promql-engine in Cortex. In my POC, I  followed the methods outlined in https://howqueryengineswork.com/13-distributed-query.html.
How did the POC work?

I'll try to outline at a high level how the POC worked.

An optimizer embedded in the query-frontend is aware of how the data in the storage layer (ingesters and store-gateways) are partitioned. The optimizer creates an optimized query plan.
The query-frontend then serializes the query plan into protobuf format and sends it to query-scheduler
The query-scheduler would split the plan into multiple query plan fragments.
The query-scheduler assigns the query plan fragments to different queriers.
One of the querier will be assigned the root fragment and it orchestrates the query execution.

It calls Series() and Next() on the child queriers and streams the series and the step vectors directly from the child queriers
Once the query execution is complete, it directly responds with the results back to the query-frontend

Query plan
Original query: count({__name__=~".+"})

Fragmented plan
Each of the fragments are denoted in a different color.

Comparing to the Thanos approach
The original proposal in Thanos for distributed query execution tackles this problem in a different way:

Instead of serializing the plan, it opts for query rewrites.
Instead of streaming from child queriers, the "central" querier read the fully materialized query results from the child queriers.

Questions

Were there any particular tradeoffs considered opting for query-rewrites instead of serializing and fragmenting the plan?
Similarly, why did Thanos opt for fully materializing the query results in the child queriers?
Would Thanos be open to consider the serialization and fragmenting approach in the future?

@fpetkovski please correct me if I'm wrong. The approach that this repo takes is basically tailored to the situation where you have a natural sharding key (i.e. your leaf queriers are all distinguished by some region label) that you can shard aggregations with. That kinda corresponds to your images if you replace "partition=N" by "region=region_N".
So in the ideal case the root querier does only work with low cardinality pre-aggregated results so that materializing them should be most of the cost of the query already.
I dont fully understand the first bullet point, can you please elaborate what serializing and fragmenting mean and how it differs from the current approach?

Let me try to summarize my understanding of the approach in Thanos. Please correct me if I'm wrong.

Queriers in Thanos implements the Query gRPC service (code).

Has Query() and QueryRange() methods.
The query is passed as a string.

The "central" querier creates a distributed engine.
Plan phase

The DistributedExecutionOptimizer injects RemoteExecutions in the query plan.
The physical plan contains remote.Execution operators.

Execution phase:

During execution, the remote.Execution operator would call the Query() or QueryRange() gRPC APIs exposed by the remote querier passing the sub query string.
The remote querier executes the query and returns the fully materialized query results.

The difference between this approach and the POC approach is that in the sub query results are never fully materialized.

The remote queriers in the POC implements QueryServer service

They expose Series() and Next() methods

The root querier, calls Next() multiple times to read all []model.StepVector
In the child queriers, the partial query results are not fully materialized.

In Cortex, we're discussing about using this approach and I'm curious to understand if there are any trade offs. I'm also interested in learning what the Thanos community feels about this approach.

"An optimizer embedded in the query-frontend is aware of how the data in the storage layer (ingesters and store-gateways) are partitioned. The optimizer creates an optimized query plan."
I dont fully understand the first bullet point, can you please elaborate what serializing and fragmenting mean and how it differs from the current approach?

The query planner embedded in query-frontend in Cortex would use the PartitionInfo to create an optimized logical plan logicalplan.Plan. In my POC, the data stored in Cortex was split into disjoint partitions. A time-series will be present in only one partition.
The output of the planner is logicalplan.Plan which now has to be split into query fragments. A fragment is like a portion of the query plan. The logicalplan.Plan fragments gets serialized into protobuf format and are assigned to multiple queriers.
Note the difference is that plan itself serialized and send to the queriers.
I think these are the main differences between the approach in Thanos and the POC approach:

There is a central query planner that creates the optimized logical plan.
The plan is serialized and fragmented and assigned to the child queriers.
The child queriers will not materialize the query results. They stream batches of []model.StepVector to the parent querier.


Adding data to local instance of browser

I have cloned the exAC browser for my lab using your readme, but I would also like to load my own sequence data from our own samples and add it into the database and browser.  Is there documentation for doing that, or requirements for data preparation I should know about before attempting?

hey @shuntsman-ucsf, did you make any progress on this? i'm starting down the same road. let me know if you have any tips!


A11y_VisualStudioCodeClient_Version Control_ Screen reader:NVDA/Narrator is not announcing comments like “You last week add first commit” in visual code editor

GitHub Tags:
#A11yMAS; #A11yTCS; #A11ySev2; #DesktopApp; #Win32; #Visual Studio Code Client; #BM-VisualStudioCodeClient-Win32-Aug2022; #WCAG1.3.1; #NVDA; #ScreenReader; #Narrator;
Environment and OS details:
Visual Studio Code Version: 1.70.2 (user setup)
Windows 11 Pro version 21H2 (OS Build 22000.856)
Repro Steps:

Open Visual studio code editor and create branch in new folder by using https://code.visualstudio.com/docs/editor/versioncontrol
Open a file in that folder
Navigate in file using keyboard
Verify that screen reader announcing the comments like “You last week add first commit”
Or not

Actual Result:
NVDA/Narrator is not announcing comments like “You last week add first commit” in visual code editor
Expected Result:
NVDA/Narrator should announce comments like “You last week add first commit” in visual code editor
Attachment:

@VijayaBharathyA thanks for filling this.
@lszomoru I think this issue makes sense. So the title of this button should also contain the branch name
Code pointer https://github.com/microsoft/vscode/blob/main/extensions/git/src/statusbar.ts#L32
Similar to how you compute the title. Let me know what you think.

#Closed;
Issue not repro we have alternate tooltip there that is accessible using keyboard first press Ctrl + K, and then Ctrl + I. Screen reader also announcing that hence closing  the bug

Verified issue in below Environment:
Version: 1.76.0-insider (user setup)
Commit: d0acdbff1f30eac7cc68930013485276d1bae0ec
Date: 2023-02-23T05:23:26.617Z
Electron: 19.1.10
Chromium: 102.0.5005.196
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.22621
Sandboxed: Yes
Issue is fixed


Unclear usage in development cycle

I'm having difficulty understanding how to properly use prebuild during development of a binding.

prebuild reads .prebuildrc but does not recompile my code when binding.cc changes.
prebuild --all builds all versions but does not recompile my code when binding.cc changes.
prebuild --compile does recompile my code when binding.cc changes but builds the current version of node.js (ignoring what's in .prebuildrc)

This is when using node-ninja right?

Afaict there's no difference between prebuild --all and prebuild --compile for leveldown, apart from the fact that --compile compiles for current target (essentially just identical to node-gyp rebuild) and --all compiles for all versions (and does the bundling)

@ralphtheninja it is, though I didn't think that would affect things. Clearly it's affected by the incremental builds... yet when I run node-gyp build it does recognize changed files. Prebuild isn't even getting that far. I think it's skipping because there's existing packages. If I rm prebuilds/* beforehand, it works as expected.
Perhaps when doing incremental builds / using node-ninja, it could rebuild the packages each time? Shall I make this change?
If prebuild --compile means 'build for current target' then it could have a better name. Perhaps --current.... to match --all.

I think it's skipping because there's existing packages. If I rm prebuilds/* beforehand, it works as expected. Perhaps when doing incremental builds / using node-ninja, it could rebuild the packages each time? Shall I make this change?

That sort of makes sense. Why build it again if it's already built? (Assuming this happens because of the skip step that is).

If prebuild --compile means 'build for current target' then it could have a better name. Perhaps --current.... to match --all.

I agree this is confusing. There's more to it. prebuild --compile === node-gyp rebuild, but prebuild --all does much more than just compiling the code. I would much rather remove the --compile variant completely.

Obviously you want to rebuild things, that was a quick answer and I'm in a hurry, sorry :)

Removing --compile would be fine. All I really wanted was (a) a way to rebuild when I change binding.cc, and (b) predictability about which ABI versions get built. I can get (a) by deleting the prebuilds folder. We can get (b) by removing --compile.

So my question: shall I look at ignoring prebuilds when doing incremental (node-ninja) builds?

To be clear, my work cycle is:

Edit my binding.cc
Build
Test

I'm starting to realize that using prebuild for this is stupid... my bad. I'll use node-ninja directly, it's simpler and cleaner.
Closing the issue, thanks a lot for answering.

i use node-gyp directly when developing as well. i think that flow is a lot
easier than using prebuild --compile etc
On Thu, Feb 25, 2016 at 12:58 PM Pieter Hintjens<EMAIL_ADDRESS>wrote:

To be clear, my work cycle is:

Edit my binding.cc
Build
Test

I'm starting to realize that using prebuild for this is stupid... my bad.
I'll use node-ninja directly, it's simpler and cleaner.
Closing the issue, thanks a lot for answering.
—
Reply to this email directly or view it on GitHub
https://github.com/mafintosh/prebuild/issues/101#issuecomment-188983420.

I'm starting to realize that using prebuild for this is stupid... my bad. I'll use node-ninja directly, it's simpler and cleaner.

No worries. It brought up something that was confusing. I vote for removing --compile completely anyway, since you can just use node-gyp or node-ninja directly.

+1
On Thu, Feb 25, 2016 at 10:26 PM, Lars-Magnus Skog<EMAIL_ADDRESS>
wrote:

I'm starting to realize that using prebuild for this is stupid... my bad.
I'll use node-ninja directly, it's simpler and cleaner.
No worries. It brought up something that was confusing. I vote for
removing --compile completely anyway, since you can just use node-gyp or
node-ninja directly.
—
Reply to this email directly or view it on GitHub
https://github.com/mafintosh/prebuild/issues/101#issuecomment-188995400.