Redo membership

Redo Membership
A bunch of membership related changes have been made. If you're wondering about any specifics, check the individual commits and they have longer descriptions there.

Changes:

Removed Active Membership
a. It didn't really work at getting members to actually participated and was too much work for its value
b. Basically everything special for it moved to contributing membership.
Removed Probationary Membership
a. Was only used in some obscure circumstances and just complicated the document.
b. It was basically an Active Membership Lite for times that the membership structure would be vague (such as start of new school year).
Moved elections to end of year
a. Literally everyone else does this and it's so convenient. Also lets us remove probationary membership as it was a workaround to let old members vote.
b. All the old system did was make it so only non-outgoing members could vote while new members could not.
Added "duties" to each membership tier.
a. Now the role of contributing membership is more vague and allows for members to be given the role before directly contributing (chicken and egg problem).
b. Better defined the overall "purpose" of the Executive positions as stewards.
Better defined the positions for Executive Board members.
And some other minor changes (check commit logs)

TODO

Add stuff to article 9 for amendments
a. It probably makes sense to split this into multiple different "amendments" as they're multiple large changes.
b. I still think it would make sense for these all to be one PR though, as they're all very interconnected (esp. active -> probationary -> elections)

I think it is fine since we currently do not have enough members for active and probationary membership to actually affect anything. The added details for the different positions are good.

Yeah the original idea for probationary membership was just as a stop-gap for the first ~6 weeks of school, when voting must occur yet no one is a member anymore as membership only last for the duration of the year.
Basically, now you just reapply at the start of the new school year and the new incoming board, which was voted in last academic year, sets everything up.


Automated documentation build

Use github actions which build docs and pushes to the gh-pages branch: https://github.com/marketplace/actions/sphinx-build

Closing as completed


Fix MoltenVK native build failures due to file overwrite.

For #1993.
cc @Perksey @Beyley

Note: CI failure is unrelated and already happening on #1993.

Forgoing CI as it's going to a feature branch. Would page Beyley but I don't see them having any objections.


fixed NextlinkMixin import

Hello, found small bugs in ur code. Also updated examples. Please merge. Also, are you planning to publish this library to PyPI?

Yea sure, Contact me in discord : NotAlexy_Kyu#4003


Output formater

Hi,
first thanks for this tool that helps me a lot.
I see your tool make an report about dismatches between doc and code and also about coverage. Is it possible to format this information e.g. in checkstyle or cobertura format to publish data in a jenkins build?

@zeitiger AFAIK Esdoc plugin api has a method onHandleHTML - you could use that to modify output as you need.

:+1:

Sadly onHandleHTML isn't the right target, I need access the _results from /src/Publisher/Builder/LintDocBuilder.js

@zeitiger Hi! Thanks for this question.
For now, please customize coverage.json in destination directory after generating.
I want to customize coverage.json with plugin in future version.

@raveclassic Thanks for reply!

@h13i32maru
Okay so coverage.json is the source for coverage information. Great to hear from you want to tackle this with additional plugins. :+1:
What about lint errors? How I understand the LintDocBuilder it output the information only via stdout. Right :grey_question:

@zeitiger For now, Lint result is not output. I will enhance plugin feature in future.
https://github.com/esdoc/esdoc/issues/145


fix(ios): fix m3u8 crashes

Summary
iOS does not support sideload subtitles for HLS playlist like m3u8. Added a safeguard so that such cases do not crash the application.
Test plan

[x] example app does not crash when using textTracks with m3u8 as source

Thank you for the crash fix, but It would be better to make the functionality working :)
I tried on my side without success, can you please do a complementary test ? can you test If this feature working on 5.2 version ?
I know I used it on android, but I am not sure I tested it on ios.
If not working on 5.2 ios, then let's go with it !

Thank you for the crash fix, but It would be better to make the functionality working :)
I tried on my side without success, can you please do a complementary test ? can you test If this feature working on 5.2 version ?
I know I used it on android, but I am not sure I tested it on ios.
If not working on 5.2 ios, then let's go with it !

@freeboub  I have checked this and this is not working on 5.2 too (but is not crashing)

Thank you for the crash fix, but It would be better to make the functionality working :)
I tried on my side without success, can you please do a complementary test ? can you test If this feature working on 5.2 version ?
I know I used it on android, but I am not sure I tested it on ios.
If not working on 5.2 ios, then let's go with it !

@freeboub I have checked this and this is not working on 5.2 too (but is not crashing)

Thank you for the test, so let's go with that

@KrzysztofMoch I merged the PR for caching, this Pr now conflct with master... Sorry


Inconsistence behaviour with JIT Provisioning

Describe the issue:
During JIT (Just-In-Time) provisioning, if a user attempts to register with a username that already exists without domain (ex: if the email is<EMAIL_ADDRESS>user exist as "abc"), an authentication error occurs,Authentication error! Provide user name is already exists.

