i18n(ru): update reference docs

Update:

ru/reference/configuration.mdx
ru/reference/frontmatter.md

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

ru
reference/configuration.mdx
Localization changed, will be marked as complete.

ru
reference/frontmatter.md
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


Fix #220 - appName and appPath processing bug

Processing of appName and appPath in MobileTestSession was not
happening when values were passed as config properties

@sebady @sundaramrajendran any concerns with this?

Looks good to me

This specific change looks fine.  I would also recommend fixing the use of this to be consistent.
There are more problems though in this initializeTestSession.
If the configuration for language was specified as "MOBILE_APP_LANGUAGE=fr" the method initializeTestSession will use "en" for lang instead since that is the default value in MobileTest annotation.

@sebady The problem you mention is due to the default value in MobileTest -- so we need to rethink that ... I don't see any inconsistency in initializeTestSession here w.r.t how things work in WebTest

@sebady @sundaramrajendran I believe I have address the review feedback and updated this PR. Please verify


The version of torch and MinkowskiEngine

Hey,
Many thanks for releasing the code. Amazing work!
May I ask what is the exact torch version and MinkowskiEngine? I followed the install command "pip3 install -r requirements.txt" and then "pip3 install -U -e .",  "python3 tarl_train.py"
But it shows "ModuleNotFoundError: No module named 'torch.ao.quantization'"
It seems that there is some error with torch====1.9.0
Thank you.

Could you tell me the version of CUDA you have in your machine? I would refer to this issue in our previous work: https://github.com/PRBonn/segcontrast/issues/11

Hello, thanks for the quick replying!
My CUDA version is 11.7.
I following your solution in your previous work by:

pip3 install torch==1.9.0+cu111 torchvision==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
pip3 install -U git+https://github.com/NVIDIA/MinkowskiEngine
("pip3 install -U git+https://github.com/NVIDIA/MinkowskiEngine --install-option="--blas=openblas" -v --no-deps" will show "no such option: --install-option")

It gives a new error as below:
File "/home/henry/miniconda3/envs/test_env/lib/python3.9/multiprocessing/reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: cannot pickle 'MinkowskiConvolutionFunction' object
Thank you so much

In my setup I have used CUDA 11.1 and python3.8
Since it seems you are using conda, could you try to use those versions of CUDA and python and try installing again pytorch 1.9.0 and MinkowskiEngine?


Question: typeDef and resolver example for union types

How do I handle this in graphql-tools using the type language and resolver map approach. I'm using makeExecutableSchema() successfully for all the rest, but can't find an example of unions

Define the string like this: union Person = Child | Adult;
Then in resolvers, define the resolveType as follows:
{
  Person: {
    __resolveType: ...,
  },
}

You can read about it in the docs as well.


Standardize weightStr in text output

#13 7400-08-0|null|null|C00000152:
[rndly:2]
[0.0131705] P16112|Aggrecan core protein|4md4
[0.13599] P02768|Serum albumin|1ha2,4iw1,4iw2,...
Possibly:
[.023]
[1.00]

done.


Add guidance on reuse and attribution

We could add guidance on the fact you can reuse anything we've done, the best way to reuse, and the best way to do attribution

Thanks Joe, we're going to close this for now until we have a better understanding of how people want to use our work.

Reopened this as the team is interested in exploring this again.

Discussed in triage. Decision made to add note to README on Frontend and Design System.


Refresh member status

Before the angular migration, the members table had a button in the status column that allowed you to check their current status (this would go out to the payment provider to get the latest status).
Endpoint: /member/{id}/status
This is useful for situations when someone has to manually update a members status.

Done


Note templates

Closed by https://github.com/lumen-notes/lumen/commit/769140a5bdce30ed99edceaf1ab680cd80ec15c0


THIS PROJECT SEEMS TO BE ABANDONED

See #592, which was posted almost two years ago and was never addressed.
@1000hz, please archive this repo or note that it is not under active development.

correct its a complete disaster


S3 Bucket script doesn't check if bucket is ok

We run a shell script to create a bucket and make it exit 0 if there's an error message in the execution.
We need something to validate we can use that bucket, and as the shell script will run in every execution...
The same time is needed to check for it before or after creation, so I think the best approach would be to just check if we can access it afterwards.

If we want a detailed failed view, we could use something like this
bucketstatus=$(aws s3api head-bucket --bucket "${s3_bucket}" 2>&1)
s3_exitcode=63

if [[ $bucketstatus =~ "Not Found" ]];
then
  echo "bucket doesn't exist";
  exit $s3_exitcode
elif [[ $bucketstatus =~ "Forbidden" ]];
then
  echo "Bucket exists but not owned"
  exit $s3_exitcode
elif [[ $bucketstatus =~ "Bad Request" ]];
then
  echo "Bucket name specified is less than 3 or greater than 63 characters"
  exit $s3_exitcode
else
  echo "Bucket owned and exists";
  exit 0
fi

If we don't, a simple if like this
if ! [[ -z $(aws s3api head-bucket --bucket $s3_bucket 2>&1) ]]; then
        echo "bucket does not exist or permission is not there to view it."
        exit 63
fi


-Zmtime-on-use causes spurious rebuilds in workspace

Problem
Running a build using -p or --manifest-path to build individual crates from a workspace and -Zmtime-on-use to allow using cargo-sweep causes some of the dependencies to get rebuilt when they shouldn't.
I have tried to reproduce this in one other workspace I have and it didn't happen, it appears to be somehow specific to the workspace setup in Tide.
Steps
> git clone https://github.com/rustasync/tide && cd tide
Cloning into 'tide'...
[...]
> # current commit: 011d0db078d74e78ccf53f03605271b1bba60290

> cargo build -p tide -Zmtime-on-use
   [...far too many crates...]
   Compiling tide v0.2.0 (/private/var/folders/0p/5yvmrvhj5w3_vy1y8x7dvk7m0000gn/T/tmp.TiMcd4ms/tide/tide)
    Finished dev [unoptimized + debuginfo] target(s) in 1m 42s
> cargo build -p tide-core -Zmtime-on-use
    Finished dev [unoptimized + debuginfo] target(s) in 0.09s
> cargo build -p tide -Zmtime-on-use
   Compiling num-traits v0.2.7
   Compiling num-integer v0.1.40
   Compiling thread_local v0.3.6
   [...20 other crates.io dependencies...]
   Compiling tide-cookies v0.2.0 (/private/var/folders/0p/5yvmrvhj5w3_vy1y8x7dvk7m0000gn/T/tmp.TiMcd4ms/tide/tide-cookies)
   Compiling tide v0.2.0 (/private/var/folders/0p/5yvmrvhj5w3_vy1y8x7dvk7m0000gn/T/tmp.TiMcd4ms/tide/tide)
    Finished dev [unoptimized + debuginfo] target(s) in 16.87s

> # If -Zmtime-on-use isn't used then nothing gets rebuilt:
> cargo build -p tide
    Finished dev [unoptimized + debuginfo] target(s) in 0.11s
> cargo build -p tide-core
    Finished dev [unoptimized + debuginfo] target(s) in 0.08s
> cargo build -p tide
    Finished dev [unoptimized + debuginfo] target(s) in 0.09s

Notes
Output of cargo version: cargo 1.36.0-nightly (759b6161a 2019-05-06)
cc @Eh2406