However, if no user with the specified username (with or without the domain) is found, the user is successfully onboarded with the specified domain. (ex: user onboard as<EMAIL_ADDRESS>There is a inconstancy with the behaviour.
How to reproduce:

Login to console
Create application
Create google IDP
Enable JIT provisioning on created IDP
Configure created application with the google IDP as first factor.
Create user with  the email username and without domain (ex: if your email user name is<EMAIL_ADDRESS>create user with username abc)
Authenticate to the application.
Check the behaviour.
Login to console again and delete created user "abc"
Authenticate to the application with<EMAIL_ADDRESS>Validate the provisioned user  username.

Expected behavior:
there is a inconstancy of the behaviour in step  8 provisioning should be completed since the existing user,"abc" is different from<EMAIL_ADDRESS>Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: [e.g., IS 5.10.0, IS 5.9.0]
OS: [e.g., Windows, Linux, Mac]
Database: [e.g., MySQL, H2]
Userstore: [e.g., LDAP, JDBC]

Optional Fields
Related issues:

Suggested labels:

Related issue fix: https://github.com/wso2/product-is/issues/18234

Adding error log
[2024-01-30 09:30:00,833] [0852d6cf-407a-453b-8223-a23349491066] ERROR {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.JITProvisioningPostAuthenticationHandler} - 80018 - Provided username is already exists.

Duplicate of https://github.com/wso2/product-is/issues/19294


Can't see the Nakama Server IP

Hi everyone !
I'm trying to install Nakama on a remote VPS. But I don't know where to see the nakama server IP. I know the VPS one but
Description
When I start Nakama on my VPS, I can't see the IP of the server. Where can I find it ?
So I tried the basic connection client code provided by the docs, but on the Unity logs I only see
System.Threading.Tasks.Task1[Nakama.ISession]
UnityEngine.Debug:Log(Object)
clientobject:Start() (at Assets/Scripts/Networking/clientobject.cs:15)
`
Can you help me please ?
Steps to Reproduce

nakama
	void Start ()  {  	var client = new Client("http", "<IP_ADDRESS>", 7350, "defaultkey");  	const string email =<EMAIL_ADDRESS> 	const string password = "somesupersecretpassword";  	var session = client.AuthenticateEmailAsync(email, password);  	Debug.Log(session);  }

Result
{"level":"info","ts":"2019-08-27T09:31:20.449Z","msg":"Nakama starting"} {"level":"info","ts":"2019-08-27T09:31:20.449Z","msg":"Node","name":"nakama","version":"2.6.0+b28f8d96","runtime":"go1.12","cpu":1,"proc":1} {"level":"info","ts":"2019-08-27T09:31:20.449Z","msg":"Data directory","path":"/home/arenarush/data"} {"level":"info","ts":"2019-08-27T09:31:20.449Z","msg":"Database connections","dsns":["root@<IP_ADDRESS>:26257"]} {"level":"info","ts":"2019-08-27T09:31:20.457Z","msg":"Database information","version":"CockroachDB CCL v19.1.4 (x86_64-unknown-linux-gnu, built 2019/08/06 15:34:13, go1.11.6)"} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Initializing leaderboard rank cache"} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Leaderboard rank cache initialization completed successfully","cached":[],"skipped":[]} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Initialising runtime","path":"/home/arenarush/data/modules"} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Initialising runtime event queue processor"} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Runtime event queue processor started","size":8192,"workers":8} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Initialising Go runtime provider","path":"/home/arenarush/data/modules"} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Go runtime modules loaded"} {"level":"info","ts":"2019-08-27T09:31:20.461Z","msg":"Initialising Lua runtime provider","path":"/home/arenarush/data/modules"} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Lua runtime modules loaded"} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Allocating minimum runtime pool","count":16} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Allocated minimum runtime pool"} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Found runtime modules","count":0,"modules":[]} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Starting Console server for gRPC requests","port":7348} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Starting Console server gateway for HTTP requests","port":7351} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Starting API server for gRPC requests","port":7349} {"level":"info","ts":"2019-08-27T09:31:20.462Z","msg":"Starting API server gateway for HTTP requests","port":7350} {"level":"info","ts":"2019-08-27T09:31:20.610Z","msg":"Startup done"}
Context

[ ] Unity 2017
[ ] Ubuntu 18.04

Your Environment

Nakama: 2.6.0+b28f8d96
Cockroach:  v19.1.4
Operating System and version: Ubuntu 18.04

This isn't an issue on Nakama server or the client library. Please post this on the forum to get help:
https://forum.heroiclabs.com


x/build/cmd/coordinator: the "Go 1.12.x" suffix for trybots sometimes disappears

Trybots test on non-main repos by running on go tip and we have 2 builders that test the 2 current releases (1.13.x and 1.12.x). Those builders are supposed to have a suffix in the title so people can tell them apart, e.g.:
linux-amd64
linux-amd64 (Go 1.13.x)
linux-amd64 (Go 1.12.x)

I've noticed some trybot reports do not include the "Go 1.12.x" suffix in some occasions. For example:
https://go-review.googlesource.com/c/tools/+/191018/5#message-3523913181223269365a639f2de619f97c9748b8
Note it says:
2 of 10 TryBots failed:
Failed on linux-amd64 (Go 1.11.x): https://storage.googleapis.com/go-build-log/83bd8812/linux-amd64_473638fb.log
Failed on linux-amd64: https://storage.googleapis.com/go-build-log/61a5d114/linux-amd64_e368aff8.log

The second "linux-amd64" line should've been "linux-amd64 (Go 1.12.x)" because commit golang/go@61a5d114c2ede53b78bd0b02f95f7d5130526ac0 is on 1.12 release branch, not master.
/cc @bradfitz @toothrot

I've seen it happen to my own trybot run just now:

Note that it says "linux-amd64 rev cf06b9aa", which is clearly a 1.12.x commit.

I think I have a lead where to start the investigation.
It seems to happen when a trybot builder is restarted due to a communication error. Specifically, I saw the "linux-amd64 (Go 1.12.x)" builder get a "failed to get a buildlet in 5 minutes" failure, and when it restarted, it said "linux-amd64" without the suffix.
The name is computed in buildStatus.NameAndBranch method, which looks correct.
So the issue is likely that the goBranch isn't set when a trybot builder is restarted.

Again:

/cc @cagedmantis This might be a tricky one, but see if you'd like to investigate it.


chore(main): release 0.5.2

:robot: I have created a release beep boop
0.5.2 (2023-01-26)
Bug Fixes

fix typo in color configuration key (63fc9fb)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/herdstat/herdstat/releases/tag/v0.5.2 :sunflower:


[Fix #12275] Fix a false positive for Style/RedundantDoubleSplatHashBraces

Fixes #12275.
This PR fixes a false positive for Style/RedundantDoubleSplatHashBraces when using double splat within block argument containing a hash literal in an array literal.

Before submitting the PR make sure the following are checked:

[x] The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
[x] Wrote good commit messages.
[x] Commit message starts with [Fix #issue-number] (if the related issue exists).
[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[x] Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
[x] Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.

Thanks!


The multiprocessing pool should cap the number of processes at the number of wavelengths required

While messing with multiprocessing, I realized POPPY was spawning 4 processes for my 2 wavelength calculation. We should cap the size of the pool at nlambda. (Of course, that's not a common nlambda value, but the point stands.)

I'm confused by this one; it looks like there is already code to limit the number of processes to no more than the number of wavelengths.
https://github.com/mperrin/poppy/blob/master/poppy/utils.py#L1233-1234

Yeah, I saw that code after I made the issue... I'll need to see if I can
make a test case.

Now that multiprocessing is reliable (on 3.4 anyway) it would be nice to either figure out how to reproduce this problem, or else close this issue?

Is there any need to keep this issue open?

Unless I hear any objection by Friday this week I am going to mark this one closed.

Aha, no, I think the issue was the estimate_optimal_nprocesses was working properly but if the user sets conf.n_processes explicitly then it overrides, even if the conf.n_processes is more than nwavelengths. Easy one-line fix.

Fixed in fa1a23a but I accidentally put the wrong issue number in that commit message. Too many browser tabs open!


[WIP] Add support for provider tags

This PR takes a fresh approach to modeling key/value pairs (tags) from the provider side to our local side. It creates a single table that stores all tags for all resources using STI. It is then up to each class to define the relationship with provider tags (if any).
It does NOT re-use the existing tags tables and models because the current architecture was just not designed for key/value pairs. Instead, it was designed for labels and policy. Not only is effectively split across 3 tables, each of the models for those tables have restrictions that make re-use extremely unpleasant for our purposes.
While initially targeted at AWS, this is a general solution that any provider that supports simple key/value tagging on its resources should be able to use.

@miq-bot add_label wip

@djberg96 Is the goal to convert the existing OpenShift label-tag mappings into this new structure?  I really don't want 2 implementations floating around.

@Fryguy That's the plan eventually, yes.

@djberg96
Can you describe, at a high level, where this fits into the bigger picture? We will parse the key/value pair in the refresh parser, in post processing we will create ProviderTag objects. How do we map this to Classifications and Tags that can be used in policies?

Going to close for now because this is probably already feasible using the custom_attributes table.


printf compatibility

This makes printf more compatible with its GNU coreutils counterpart.

format: %c prints the first character of a string
format: parse as many characters as possible in numbers and make the error messages more compatible with GNU coreutils

About the organization
The split between the printf application and core functionality seems weird sometimes, as error messages are emitted from the core library. Maybe it would make sense if the parsing functionalities were either brought back into the printf application or returned Result objects in order to be able to format error messages in the printf application specifically.
For example, printf uses ‘XXX’ quotes which AFAICT were not present in the core library; emitting the message from there (uucore::features::format::argument) forces to use those quotes in uucore.
About fuzzing
The fuzzing now often fails because too many file descriptors are opened. I don't know if there is a descriptor leak in the fuzzing framework itself, or if this is due to the launch of the external GNU coreutils commands.

Re: quotes. These probably depend on locale. We chose to follow the C locale until we have proper locale support, which uses '.

Re: quotes. These probably depend on locale. We chose to follow the C locale until we have proper locale support, which uses '.

Interesting. I only had set LC_NUMERIC=C, but by setting all I get different results in the fuzzer but not in the tests. I'll fix the quotes.

Fixed quotes

I've restructured the code to make names more explicit, and added uucode tests to the partial parsing function.

Hi! Thanks! I think this is mostly correct, but I think it should be implemented slightly differently. A problem with this implementation is that the base is lost. Here's GNU:
> printf %d 010b
printf: ‘010b’: value not completely converted
8

TIL I learned that coreutils inherited the "octal prefix mistake" from C.

So I think this is what should happen:
1. Remove the base prefix to determine the base.
2. Get the digits from the front.
3. If anything is left, print the error.
4. Convert the digits with `from_str_radix`.

Note that:

The "-" prefix must be extracted first as it happens earlier.
It has to account that some bases (dec/hex) can have a fractional part while others (bin/oct) cannot.

The code I implemented only deals with decimal numbers, as those are more complicated to parse (only one "-" optional prefix allowed, only one optional "." allowed, "-inf", "inf", "nan" — although those three aren't tied to any specific base they don't accept a base prefix).

This will also prevent us from trying to parse the same value multiple times, which feels a bit strange and requires us to keep both passes in sync.
Does that all make sense?

Yes it does. I see two alternatives:

Keep the parser I wrote for the decimal case. It is only called when the number could not be parsed as-is, so those situations can be considered unlikely. Handle other bases numbers differently.
Write a parser accomodating all cases and return the parsed value as well as the rest of the string if it cannot be parsed.

The second one makes more sense to me, I'll see what I can do and set this PR as draft in the meantime.
Thanks for your feedback.

TIL I learned that coreutils inherited the "octal prefix mistake" from C.

Haha yeah and now we're stuck with it 😄

Write a parser accomodating all cases and return the parsed value as well as the rest of the string if it cannot be parsed.

That sounds great! Thank you!

I have implemented a new number parser which can also cope with hexadecimal floats. I have put it in another module as to differentiate between the part which emits error messages and the one which only does some processing.

As far as I know, the only remaining issue before we can activate the printf fuzzer (in matching stderr mode) is that double quotes are escaped when printed by uutils while they are not when printed by GNU coreutils.

The latest push just adds a new test for the error message corresponding to a larger single character:
 $ target/debug/coreutils printf %d "'abc"
printf: warning: bc: character(s) following character constant have been ignored
97%

The failing chown test seems unrelated to those changes and fails for me the same way locally with and without this patch.

Btw, are different parameters used for configuring Clippy? The windows running requires that I had a #[allow(clippy::cognitive_complexity)] to the parse function, while I cannot reproduce this on Linux.

The failing macos/x86_64 check seems unrelated.

Great! Thank you!


Proposal to add support for glow item frame.

The current image is realized by a fake item frame, and in minecraft1.17 added a new item: glow item frame. Their visual effects are quite different, especially at low brightness.  Therefore, it is proposed to add the use of a glow item frame base as one of the options for placing pictures.

Hello @August7,
AFAIK glow item frames are different from regular frames in that they emit light, right? Meaning images placed in glow item frames will be visible even in completely dark areas.
In terms of UI, will adding a "flags" argument to the place command work for you?
/image place <filename> <width> [<height>] [<flags>]

For example, to place a glowing image:
/image place image.jpg 3 2 +GLOW

@josemmo I think this is great.

Hi @josemmo
Thank you for your best image on frames plugin.
I wanted to ask, is the function of adding flags fully completed? If so, release please.
Also, what the flags +ANIM +DROP +REMO are for? (See it in your commit)


Fix no-intro captcha failure, add parent-clone

-Fix no-intro captcha failure
-Add support for parent-clone as well as standard dats

I made some tweaks in this fork to add support for parent-clone as well as other changes for my own usage... and discovered an issue with the captcha on dat-o-matic. I then fixed the issue; however I made several other changes in that repo, so replicated these fixes for this pull request.
Let me know if you have any questions.

Also the action you are using to create a release is not working to update assets anymore, if they already exist. What I ended up doing is creating a new release based on the timestamp when the workflow runs. You can see an example in the fork I linked previously if you want to incorporate something similar. Cheers!

No problem. I don't think it's new, it's just random. Sometimes it does not display the captcha in which case your old script would work fine. Cheers!


Getting an error in database.php

Hi i trying to get your package rolling.
After setting it up I am getting this error:
ErrorException in Database.php line 31:
Illegal string offset 'host'

had set:
'redis' => [

    'client' => 'phpredis',

    // Rest of Redis configuration...
],

removed the client and all works


Can't scroll in VIM mode

OS used: Mac OSX 10.13.4
Bash version: 3.2 (zsh: 5.3)
Arguments being used with the terminal_view_open command: (none)

If you install or use Vintageous you can see that scrolling is not possible. I tried several things (page up/down, arrows, using Xj/k, gg and it all seems like history is not existent aka cursor/caret just starts on first line of visible TerminalView window.

Im not familiar with VIM mode but my best guess would be that the scrolling hotkeys are blocked by the VIM mode ? Have you tried specifically setting the TerminalView scroll hotkeys in your user keymap ?

Thanks for responding. Switched scrolling to ctrl+j/k" and now it works. Shame I can't use modus like 10ctrl+j` tho.


fix(@remix-run/react): preserve null properties for useLoaderData and useActionData inference

Closes: #

[ ] Docs
[ ] Tests

Testing Strategy:

Is this intended to be a hotfix or should we merge this into dev?

Is this intended to be a hotfix or should we merge this into dev?

Good eye! Intended for dev, just forgot to point my PR there


Windows build: Output binary to delivery directory and upload artifact in CI

Commit Message: Windows build: Output binary to delivery directory and upload artifact in CI
Also collapses ci/run_envoy_docker_windows.sh into
ci/run_envoy_docker.sh as they are pretty much duplicated at this point
Gets rid of unused powershell CI/build setup scripts
Additional Description: N/A
Risk Level: Low
Testing: N/A
Docs Changes: N/A, modifies checked in developer docs
Release Notes: N/A

cc @envoyproxy/windows-dev

Need to fix quoting for linux start command
/wait

Need to normalize Windows paths passed in via env var in CI for Docker mount args
/wait


Invalid parameter tags

Reduce test debt
Return expressive error messages.

Closes #153

Codecov Report

Merging #156 into master will decrease coverage by 0.28%.
The diff coverage is 70.00%.

@@             Coverage Diff              @@
##             master     #156      +/-   ##
============================================
- Coverage     70.98%   70.69%   -0.29%
+ Complexity      573      572       -1
============================================
  Files            97       97
  Lines          1885     1887       +2
  Branches        212      212
============================================
- Hits           1338     1334       -4
- Misses          458      462       +4
- Partials         89       91       +2

Impacted Files
Coverage Δ
Complexity Δ

...in/java/seedu/address/logic/parser/ParserUtil.java
89.55% <70.00%> (-8.91%)
25.00 <2.00> (ø)

Continue to review full report at Codecov.

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


[Bug]: The default display of execution details is inconsistent with the design draft

ODC version
odc431
OB version
ob424
What happened?

What did you expect to happen?

How can we reproduce it (as minimally and precisely as possible)?
Execute SQL and click on the execution profile
Anything else we need to know?
No response

Meets expectations


Color of the .button.success

How can we reproduce this bug?
In foundation 6.2.4 the color of the text of the button was white.
Now the color is black.
It should be as it was in the previous version.
What did you expect to happen?
.button.success,
.button.success a
.button.success:hover {color:#fff}
What happened instead?
With foundation 6.3.0 the text is black unlike other colored buttons.

Since v6.3.0, Foundation is using a11y-compliant colors (see #9319). It means that when the background color is too light, we use $dark instead of $white for text color (see scss/components/_label.scss:60).

See: https://github.com/zurb/foundation-sites/issues/9555

@BicanMarianValeriu  I close. Please reopen if you think this is not a duplicate issue.


which channels are metallic and roughness in xxxxx_mr.png

Hi, thanks for your great work!
I notice that gobjaverse contains metallic and roughness in "xxxxx_mr.png". But this png has 4 channels, which channels corresponds to metallic and roughness?
Thank you,
Yanrui

Yes, The first channel denotes metallic while the second one means roughness. The remain channels are zeros.


Sending feedback over email doesn't work

It shows "No apps can perform this action" message while Gmail is installed and the system sharing via Gmail works just fine from the other apps.

I can confirm on Marshmallow with physical device. Emulator with Nougat seems to work just fine.

Hi marta,
Can you please tell me how to add the fixed version to my application. The gradle inclusion does not update the code to fix feedback email intent.

Yes, I hope this week could be create the new gradle version

Hi,
As it seems that this library is not actively maintained I have forked it and I have released a new version fixing the bug with feedback email and share button. New Repo
I hope it would be useful for someone else.


Logging errors in development

Sentry does a nice job combing nested exceptions via cause in ruby 2.1+. I was wondering if it's possible to log the sentry event, but not actually send it.
In other words, I want to see the nested exception stack trace in my rails log, but I don't want to clutter sentry with errors from developer machines.
Is this supported? If so, how? Apologies if this is obvious, I wasn't able to get it working using the logging options. I just upgraded from 0.12 to 0.14 - perhaps there is lingering configuration somewhere I didn't account for.
Thanks!

Are you talking about having raven-ruby act as the logger? If so it's a bit outside of the scope of the project. If you want to log things + capture them I'd suggest abstracting something like logException() and have it do both there.

@dcramer In development I'd just like to log them. Mostly so I can have this behavior visible in dev.
Is that out of scope? Thanks for the quick reply btw.

I assume thats primarily because Ruby doesnt do something reasonable by default? I definitely think raven-ruby acting as the logger for error catching is out of scope. Ideally there would be a logging package that does everything, and it also can handle sending the errors to Sentry.

@dcramer Yeah, exactly. The exception instance has a cause but it isn't logged. Raven does a way better job, ha.


ownerOfHook returns tuple (owner, runSuper)

Refactoring ownerOf Function to Utilize OwnerOf Hook
A version of the ownerOf function to effectively utilize the OwnerOf hook. The primary motivation for this change is to improve the conditional execution of super.ownerOf(tokenId) based on the return value of the OwnerOf hook.
Scenario:
Included a detailed explanation of the scenario where the OwnerOf hook is used to conditionally run super.ownerOf(tokenId) based on the validity of the subscription.
Proposed Code:
  function ownerOf(uint256 tokenId) public view virtual override returns (address) {
      address owner;
      bool runSuper;

      IOwnerOfHook ownerOfHook = IOwnerOfHook(hooks[HookType.OwnerOf]);

      if (
          address(ownerOfHook) != address(0) &&
          ownerOfHook.useOwnerOfHook(tokenId)
      ) {
          (owner, runSuper) = ownerOfHook.ownerOfOverrideHook(tokenId);
      } else {
          runSuper = true;
      }

      if (runSuper) {
          owner = super.ownerOf(tokenId);
      }

      return owner;
  }

OwnerOfHook Implementation:
  function ownerOfOverrideHook(
      uint256 tokenId
  ) external view returns (address, bool) {
      // msg.sender is the ERC721 contract e.g. Cre8ors
      address subscription = ICre8ors(msg.sender).subscription();

      if (subscription == address(0)) {
          return (address(0), true);
      }

      // external call to subscription
      bool isSubscriptionValid =
          ISubscription(subscription).isSubscriptionValid(tokenId);

      if (isSubscriptionValid) {
          return (address(0), true);
      }

      // subscription expired
      // do not run `super.ownerOf(tokenId)`
      return (ownerOfReturns[tokenId], false);
  }

Scenario Explanation:
The OwnerOf hook acts as a conditional override for the ownerOf function. If the subscription is valid, the hook returns the actual owner, and the function proceeds without invoking super.ownerOf(tokenId). In contrast, if the subscription is expired or turned off, the hook returns address(0), indicating that there is no owner. In such cases, the function executes super.ownerOf(tokenId) to retrieve the owner based on the default implementation.
Please review the proposed code and provide your feedback.

Once approved, should be implemented in #15


Lab 25: no json sample files provided

Module: 11
Lab/Demo: 1
Task: Run a script to create the containers and the workload
Step: Build and run the project using the dotnet run command
When you run the code on your own machine, targeting your own cosmos db instance, you get an error because it can't find the json files with the sample data.

Repro steps:

Follow the steps described in https://github.com/MicrosoftLearning/dp-420-cosmos-db-dev/blob/main/instructions/25-monitor.md
Copy the program.cs code (https://github.com/MicrosoftLearning/dp-420-cosmos-db-dev/blob/main/25-monitor/Program.cs) into your own solution and run it.
It crashes, because there are no json files.

@KoenVerbeeck, the good news, you should be able to find the dataset at https://github.com/MicrosoftLearning/dp-420-cosmos-db-dev/tree/main/data, download it and it should allow you to run the lab on your local machine.


Show test results on GitHub

This adds the GitHubActionsTestLogger package to preview test results on GitHub.

So uh... where should I be see the results?

The workflows from my PR aren't ran on my PR. That would be a security violation. So you won't be able to see them until merge.
But they will show up on the summary screen from your last screenshot.

Here's an example: https://github.com/belav/csharpier/actions/runs/5958678883#summary-16163247288 :)

Thanks for this! Much better than digging through the logs


fix: add explicit active flag in trace agent

Using the custom span API while the Trace Agent is disabled causes an error, since the agent is in an inconsistent state where it uses its enabled implementation without being explicitly enabled. (Note that this doesn't affect plugin usage because plugins are not loaded if the trace agent is disabled).
This change adds an active_ field in TraceAgent instead of relying on whether the namespace exists. This ensures that the agent is actually disabled completely.

@DominicKramer The included test does just that. It fails if the fix is not included.
I provided a description of how the error could manifest in the PR summary.


when will NaturalSpeech open source?

 Sharing AI progress is a key behaviour that is necessary for the greater good, for achieving actual progress. If you alter the group incentives by not sharing your advances, you risk creating a domino effect of an AI winter where everyone keep its advances to himself and eventually kill the entire field.
Look I understand you might want to keep this model as an Azure exclusivity, but please engage to make it an exclusive for 1-2 year and then to open source it.
Not doing so would be hypocrisy, and a whole field destructive behaviour. I don't think you would like to stay in history books as the company that started said domino effect.
The proposed 1-2 year exclusivity period seems fair and quite standard.

This is normal, in the technique beginning, those companies like google and Microsoft trends to open source their work as more as possible because these work doesn't achieve a commercial product-level, so that they can share progress with academic frontiers. But once the technique becomes product-ready, they will using them to make money. And I don't think they gonna open source it, not because of it's hard to do, but they don't want anyone else has this capability, because this is the last step from production-ready level.

If you think ai research is reaching production quality performance, you are being delusional. Look at the leaderboards on paperswithcode, most task SOTA have ~90% accuracy, in NLP that often means 1 error every 10 words AKA one error per sentence. We are at the demo stage of ai, and to reach higher accuracies, we have diminishing returns since there are less and less low hanging fruits. Advances will come more and more from integrating the work of others and making synergies, as it become increasingly harder for a single player to make progress, and as said, we are generally not at the productisation stage for serious work.

@LifeIsStrange  Hey, I am on your side. I just tell the truth and reality. I also feel very disgusted on Microsoft didn't open source this work. I am 100% sure their work must build upon many other open source work as well.

@YichongLeng When will NaturalSpeech be avaliable on Azure?


Add 'offset' field to handle metrics ingestion delays

Hi,
I'm currently trying to understand why the SLO-pipeline sees "bad events" (backend "Stackdriver") although there were no bad events when looking at the actual underlying Stackdriver metric (see screenshot below).
Example: Requests with code 201 are defined as good events  and valid events are 201 + 500..511. The chart with the log-based metrics shows that there are only requests with code 2xx and 4xx, but still the generator often exports metrics with "bad events" > 0 (also values for burn rate and SLI are effected).
Note: The service has a higher rate of incoming requests which should provide a meaningful signal during the alerting windows
Any idea what can cause this?
SLO configuration for feature "carts-create"
service_name:     projects
feature_name:     carts-create
slo_description:  95% of cart create API HTTP responses are successful
slo_name:         availability
slo_target:       0.95
metadata:         {}
backend:
  class:          Stackdriver
  method:         good_bad_ratio
  project_id:     ${stackdriver_host_project_id}
  measurement:
    filter_good:  >
      project=${project_id}
      metric.type="logging.googleapis.com/user/carts_create_requests_total"
      metric.labels.http_status = 201
    filter_valid: >
      project=${project_id}
      metric.type="logging.googleapis.com/user/carts_create_requests_total"
      ( metric.labels.http_status = 201 OR
        metric.labels.http_status = 500 OR
        metric.labels.http_status = 501 OR
        metric.labels.http_status = 502 OR
        metric.labels.http_status = 503 OR
        metric.labels.http_status = 504 OR
        metric.labels.http_status = 505 OR
        metric.labels.http_status = 506 OR
        metric.labels.http_status = 507 OR
        metric.labels.http_status = 508 OR
        metric.labels.http_status = 509 OR
        metric.labels.http_status = 510 OR
        metric.labels.http_status = 511 )
exporters:
- class:          Stackdriver
  project_id:     ${stackdriver_host_project_id}

Metrics

left: error budget rate (feature: "carts-create")
right: request count split by label http_status -> no 5xx,

Some example reports generated using the CLI (executed within a few seconds):
slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 99.965  % | SLO: 95.0 % | Gap: +4.97 % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68532    | Bad: 24
slo_generator.compute - INFO - projects/carts-create/availability | 12 hours | SLI: 99.1949 % | SLO: 95.0 % | Gap: +4.19 % | BR: 0.2 / 3.0 | Alert: 0 | Good: 571059   | Bad: 4635
slo_generator.compute - INFO - projects/carts-create/availability | 7 days   | SLI: 99.9807 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.5 | Alert: 0 | Good: 6538744  | Bad: 1260
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.7927 % | SLO: 95.0 % | Gap: +4.79 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6538744  | Bad: 13583
slo_generator.cli - INFO - Run summary | SLO Configs: 1 | Error Budget Policy Steps: 4 | Total: 4 | Duration: 10.9s

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68560    | Bad: 0
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.008115)
slo_generator.compute - INFO - projects/carts-create/availability | 7 days   | SLI: 99.7927 % | SLO: 95.0 % | Gap: +4.79 % | BR: 0.0 / 1.5 | Alert: 0 | Good: 6538995  | Bad: 13583
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6551318  | Bad: 1260
slo_generator.cli - INFO - Run summary | SLO Configs: 1 | Error Budget Policy Steps: 4 | Total: 4 | Duration: 10.0s

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68543    | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 12 hours | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 3.0 | Alert: 0 | Good: 575864   | Bad: 0
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.001691)
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6551530  | Bad: 1260

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68524    | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 12 hours | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 3.0 | Alert: 0 | Good: 575931   | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 7 days   | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.5 | Alert: 0 | Good: 6551741  | Bad: 1260
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6551741  | Bad: 1260

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 67984    | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 12 hours | SLI: 99.1867 % | SLO: 95.0 % | Gap: +4.19 % | BR: 0.2 / 3.0 | Alert: 0 | Good: 571118   | Bad: 4683
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.001683)
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6552124  | Bad: 1260

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68533    | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 12 hours | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 3.0 | Alert: 0 | Good: 576282   | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 7 days   | SLI: 99.7928 % | SLO: 95.0 % | Gap: +4.79 % | BR: 0.0 / 1.5 | Alert: 0 | Good: 6540645  | Bad: 13583
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.9949 % | SLO: 95.0 % | Gap: +4.99 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6540645  | Bad: 332
slo_generator.cli - INFO - Run summary | SLO Configs: 1 | Error Budget Policy Steps: 4 | Total: 4 | Duration: 9.9s

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 99.8619 % | SLO: 95.0 % | Gap: +4.86 % | BR: 0.0 / 9.0 | Alert: 0 | Good: 67983    | Bad: 94
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.008036)
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.001686)
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.001691)
slo_generator.cli - INFO - Run summary | SLO Configs: 1 | Error Budget Policy Steps: 4 | Total: 4 | Duration: 10.1s

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68684    | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 12 hours | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 3.0 | Alert: 0 | Good: 576577   | Bad: 0
slo_generator.compute - INFO - projects/carts-create/availability | 7 days   | SLI: 99.7928 % | SLO: 95.0 % | Gap: +4.79 % | BR: 0.0 / 1.5 | Alert: 0 | Good: 6541375  | Bad: 13583
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.001691)
slo_generator.cli - INFO - Run summary | SLO Configs: 1 | Error Budget Policy Steps: 4 | Total: 4 | Duration: 10.2s

slo_generator.compute - INFO - projects/carts-create/availability | 1 hour   | SLI: 100.0   % | SLO: 95.0 % | Gap: +5.0  % | BR: 0.0 / 9.0 | Alert: 0 | Good: 68663    | Bad: 0
slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.008103)
slo_generator.compute - INFO - projects/carts-create/availability | 7 days   | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.5 | Alert: 0 | Good: 6553975  | Bad: 1260
slo_generator.compute - INFO - projects/carts-create/availability | 28 days  | SLI: 99.9808 % | SLO: 95.0 % | Gap: +4.98 % | BR: 0.0 / 1.0 | Alert: 0 | Good: 6553975  | Bad: 1260
slo_generator.cli - INFO - Run summary | SLO Configs: 1 | Error Budget Policy Steps: 4 | Total: 4 | Duration: 9.9s

Hi Sven,
The 1h and 12h looks fine, but the 7d / 27d indeed have some errors.
Two things to match what the slo-generator sees vs your graph:

Make sure ALIGNER is 'SUM' and REDUCER is 'SUM' in graph settings
Increase your graph time range to show 6w of data

If you still can't see where the bad events come from, enable DEBUG=1 logs from slo-generator and investigate details of requests / responses made.

I'd also try to investigate why you're getting this error: slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.008036). Seems weird to me since this happens only when GOOD > GOOD + BAD and in your case this shouldn't happen considering your metric definition. Maybe you have changed your SLO config recently ?