Sorry I have not had a chance to look into this. Conceptually mtime-on-use tuches files that Cargo uses but where Cargo does not use the mtime. (Where Cargo uses the mtime, it is not optional)
Cargo reads and writes mtime using the filetime crate, so I would investigate by printing each file that reads and writes `mtime.
We are looking for the file that:

Is read.
Is written when using mtime-on-use.
Is not written when doing normal invocation.

Then when we know the offending file, the solution is ether to stop reading it or to stop writing it. That depends on where and why it is read.

I am experiencing something like this with chrono which depends on num-traits and num-integer. If I use a patch declaration in my Cargo.toml to point num-traits and num-integer to locally cloned versions of their Git repositories, then I have no spurious rebuilds of those two packages (and any package that depends on them and so forth).

Hey, thanks for the detailed description, jumping in to participate since I've seen the E-help-wanted and E-mentor tags. Reading through the code (but without a clear understanding of the intended purpose of the mtime-on-use flag) I fail to see the issue here (that is, what would be the expected behavior in these cases). Since the two packages live in the same workspace and share the same dependencies (same .rmeta files whose mtimes get updated every time they are checked), but not necessarily in the same exact graph, it seems there will always be a discrepancy when rebuilding the other package.
Another example,
git clone https://github.com/rust-lang/rls
cargo build -p rls
cargo build -p rls-rustc -Zmtime-on-use
cargo build -p rls -Zmtime-on-use
cargo build -p rls-rustc -Zmtime-on-use
[...]

both packages will keep stepping on each other and both will need to be rebuilt. More explicitly, rls_rustc (a dependency of rls) will complain when being built that it's already outdated (from the previous rls build),
CARGO_LOG=cargo::core::compiler::fingerprint=trace cargo build -p rls-rustc -Zmtime-on-use
[...]
cargo::core::compiler::fingerprint] dependency on `rls_rustc` is newer than we are
cargo::core::compiler::fingerprint] fingerprint error for rls-rustc v0.6.0
cargo::core::compiler::fingerprint]     err: current filesystem status shows we're outdated

(Not saying there's no problem here, just trying to better understand the issue to try to participate. Any clarifications would be very helpful, thanks.)

Grate! Thanks for jumping in!

(but without a clear understanding of the intended purpose of the mtime-on-use flag)

So let me dig up some history. The /target directory grows without bound with normal use of Cargo. This provides the best caching we can. The only way to clean it up is cargo clean which basically blows the entire thing away, and means a full rebuild on the next use of Cargo. There are many better GC/Invalidation strategies then all or nothing. But it is not clear which are going to be useful enough for Cargo to support in perpetuity. (#6229) The thought is to make outside subcommands that try different strategies, and we will talk about bringing the best in when we see what works.
Turns out that most better strategies want to know when Cargo last used an artifact. CI often needs record a timestamp, build all the things, GC artifacts older than the timestamp. Crater needs, when the drive fills up GC the oldest things until we have enough room to continue. On the 99% of systems where accessed time is not available from the file system, Cargo needs to provide that data. This was added in #6477, with lots of good discussion. Unfortunately this did not work well on some systems, specifically it made the playground time out, and was put behind the mtime-on-use flag in #6573

what would be the expected behavior in these cases

The intent of mtime-on-use is that it only changes the mtimes of files where Cargo does not use the mtime of the file. If Cargo reds a the mtime of a file that was set by mtime-on-use then there is a bug. That bug may be, from least profound to most:

mtime-on-use is setting it on some small category of files that it should not be.
Cargo is reading mtimes of some small category of files that it should not be.
There is no way to tell if Cargo will need to read the mtime of any particular file so mtime-on-use needs to be redesigned. A redesign my be interesting for other reasons, but this would be a nail in the coffin of this design.

To start investigating I would start by comparing the set of files:

That are set by mtime-on-use, here or here
That are read by paths::mtime
That flow into the log message you found. Thank you for finding that!

The first two sets can be found by adding some log::info!. Hopefully the overlap is small and we can figure it out from there. If not we know, thanks to you, that it is related to rls_rustc, so we can look at the subset related to that.
Everything else is unknown unknowns.

Thanks for this excellent write-up. I'll make a more thorough investigation but my impression (from some logs I set up when first looking at this) is that we're closer to number 3 (without necessarily being the last nail).

The intent of mtime-on-use is that it only changes the mtimes of files where Cargo does not use the mtime of the file.

I didn't see anything in the code that reflects this intent. It seems to me that check_filesystem indiscriminately sets all output's mtime. This is fine when building the same package many times because the .rmeta files (seen both as outputs and dependencies) are processed in the correct order but when we try to build a package that shares only some part of the dependency graph (and not necessarily in the same order) then I think  mtime discrepancies are bound to happen. I haven't seen anything in the design that could possibly account for that (it seems to me cargo thinks about a single dependency graph at a time, which seems reasonable, it's not speculating that the same Units may be part of different graph for a different target).
Anyway, that is just my first impression and I'm probably missing parts of the puzzle, I'll try to dig deeper systematically scraping the log output as you suggest.

No need for a deeper dig, you are completely correct. The touching of intermediate artifacts does not preserve the only changes the mtimes of files where Cargo does not use the mtime of the file invariant, since #6883 or #6832.
@alexcrichton that was your suggestion and your PRs. How do you think we should fix this?
My 2c is that we just remove the touching of intermediate artifacts. This dose mean that all GC strategies will need to be aware of (and updated with) Cargos layout of /target. But the only one in use so far is cargo-sweep, which already uses the fingerprint file. @ehuss, If an outside tool needs to be aware of a designated side channel, (currently the fingerprint file), then your suggestion of having a different side channel seems very tempting.

Sorry I'm not really up to speed on the issues here and what broke and what it's all used for. That being said experimental features are experimental for a reason which is that we're not willing to commit to keeping them working over time, so I'm sorry if those PRs broke the feature but we can't also just freeze Cargo as-is, tack on experimental features, and then never break anything.

@Eh2406 With some guidance I could probably start some work towards your proposed solution (if you think that may be a way forward in the GC effort).

@alexcrichton I am sorry I came across as blaming you. You are absolutely correct, unstable features can and will break. I do not have a problem with your PRs braking the unstable mtime-on-use flag. The question I have is how to proceed. My feeling is to rip out the conflicting part of the unstable mtime-on-use feature. mtime-on-use was always intended to be a small change, that could be removed if it gave us trouble. My only hesitation is that you specifically asked me to add that part. link So I did not want to ask @schomatis to remove it without asking you.
@schomatis Help with a PR would be appreciated! The steps involved making a new test, like the ones added here that using mtime-on-use does not trigger a rebuild in a workspace. (This test will fail now.)
If we agree that remove the touching of intermediate artifacts is the solution, then you can remove https://github.com/rust-lang/cargo/blob/65e3885ce3a60e61aaede458233616c177a1f701/src/cargo/core/compiler/fingerprint.rs#L784-L787
and the mtime_on_use argument to that function. (and any other code that makes dead.) This should make your new test pass. It should also make the simple_deps_cleaner_dose_not_rebuild test fail, so you'll need to remove it.

Oh I'm fine architecting this however works best, so removing something I thought was a good idea because it's no longer a good idea seems fine by me.

Thank you @schomatis for the CARGO_LOG flag to print fingerprinting messages. I discovered that my spurious rebuilds were not because of the mtime-on-use flag, but rather because of my use of remap-path-prefix in my Cargo.toml. After removing that from the custom rustflags, I no longer get spurious rebuilds.
rustflags = ["--remap-path-prefix", "/home/user/.cargo=/"]

[2019-10-30T17:52:38Z INFO  cargo::core::compiler::fingerprint] stale: missing "/registry/src/github.com-1ecc6299db9ec823/indexmap-1.3.0/build.rs"
[2019-10-30T17:52:38Z INFO  cargo::core::compiler::fingerprint] stale: missing "/registry/src/github.com-1ecc6299db9ec823/num-integer-0.1.41/build.rs"
[2019-10-30T17:52:38Z INFO  cargo::core::compiler::fingerprint] stale: missing "/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.8/build.rs"


Websocket Client TLS not supported on Win7/8 (handshake failure)

Describe the bug
Handshake failure error occurd when websocket client connect to Pulsar(Standalone mode) ;
But its worked well on Win10 or Android or use other client(like Java Client);
After anaylise logs and src code, i guess the bug occured because DISMATCH cipher suite between pulsar wss and ws client
To Reproduce
Steps to reproduce the behavior:

User C#/JS websocket client connect to pulsar wss service
client shows "disconnected" immediately
Use wireshark grap data from net traffic, after client hello ,it shows "Level: Fatal, Handshake failure(40)"  from server side
In pulsar debug log, it shows
javax.net.ssl.SSLHandshakeException: Read error: ssl=0x7f81c401f458: Failure in SSL library, usually a protocol error error:100000b8:SSL routines:OPENSSL_internal:NO_SHARED_CIPHER (../ssl/handshake_server.cc:718 0x7f80390d5700:0x00000000)

Expected behavior
Successful wss connection expected on Win7/8
Configurations

Server side: Pulsar 2.9.1 standalone;  OpenJDK1.8 (after upgrade to openjdk11，still not working)；OpenSSL（1.1.1c）；Use self-signed certifacate；configs in pulsar standalone.conf

webServicePortTls=8443
brokerServicePortTls=6651
tlsCertificateFilePath=../CA/broker.cert.pem
tlsKeyFilePath=../CA/broker.key-pk8.pem
tlsTrustCertsFilePath=../CA/certs/ca.cert.pem
tlsAllowInsecureConnection=false

tlsProtocols=TLSv1.2,TLSv1.1,TLSv1
tlsCiphers=

tlsRequireTrustedClientCertOnConnect=false
tlsEnabledWithKeyStore=false

# TLS Provider for KeyStore type
tlsProvider=
tlsKeyStoreType=JKS
tlsKeyStore=
tlsKeyStorePassword=
tlsTrustStoreType=JKS
tlsTrustStore=
tlsTrustStorePassword=
brokerClientTlsEnabledWithKeyStore=false
brokerClientSslProvider=
brokerClientTlsTrustStoreType=JKS
brokerClientTlsTrustStore=
brokerClientTlsTrustStorePassword=
brokerClientTlsCiphers=
brokerClientTlsProtocols=

Client side: Win7/8  C# (with .Net Framework 4.8+) or Javascript client on Chrome/IE

Operations、Screenshots and My personal anaylise

Pulsar startup logs:(it shows that pulsar broker use OpenSSL as its TLS support)

10:49:32.044 [main] DEBUG io.netty.handler.ssl.OpenSsl - Supported protocols (OpenSSL): [SSLv2Hello, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3]
10:49:32.044 [main] DEBUG io.netty.handler.ssl.OpenSsl - Default cipher suites (OpenSSL): [TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384]
10:49:32.046 [main] INFO  org.apache.pulsar.broker.service.BrokerService - Started Pulsar Broker TLS service on /<IP_ADDRESS>:6651 - TLS provider: OPENSSL

Use c# websocket client connect to pulsar wss port on Win7, shows "Disconnected" immediately

Use Wireshark grap net traffic data

Pulsar debug logs:

09:28:02.059 [pulsar-web-59-5] DEBUG org.eclipse.jetty.io.AbstractConnection - onClose HttpConnection@77e58cb6::DecryptedEndPoint@4e357b77{l=<IP_ADDRESS>/<IP_ADDRESS>:6683,r=null,CLOSED,fill=-,flush=-,to=156/30000}
09:28:02.059 [pulsar-web-59-15] DEBUG org.eclipse.jetty.server.HttpConnection -
javax.net.ssl.SSLHandshakeException: Read error: ssl=0x7f81c401f458: Failure in SSL library, usually a protocol error
error:100000b8:SSL routines:OPENSSL_internal:NO_SHARED_CIPHER (../ssl/handshake_server.cc:718 0x7f80390d5700:0x00000000)
	at org.conscrypt.SSLUtils.toSSLHandshakeException(SSLUtils.java:361) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.convertException(ConscryptEngine.java:1138) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:923) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:751) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:716) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.Java8EngineWrapper.unwrap(Java8EngineWrapper.java:236) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.eclipse.jetty.io.ssl.SslConnection.unwrap(SslConnection.java:429) ~[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:718) ~[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.server.HttpConnection.fillRequestBuffer(HttpConnection.java:345) [org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386) [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [io.netty-netty-common-4.1.72.Final.jar:4.1.72.Final]
	at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: javax.net.ssl.SSLProtocolException: Read error: ssl=0x7f81c401f458: Failure in SSL library, usually a protocol error
error:100000b8:SSL routines:OPENSSL_internal:NO_SHARED_CIPHER (../ssl/handshake_server.cc:718 0x7f80390d5700:0x00000000)
	at org.conscrypt.NativeCrypto.ENGINE_SSL_read_direct(Native Method) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.NativeSsl.readDirectByteBuffer(NativeSsl.java:567) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.readPlaintextDataDirect(ConscryptEngine.java:1099) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.readPlaintextDataHeap(ConscryptEngine.java:1119) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.readPlaintextData(ConscryptEngine.java:1091) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	at org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:880) ~[org.conscrypt-conscrypt-openjdk-uber-2.5.2.jar:2.5.2]
	... 23 more

Anaylise client handshake data trans, in "Client Hello" request: cipher suites list

Use SSL_Scan tool to scan pulsar wss port:

Version: 2.0.11 Windows 64-bit (Mingw)
OpenSSL 1.1.1e-dev  xx XXX xxxx

Connected to <IP_ADDRESS>

Testing SSL server <IP_ADDRESS> on port 8443 using SNI name <IP_ADDRESS>

  SSL/TLS Protocols:
TLSv1.0   disabled
TLSv1.1   disabled
TLSv1.2   enabled
TLSv1.3   enabled

  TLS Fallback SCSV:
Server supports TLS Fallback SCSV

  TLS renegotiation:
Session renegotiation not supported

  TLS Compression:
Compression disabled

  Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.3  256 bits  TLS_CHACHA20_POLY1305_SHA256  Curve 25519 DHE 253
Accepted  TLSv1.3  128 bits  TLS_AES_128_GCM_SHA256        Curve 25519 DHE 253
Accepted  TLSv1.3  256 bits  TLS_AES_256_GCM_SHA384        Curve 25519 DHE 253
Preferred TLSv1.2  256 bits  ECDHE-RSA-CHACHA20-POLY1305   Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve 25519 DHE 253

  Server Key Exchange Group(s):
TLSv1.3  128 bits  secp256r1 (NIST P-256)
TLSv1.3  192 bits  secp384r1 (NIST P-384)
TLSv1.3  128 bits  x25519
TLSv1.2  128 bits  secp256r1 (NIST P-256)
TLSv1.2  192 bits  secp384r1 (NIST P-384)
TLSv1.2  128 bits  x25519

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  <IP_ADDRESS>
Issuer:   Test Pulsar

Not valid before: Dec 22 01:51:46 2021 GMT
Not valid after:  Sep 17 01:51:46 2024 GMT

Scan port 6651(broker tls) findout that pulsar 6651 supported more cipher suite(default set tlsCiphers=) than 8443 wss port, and its match configuration with tlsProtocols options(i remove tlsv1.3) in conf/standalone.conf file

Connected to <IP_ADDRESS>

Testing SSL server <IP_ADDRESS> on port 6651 using SNI name <IP_ADDRESS>

  SSL/TLS Protocols:
**TLSv1.0   enabled
TLSv1.1   enabled
TLSv1.2   enabled
TLSv1.3   disabled**

  TLS Fallback SCSV:
Server supports TLS Fallback SCSV

  TLS renegotiation:
Secure session renegotiation supported

  TLS Compression:
Compression disabled

  Heartbleed:
TLSv1.2 not vulnerable to heartbleed
TLSv1.1 not vulnerable to heartbleed
TLSv1.0 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-GCM-SHA384   Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256
Accepted  TLSv1.2  128 bits  AES128-SHA
Accepted  TLSv1.2  256 bits  AES256-SHA
Preferred TLSv1.1  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.1  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.1  128 bits  AES128-SHA
Accepted  TLSv1.1  256 bits  AES256-SHA
Preferred TLSv1.0  128 bits  ECDHE-RSA-AES128-SHA          Curve 25519 DHE 253
Accepted  TLSv1.0  256 bits  ECDHE-RSA-AES256-SHA          Curve 25519 DHE 253
Accepted  TLSv1.0  128 bits  AES128-SHA
Accepted  TLSv1.0  256 bits  AES256-SHA

  Server Key Exchange Group(s):
TLSv1.2  128 bits  secp256r1 (NIST P-256)
TLSv1.2  192 bits  secp384r1 (NIST P-384)
TLSv1.2  128 bits  x25519

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  <IP_ADDRESS>
Issuer:   Test Pulsar

As DOCs said

Pulsar uses OpenSSL if the OpenSSL is available, but if the OpenSSL is not available, Pulsar defaults back to the JDK implementation
I think its worked just for broker tls(6651)

Change tlsProtocols/tisCiphers does NOT effect wss(8443) tls support
Define brokerClientTlsCiphers/brokerClientTlsProtocols does NOT effect wss(8443) tls support
Upgrade OpenJDK1.8 to OpenJDK11 or chage java.security 's jdk.tls.disabledAlgorithmsdoes NOT working
Question : Why Pulsar WSS(8443) support only 6 ciphers by default and can not be configured ? or where can i change/define its supported ciphers ? Pulsar Websocket TLS support come from which component?

pulsar websocket service use jetty handle tls http( supported by Conscrypto)
found jetty load ciphers in startup logs
11:54:31.913 [main] DEBUG org.eclipse.jetty.util.ssl.SslContextFactory - Selected Protocols [TLSv1, TLSv1.1, TLSv1.2, TLSv1.3] of [TLSv1, TLSv1.1, TLSv1.2, TLSv1.3]
11:54:31.913 [main] DEBUG org.eclipse.jetty.util.ssl.SslContextFactory - Selected Ciphers   [TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA2
0_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_
WITH_AES_256_GCM_SHA384, TLS_EMPTY_RENEGOTIATION_INFO_SCSV] of [TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_
RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_
RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_PSK_WITH_AES_128_CBC_SHA, TLS_RSA_WIT
H_AES_256_CBC_SHA, TLS_PSK_WITH_AES_256_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_EMPTY_RENEGOTIATION_INFO_SCSV, TLS_FALLBACK_SCSV]
11:54:31.915 [main] DEBUG org.eclipse.jetty.util.ssl.SslContextFactory - Customize org.conscrypt.Java8EngineWrapper@35570a84

noticed that: jetty select only xxx_GCM_SHAxxx or xxx_POLY1305_SHAxxx from support cipher list
so the question again: where jetty load and decide which tls cipher support?
from SslContectFactory src code:
selectCipherSuites(enabled.getCipherSuites(), supported.getCipherSuites());
....
in method : processIncludeExcludePatterns
there is DEFAULT include/exclude pattern to choose ciphers:

    private static final String[] DEFAULT_EXCLUDED_CIPHER_SUITES = {
        // Exclude weak / insecure ciphers
        "^.*_(MD5|SHA|SHA1)$",
        // Exclude ciphers that don't support forward secrecy
        "^TLS_RSA_.*$",
        // The following exclusions are present to cleanup known bad cipher
        // suites that may be accidentally included via include patterns.
        // The default enabled cipher list in Java will not include these
        // (but they are available in the supported list).
        "^SSL_.*$",
        "^.*_NULL_.*$",
        "^.*_anon_.*$"
    };

ok, its exclude weak and bad name cipher (  removed all xxx_CBC_SHA)
if i guess right, when Win7/8 client support xxx_CBC_SHA mostly, server did not support.
but where jetty decide SUPPORTED ciphers? from src code
something like this:
SslContextFactory.SSLContext getSupportedSSLParameters.getCipherSuites()

sslEngine.setSSLParameters(customize(sslEngine.getSSLParameters()));

in customize:
if (_selectedCipherSuites != null)
            sslParams.setCipherSuites(_selectedCipherSuites);

also from debug log:
11:54:31.915 [main] DEBUG org.eclipse.jetty.util.ssl.SslContextFactory - Customize org.conscrypt.Java8EngineWrapper@35570a84
11:54:31.918 [main] DEBUG org.eclipse.jetty.util.component.AbstractLifeCycle - STARTED @36002ms SslContextFactoryWithAutoRefresh@79e33802[provider=Conscrypt,keyStore=null,trustStore=null]
11:54:32.007 [main] DEBUG org.eclipse.jetty.util.ssl.SslContextFactory - Customize org.conscrypt.Java8EngineWrapper@380ea757
11:54:32.010 [main] DEBUG org.eclipse.jetty.util.component.AbstractLifeCycle - STARTED @36094ms<EMAIL_ADDRESS>11:54:32.010 [main] DEBUG org.eclipse.jetty.util.component.AbstractLifeCycle - starting<EMAIL_ADDRESS>11:54:32.011 [main] DEBUG org.eclipse.jetty.util.component.AbstractLifeCycle - STARTED @36095ms<EMAIL_ADDRESS>11:54:32.011 [main] DEBUG org.eclipse.jetty.util.component.AbstractLifeCycle - starting SelectorManager@PulsarServerConnector@74471600{SSL, (ssl, http/1.1)}{<IP_ADDRESS>:8443}

shows that jetty use Consrypto.Java8EngineWrapper(i guest its ConscrpytoEngine)
and where did jetty set _selectedCipherSuites in SslContextFactory ?
from ssl_conext creation:
        SSLContext sslCtx = CONSCRYPT_PROVIDER != null ? SSLContext.getInstance("TLS", CONSCRYPT_PROVIDER)
                : SSLContext.getInstance("TLS");
        sslCtx.init(keyManagers, trustManagers, new SecureRandom());
        sslCtx.getDefaultSSLParameters();

i guess SSLContext set sslParameters(which defined support cipher suites) by CONSCRYPT_PROVIDER
so i come to Conscypto github site and findout what ciphers its support
https://github.com/google/conscrypt/blob/master/CAPABILITIES.md
TLS 1.0-1.2
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384

yes, pulsar use conscrypto's ciphers as its websocket tls support
But i found that " TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" is selected from startup logs
and my c# client support this cipher , still got no share cipher error

i found pulsar jetty selected many ciphers ,and selected TLSv1.1 , TLSv1 , but when i scan WSS port it shows that
only support tlsv1.2, tlsv1.3
so why pulsar jetty  failed on tls handshake when its has right cipher?
whats real supported cipher suites in jetty SSL Context/connection/session?
Finally
So is this a BUG or where i missing / wrong with pulsar src code please point out
if im correct , how to set/add/config more cipher support by pulsar websocket TLS service(because for some reason i cant change client side code ) ?

@limniconicat I will work on this.

@nodece @limbonicat A similar has been reported in another project, https://github.com/line/armeria/issues/2403#issuecomment-575248863 . The resolution there (when using self-signed certificates):

I think cipher suite is not a problem. You have to configure your client to accept self-signed certificate, i.e. disable certificate chain validation, although it's obviously not safe.

Certificates signed with SHA-1 are not trusted in TLSv1.3 at all. It is common that many clients reject certificates signed with SHA-1 also for older TLS protocol versions.
@limbonicat Can you check what certification signing algorithm do you have? Is the certificate valid and trusted by the client?
/cc @nodece @codelipenghui

@lhotari AKA, this user uses the JDK provider is working, so I made a #13740 to fix this.

Certificates signed with SHA-1 are not trusted in TLSv1.3 at all. It is common that many clients reject certificates signed with SHA-1 also for older TLS protocol versions.
@limbonicat Can you check what certification signing algorithm do you have? Is the certificate valid and trusted by the client?
/cc @nodece @codelipenghui

@lhotari thanks for reply

I think my issue is not quite same as "line/armeria#2403"(his problem is more complicated),  the exception  OPENSSL_internal:SSLV3_ALERT_CERTIFICATE_UNKNOWN whick means client certs auth failure or something related to  TLSv1.3 (not been supported ),   and this problem is not my conern;
On the other hand ,my problem is "OPENSSL_internal:NO_SHARED_CIPHER"  which means client and server dont agree with cipher in handshake procedure if im correct

Hi! It means there are no common cipher suites between the client and the server, which usually means one of them has an old or misconfigured SSL/TLS setup. HTTP/2 requires both clients and servers support a minimum set of cipher suites. Please make sure to enable those cipher suites.

If it's certs problem, why using same client on WIN10 done pretty well with no exceptions?
By the way ,my self-signed certs is created by following Pulsar DOCs : create-tls-certificates
After @nodece fix(change TLS provider to JDK), the exception is gone and i think that means the different TLS providers(Conscrypto and JDK)  which support different ciphers makes difference; and i grab traffic data shows clearly in server hello:

client and server finally agree with cipher "Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)"

by the way "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 " is supported by JDK but not supported by Conscrypto
according to Conscrypto capabilities( and Conscrypto support "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" why? i think CBC_SHA256 is more secure than SHA-1)

Activate this.

This issue has been fixed by #13740.
You can update the following config in standalone.conf if you are using the standalone model:
webServiceTlsProvider=SunJSSE

The SunJSSE is JDK built-in provider.


Help me! alpine caused the problem!

FROM alpine:3.19.1  pdftoword is not correct,nomatter how many pages,the word is only one page!
FROM alpine:20240329 the pdftowrd has soffce,No such file or directory problem. office was not installed!
Is there any other vertion？At the beginning, the 20240329 version is right!

Correct, this is blocking our release at moment it's very annoying
https://gitlab.alpinelinux.org/alpine/aports/-/issues/16005

@Frooodle  Iwonder if this problem is fixed?

Hope so 😂


MFRC522.h:22:26: error: 'SPI_CLOCK_DIV4' was not declared in this scope

Step 1: Describe your environment

OS version: Windows 10
Arduino IDE version: 1.8.12
MFRC522 Library version: 1.4.7
Arduino device: Nano 33 BLE Sense
MFRC522 device: RFID-RC522

Step 2: Describe the problem
When loading the library and selecting an example sketch, I'm getting the error of "MFRC522.h:22:26: error: 'SPI_CLOCK_DIV4' was not declared in this scope". Everything is completely stock, the library was downloaded and imported straight into the editor, the example was selected without editing any code or anything. I can't even upload it to the nano as the compile failed with this error. I have also downgraded my IDE to version 1.6.x as the main page of the library states it's compatible with that version and I still get the same error.
Steps to reproduce:

Import library
Select example sketch "read NUID"
compile and wait for pretty red text

SPI_CLOCK_DIV4 should be defined by the board.
What version and board implementation do you use for the Nano 33 BLE Sense ? Look it up at the board manager in the arduino ide.
Thanks

I'm using the "Arduino Nano 33 BLE" board

Solution
Set compiler flag to overwrite with your values according to your board: MFRC522_SPICLOCK
Simple Workaround

Goto your local copy and change line:
https://github.com/miguelbalboa/rfid/blob/ea10e8a21963cb603167892cce37eab40f7a1bc6/src/MFRC522.h#L22
Replace SPI_CLOCK_DIV4 with 0

Longterm Solution
Would be to add the constants as compatibility to the board library.

Solved by 34086ad99a86ff381dc3c4fd2454a6b7b8c3b78d


add beta mayhem to other CI pipelines

Codecov Report

Merging #26 (cddffea) into main (62e6066) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head cddffea differs from pull request most recent head 6d444f8. Consider uploading reports for the commit 6d444f8 to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##             main      #26   +/-   ##
=======================================
  Coverage   92.30%   92.30%
=======================================
  Files           2        2
  Lines          26       26
=======================================
  Hits           24       24
  Misses          2        2

Flag
Coverage Δ

unit-tests
69.23% <ø> (ø)

vulnerability-tests
89.47% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.


use new version of InteractiveHtmlBom

in docker image kicad7_auto_full:dab7a024aecb (latest at the time of writing this issue) is used plugin InteractiveHtmlBom version 2.7.0. This version has broken handling of kicad DNP field (configuration entry dnp_field: 'kicad_dnp' has no effect). This was fixed in later versions, it is working in v2.8.1. If I manually copy new version of plugin inside dunning docker image, configuration entry dnp_field: 'kicad_dnp' is working as expected.
Could you put new version of InteractiveHtmlBom to the docker image?

Ok, I updated iBoM to 2.8.1


Error: unrecognized cop or department RSpecRails/HttpStatus (bundle exec rubocop)

Issue Summary:
After updating to the latest version, I encountered an error while executing my Ruby GitHub Actions workflow. The error message reads as follows:
Error: unrecognized cop or department RSpecRails/HttpStatus found in /home/wailan/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/rubocop-rspec_rails-2.28.1/config/default.yml
Did you mean RSpecRails/HaveHttpStatus?

Details:

Repository: GitHub Repository
Workflow Run: Workflow Run Details

Additional Information:
Upon further investigation, it seems that the error is stemming from the rubocop-rspec_rails gem, version 2.28.x. The error specifically mentions an unrecognized cop or department, suggesting a possible typo or misconfiguration. As a workaround, I have temporarily pinned the rubocop-rspec gem to version 2.27 to mitigate the issue.
Proposed Action:
I plan to post this issue on GitHub to seek assistance in resolving it. Any insights or guidance on resolving this error would be greatly appreciated.
Thank you for your attention to this matter.
Best regards,
Wailan

Thanks for the report. Since this issue duplicated with https://github.com/rubocop/rubocop-rspec_rails/issues/9 , close it.

FYI, A fixed version has been released:
https://github.com/rubocop/rubocop-rspec_rails/releases/tag/v2.28.2
Thank you for your report.


Option to build docker image without using cache

Observed
When executing an action which uses a Dockerfile, the image gets built using cache, which has the disadvantage of hidding the output of building steps :
$ plasmactl platform:compare-artifact ${ARTIFACTS_REPOSITORY_USERNAME} ${GET_PLASMACTL_BINARY_PASSWORD} -vvv
DEBUG: Starting execution of the action "platform:compare-artifact" in "docker" environment, command [sleep infinity]
Image "platform-actions-compare-artifact:latest" doesn't exist locally, building...
INFO: Image "platform-actions-compare-artifact:latest" doesn't exist locally, building...
Step 1/15 : FROM alpine:3.18
 ---> 8ca4688f4f35
Step 2/15 : WORKDIR /host
 ---> Using cache
 ---> ec8f1dcc3c82
Step 3/15 : ARG USER_ID
 ---> Using cache
 ---> 78431d130670
Step 4/15 : ARG GROUP_ID
 ---> Using cache
 ---> ec65d6738ec9
Step 5/15 : RUN echo ${USER_ID}
 ---> Using cache
 ---> bfcc50d83b52
Step 6/15 : RUN echo ${GROUP_ID}
 ---> Using cache
 ---><PHONE_NUMBER>76
Step 7/15 : RUN cat /etc/os-release
 ---> Using cache
 ---> fd5c52956a54
Step 8/15 : COPY resolve.conf /etc/resolve.conf
 ---> Using cache
 ---> da252fa7cf5a
Step 9/15 : RUN cat /etc/resolve.conf
 ---> Using cache
 ---> b30cf5e85f08

Expected

It would be useful to introduce a global option for actions to build image without using cache like :
plasmactl platform:compare-artifact ${ARTIFACTS_REPOSITORY_USERNAME} ${GET_PLASMACTL_BINARY_PASSWORD} -vvv --no-cache

Closing in favor of https://github.com/launchrctl/launchr/issues/8


Add stdoutConfig and stderrConfig to alpha features table

Changes

stdoutConfig and stderrCon are alpha features but they are not in the alpha features table. This change adds these two features in the table so that users are aware and maintainers can track progress through the stability levels.
/kind documentation
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Has Docs if any changes are user facing, including updates to minimum requirements e.g. Kubernetes version bumps
[ ] Has Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including functionality, content, code)
[x] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[ ] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings). See some examples of good release notes.
[ ] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

Opened https://github.com/tektoncd/pipeline/issues/7495 to track promotion to beta

/approve

The dind-sidecar bug is happening in multiple PRs.

Created an issue on the example test failures: https://github.com/tektoncd/pipeline/issues/7496

/retest

/lgtm


RPC endpoint should be retrieved from Bee

With storing RPC endpoint to a local store (and maybe some other configuration? not sure) and Bee config, there can be a discrepancy between these two when different instance of Swarm Desktop is used. I would suggest then to retrieve it from Bee config instead.

This should be optional with the ability to override the RPC. When compiling bee-dashboard separately for use outside of swarm-desktop, there may very well be the event where the bee node is running using an RPC that is only accessible from the bee node's context (such as operating within a docker network, where the user's browser is therefore unable to access the nominated RPC if they use one that is returned from the bee node).

Yeah agree and thanks for reminding it. This issue is scoped to Desktop 😉


EIP-152: Add Blake2 compression function F precompile

For Istanbul: https://eips.ethereum.org/EIPS/eip-152

Looks like blake2b is built in to hashlib. Presumably that's the best bet: https://docs.python.org/3.6/library/hashlib.html#hashlib.blake2b

Looks like blake2b is built in to hashlib. Presumably that's the best bet: https://docs.python.org/3.6/library/hashlib.html#hashlib.blake2b

Unfortunately, this is the full digest, and doesn't seem to expose the compression function. Source here, but I'm not fluent in "Python C module speak": https://github.com/python/cpython/blob/530f506ac91338b55cf2be71b1cdf50cb077512f/Modules/_blake2/blake2b_impl.c
These other implementations are available, according to the blake2 website:

https://github.com/buggywhip/blake2_py (all-python, beta)
https://github.com/dchest/pyblake2/blob/master/impl/blake2b-ref.c#L225
https://github.com/darjeeling/python-blake2/blob/master/blake2/blake2b-ref.c#L216 (identical implementation to ^)

I'm going to explore using the all-python one. First, to make sure it's correct, then to see if it's anywhere near fast enough. If either thing becomes a problem, I want to see if it's possible to call the full digest in such a way to execute compression only. At first glance, this might be possible with the right inputs, but I'm still getting familiar with it.

Preliminary results from directly calling the blake2_py _compress(): correctness looks good, performance is problematic.
It takes 25 seconds to run 2 million rounds (which is 2M gas). At that rate, it will take:

100 seconds to run a full 8 million gas block (just confirmed, it took 91s)
14 hours to run test vector 8, which has 4 billion rounds

So it's about 6 times too slow, at a minimum, assuming 15s blocks.
Because you can run the F compression with the final flag turned off, I don't think there will be a way to call the outer digest from a C library to simulate this precompile.
So I think we're back to brainstorming:

Write it Cython (this may not be enough, depending on whether the compiler can take advantage of the SSE3 instruction set)
Dig further into the builtin hashlib libraries to see if we can invoke the inner compression function directly
Find another C implementation that exposes the F compression API, and write a python wrapper for it.
Further optimize the all-python library (probably the worst idea: I suspect there isn't a 10x improvement sitting around)

This will probably never actually get merged, so I'll dump this ugly code here for anyone else who wants to tinker:
from eth_utils import (
    to_bytes,
    to_int,
    to_tuple,
    ValidationError,
)

from blake2 import BLAKE2b

import difflib

def test_blake_F(input_hex, expected_hex):
    # This takes the input and output defined in the EIP test vectors
    # Careful, test vector 8 takes 14 hours!

    result_bytes = run_blake_F_compression(input_hex)
    result_hex = result_bytes.hex()
    for i,s in enumerate(difflib.ndiff(result_hex, expected_hex)):
        if s[0]==' ': continue
        elif s[0]=='-':
            print(u'Delete "{}" from position {}'.format(s[-1],i))
        elif s[0]=='+':
            print(u'Add "{}" to position {}'.format(s[-1],i))
    assert result_hex == expected_hex, repr(result_hex)
    print("Success!")

def extract_blake2b_parameters(input_bytes):
    rounds = to_int(input_bytes[:4])

    h_state = get_64_bit_little_endian_words(input_bytes[4:68])

    t_offset_counters = get_64_bit_little_endian_words(input_bytes[196:212])

    final_block_int = to_int(input_bytes[212])
    if final_block_int == 0:
        final_block_flag = False
    elif final_block_int == 1:
        final_block_flag = True
    else:
        raise ValidationError(
            f"The only valid final block indicator flags are 0 and 1, got: {final_block_int}"
        )

    return rounds, h_state, t_offset_counters, final_block_flag
def run_blake_F_compression(hex_input):
    input_bytes = to_bytes(hexstr=hex_input)

    if len(input_bytes) != 213:
        raise ValidationError(f"Input bytes must be 213 bytes long, got: {len(input_bytes)}")

    rounds, h_state, t_offset_counters, final_block_flag = extract_blake2b_parameters(input_bytes)

    b = BLAKE2b()
    b.h = list(h_state)
    b.t = t_offset_counters
    b.ROUNDS = rounds

    if final_block_flag:
        b.f[0] = b.MASKBITS

    message = input_bytes[68:196]
    b._compress(message)

    return reencode(b.h)

@to_tuple
def get_64_bit_little_endian_words(compact_bytes):
    remaining_bytes = compact_bytes
    if len(remaining_bytes) % 8 != 0:
        raise ValidationError(
            "Must send bytes in multiples of 8 to get 64-bit words, got length "
            f"{len(remaining_bytes)}"
        )

    while len(remaining_bytes):
        word, remaining_bytes = remaining_bytes[:8], remaining_bytes[8:]
        yield to_int(bytes(reversed(word)))

def reencode(state):
    return b''.join(
        bytes(reversed(to_bytes(word))).ljust(8, b'\0')
        for word in state
    )

In order to run more than 12 rounds, you need to patch the blake2_py library with:
@@ -65,8 +65,9 @@ MASK64BITS  = 0xffffffffffffffff

 class BLAKE2(object):
     """ BLAKE2 is a base class for BLAKE2b and BLAKE2s """
-
-    sigma = [
+
+    # for more rounds, the schedule wraps around to the beginning
+    sigma_schedule = [
         [  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15 ],
         [ 14,10, 4, 8, 9,15,13, 6, 1,12, 0, 2,11, 7, 5, 3 ],
         [ 11, 8,12, 0, 5, 2,15,13,10,14, 3, 6, 7, 1, 9, 4 ],
@@ -77,13 +78,10 @@ class BLAKE2(object):
         [ 13,11, 7,14,12, 1, 3, 9, 5, 0,15, 4, 8, 6, 2,10 ],
         [  6,15,14, 9,11, 3, 0, 8,12, 2,13, 7, 1, 4,10, 5 ],
         [ 10, 2, 8, 4, 7, 6, 1, 5,15,11, 9,14, 3,12,13 ,0 ],
-        [  0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15 ],
-        [ 14,10, 4, 8, 9,15,13, 6, 1,12, 0, 2,11, 7, 5, 3 ]
-    ]                   # only 1st 10 rows are used by BLAKE2s
+    ]

-
     # - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
+
     def __init__(self, digest_size=0, **args):
         print("""
           ***********************************************
@@ -137,21 +135,24 @@ class BLAKE2(object):
         self.buf             = b''
         self.finalized       = False
         self.block_size      = self.BLOCKBYTES
-
+
         if key:
             block = key + (chr(0).encode())*(self.BLOCKBYTES-len(key))
             self.update(block)
-
+
         if self.data:
             self.update(self.data)
-
-
+
+    def sigma(self, at_round):
+        max_round = len(self.sigma_schedule)
+        return self.sigma_schedule[at_round % max_round]
+
     # - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
+
     def _compress(self, block):
-
+
         # Dereference these for [very small] speed improvement.
-        # Perhaps more than anything, this makes the code
+        # Perhaps more than anything, this makes the code
         # easier to read.
         MASKBITS  = self.MASKBITS
         WORDBITS  = self.WORDBITS
@@ -207,11 +208,11 @@ class BLAKE2(object):

         # time to ChaCha
         for r in range(self.ROUNDS):
-            # resolve as much as possible outside G() and
-            # don't pass as argument, let scope do its job.
-            # Result is a 50% speed increase, but sadly,
+            # resolve as much as possible outside G() and
+            # don't pass as argument, let scope do its job.
+            # Result is a 50% speed increase, but sadly,
             # "slow" divided by 1.5 is still "slow".  :-/
-            sr = sigma[r]
+            sr = self.sigma(r)
             msri2  = m[sr[0]]
             msri21 = m[sr[1]]
             G( 0,  4,  8, 12)

(sorry for all the garbage diff lines, there was trailing spaces, and my editor auto-removes them.)


IE8 fix for initialiser

I get a reserved word exception in IE8 for this code:
function _shouldUseMirage(env, addonConfig) {
  var userDeclaredEnabled = typeof addonConfig.enabled !== 'undefined';
  var defaultEnabled = _defaultEnabled(env, addonConfig);
  return userDeclaredEnabled ? addonConfig.enabled : defaultEnabled;
}

Could you change defaultEnabled to defEnabled
Thanks

Thanks for the report!
I can make the change, but you should know IE8 support is typically a low priority for me. If you'd like these sorts of changes to happen faster, you can always submit a PR. I'm happy to talk through any problems you encounter, and the help can really lighten the load!

IE8 is unsupported by Ember 2.0 forward. However, if you'd like to fix this and submit a PR, please do!


add more channel_actions

Codecov Report

Merging #230 (9a15570) into master (e552b8a) will increase coverage by 0.05%.
The diff coverage is 83.13%.

@@            Coverage Diff             @@
##           master     #230      +/-   ##
==========================================
+ Coverage   83.50%   83.55%   +0.05%
==========================================
  Files          31       31
  Lines        2346     2414      +68
==========================================
+ Hits         1959     2017      +58
- Misses        387      397      +10

Impacted Files
Coverage Δ

quetz/dao.py
90.78% <ø> (ø)

quetz/tasks/mirror.py
91.58% <ø> (ø)

quetz/tasks/common.py
80.48% <45.45%> (-13.07%)
:arrow_down:

quetz/authorization.py
95.16% <50.00%> (-0.75%)
:arrow_down:

quetz/tasks/assertions.py
75.00% <50.00%> (-25.00%)
:arrow_down:

quetz/pkgstores.py
56.06% <71.42%> (+3.09%)
:arrow_up:

quetz/tasks/indexing.py
98.13% <97.87%> (-0.26%)
:arrow_down:

quetz/repo_data.py
93.33% <100.00%> (+6.66%)
:arrow_up:

quetz/rest_models.py
99.20% <100.00%> (+0.01%)
:arrow_up:

...ons/a3ffa287d074_case_insensitive_channel_names.py
68.75% <0.00%> (-6.25%)
:arrow_down:

... and 2 more

Continue to review full report at Codecov.

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


command not found

Hi,
I've downloaded your repo and dataset but I cannot run the command you write in README file. (usage section)
The command:
$ python run.py --trajectories data/HR-ShanghaiTech/training/trajectories-corrected/00 --testdata data/HR-ShanghaiTech/testing --batch_size 512 --wandb False
I got:
command not found
I realize that your parser code snippet does not have --testdata command. This issue may be about this.

Hi @elifbuyukorhan ,
Would be best to quote any directories/paths at the command line so they are parsed as a whole.
testdata is defined at #L357


fix(pkg/envoy/cds): fix local clusters

builds local clusters for all services that point
to pods with specified service account
fixes bug where you see traffic only going to one version
of bookstore. This was happening because we were building a local
cluster for one service related to service account when there are
multiple services related to the service account

Description:

Affected area:

New Functionality      [ ]
Documentation          [ ]
Install                [ ]
Control Plane          [ ]
CLI Tool               [ ]
Certificate Management [ ]
Networking             [ ]
Metrics                [ ]
SMI Policy             [ ]
Security               [ ]
Tests                  [ ]
CI System              [ ]
Performance            [ ]
Other                  [ ]

Please answer the following questions with yes/no.

Does this change contain code from or inspired by another project? If so, did you notify the maintainers and provide attribution?

Closing for now. We can come back and fix this once routes_v2 is the default and we move to working on support multiple labels/services.


Add isForwardLooking prop for years

Closes #95

@AlexanderKaran

This is great @gelmio. @onesine I see this branch conflicts; in general, is there a way for more people to review these PRs so they could land? I'm happy to redo this work, rebase, and help get these features in!

Hello @gelmio .
Sorry for the late reply.
Thanks for the contribution, but as of today this code is already taken into account by the #143 resolution.
So I'm closing this PR


Cleanup helper domain not unloaded after dispose (Or: how to implement a recycle strategy)

Hello,
I'm trying to implement a recycle policy that after a certain number of recompilations will reload the AppDomain and cleanup memory and temp files. The only way I have found so far is to simply dispose IsolatedRazorEngineService and create a new one. This will unload AppDomain used for rendering and clean up some memory and it seemed fine at beginning.
Unfortunately, the appdomain created in CrossAppDomainCleanUp (called "CleanupHelperDomain_") is not unloaded during dispose and a new AppDomain will be created for every new IsolatedRazorEngineService, resulting in small memory leaks.
Example:
      using (var service = IsolatedRazorEngineService.Create())
      {
        service.AddTemplate("TestTemplate",
          "Hello @Model.Name " + new String(Enumerable.Repeat('A', 100000).ToArray()));
        service.Compile("TestTemplate", typeof(TemplateModel));
      }

// Now there is ONE CrossAppDomainCleanUp app domain

      using (var service = IsolatedRazorEngineService.Create())
      {
        service.AddTemplate("TestTemplate",
          "Hello @Model.Name " + new String(Enumerable.Repeat('A', 100000).ToArray()));
        service.Compile("TestTemplate", typeof(TemplateModel));
      }

// Now there are TWO CrossAppDomainCleanUp app domains

Is this a bug or am I doing something wrong? What is the best way to implement a recycle strategy?
Any help appreciated.

If I uncomment this line, the problem goes away:
https://github.com/Antaris/RazorEngine/blob/master/src/source/RazorEngine.Core/Compilation/CrossAppDomainCleanUp.cs#L368
Is there any reason that it is commented out?

Interesting IIRC I couldn't make the line work. Can you send a pr with the line uncommented?
It could also be that I commented because of reported issues (but then git blame should show it, which it isn't)

It was already commented out when the entire class was introduced: https://github.com/Antaris/RazorEngine/commit/a76daaad4e1d18f6a19c60dd9d248aa09733483d
I'll fix a PR with a test shortly

See #493

#463 is a duplicate of this.

Hi there, is there any plan to get this issue fixed? I am experiencing the same problem. Are there any drawbacks to the proposed solution?

Any updates on this?

I'm not developer of RazorEngine, but I want to share our experience.
We are migrated to Microsoft.NET.Sdk.Razor libraries. It's much more robust and maintained that "old" non-Core razor, and because it could be build compile-time it could be embedded into "old" ASP.NET MVC applications and ASP.NET Core application and basically everywhere. However, we don't need run-time compilation.


Expose ES5 config

This will allow the primary config to move on to ES6 features.

Depends on #4

When ESLint 2.0.0 comes out, we'll migrate to it. At that time, I think we should also drop Node < 4 support and move to ES6.

ESLint 2.0.0 came out today. Migration to ES6 has begun. Use<EMAIL_ADDRESS>if you need ES5.


Enforce encryption chat length clientside

Idea
Because encrypted messages do increase the length of the message, it should also limit the new character count the player can send in the first place to avoid getting part of the message cut. This should apply only to cases that have the limits in the first place, aka public chats or private messages, depending on which ones are enabled.
I guess the easiest (not necessarily fastest) way to do that would be to:

detect whether the player is typing an encryptable message
encrypt the message on every character change
see if encrypted message <= 256

Alternatively, continue encrypting on send and show some kind of error when sending a too long message.
Reasoning
Because then the player knows how much they can really type, instead of getting a part of the message cut.
Other Information
P.S. Don't rely on any chat preview code for this, as that is getting removed in 1.19.3 lol

It should be optional, because your computer must encrypt the message real-time. This may make it difficult to run smoothly on low configuration devices.


Feature/game filtering

Filters out mechanical games, adds better check for BIOS ROMs and runnable games.

Hahaha 109 files changed - I think your comment might be a tad un-representative 😆

Hmm tried running the appveyor build bit it just give me the waiting cursor for a second and then nothing happens. No errors, logs, nothing...

Oh goodness, I forgot this PR was on that branch. It's definitely not ready yet. How about I close this and re-open when it's all done?

ah ok no prob

(it was a "hmm, I've changed a lot of stuff and it's all just on my laptop" push...)


Fix UART console baudrate for Pi 3

Fix UART console for Pi 3 (fixes #32)
Add fsck.repair=yes like in Raspbian LITE

Already successfully tested on Pi 1, Pi 2 and Pi 3.


[Details Nerdlet] Tighten up padding and margin for I/O bread crumb bar

ISSUE
The Nerdpack breadcrumb bar is slightly different than the bar set on the Details Nerdlet for a Quick Start, let's align these so they look the same.
The Nerd pack look and feel is preferred.
Steps to Reproduce

Go to staging view a nerdpack details view
Then view a quickstart details view,
see the difference in padding and margin

Expected
This bread crumb bar looks the same on both views
Screen shots
Quickstart Details

Nerdpack Details

Will be closed by GHE pull 36


Not rendering in ion-item and ion-slide

I was trying to use this with-in ion-item that is with-in ion-slide but it was not showing the autocomplete component. Is there something I can tweak to make this work?

@mpadmaraj Please look at https://github.com/kadoshms/ionic2-autocomplete/issues/95 and https://github.com/kadoshms/ionic2-autocomplete/issues/104


New Python Handler: pydantic attribute _hypothesis_plugin not found

Thanks very much for your hard work on the new Python handler, I've been following this project's development and love your work.
I wasn't exactly sure whether to raise this issue here, or in griffe, so sorry if I ended up picking the wrong one.
Description

The new Python handler (with griffe) for mkdocstrings crashes when pydantic is referred to in a docstring:"""Module level docstring"""

import pydantic

def fn(arg: pydantic.BaseModel) -> None:
    """Function docstring

    Args:
        arg (pydantic.BaseModel): This is going to break!
    """
    # This bit doesn't matter
    print(arg)

It appears to be a pydantic specific issue, as the error refers to its _hypothesis_plugin:

https://github.com/samuelcolvin/pydantic/blob/master/setup.py#L139
https://github.com/samuelcolvin/pydantic/blob/master/pydantic/_hypothesis_plugin.py

Example

I've created a repo with my minimal reproducible example: https://github.com/SupImDos/mkdocstrings-pydantic-example

Output
$ mkdocs serve
INFO     -  Building documentation...
INFO     -  Cleaning site directory
ERROR    -  Error building page 'index.md': module 'pydantic' has no attribute '_hypothesis_plugin'
Traceback (most recent call last):
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs_autorefs/plugin.py", line 88, in get_item_url
    url = self._url_map[identifier]
KeyError: 'pydantic'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/fakeusername/Desktop/example/.venv/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/click/core.py", line 1659, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs/__main__.py", line 177, in serve_command
    serve.serve(dev_addr=dev_addr, livereload=livereload, **kwargs)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs/commands/serve.py", line 54, in serve
    config = builder()
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs/commands/serve.py", line 49, in builder
    build(config, live_server=live_server, dirty=dirty)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs/commands/build.py", line 314, in build
    _build_page(file.page, config, doc_files, nav, env, dirty)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs/commands/build.py", line 220, in _build_page
    output = config['plugins'].run_event(
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs/plugins.py", line 102, in run_event
    result = method(item, **kwargs)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs_autorefs/plugin.py", line 197, in on_post_page
    fixed_output, unmapped = fix_refs(output, url_mapper)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs_autorefs/references.py", line 186, in fix_refs
    html = AUTO_REF_RE.sub(fix_ref(url_mapper, unmapped), html)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs_autorefs/references.py", line 156, in inner
    url = url_mapper(unescape(identifier))
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocs_autorefs/plugin.py", line 94, in get_item_url
    new_identifiers = fallback(identifier)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocstrings/handlers/base.py", line 408, in get_anchors
    anchors = handler.renderer.get_anchors(handler.collector.collect(identifier, fallback_config))
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/mkdocstrings_handlers/python/collector.py", line 69, in collect
    loader.load_module(module_name)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/loader.py", line 131, in load_module
    top_module = self._load_module_path(package.name, package.path, submodules=submodules)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/loader.py", line 287, in _load_module_path
    self._load_submodules(module)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/loader.py", line 292, in _load_submodules
    self._load_submodule(module, subparts, subpath)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/loader.py", line 303, in _load_submodule
    member_parent[subparts[-1]] = self._load_module_path(
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/loader.py", line 285, in _load_module_path
    module = self._inspect_module(module_name, module_path, parent)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/loader.py", line 347, in _inspect_module
    module = inspect(
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/agents/inspector.py", line 92, in inspect
    ).get_module(import_paths)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/agents/inspector.py", line 206, in get_module
    value = dynamic_import(import_path, import_paths)
  File "/home/fakeusername/Desktop/example/.venv/lib/python3.10/site-packages/griffe/importer.py", line 67, in dynamic_import
    value = getattr(value, part)
AttributeError: module 'pydantic' has no attribute '_hypothesis_plugin'

Versions
As per the pyproject.toml poetry dependencies:

python = "^3.10"
mkdocs-material = "^8.1.11"
mkdocstrings = {extras = ["python"], version = "^0.18.0"}
pydantic = "^1.9.0"

I'll keep having a look into the issue and see if I find anything else useful.
Thanks! 😃

Update
Ah, I see now.
In summary, pydantic contains two extra modules for external plugins, that aren't used at usual runtime:

_hypothesis_plugin.py for hypothesis
mypy.py for mypy

But, pydantic does not include hypothesis or mypy as dependencies.
When griffe tries to dynamically load these modules, they raise a ModuleNotFoundError, as they themselves cannot import hypothesis / mypy (if you don't have them installed).
This is probably more of an issue with pydantic, so not sure what the best way forward is.

Fixed in Griffe 0.11.7! Thanks again!

Thanks so much!


refactor, remove needless clones

general code quality improvements and refactoring, especially to remove needless cloning

Codecov Report

Merging #144 (9a54559) into master (ae5146e) will decrease coverage by 0.06%.
The diff coverage is 68.64%.

@@            Coverage Diff             @@
##           master     #144      +/-   ##
==========================================
- Coverage   70.46%   70.40%   -0.07%
==========================================
  Files          88       88
  Lines        8062     8025      -37
==========================================
- Hits         5681     5650      -31
+ Misses       2381     2375       -6

Impacted Files
Coverage Δ

src/dds/ddsdata.rs
41.66% <0.00%> (+3.20%)
:arrow_up:

src/dds/fragment_assembler.rs
0.00% <0.00%> (ø)

src/dds/no_key/datareader.rs
54.09% <ø> (ø)

src/dds/rtps_reader_proxy.rs
50.00% <0.00%> (-1.43%)
:arrow_down:

src/dds/topic.rs
67.92% <ø> (+0.61%)
:arrow_up:

src/dds/traits/serde_adapters.rs
0.00% <0.00%> (ø)

src/messages/submessages/data_frag.rs
0.00% <0.00%> (ø)

src/serialization/builtin_data_deserializer.rs
83.60% <0.00%> (ø)

src/serialization/pl_cdr_deserializer.rs
40.54% <ø> (ø)

src/dds/rtps_writer_proxy.rs
53.33% <33.33%> (ø)

... and 27 more

Continue to review full report at Codecov.

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

Thanks for the good work!


Add Java version of KoreanPos and KoreanToken for better compatibility

I hope this code snippet might help you. :smile: (and I also welcomes any advice on the code snippet)
Syntax of C# is very similar to Java
public class KoreanToken
{
    public string Text { get; set; }
    public KoreanPos Pos { get; set; }
    public bool Unknown { get; set; }

    public KoreanToken(com.twitter.penguin.korean.tokenizer.KoreanTokenizer.KoreanToken scalaToken)
    {
        this.Text = scalaToken.text().toString();
        this.Pos = (KoreanPos)scalaToken.pos().id();
        this.Unknown = scalaToken.unknown();
    }
}

public enum KoreanPos
{
    // Word leved POS
    Noun, Verb, Adjective,
    Adverb, Determiner, Exclamation,
    Josa, Eomi, PreEomi, Conjunction,
    NounPrefix, VerbPrefix, Suffix, Unknown,

    // Chunk level POS
    Korean, Foreign, Number, KoreanParticle, Alpha,
    Punctuation, Hashtag, ScreenName,
    Email, URL, CashTag,

    // Functional POS
    Space, Others
}

Oh, thanks!!!
That was very fast! :)
On Thu, Apr 16, 2015 at 6:37 PM Joon Hong<EMAIL_ADDRESS>wrote:

I hope this code snippet
https://github.com/modamoda/TwitterKoreanProcessorCS/blob/master/TwitterKoreanProcessorCS.cs#L150-L179
might help you. [image: :smile:] (and I also welcomes any advice on the
code snippet)
Syntax of C# is very similar to Java
public class KoreanToken
{
public string Text { get; set; }
public KoreanPos Pos { get; set; }
public bool Unknown { get; set; }
public KoreanToken(com.twitter.penguin.korean.tokenizer.KoreanTokenizer.KoreanToken scalaToken)
{
    this.Text = scalaToken.text().toString();
    this.Pos = (KoreanPos)scalaToken.pos().id();
    this.Unknown = scalaToken.unknown();
}

}
public enum KoreanPos
{
// Word leved POS
Noun, Verb, Adjective,
Adverb, Determiner, Exclamation,
Josa, Eomi, PreEomi, Conjunction,
NounPrefix, VerbPrefix, Suffix, Unknown,
// Chunk level POS
Korean, Foreign, Number, KoreanParticle, Alpha,
Punctuation, Hashtag, ScreenName,
Email, URL, CashTag,

// Functional POS
Space, Others

}
--
Reply to this email directly or view it on GitHub
https://github.com/twitter/twitter-korean-text/issues/60#issuecomment-93875289
.


Remove GetBlockSubsidy (Not Used)

Removing GetBlockSubsidy (not used), already replaced by GetDogecoinBlockSubsidy !
Cleaning Code.

@rnicoll compiled dogecoin successfully with the new changes without any returned error.
Also it's logical, you can check that the method is not used nowhere.

I wonder if it's also worth removing these code comments referring to it. Just a thought:
https://github.com/KabDeveloper/dogecoin/blob/3a5cc27dbd19eb01430e391f9ae07a5921d491eb/src/test/main_tests.cpp#L26

Or, just delete the commented out code altogether?

I wonder if it's also worth removing these code comments referring to it. Just a thought:
https://github.com/KabDeveloper/dogecoin/blob/3a5cc27dbd19eb01430e391f9ae07a5921d491eb/src/test/main_tests.cpp#L26

Or, just delete the commented out code altogether?
Perhaps even delete the method all together for that test and then all calling methods to that?

Thank you, I just removed the related/commented test methods from main_tests.cpp file.

Re-triggering Travis

Sorry, still trying to get CI to pass. Changed the base branch and hoping that fixes it.

Sorry, still trying to get CI to pass. Changed the base branch and hoping that fixes it.

Locally it's compiling without any error (Just like it was never modified).
On Ubuntu 18.04 / Boost-dev 1.68

Yeah, we had to tweak the Travis configuration, those changes are on a different branch, but now Travis isn't restarting the job now I've changed the base branch. It's vexing.

I've ended up rebasing it and raising a PR with the rebased commits, presuming that works I'll merge #2211 . It'll still credit you for the commits, it's just me managing the PR.

@rnicoll Ok, thank you !

With #2211 merged, this can be closed and removed from "Needs Work" in the 1.14.4 project.


Sonar file output

As a Sonar user, I want to be able to upload test results to their cloud service, so that I can see them all fancy-like.
Acceptance criteria:

--sonar/-s flag (with optional filename, defaulting to sonar.xml) outputs a file matching the spec

As of 0.13.0, this has been broadened to:

Note that this currently only works if built tests are output to a directory parallel to their source: e.g. tests to dist/tests.


Merge to publish

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/actionable-messages/actionable-messages-via-email.md
:white_check_mark:Succeeded

docs/actionable-messages/card-reference.md
:white_check_mark:Succeeded

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


[Feature Request] Message Non-Stack Mode

Existing Component
是
Component Name
Message
Description
As we know, the Message component runs in 'stack mode' by default. When there is a message box showing on the window, if you are going to create another new message box, the new one will stack under the old one, but sometimes, such behavior isn't what I expected. Instead, I hope the component can provide a "non-stack" mode. When a new message arrives and being displayed on the window, and if there has been an old one appearing on the window, it will dismiss itself and be replaced with the new one.

Corrected typo in section 'desctption':
... When a new message ar rives and being displayed on the window, ...
... When a new message arrives and being displayed on the window, ...


[YAML] Add Partition transform.

This allows one to split a single PCollection into multiple distinct PCollections based on some property of the elements.
It performs the role of (numeric) partition and side outputs from other languages.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.

R: @polber

I mostly object to calling a Split transform, when it's doing what we've termed largely as Partitioning in beam. Splitting as a Beam concept is generally around Bundles. It does us no good to muddy the definitions.
So why is it not being called Partition?

After thinking about this some more, you've convinced my Partition is the way to go. Updated.

Now that the naming is settled, is there anything else that needs to be addressed?

Now that the naming is settled, is there anything else that needs to be addressed?

@robertwb I have the two pending comments above, namely renaming Split to Partition in the docs

Ah, good catch. Done.


add continue with activity to BotAdapter abstract class

Abstract class updates for https://github.com/microsoft/botbuilder-dotnet/issues/5087

@garypretty can you comment? do we want the three overloads or just the richest one?

@garypretty can you comment? do we want the three overloads or just the richest one?


Make sure debounce resolves heavy/light tasks in the correct order

Create a debug view with a computationally heavy task and a light task and make sure that only the last clicked task's result is visible.

Seems to be enough for synchronous code like we have now, but additional guards are required if we ever switch to Web Workers.


Support "Application Name" for improved compatibility with .NET connection strings

Is your feature request related to a problem? Please describe.
I'm working with Kubernetes deployments where apps and components written in different languages share common connection strings. One of the components in the KEDA mssql scaler, which uses this library to connect to an mssql database. The problem I have is that connection strings used by .NET are not necessarily compatible with connection strings supported by go-mssqldb.
For example, in .NET applications, the way to specify the name of an app in the connection string is "Application Name=XYZ". However, the way to do this in go-mssqldb is to use "App Name=XYZ". These differences mean that the same connection string cannot be used for both the Go code and the .NET code.
Describe the solution you'd like
Ideally go-mssqldb would support both "App Name=XYZ" and "Application Name=XYZ" for specifying the name of the app. This would improve compatibility with .NET apps without breaking backwards compatibility.
Describe alternatives you've considered
We could use different connection strings between Go apps and .NET apps, but this results in duplicated secret configuration, which is not ideal. In some cases, tools are used to automate the configuration of secrets and these kinds of workarounds become very difficult.
Additional context
There are other incompatibilities, such as go-mssqldb not supporting the "tcp:" prefix or the ",{portNumber}" suffix for the server name, but those can be tracked separately.
Also, I'd be happy to try and contribute this support if I can be pointed to the right code to update.

I'll take a crack at this in github.com/shueybubbles/go-mssqldb as I am learning go


Update data.json, missing shortCode for Hong Kong region

Any news about this? Can we please merge and push a new release?

Apologies, I'll release an update now.


Fix issues arising when ApiPath contains two or more segments

Some issues appear when the value for ApiPath contains multiple segments, like api/test. Specifically, the layout would refuse to render the sidebar, which would also cause Razor to abort since the ChildPages section existed but wasn't rendered. Additionally, the right navigation wouldn't include a link to the API since it's not a direct child of index.html.

Nice finds, thanks!


Convert Console Commands To New L5 Structure (Old 352)

In gitlab by @A-Lawrence on Aug 31, 2015, 01:06
Laravel has a new and improved way of declaring commands in L5.

In gitlab by @A-Lawrence on Dec 20, 2015, 19:27
Milestone removed

In gitlab by @A-Lawrence on Dec 30, 2015, 21:39
mentioned in commit d740009672cca67e9a70c86606c8724e982030c8

In gitlab by @A-Lawrence on Sep 1, 2016, 09:47
mentioned in issue #530

In gitlab by @atoff on Sep 2, 2016, 19:38
mentioned in merge request !21

In gitlab by @A-Lawrence on Sep 2, 2016, 19:41
mentioned in commit 206d1a3693e82803f34ed5fe64746e73803bf985

In gitlab by @A-Lawrence on Sep 5, 2016, 20:22
mentioned in issue #557

In gitlab by @atoff on Oct 3, 2016, 20:28
Mentioned in commit ac93654c1718b027ae87de7bef498af20c308ace

In gitlab by @A-Lawrence on Oct 3, 2016, 20:28
Mentioned in commit 206d1a3693e82803f34ed5fe64746e73803bf985

In gitlab by @A-Lawrence on Dec 3, 2016, 00:10
mentioned in commit e1dfc0cb2115bf2b9b7604c5fb016ccea147f3f2


Design for tooltips in table

😯 Problem to Solve
There are two known instances where we would provide tooltips for the end user.

When content is truncated
When the developer wants to display extra content to support the content in the cell (for example, explaining the meaning of an icon)

💁 Proposed Solution
[Fred Visser - 03/01/2023] Per team meeting today, the current proposal is to add a title attribute to the cell content, and not to depend on the nimble-tooltip.
🤔 Open Questions

Are there other instances we need to define?
Is a design for this needed?

🖼 References/Prior Art
Example of extra information being used in a tooltip

The title attribute is fully supported for truncated column text (☝) and the icon column. Closing.


Map 5: Bite of California

Part of the zoom in to campus.
This shows a schematic from approx. Paso Robles to LA (maybe include as far south as the tip of Catalina Island)

this is not rendering well. It is a part of map 7.
I don't have any control over how the hillshade renders.

Still needs reprojection, zoom in, and better symolization

Julien is looking for potential improvements


fix: remove unneeded yaml files.

Since we are using some of the defaults, we can remove certain application yaml files.
There is also a bug in nodeshift, https://github.com/bucharest-gold/nodeshift/issues/184, which this will fix

Coverage remained the same at 96.825% when pulling 0322480a039ee25afe12a8cbf8616bcf05fa1dfa on lholmquist:remove-yamls into e8106bc1fa1502b89f3ec1689f1f4c0b95ed81e2 on bucharest-gold:master.

Coverage remained the same at 96.825% when pulling 0322480a039ee25afe12a8cbf8616bcf05fa1dfa on lholmquist:remove-yamls into e8106bc1fa1502b89f3ec1689f1f4c0b95ed81e2 on bucharest-gold:master.


[FEATURE] Generate Random Disputes for sample data

Feature Description
The issue is sub part of issue: #5991 (Please refer to this First)
The current implementation of the generate_sample_data_for_user function generates sample data for payments and refunds. However, there is no functionality to generate sample disputes. This issue is about extending the generate_sample_data_for_user function to generate random disputes based on the sample payments created.
Current Behavior

The /sample_data API generates sample payments and refunds.
No disputes are generated as part of the sample data generation process.

Expected Behavior

The generate_sample_data_for_user function should also generate random disputes along with payments and refunds.
The number of disputes generated should be based on the number of payments created:
2 disputes if the number of payments is between 50 and 100.
1 dispute if the number of payments is less than 50.

Possible Implementation
Modify generate_sample_data_for_user Function:
Update the function in utils::user::sample_data::generate_sample_data to create sample disputes based on the number of generated payments.
The Data should be random and fields should be related to sample payments/refunds for which we are creating dispute.
Call the Db function inside generate_sample_data_for_user to Batch insert sample disputes
Call the Db function inside delete_sample_data_for_user to Delete sample disputes
Test
To generate Sample Data:
curl --location 'http://localhost:8080/user/sample_data' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer JWT' \
--data '{
}'

To Delete Sample Data:
curl --location --request DELETE 'http://localhost:8080/user/sample_data' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer JWT' \
--data '{

}'

Have you spent some time checking if this feature request has been raised before?

[X] I checked and didn't find a similar issue

Have you read the Contributing Guidelines?

[X] I have read the Contributing Guidelines

Are you willing to submit a PR?
None

Hi @apoorvdixit88 , I can help on this.

Seems like there's no update
Assign me so I will work on this...

Seems like there's no update
Assign me so I will work on this...

Hi, I'm working on the prerequisite issue of this issue. This is the second part of an issue I'm working on.

Hi @apoorvdixit88 , #6341 is mostly done, please take a look when you are available.

Hey @qstommyshu
Thanks for participating!
Kindly fill this form once all of your PRs are merged.


targets/audio: Fix i386 build

2 upstream issues (one of them fixed already), and remove compiler flag, not really necessary.
Fixes #3811.
See also https://bugs.chromium.org/p/chromium/issues/detail?id=864815 .

crouton updated successfully with this fix for Ubuntu releases: bionic, trusty, & xenial
on the following system:
Google Chrome	69.0.3486.0 (Official Build) dev (64-bit)
Revision	472d1caeb99d99a8952e7170bbf435bd92902d73-refs/branch-heads/3486@{#1}
Platform	10866.1.0 (Official Build) dev-channel eve
Firmware Version	Google_Eve.9584.160.0
Customization ID	GOOGLE-EVE

-DennisLfromGA


Look up documents before retrieving, improve id/key naming conventions

Fix #394: Before downloading the actual content, we look up the sha256 digest from the database and use that to fetch the content from the storage. This is done for advisories, but also for SBOMs.
Also:

When uploading a document, return the Id of the database instead of some ID field from the document
Rename HashOrUuidKey to Id
Make it clearer what key/id means for the storage (StorageKey)

There's one catch. It relies on fetch_advisory, which is also limited and allows only retrieving by Uuid and Sha256. But I guess that another problem to fix.

The CI disagrees. I'll fix that tomorrow.

Tested and the REST API worked as expected, thanks!

I updated the PR and would value a second review.
The same issue was present for SBOMs. That should not also be fixed.
I also did refactor the storage part in a way that it is clear that there is a "storage key", which is opaque on the API. And there's a translation from the Id (and Vec<Id>). Which I is a better approach to the find_sha256 function.

@jcrossley3 unless you think the PR is getting too big, I could amend it tomorrow, adding the struct and trying to pass through the list of hashes.

@jcrossley3 unless you think the PR is getting too big, I could amend it tomorrow, adding the struct and trying to pass through the list of hashes.

I do think it's getting pretty big. Can you change the title to be more descriptive and move the "Fix #394" into the description before merging?

I continued work in https://github.com/trustification/trustify/pull/405


Client crash when looking at TConstruct Smelting Controller

http://pastebin.com/ZBkSpt2c, reproduced on certain PC under Windows 10, but can't be reproduced on Linux. Clients are identical,afaik.

More information please. Full log, versions of all the relevant mods, version of MC, and so on...

Troubles was caused by TOPAddons, not TOP.


Enable actions

Add a Github actions workflow and remove CircleCI configs

@umadein
I am merging as this pr contains no actual changes in the source code layer and I think it's better to fix the ci soon.


Commit hooks requiring user input - how to handle?

I have a pre-commit hook that asks a few questions to the committer prior to running the rest of the standard commit hooks (those not requiring user input). When I attempt to commit, the script that gather user input starts, prints out some chunk of the prompt and then exits. I tried to track this down and see why and it appears that the 'close' event on the spawned process is getting called earlier than I would expect on the user-input-expecting hook AKA almost immediately after printing the first prompt it emits a 'close' event on the spawned process. This causes 'again' to be called unexpectedly. I need to find out why that is happening. I had the same issue with the readline module and the prompt module. Maybe it is how user prompting works generally?
My question is: Is requesting user input and waiting on it before continuing on to the next hook not a feature we want to support or is it bad practice to ask for user input during a hook? I would like to make it possible, but just wanted to see some opinions on this.

This is not an issue really with this npm package, but a design decision on git's part to not use standard input when processing hooks. The idea is that a hook should be able to run without user interaction. For example, how would a server running automated jobs handle the pre-receive hook if it needed user input?
That being said, for a client-side hook like pre-commit, it seems like you can get around this by explicitly pointing to a terminal's input, which is fine as long as you can guarantee a terminal is there to read input from.


Dsd 1217/link button styles

Fixes JIRA ticket DSD-1217
This PR does the following:

Completes the dark mode styles for the button variants of the Link component.

How has this been tested?

local Storybook

Accessibility concerns or updates

n/a

Checklist:

[ ] I have updated the Storybook documentation accordingly.
[ ] I have added relevant accessibility documentation for this pull request.
[ ] All new and existing tests passed.

Front End Review:

[ ] Review the Vercel preview deployment once it is ready.

@jackiequach
I mistaklenly merged the development branch into this branch before I started working today.  That being the case, when you review this, you will see updates in Select and TextInput that were not really part of this update.  They do, however, need to be merged into the dark mode feature branch.


[RESTEASY-1205] RestEasy-Netty4: ByteBuf leak in ResteasyHttpRequestDecoder

content.content().retain() increases reference count without release.
resolve: convert ByteBuf to byte[], and use ByteArrayInputStream instead
leak.txt

I send another fix recently, that does not involve allocating a new byte[] on every request , but release the resources after the request is processed https://github.com/resteasy/Resteasy/pull/977

The issue is now fixed upstream on master through https://github.com/resteasy/Resteasy/pull/977 . I'm closing this PR and we might possibly backport #977 to 3.0.x.
Thanks anyway @crazyzh1984  for the contribution

Reopen pull for merge


TabGestureRecognizer

TabGestureRecognizer should be TapGestureRecognizer

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

ID: 22cd76be-2702-6a58-498c-a84c723d9588
Version Independent ID: 9f98549e-ff3d-5b8d-67e6-523834c4dd6d
Content: Picking a Photo from the Picture Library - Xamarin
Content Source: docs/xamarin-forms/app-fundamentals/dependency-service/photo-picker.md
Product: xamarin
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Fixed by @james-alt


Add support for lots

Most publishers do not implement lots, so for now the indicator calculations are simpler / naive.

[ ] NF024 The winning offer is just below the next lower offer: If lots are present, we can relax the requirement for there to be a single award, since we'll be able to determine which bids are competing for which lot (i.e. whom each awardee was competing with).

TBD whether to include lot IDs in the output (probably), re: #25.

Not MVP as DR has no lots and Ecuador in 9% of procedures.


verify-description.sh doesn't seem to be triggering API json errors correctly

PR #6597 had a few errors in its API objects, where the "description" field errors in its JSON declarations were missing. But, the "verify-description.sh" presubmit check didn't flag them. This should be investigated and fixed.

@nikhiljindal Could you please take a look at this?


feature - send waitlist emails when parent unregisters from class

Notion ticket link

Notion Ticket
Loom Demo Video

Implementation description

in the DELETE request of api/enroll/child for a particular class, we:

get all waitlist records with same class ID
if there are records, we get the class info & for each class, we push an email to mailerPromises
then, send all waitlist emails

Steps to test
Test cases/things to consider:

check if email will be sent to all (2+) waitlisted records for a specific class
-- I tested with 2 emails for one class waitlist, both emails received the waitlist email on unenrollment

currently, a parent IS able to both be enrolled in a class & on the waitlist for the class (ie they may be waiting for another child)

if multiple unenrollments occur within a time range, parents on waitlist would get multiple of the same email -> not sure if we want to do anything about this?

What should reviewers focus on?

email template, wording, etc.

Checklist

[x] My PR name is descriptive and in imperative tense
[x] I have run the linter
[x] I have requested a review from the PL, and/or other devs who have background knowledge on this PR or who will be building on top of this PR

added logic so that the email will only be sent if an unenrollment occurs from a FULL class -> ie if the class was not full before, no email will be sent @MatoPlus
also added a comment in the email that says registration is first come first serve, lmn if you have different wording in mind to signal that registration is not guaranteed @bekahma

yes thanks for making the change amy!!


Make links work as links

We should make links work as actual links, so a user can click them and they open in a new tab.

This would need actual parsing of the message to make it work

We can use a regular expression for this, for example:
(http:\/\/|https:\/\/)(.+)(\.)(.+)

And we already parse the messages to find quotes in them.