'd also try to investigate why you're getting this error: slo_generator.report - ERROR - SLI is not between 0 and 1 (value = 1.008036). Seems weird to me since this happens only when GOOD > GOOD + BAD and in your case this shouldn't happen considering your metric definition. Maybe you have changed your SLO config recently ?

The underlying metric and the SLO configuration for this SLO were not changed recently.

The 1h and 12h looks fine, but the 7d / 27d indeed have some bad events.

I don't think it's correct for steps 1h and 12h since in my case there was not a single 5xx (bad event) in that time range. I would expect a value of 0 if there is no 5xx or I do i miss something?

Two things to match what the slo-generator sees vs your graph:

Make sure ALIGNER is 'SUM' and REDUCER is 'SUM' in graph settings
Increase your graph time range to show 6w of data

I also double-checked and set ALIGNER to 'SUM' and REDUCER is 'SUM' in my graph settings. But still there are peaks in error budget (e.g. step 1h) even though there are no 5xx (bad events)

@clement-pruvot @bkamin29 have you ever seen something similar ?

Noteworthy:

the metric is a custom log-based metric
we see "bad events" counts > 0 and < 0 even if the filter for backend.measurement.filter_good and backend.measurement.filter_valid is the same (for debugging purpose)
noticeable for SLOs based on log-based metrics with high usage (lot's of events)

After investigation, here is the distribution of the error rate studied on different offsets:

Offset (s)
Metric type
Project
Errors
Error rate (%)

0
logging.googleapis.com/user/number_reports
100
2104
4.75%

20
logging.googleapis.com/user/number_reports
27
576
4.69%

40
logging.googleapis.com/user/number_reports
30
852
3.52%

60
logging.googleapis.com/user/number_reports
6
3417
0.18%

90
logging.googleapis.com/user/number_reports
2
2352
0.09%

120
logging.googleapis.com/user/number_reports
1
2164
0.05%

180
logging.googleapis.com/user/number_reports
1
3269
0.03%

240
logging.googleapis.com/user/number_reports
0
2264
0.00%

Seems like we need to pick an offset that allow for the error rate to be as small as possible, while retaining some decent trigger latency. Offset should be configurable per backend to allow user to adjust the trade-off between error rate and alert latency.

Small update: this will be fixed in v2. I don't have much bandwith now, but expect the offset to be configurable then (release eta is August)

@Ivaylet https://github.com/google/slo-generator/tree/add-configurable-offset

Thanks @ocervell! Apologies for the delay. I missed the notification due to a typo in my username.
I can see this issue is tagged with releases/v3. Is there a specific reason why we could not release this feature in the next v2? I do not see any breaking change anywhere, as the new offset parameter has a default value.


Add support git-annex

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/40483533-add-support-git-annex?utm_campaign=plugin&utm_content=tracker%2F47456670&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F47456670&utm_medium=issues&utm_source=github).

:(

PR #3786


Copy from one shared image gallery to another shared image gallery in another subscription

Reviewing this thread again (55247 which was closed) ... anyone know if this feature is still available? if you see at the bottom of this documentation link for powershell and CLI but those links are still broken and dont show the command to copy from one SIG to another:
https://azure.microsoft.com/en-au/updates/shared-image-gallery-nov2020-features/
Copy image versions across shared image galleries
Move Shared Image Gallery image versions from one gallery by selecting an image version in another shared image gallery as the source.
Get started—Documentation, CLI, PowerShell, Portal, API, ARM template, and download the SDK.

Hello @DeepMalh44 : Can you please share the link of the actual document which you are refering ?

hello @himanshusinha-msft following are the 2 links which ideally should be the links for copying of the images from one SIG to another SIG but if you see they are pointing to something else:

https://docs.microsoft.com/en-us/azure/virtual-machines/image-version-another-gallery-powershell
https://docs.microsoft.com/en-us/azure/virtual-machines/image-version-another-gallery-powershell
https://docs.microsoft.com/en-us/azure/virtual-machines/image-version-another-gallery-cli

@himanshusinha-msft  here is the same issue from 2020:  https://github.com/MicrosoftDocs/azure-docs/issues/55247

@cynthn Is this something you will be able to help with? Looks like there was a document on Copy image versions across shared image galleries as mentioned here : https://azure.microsoft.com/en-au/updates/shared-image-gallery-nov2020-features/
But the document url now point to Create an image definition and an image version

I can't update the blog post to change the links, but I might be able to make the redirects go to the correct language tab instead of dumping you into portal.
The long version is that we used to have separate articles for each image "source", but it made it diluted search results and made it hard to understand exactly how to use the CLI\PowerShell syntax (it made it look super complicated). So I moved it all to a single article, and tried to show exactly how to change the source for the image in a table. All of the options for creating an image version are in the same article now.

The articles pointed to do not answer the question about "copying an image from one shared image gallery to another". The article discusses how to copy them from one tenant's shared gallery to another tenant's shared gallery. A single subscription may have multiple galleries, say one for "dev" images and which can be published to a "prod" gallery after testing. That duplication process, or transfer if necessary, is not documented.

It's the same process as creating any image from another image, you are just doing it between galleries. The image version ID has the full path to the resource, so you just need to specify that:
az sig image-version create --resource-group MyResourceGroup \
--gallery-name MyGallery --gallery-image-definition MyImage \
--gallery-image-version 1.0.0 \
--image-version /subscriptions/00000000-0000-0000-0000-00000000xxxx/resourceGroups/imageGroups/providers/Microsoft.Compute/galleries/MyGallery/images/MyImageDefinition/versions/1.0.0

From: https://learn.microsoft.com/en-us/cli/azure/sig/image-version?view=azure-cli-latest#az-sig-image-version-create-examples
It's not really a "move", you would still need to delete the image from the source gallery if you didn't want it there anymore.


[BUG]Import failed No module named 'keras.engine'

Describe the bug
Windows portable version. When starting got following error message:
Cannot import E:\DEV\ComfyUI_windows_portable\ComfyUI\custom_nodes\prompt-generator-comfyui module for custom nodes: Failed to import optimum.onnxruntime.modeling_ort because of the following error (look up to see its traceback):
Failed to import transformers.modeling_tf_utils because of the following error (look up to see its traceback):
No module named 'keras.engine'

Operating System

Windows 11

** Python Version**

3.10.6

** Transformers and optimum packages versions **
Name: transformers
Version: 4.26.1
Name: optimum
Version: 1.17.1
** ComfyUI Commit **

ComfyUI Revision: 1969 [02409c30] | Released on '2024-02-12'

** prompt-generator-comfyui Commit **

latest

Hello, thanks for reporting. It seems your transformers package is not up-to-date. The package version may be causing the problem. Please follow this troubleshooting package update section and let me know if the issue is going on

Thanks, problem solved.


add baidu elasticsearch vectorstore

Description:
add baidu elasticsearch vectorstore

@wemysschen Thanks for the contribution. This code looks identical to
https://github.com/langchain-ai/langchain/blob/cfa2203c626a2287d60c1febeb3e3a68b77acd77/libs/langchain/langchain/vectorstores/elasticsearch.py
Could you explain what is different?

@wemysschen Thanks for the contribution. This code looks identical to
https://github.com/langchain-ai/langchain/blob/cfa2203c626a2287d60c1febeb3e3a68b77acd77/libs/langchain/langchain/vectorstores/elasticsearch.py
Could you explain what is different?

@eyurtsev Thanks for your review. The overall idea of this PR is to integrate the vectorstore capabilities of Baidu Cloud's elasticsearch (hereinafter referred to as BES) into langchain. The differences between the original elasticsearch code and BES are as follows: 1. BES and the community's ES differ in terms of indexing, querying, and other semantics; 2. Compared to community's ES, BES supports multiple index types and similarity algorithms, and its query semantics are different from ES.


[bug] Dispense operation selects the wrong channel and fails with tip and volume tracking on

I bring bugs!
Here is my situation, I want to:

Pick a tip with channel 1 ✅
Aspirate from a tube with channel 1  ✅
Dispense in 3 wells (serially) with channel 1 ❌

Details

Note that the "head" shows that a tip is placed in channel 1.

I think that the wrong channel is being checked, because I get this exception message:
NoTipError: Channel 0 does not have a tip.

Some notes:

I selected channel 1, but PLR is looking for a tip in channel 0 (which is not in use by the dispense operation).
It errors-out on a dispense, but not on aspirate.

Here is the traceback:
Details

---------------------------------------------------------------------------
NoTipError                                Traceback (most recent call last)
Cell In[11], line 5
      1 well_plate = deck["Standard 384-well plate"]
      3 wells = well_plate["B2:B7"]
----> 5 await lh.dispense([wells[0]], vols=[15], use_channels=[1])
      7 # for well in well_plate["B2:B7"]:
      8 #   dispenses = await lh.dispense([well], vols=[15], use_channels=[1])

File pylabrobot/pylabrobot/machines/machine.py:25, in need_setup_finished.<locals>.wrapper(self, *args, **kwargs)
     23 if not self.setup_finished:
     24   raise RuntimeError("The setup has not finished. See `setup`.")
---> 25 return await func(self, *args, **kwargs)

File pylabrobot/pylabrobot/liquid_handling/liquid_handler.py:913, in LiquidHandler.dispense(self, resources, vols, use_channels, flow_rates, offsets, liquid_height, blow_out_air_volume, **backend_kwargs)
    911 # liquid(s) for each channel. If volume tracking is disabled, use None as the liquid.
    912 if does_volume_tracking():
--> 913   liquids = [c.get_tip().tracker.get_liquids(top_volume=vol)
    914             for c, vol in zip(self.head.values(), vols)]
    915 else:
    916   liquids = [[(None, vol)] for vol in vols]

File pylabrobot/pylabrobot/resources/tip_tracker.py:62, in TipTracker.get_tip(self)
     55 """ Get the tip. Note that does includes pending operations.
     56
     57 Raises:
     58   NoTipError: If the tip spot does not have a tip.
     59 """
     61 if self._tip is None:
---> 62   raise NoTipError(f"{self.thing} does not have a tip.")
     63 return self._tip

NoTipError: Channel 0 does not have a tip.

I get the same error if I use channel 2 for the dispense (which does not have a tip) but instead get a more reasonable error:
NoTipError: Channel 2 does not have a tip.

I think that the issue is in how this zip is setup, as it does not guarantee that channels are properly matched to volumes:

thank you for the detailed report and figuring out what the issue was!
fixed and tested with https://github.com/PyLabRobot/pylabrobot/pull/273

Thank you Rick!


WIP: Wait for AP regeneration

As mentioned in #609 this should add a option in app preference that changes pref.waitAPRegen, which is detected in AutoBattle.kt to keep FGA running to keep checking for AP regeneration.

A lot of files not related to this feature are changing which is why the build is failing.
You should start by creating a new branch before sending PRs.
That way your fork's master branch can be kept in sync with mine when your PR is merged.
I think it may be easier to fork again instead of resolving conflicts this time.
I wasn't planning to add this feature due to the potential battery hog due to keeping the screen awake for so long, but, I guess it's fine as a toggleable feature which is OFF by default.

Right. Let me see if I can make the changes work for the CI build. Just a sec.


feature request: file naming includes voiceId to differentiate cached files

Hi Giovane!
I believe this is rather a feature request, then a bug.
State of things now
After testing sending many texts to the tts-node I noticed, that the output file name seems to depend only on the text which was converted to speech.
That means if I send a text with e.g. a female voice and then a male voice, the file in directory .node-red/sonospollyttsstorage/ttsfiles gets overwritten. Combined with the fact, that the tts-node outputs the requests as an array (if input number is larger and fast) there is no chance to grab the file before it gets overwritten with the other voice.
To Reproduce
Here is a sample flow to reproduce the behaviour. It inputs 4 text lines and attempts to send those 4 text lines to the tts-node with female and male voiceId. Thus expected are 8 files in .node-red/sonospollyttsstorage/ttsfiles . However there are only 4 files and after checking them, they are all male (which was the second voice that got used). So the female voice files got overwritten by the male voice files.
[
    {
        "id": "7b5c7adf0a675b5a",
        "type": "ttsultimate",
        "z": "138c6cb20fe4c960",
        "name": "DK",
        "voice": "da-DK-Wavenet-A#da-DK#FEMALE",
        "ssml": true,
        "sonosipaddress": "<IP_ADDRESS>",
        "sonosvolume": "30",
        "sonoshailing": "0",
        "config": "557d8082.eb5a8",
        "property": "payload",
        "propertyType": {},
        "rules": [],
        "playertype": "noplayer",
        "speakingrate": "1",
        "speakingpitch": "0",
        "unmuteIfMuted": false,
        "elevenlabsStability": "",
        "elevenlabsSimilarity_boost": "",
        "x": 530,
        "y": 1040,
        "wires": [
            [
                "54c89a246777d32e"
            ],
            []
        ]
    },
    {
        "id": "2519d346690ada0a",
        "type": "inject",
        "z": "138c6cb20fe4c960",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "[{\"AudioID\":1,\"FileID\":\"001\",\"lang\":\"DK\",\"filename\":\"DK001.mp3\",\"text\":\"Enhver har ret til undervisning. \"},{\"AudioID\":2,\"FileID\":\"002\",\"lang\":\"DK\",\"filename\":\"DK002.mp3\",\"text\":\"Undervisningen skal være gratis, i det mindste på de elementære og grundlæggende trin.\"},{\"AudioID\":3,\"FileID\":\"003\",\"lang\":\"DK\",\"filename\":\"DK003.mp3\",\"text\":\"Elementær undervisning skal være obligatorisk.\"},{\"AudioID\":4,\"FileID\":\"004\",\"lang\":\"DK\",\"filename\":\"DK004.mp3\",\"text\":\"Teknisk og faglig uddannelse skal gøres almindelig tilgængelig for alle, og på grundlag af evner skal der være lige adgang for alle til højere undervisning.\"}]",
        "payloadType": "json",
        "x": 230,
        "y": 1040,
        "wires": [
            [
                "742bfe851fdf3885"
            ]
        ]
    },
    {
        "id": "742bfe851fdf3885",
        "type": "function",
        "z": "138c6cb20fe4c960",
        "name": "save & split",
        "func": "// the function makes a clone of the msg.payload (which contains the audiofile array)\n// doubles all files for female and male version if available for that language\n// assembles the file name including gender and language tag\n// sends out the message to tts with text and voiceID\n\nlet ttsF = msg.payload;\nlet ttsStack = [];\nlet voices = flow.get(\"voiceIDs\");\n\n// for now we assume that all languages support female and male\nlet count = ttsF.length;\nlet i = 0;\n// female voice\nfor ( ; i < count; i++) {\n    const element = ttsF[i];\n    // assemble stack item\n    ttsStack.push({\n        \"audio\":element,\n        \"parts\":{\n            \"id\":   msg._msgid,\n            \"type\": \"array\",\n            \"count\": count,\n            \"len\":  1,\n            \"index\": i\n        },\n        \"filename\":\"F\" + element.lang + element.FileID + \".mp3\",\n    });\n    // send msg to tts\n    node.send({\"payload\":element.text,\"voiceId\":voices[element.lang].F});\n}\n\n// male voice\nfor ( ; i < count*2; i++) {\n    const element = ttsF[i-count];\n    ttsStack.push({\n        \"audio\":element,\n        \"parts\":{\n            \"id\":   msg._msgid,\n            \"type\": \"array\",\n            \"count\": count,\n            \"len\":  1,\n            \"index\": i\n        },\n        \"filename\":\"M\" + element.lang + element.FileID + \".mp3\"\n    });\n    // send msg to tts\n    node.send({\"payload\":element.text,\"voiceId\":voices[element.lang].M});\n}\n\n// save source stack to flow\nflow.set(\"ttsStack\", ttsStack);\n\nreturn null;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 370,
        "y": 1040,
        "wires": [
            [
                "7b5c7adf0a675b5a"
            ]
        ]
    },
    {
        "id": "54c89a246777d32e",
        "type": "function",
        "z": "138c6cb20fe4c960",
        "name": "merge from context",
        "func": "// the routine assumes exact match between input array to tts-node and output array of tts-node\n\nif (msg.payload === true) {\n    // Get the array from the flow context memory\n    let ttsStack = flow.get(\"ttsStack\");\n    let count = ttsStack.length;\n    for (let i = 0; i < count; i++) {\n        let element = ttsStack[i];\n        let ttsresult = msg.filesArray[i];\n        \n        // set file dst info\n        element.newPath     = \"/home/nodered/audio/\" + element.audio.lang.substring(0, 2) + \"/\";\n        element.newFilename = element.filename;\n\n        // set file src info\n        // index at which to split path from filename\n        var index = ttsresult.file.lastIndexOf(\"/\")+1;\n        element.oldPath     = ttsresult.file.substring(0, index);\n        element.oldFilename = ttsresult.file.substring(index);\n\n        // send audio element\n        node.send(element);\n    }\n    // all elements are done, clear the ttsStack\n    //flow.set(\"ttsStack\", null);\n}\n\nreturn null;\n\n",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 710,
        "y": 1020,
        "wires": [
            [
                "98f424a0e1aabc8c"
            ]
        ]
    },
    {
        "id": "98f424a0e1aabc8c",
        "type": "fs-ops-copy",
        "z": "138c6cb20fe4c960",
        "name": "",
        "sourcePath": "oldPath",
        "sourcePathType": "msg",
        "sourceFilename": "oldFilename",
        "sourceFilenameType": "msg",
        "destPath": "newPath",
        "destPathType": "msg",
        "destFilename": "newFilename",
        "destFilenameType": "msg",
        "link": false,
        "overwrite": true,
        "x": 880,
        "y": 1020,
        "wires": [
            [
                "2738c0c743bf2d26"
            ]
        ]
    },
    {
        "id": "2738c0c743bf2d26",
        "type": "join",
        "z": "138c6cb20fe4c960",
        "name": "",
        "mode": "auto",
        "build": "object",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": "false",
        "timeout": "",
        "count": "",
        "reduceRight": false,
        "x": 1030,
        "y": 1020,
        "wires": [
            []
        ]
    },
    {
        "id": "3c1cac23b6478b3c",
        "type": "function",
        "z": "138c6cb20fe4c960",
        "name": "set voice IDs",
        "func": "\nreturn null;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "// Code added here will be run once\n// whenever the node is started.\nvar voiceIDs = { \"DK\": { \"F\": \"da-DK-Standard-A#da-DK#FEMALE\", \"M\": \"da-DK-Standard-C#da-DK#MALE\" } };\nflow.set(\"voiceIDs\", voiceIDs);",
        "finalize": "",
        "libs": [],
        "x": 370,
        "y": 980,
        "wires": [
            []
        ]
    },
    {
        "id": "557d8082.eb5a8",
        "type": "ttsultimate-config",
        "name": "google cloud TTS",
        "noderedipaddress": "<IP_ADDRESS>",
        "noderedport": "1980",
        "purgediratrestart": "leave",
        "ttsservice": "googletts",
        "TTSRootFolderPath": ""
    }
]

Expected behavior
If the voice string could be somehow included in order to differentiate those files by voice, that would be great. Looking at the speed that google is adding more and more voices for different use cases, but same language, I believe this feature will be very helpful also to others.
TTS-Ultimate Version

Eg. 2.0.7

Are you running node-red behind homematic, docker or anything similar?
Node-Red is running alone on small linux server
Thanks a lot for looking into this!
Cheers
JR

Hi
for other TTS engines, i've takein it into consideration.
For googletts engine, i don't remember what i've done and why, i'll take a look ASAP.

Hi
The node isn't mean to be used as a batch file generator. You're changing the voiceID too quickly.
The voiceID is a node variable.
If you change the voiceID while the queuing system is still reading the queue, you're getting weird behaviour.
You must send a msg to the TTS node, wait until the node have wrote the file, then send the next msg.
In your flow, you must send the first 4 messages, then wait until the TTS node finished handling it (wait for the output msg.payload TRUE), then send the next 4 messages having a different voiceID.

Hi!
Ok, I understand the batch part. I can change that in my flow.
How about using the offline files later? If the voice changed in between, then the files always get overwritten? I am aksing because it means I cannot rely on the offline files, as I will never know which voiceId created them.

Hi
no, the files remains in the folder forever.

Hi Giovane!
Thanks a lot for your qucik replies!
This morning I ran another test and can confirm, that voice is encoded into the file name. Condition is that the node has time to finish handling audios before getting a new voice setting.
Cheers
JR


Feature request: Claim list and remove all commands

Self explanatory, in case you don't want to disband a faction but want to remove all claims.

Adding onto this issue, I want a /f claim list command as well

If /f claim list works by showing chunk coordinates, then I think it should only show particles around claimed chunks if /gamerule reducedDebugInfo is set to true.


Add go 1.18 to MacOS

Description
Go update to 1.18 for MacOS

Related issue:
#5262
Virtual environments affected

[ ] Ubuntu 18.04
[ ] Ubuntu 20.04
[X] macOS 10.15
[X] macOS 11
[X] MacOS 12
[ ] Windows Server 2016
[ ] Windows Server 2019
[ ] Windows Server 2022

/azp run macos1015, macos11


Fixed the class path

Summary
The live site was throwing a php error during cron that pointed back to a misnamed class in the services file. The case of the class name was incorrect. This fixes that case issue and should resolve the issue.
Metadata

Question
Answer

Did you use a meaningful pull request title?
yes

Did you apply meaningful labels to the pull request?
yes

Did you perform a self review first?
yes

Documentation reflects changes?
no

CHANGELOG reflects changes?
yes

Unit/Functional tests reflect changes?
n/a

Did you perform browser testing?
yes

Risk level
Low

Relevant links
RIG-143

Ok!
/approved


Whether a variable is "for this sprite only" or not should be obviously visible

Apologies for the essay!!!!
Expected Behavior
There should be some way to easily tell whether a variable block is local to a specific sprite ("for this sprite only") or not, ideally without any further interaction.
Actual Behavior
Currently the only way to tell if an existing variable is sprite-local is to show the variable on the stage (the monitor will display "[Sprite Name]: my variable" instead of "my variable") or to switch to the stage and then back to the sprite (if the variable is local to that sprite, it definitely won't show up in the stage's variable palette, since the stage can't have any display.)
Steps to Reproduce
Make a variable which is local to a sprite by checking the "for this sprite only" checkbox when creating it. (This checkbox doesn't exist in Scratch 3.0 yet -- you'll have to make the variable in Scratch 2.0, then load that project in the 3.0 editor.)
Operating System and Browser
(Platform-independent.)

Thoughts on how this should be implemented? Neither of the current methods are really satisfactory, mainly because they require interaction. The interactions they need are significant, too -- switching between sprite and stage takes a relatively long time, because of the block workspace reloading, and showing a variable requires navigating to the variables palette, which means losing whatever palette you were previously scrolled to.
One idea is to prefix the variable name, e.g. "Sprite1: hp":

This would make the variable be explicitly different from a global variable, whose name would just be "hp", as well as from any local variable "hp" of another sprite, where the display would be "Sprite3: hp", for example.
Renaming the sprite would obviously change the label of the block. But what if the block is duplicated into a different sprite? That is, by being dragged over the icon of the sprite in the sprite list, or by being added into the backpack and then dropped in the other block. I believe the functionality of this should be that the new block which appears in the other sprite should be that own sprite's local variable "hp", i.e. "Other Sprite: hp", but it might be confusing to have the block's label change. ("Where did the block go?")
Another edge case: What if the block is duplicated into a sprite where that local variable does not exist, or the stage? In order to match the functionality of Scratch, this would have to display as a local variable on sprites and a global variable on the stage (since variables "local to the stage" are really just global variables, and since when a variable does not exist and its value is requested from a sprite, a sprite-local variable with that name is created).
Having sprite-local variable blocks be labeled with their owner sprite's name would prevent conflicts with variable names. One edge case this would resolve is when you select a sprite, create a sprite-local variable, then select another sprite (or the stage), and create a global variable with the same name. Currently, whether a variable block is referencing the global variable or the sprite-local variable is entirely unclear. The only way to be certain is to change the global variable's value (switch to the stage, then change the value of the variable), and then check if the variable block's value has changed. If the variable block were explicitly labeled "Sprite1: my variable", it would be obvious that the variable belongs to that sprite and is not global.
However, it introduces a comparable edge case, again related to duplicating blocks: What if the sprite-local variable block is duplicated into another sprite which does not have a sprite-local variable of that same name, and a global variable with the same name does exist? Should the new variable block in the other sprite display as "Other Sprite: variable", or should it display as "variable" (in reference to the global variable)?
For reference, here is a short description of how variable creation works in Scratch 2.0. (I haven't tested this in Scratch 3.0, and I'm not sure it works the same in 3.0, since 3.0 uses variable IDs instead of variable names as the identifying property, and I'm not sure how variable IDs are generated. But the general implementation looks to be the same in 3.0; see Target.lookupOrCreateVariable.)

As far as Scratch 2.0 is concerned, the only identifying property of a variable block is its name. Whether a variable block belongs to a global sprite is only knowable at runtime: if a sprite owns a variable with the same name, then that is the variable that the block refers to. Otherwise, if the stage owns a variable with the same name, then that is the variable that the block refers to. If neither the stage nor the sprite own a variable of the name, then a variable that belongs to the sprite is created, and that is the variable that the block refers to.

I really like this idea, but I'm worried scripts with a lot of nested reporters would get too long. An icon wouldn't take as much horizontal space and would parallel the cloud icon, but also wouldn't give as much information (though which sprite the variable belongs to would be obvious from context since you can only view one workspace at once). Maybe a "visibility eye" or a lock icon? Or even a thumbnail of the sprite it belongs to?

Or even a thumbnail of the sprite it belongs to?

I like this idea!
A lock icon would make it look like the variable is limited from being edited at all, I think, which isn't the idea we want.

@towerofnix I've seen a mod that uses this format: <name>[local].

Rather than a lock icon etc, how about using just a prefix colon for local names, as a visual hint/shorthand; the spritename:varname usage would still be used where needed for ambiguity resolution?   (Or make this abbreviated visual form configurable).

I can guarantee someone would make a global variable named "spritename:varname" just to make life difficult.

What about an icon, like cloud variables?

I think to resolve the issue of an icon not containing enough information to be useful, the same icon could be placed in the dialogue box for creating variables. The checkbox which makes a certain variable "for this sprite only" could either have whatever icon we choose to represent the check mark; or the label associated with the checkbox could be prefixed with the icon.
I've seen suggestions on the Scratch forums which put forward the unicode House Emoji (🏠), for the variable is sort of local to its own residence, rather than the public streets.

@TheLogFather That might be cool. But I think your point about the globe not being a good fit actually applies to any icon. The icon needs to convey that many things can access the variable; and given you can't specify which things can access it, every global variable could be misinterpreted as a cloud variable.


Fix error when user doesn't provide optional extra properties

Fixes #33
When user doesn't provide any extra properties the iteration on extra_properties_data will throw error:
if value_key in extra_properties_data: TypeError: argument of type 'NoneType' is not iterable
It should check the extra_properties_data before iterating.
Proposed Changes (What, How, and Why)

Added a 'check none' on the data

Hey, @gaohoward it was a nice catch! And of course a terrible pass from my side... :smile:
I optimized your fix and put the condition out of the filter. The condition is evaluated only once per run. #34
So if you are okay with this, I will close this PR and merge the #34 instead.

I creat


Regex?

As discussed at coffee today (2024-01-23) it could be worth having a look at how to use regex. It may not be useful to any of our work but it is a useful thing to know.

https://xkcd.com/208/

Hi @HallJoseph would you like to lead the discussion on regex? Maybe some short 10-15 intro to what is regex, why we might want to use it, and maybe some tools for using regex?

Hi @fjebaker, I should be able to yeah! When would be a good time to do it?

Would Feb 16th be alright?

Should be, I may need to postpone it though. I'll let you know if anything does change.

I'll pencil you in then :shipit:

[
RegEx for Astronomers.pptx
](url)


Hi,

Please make sure that the boxes below are checked before you submit your issue. If your issue is an implementation question, please ask your question on StackOverflow or join the Keras Slack channel and ask there instead of filing a GitHub issue.
Thank you!

[ ] Check that you are up-to-date with the master branch of Keras. You can update with:
pip install git+git://github.com/fchollet/keras.git --upgrade --no-deps

[ ] If running on TensorFlow, check that you are up-to-date with the latest version. The installation instructions can be found here.

[ ] If running on Theano, check that you are up-to-date with the master branch of Theano. You can update with:
pip install git+git://github.com/Theano/Theano.git --upgrade --no-deps

[ ] Provide a link to a GitHub Gist of a Python script that can reproduce your issue (or just copy the script here if it is short).

Looks like you opened another issue https://github.com/fchollet/keras/issues/7610
Please close this one.


Add keyboard shortcuts for prettifying and minifying json

Currently, there are no keyboard shortcuts to prettify and minify json. It is a inconvenient for me to to click on Package->Pretty Json->Prettify all the time.

Closing as duplicate of #63. Please see my comment there, @moijes12, for details on how to add a keyboard shortcut for any command you use frequently. It may come in handy to know for more than just this package! 🎉


Undeprecate TagContextBuilder and Tag's put  without TagMetadata

Is your feature request related to a problem? Please describe.
When upgrading the lib to 0.20.0 some methods got deprecated without no good reasoning. TagContextBuilder method put(TagKey key, TagValue value) was deprecated in favor for put(TagKey key, TagValue value, TagMetadata tagMetadata) but I'm having hard time understanding why TagMetadata should be obligatory for everyone.
Describe the solution you'd like
Remove the deprecation for put(TagKey key, TagValue value). We should aim for simplicity while designing an API and this changes makes the current one unnecessarily complicated.
Describe alternatives you've considered
I'm forced to either do:
put(SomeTag, TagValue.create(someValue), null)

or
put(someTag, TagValue.create(someValue), tagMetadata.create(TagTtl.UNLIMITED_PROPAGATION))

Which is overly verbose.
Additional context
This is also valid for Tag

Wrong project, sorry.


Russian translation fix

will keep open so i won't forget to add this in as part of a larger languaging update later in jan 2024 most likely. thanks!

closing: contents of the pull was integrated into https://github.com/ftde0/yt2009/commit/26fe51927282d313495a2cb0153613f126673141 as it required changes.


Optimal Pooling Strategy

What is the optimal strategy when picking the next client to perform a request on in the pool?
I believe the follow sorting criteria would be best:
const next = clients
  .sort((a, b) => {
    // connected
    if (a.connected !== b.connected) return a.connected ? -1 : 1
    // queue size
    if (a.size !== b.size) return a.size - b.size
    // drained timestamp
    if (a.drained !== b.drained) return b.drained - a.drained
    return 0
  })

The more I think about this the more complex of a question this becomes. I'm a little unsure whether we should even have this in this library and if we do where to put the ambition level.
It becomes a trade off between:

number of connections
latency
retries due to closed connections
timeouts

Depth First (current algorithm)
Tries to avoid creating new connections and instead fills existing connections to maximum pipelining factor.
Pros:

Minimizes number of connections.

Cons:

Minimal concurrency. Head of line blocking. Small requests get delayed by slow requests ahead in the queue.

Breadth first
Pros:

Minimizes latency.

Cons:

Maximizes number of connections.

Then there are lots of in between that can take different heuristics into account:

number of existing connections
request body size
etc...

One hybrid would be to do breadth first with existing connections (i.e. don't start new ones) and then switch over to depth first.
Other things to keep in mind could be to have different pools for different types of requests:

Small vs Big body
idempotent vs nonidempotent
etc...

Then we also have things such as which connection should we pick from the active pool:

Most/Least recent activity (lifo, fifo in Node agents)
etc...

Alas, I'm a little unsure where to put the ambition in terms of this library.
One way could be that we implements depth first and breadth first and then let the user either implement the logic in an abstraction layer above pools or we have some kind of pluggable API.

@szmarczak

It’s even more complex than this, and I think your description contains something inaccurate.
Depth first minimizes timeouts and maximizes the tcp windows... which in turn minimize latency. However they pay the price of head-of-line blocking in case of a slow request.
Breadth first avoids the problem of head-of-line blocking at the price of higher chance of timeouts and smaller tcp windows.
Unless  there is a single request that takes forever, depth first minimize latency..

Depth first minimizes timeouts and maximizes the tcp windows... which in turn minimize latency. However they pay the price of head-of-line blocking in case of a slow request.

Good point.

Breadth first avoids the problem of head-of-line blocking at the price of higher chance of timeouts and smaller tcp windows.

Good point.

Unless there is a single request that takes forever, depth first minimize latency..

Depends on the relative latency of the different requests. If you have a request head of line that takes 10s (for various reasons) in front of a 1s requests... the 1s request will take longer. It's not just about the payload, it also about processing time on the server side, e.g. one request my indirectly call to a database while the other is just in memory on the server side. Plus lots of other factors.

Plus lots of other factors.

I agree with @mcollina. I wouldn't worry about those too much. If the following requests are delayed by a huge download (or upload - a user specified timeout), then let the download continue, meanwhile open a new connection for these particular requests and for when the huge download finishes, destroy the connection because there's a new one.


No Position FeedBack

Hi,
I was following the youtube series and I'm trying to get the position feedback while using the POSITION_TARGET_GLOBAL_INT.
However no matter what I try to use in the type field in the the_connection.recv_match I do not see anything in the console.
If I change the blocking from true to false the msg I get is None all the time.
I really appreciate any help in this issue.

Sorry for the late response a msg of None indicates that pymavlink did not receive any data. it sounds like the connection is broken. you should check the connection string


Enable different fonts and colors configuration on multiline labels

fix #739

TODO

[x] test cases
[x] types definitions changes
[x] documentation
[x] samples

Needs a rebase

I'm not able to help this weekend, except on reviews.

I'm not able to help this weekend, except on reviews.

No problem. I will leave it as is now. I need to understand better why the fixture tests are all failing only on FF and only in CI (not locally). I'll have a look next week, busy this weekend as well.

Maybe the animations got enabled for ci?

Maybe the animations got enabled for ci?

I don't think so.. I'm thinking (but not sure) it could be related to #851, where the point location calculation changed but it's also weird that I didn't have these errors in that PR

No way, even re-saving the image from FF (v110.0, like in CI) and push it. I don't where the issue could be :(

@kurkle rebased and CI ended correctly.


Documentation requested

How do one remove the automatic binding to console events?
How does one disable automatic binding to error events?
How does one disable reporting in emulator?

Hey, you can actually pass all available options that raven-js provides.
https://docs.sentry.io/clients/javascript/config/
This is how you can disable binding console event.
autoBreadcrumbs: {
    'xhr': false,      // XMLHttpRequest
    'console': false,  // console logging
    'dom': true,       // DOM interactions, i.e. clicks/typing
    'location': false  // url changes, including pushState/popState
}

How does one disable automatic binding to error events?

I am not really sure what you mean there.

How does one disable reporting in emulator?

You can actually just not call .install() this should do the trick.

Thanks, will check these out.

How does one disable reporting in emulator?
You can actually just not call .install() this should do the trick.

This doesn't work, as after require, Sentry will randomly throw Cannot read property 'logLevel' of undefined because of this line:
  static _log(...args) {
    if (Sentry.options.logLevel >= 2) {
      console.log.apply(null, args);
    }
  }

https://github.com/getsentry/react-native-sentry/blob/master/lib/Sentry.js#L61
I believe the only thing being called is the original require, no config() or install().

I don't understand if you just run
Sentry.config("your dsn"); without the .install()
this should work fine. The options will be initialized there.

I came here because I got the same error Cannot read property 'logLevel' of undefined, I was trying to set user context without having called Sentry.config, I think the lib should throw an error that it needs to be set up with .config before calling the other methods. Thoughts?

@albinekb have you tried this
import {
  Sentry,
  SentrySeverity,
  SentryLog
} from 'react-native-sentry';

No, are you suggesting that the bundler is excluding important files for react-native-sentry, and those get imported by calling  Sentry.config()?
Because I fixed my problem by changing my code to always run Sentry.config (even for local dev builds) and that made it not throw the error.
That's why I'm suggesting that the lib should throw an error if you try to use setUserContext without having called Sentry.config first?

Oh, that's what you meant, sorry, got it.
Actually, that would mean a lot of internal code changes, I will think about an elegant solution for that thanks for pointing this out.


install failed

Hi,
I have installed the below version of node & npm
node v6.11.3
npm  v3.10.10
My installation of angular-seed fails. npm-debug.log attached for your reference.
npm-debug.txt

It seems that bower install fails. There can be several reasons about it and it is not clear based on the log.
Just in case, check out "Firewall/Proxy issues" in these knows issues. IIRC it affects bower too.

emilda : do you have git installed in your machine ??


Big Issue

This bot is a issue, delete it

Ok sorry @RidwanA123 looks like https://github.com/EmreCenk/Plot-Twist-Discord-Bot/issues/2 was also closed so I'm closing this


Automatically format expanded macros

Rather than requiring macro implementations to add required whitespace and indentation, basic format all macro expansions. Right now this uses the default four space indentation, we can consider having that inferred later. Macros can opt-out of automatic formatting by implementing formatMode and setting it to .disabled.
Add new trimmed(matching:) and trimmedDescription(matching:) methods
to allow eg. only trimming whitespace rather than all trivia. Use this
when trimming macro expansions so that any added comments are kept.
Resolves rdar://107731047.

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test

@swift-ci please test Windows platform

@swift-ci please test Windows platform


Node packaging and installation

The Motivation
This epic should address everything required to allow a user to fetch the node, install it and get it ready to start making $$$$
The Requirement
TODO: What is the expected behaviour of this epic?

@avive is there a product page describing the requirements for installing the node (where will the user fetch the binary from? What is the flow for a user that wishes to install the node from the code?) If there isn't such page, can please write it down and add a link to the description

Yes, for users who can run electron apps using installers: https://testnet.spacemesh.io/#/guide/install is the main page and see linked pages from it. e.g. verifying checksums...
Building and running from source needs to be supported as well: https://testnet.spacemesh.io/#/build
Linux w/o support to electron apps: https://testnet.spacemesh.io/#/linux
@zalmen


Minor ui tweeks

Coverage remained the same at 93.15% when pulling 41cc77547a2785609539167fedd3a263b51a39de on minor-ui-tweeks into f7acfe5edbe240d25e949c2ba0e207ce4268ae42 on master.


1D Convolution in Julia - convolve_cyclic not commutative

Bug Report
Description
The convolution operation should be commutative, but the Julia implementation isn't for inputs of different size.
Steps to Reproduce
julia> convolve_cyclic([3, 4, 5], [1, 2])
3-element Array{Float64,1}:
 13.0
 13.0
 10.0

julia> convolve_cyclic([1, 2], [3, 4, 5])
ERROR: BoundsError: attempt to access 2-element Array{Int64,1} at index [3]
Stacktrace:
 [1] getindex at ./array.jl:809 [inlined]
 [2] convolve_cyclic(::Array{Int64,1}, ::Array{Int64,1}) at /Users/jie/Documents/algorithm-archive/contents/convolutions/code/julia/1d_convolution.jl:17
 [3] top-level scope at REPL[52]:1

When the signal is larger, the filter is padded with 0s (conceptually, maybe not in the implementation). It should go the other way around too. The following lines even suggest that:
https://github.com/algorithm-archivists/algorithm-archive/blob/0930d2743ed5e08641cfa0b926198a95bdb9dd12/contents/convolutions/code/julia/1d_convolution.jl#L7-L8
Expected behavior
julia> convolve_cyclic([3, 4, 5], [1, 2])
3-element Array{Float64,1}:
 13.0
 13.0
 10.0

julia> convolve_cyclic([1, 2], [3, 4, 5])
 13.0
 13.0
 10.0

For Algorithm Archive Developers

[ ] The bug can be reproduced
[ ] The bug can be fixed (if not, please explain why not in a comment below)
[ ] There is a timeline to fix the bug
[ ] The bug has been fixed (Please link the PR)

I believe this was fixed by #854


B #3204: check enable support-tab in yaml files

Signed-off-by: Alexey Shabalin<EMAIL_ADDRESS>

Confirming that the patch is working on 5.8.4.
Thanks @shaba!

patch is working, please ship it


CAD-737 eliding BlockFetchDecision messages

Issue

eliding messages BlockFetchDecision (issue #666 )

This PR does not result in breaking changes to upstream dependencies.

Checklist

[x] This PR contains all the work required to resolve the linked issue.

[ ] The work contained has sufficient documentation to describe what it does and how to do it.

[ ] The work has sufficient tests and/or testing.

[x] I have committed clear and descriptive commits. Be considerate as somebody else will have to read these.

[x] I have added the appropriate labels to this PR.

bors r+

bors r+


[BUG] Link to manual seems incorrect

Describe the bug
I have tried to write an N-Queens version suitable for Apalache and get this message:
To understand the error, read the manual:                         I@12:51:18.308
[https://github.com/informalsystems/apalache/blob/unstable/docs/manual.md#assignments] I@12:51:18.308
Assignment error: No assignments found for: queens
The issue was caused by using FALSE for the next predicate (everything is in the initialisation).
However, the link to the manual seems outdated and should possibly be https://apalache.informal.systems/docs/idiomatic/001assignments.html

Thanks! There is another page in the manual that also explains assignments: https://apalache.informal.systems/docs/apalache/assignments.html

@leuschel thanks for the report! Could you also indicate what version of apalache you currently using (just for the record)?
That is given by
apalache-mc version

Thanks!

APALACHE version 0.8.0-RELEASE build v0.8.0-0-g05dfdb8

FWIW: I also observed a broken link a few days ago with a recent unstable build.

Thank, @leuschel!
@lemmy are you noting there was a different, additional link broken?

@shonfeder I don't remember what the link pointed to (it might have been assignments.html), but it was definitely shown as part of Apalache's error reporting.

Ok, thanks.


refactor(transformer/class-properties): make transform_instance_assignment_expression more generic

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#7956  👈 (View in Graphite)
#7955
main

How to use the Graphite Merge Queue
Add either label to this PR to merge it via the merge queue:

0-merge - adds this PR to the back of the merge queue
hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

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


More than 10 assessments can be started and the amount of locks is not correctly displayed

Describe the bug
Usually, a Tutor can only have 10 unfinished assessments per Exercise. This limit does not apply anymore, a Tutor can have more than 10 unfinished assessments right now. Furthermore, the locked assessments are not shown on the "Assessment Dashboard" and cannot be unlocked from there (Assessments can still be unlocked directly by the "Cancel" Option on the Assessment Screen).
To Reproduce

Start new Assessment (can be repeated more than 10 times)
Go to the Assessment Dashboard
The "Assessments locked by you:" field will show 0
Click on the "Assessments locked by you:" Link
Artemis will show "No assessments locked by you!"

Expected behavior
I expected that Artemis will prevent me from starting more than 10 (unfinished) assessments, as well as showing me the correct amount of currently locked assessments on the "Assessment Dashboard".
Screenshots
More than 10 Assessments:

Assessment Dashboard showing 0 locked assessments:

Environment

 - OS: Windows 10
 - Browser: Latest Firefox, Latest Google Chrome
 - Version: Artemis 4.9.2

Additional context
Affected Course: 83 (PGdP - Praktikum Grundlagen der Programmierung)
Affected Exercise: 2849 (Funktionscache)

I can confirm this:

TS1; artemis_test_user_7; Chris Test Course, Prog.Exercise PR 2738

I can confirm this:

TS1; artemis_test_user_7; Chris Test Course, Prog.Exercise PR 2738


Internal links checker throwing exception

Steps to reproduce

start with my working site
bundle update nanoc (to get 11.4.4)
bundle exec nanoc check internal_links

Expected behavior
All is well.
Actual behavior
Loading site… done
  Running check internal_links…
Captain! We’ve been hit!

NoMethodError: undefined method `green' for "ok":String

  0. /Volumes/Cased/git/iay/iay/site/vendor/ruby/2.4.0/gems/nanoc-4.11.4/lib/nanoc/checking/runner.rb:109:in `block in run_checks'

Details
The line in question is:
        puts check.issues.empty? ? 'ok'.green : 'error'.red

I note that elsewhere in runner.rb there's a require 'colored' but I don't seem to have that available. Missing dependency perhaps?

colored was a dependency of cri, which is a dependency of nanoc. I removed colored as a dependency from cri, but did not realise that Nanoc uses colored indirectly.
I will add colored as an explicit dependency to nanoc.

(Unfortunately, these kinds of problems are bound to happen because that is the way Ruby works.)

Fixed by 3008036bd834219c532e4c357e767dac47f758ad.

(You could also downgrade cri as a workaround.)

Confirming that the change you pushed works for me.

This is now in the Nanoc 4.11.5 release.