MqttClient with TLS and client certificate works on Linux but not on windows using the latest and following samples

We have a project using the MQTTNet client to connect to a RabbitMQ broker using the MQTT Plugin (v311)
The extension method pasted below works on Linux/WSL and in our docker containers deployed but it does not work for our developers running on their windows machines. The method runs fine but the MQTT client fails to connect when running in windows.
We are using the latest MQTTNet NuGet.

The clientCert variable below is a self-signed certificate that the RabbitMQ broker have whitelisted in the connected truststore. As I mentioned this works well in WSL/Linux. The certificate is downloaded from an Azure Keyvault and cotnains both private and public key.
The Broker returns the exception/error "BadUserNaneOrPassword"/Invalid credentials (return code 4) which indicates that the ClientCert is not used properly.
I've read the samples and tried a variety of ways to make this work, looked at https://github.com/Azure-Samples/MqttApplicationSamples/blob/main/mqttclients/dotnet/MQTTnet.Client.Extensions/WithTlsSettings.cs as it shows that the ca-chain needs to be in place.

    public static MqttClientOptionsBuilder WithSPTServiceAccountSettings(this MqttClientOptionsBuilder builder, string virtualHostName, string clientId, SPTRabbitMQRuntimeEnvironment env, X509Certificate2 clientCert, bool useTls = true, bool allowUntrustedCert = false, int brokerPort = 8883, int keepAlive = 25)
    {
        //timeout
        var host = EnumHelper.GetRabbitMQAddress(env);
        var caCertBytes = clientCert.Export(X509ContentType.Cert);
        var caCert = new X509Certificate2(caCertBytes);

        var tlsParams = new MqttClientTlsOptionsBuilder();
        tlsParams
            .UseTls(useTls)
            .WithSslProtocols(System.Security.Authentication.SslProtocols.Tls12 | System.Security.Authentication.SslProtocols.Tls13)
            .WithClientCertificates(new List<X509Certificate2> {
                     clientCert
                 })
            .WithAllowUntrustedCertificates(true)
            .WithIgnoreCertificateChainErrors(true)
            .WithIgnoreCertificateRevocationErrors(true)
            .WithRevocationMode(X509RevocationMode.NoCheck)
            .WithTargetHost(host)
            .WithCertificateValidationHandler((x) => { return true; })
            .WithTrustChain(new X509Certificate2Collection {
                    caCert
                });

        //Now build the client
        builder
            .WithTcpServer(host, brokerPort)
            .WithClientId(clientId)
            .WithKeepAlivePeriod(TimeSpan.FromSeconds(keepAlive))
            .WithTlsOptions(tlsParams.Build());

        return builder;
    }

do you have any logs comparing the tests Linux/Windows ?
There is one detail when loading the clientCert
// https://github.com/dotnet/runtime/issues/45680#issuecomment-739912495
return new X509Certificate2(cert.Export(X509ContentType.Pkcs12));

from https://github.com/Azure-Samples/MqttApplicationSamples/blob/1a96ac0889ae7f76c29b42dda6864360a4b05e34/mqttclients/dotnet/MQTTnet.Client.Extensions/X509ClientCertificateLocator.cs#L21-L22
Also, I would not disable all the TLS settings, to see if those also succeed in Linux but not Windows.

Thank fo the quick reply @rido-min , did some further testing yesterday. What I.ve tried was the following code.

At first I've tried using .Net 8 but I've also tried .Net 7 and no difference there.
The line // .WithTrustChain(new X509Certificate2Collection { caCert }); does not compile on WSL but I've tried with it and without it on windows.

    public static MqttClientOptionsBuilder WithSPTServiceAccountSettings(this MqttClientOptionsBuilder builder, string virtualHostName, string clientId, SPTRabbitMQRuntimeEnvironment env, X509Certificate2 clientCert, bool useTls = true, bool allowUntrustedCert = false, int brokerPort = 8883, int keepAlive = 25)
    {
        var host = EnumHelper.GetRabbitMQAddress(env);
        var pkcs12 = new X509Certificate2(clientCert.Export(X509ContentType.Pkcs12));
        var caCert = new X509Certificate2(pkcs12.Export(X509ContentType.Cert));

        var tlsParams = new MqttClientTlsOptionsBuilder();
        tlsParams
            .UseTls(useTls)
            .WithClientCertificates(new List<X509Certificate2> {
                     pkcs12
                 })
            .WithAllowUntrustedCertificates(true)
            .WithRevocationMode(X509RevocationMode.NoCheck)
            .WithTargetHost(host)
            .WithCertificateValidationHandler((x) => { return true; });
        // .WithTrustChain(new X509Certificate2Collection { caCert });

        //Now build the client
        builder
            .WithTcpServer(host, brokerPort)
            .WithClientId(clientId)
            .WithKeepAlivePeriod(TimeSpan.FromSeconds(keepAlive))
            .WithTlsOptions(tlsParams.Build());

        return builder;
    }

Here is the traces I've managed to gather when running the extension and connecting to the broker.
info: Program[0]
      Connecting MQTT Clientwith ClientId:'testclient' to Vhost '/'
dbug: Program[0]
      MQTT Trace: Trying to connect with server 'Unspecified/{redacted}:8883'
dbug: Program[0]
      MQTT Trace: Connection with server established
dbug: Program[0]
      MQTT Trace: TX (24 bytes) >>> Connect: [ClientId=testclient] [Username=] [Password=] [KeepAlivePeriod=25] [CleanSession=True]
dbug: Program[0]
      MQTT Trace: RX (4 bytes) <<< ConnAck: [ReturnCode=ConnectionRefusedBadUsernameOrPassword] [ReasonCode=Success] [IsSessionPresent=False]
warn: Program[0]
      MQTT Warning: Client will now throw an _MqttConnectingFailedException_. This is obsolete and will be removed in the future. Consider setting _ThrowOnNonSuccessfulResponseFromServer=False_ in client options.
fail: Program[0]
      MQTT Error: Error while connecting with serveraaaaaaaaaa
      MQTTnet.Adapter.MqttConnectingFailedException: Connecting with MQTT server failed (BadUserNameOrPassword).
         at MQTTnet.Client.MqttClient.Authenticate(IMqttChannelAdapter channelAdapter, MqttClientOptions options, CancellationToken cancellationToken) in /_/Source/MQTTnet/Client/MqttClient.cs:line 479
         at MQTTnet.Client.MqttClient.ConnectInternal(IMqttChannelAdapter channelAdapter, CancellationToken cancellationToken) in /_/Source/MQTTnet/Client/MqttClient.cs:line 528
         at MQTTnet.Client.MqttClient.ConnectAsync(MqttClientOptions options, CancellationToken cancellationToken) in /_/Source/MQTTnet/Client/MqttClient.cs:line 128
dbug: Program[0]
      MQTT Trace: Disconnecting [Timeout=00:01:40]
dbug: Program[0]
      MQTT Trace: Disconnected from adapter.
info: Program[0]
      MQTT Information: Disconnected.

If i look at the logs on the Broker I can see the logs below. An interesting part here is that the broker seems to think the client is trying to authenticate using username/password although no such credentials have been added when creating the client. guest:guest is the default user RabbitMQ falls back to when a client tries to authenticate using username/password.
2024-04-26 06:14:12.427308+00:00 [error] <0.1384153.0> MQTT connection failed: access refused for user 'guest':user 'guest' - invalid credentials

So my bet is that the Clientcertificate is not used properly during the connection procedure? I've tried debugging the MQTTNet library and did some print-outs of the sslStream.IsAuthenticated property in the TcpChannel cllass and is says true.

The Broker test instance had the possibility to log in by using username/password enabled 🙈 so I disabled that temporarily to see if that made any difference. And behold ....
As suspected the client does not provide any client cert.
2024-04-26 07:04:29.770786+00:00 [notice] <0.195587.0> TLS server: In state certify at tls_dtls_connection.erl:329 generated SERVER ALERT: Fatal - Handshake Failure
2024-04-26 07:04:29.770786+00:00 [notice] <0.195587.0>  - no_client_certificate_provided

Hi @tufberg
Before digging into client cert details, I'm surprised of this comment.

The line // .WithTrustChain(new X509Certificate2Collection { caCert }); does not compile on WSL but I've tried with it and without it on windows.

AFAIK WithTrustChain requires dotnet 7or greater, I'd like to understand what's your WSL configuration.
And now, going back to the certificates.
First you need to establish a valid TLS connection validating the ServerCert, then you can try to configure the client certs. I'd say that if the TLS handshake fails the client certs are not sent.
I've seen brokers that have additional requirements when using ClientCerts, such as using the same CN as ClientId, or even keep using UserName/Password.
Can you try to configure mosquitto with client certs and see if it works with MQTTNet ?

Good point @rido-min  !  I was at bit puzzled what was happening when I tried to compile and it did not work ...
But it turns out that I've been working a lot with the library and testing different settings and solutions and forgot that the library that the MQTTClient is built-in to are used by project needing the netstandard2.1 so the following code runs on both Windows .net 8 and  WSl .net 8 and I can confirm that the row .WithTrustChain() is executed.
 public static MqttClientOptionsBuilder WithSPTServiceAccountSettings(this MqttClientOptionsBuilder builder, string virtualHostName, string clientId, SPTRabbitMQRuntimeEnvironment env, X509Certificate2 clientCert, bool useTls = true, bool allowUntrustedCert = false, int brokerPort = 8883, int keepAlive = 25)
    {
        var host = EnumHelper.GetRabbitMQAddress(env);
        var pkcs12 = new X509Certificate2(clientCert.Export(X509ContentType.Pkcs12));
        var caCert = new X509Certificate2(pkcs12.Export(X509ContentType.Cert));

        var certProvider = new MqttClientSvcAccountCertificatesProvider(pkcs12);

        var tlsParams = new MqttClientTlsOptionsBuilder();
        tlsParams
            .UseTls(useTls)
            .WithClientCertificatesProvider(certProvider)
            .WithAllowUntrustedCertificates(true)
            .WithRevocationMode(X509RevocationMode.NoCheck)
            .WithTargetHost(host)
            .WithCertificateValidationHandler((x) => { return true; });

#if NET7_0_OR_GREATER
        tlsParams.WithTrustChain(
            new X509Certificate2Collection() { caCert }
        );
#endif
        //Now build the client
        builder
            .WithTcpServer(host, brokerPort)
            .WithClientId(clientId)
            .WithKeepAlivePeriod(TimeSpan.FromSeconds(keepAlive))
            .WithTlsOptions(tlsParams.Build());

        return builder;
    }

Regarding the broker and Client cert the broker will extract the CN part of the certificate and use that for authorization. The authentication is done by the broker to see that the client cert exists in the trust store and thereby trusts the client. But since the client is not sending any certs the authentication fails and IF the username/password mechanism is enabled the broker will fall back on that flow.

I'm using the same client cert in both WSL and Windows. Works on WSL, not on Windows.
In WSL the ClientId and CN does not match. I've tried a matching CN and ClientId but that had no effect on windows either. RabbitMQ has not requirements regarding CN and ClientId.
If I supply a username then it fails on both WSL and Windows since the user is not allowed to log in using username/password.

I can try to set up a different broker and see if that changes anything but we cannot change Broker at this point.
Since the sslOptions contains a Client certificate there has to be some other mechanism in the handshake that fails. The broker does not report any CiperSuite issues during the handshake. Only that there is no client cert available.

I'm guessing that the ClientCerts are sent after the TLS handshake, so you need to make sure the TLS, including trusting the CA is ok before proceeding to auth with ClientCerts.
The most common configuration issue is to trust the chain used to issue the client certs in the server.
What is interesting is that it works in WSL but not Windows. Can you provide more details? Are you using .NET core or .NET Fx in Windows? (asking b/c the netstandard mention). Are you using a custom CA that has been configured in one platform but not the other?
I was not suggesting to change the broker, just to verify that you can auth from both platforms using other broker, In this sample we are collecting some instructions for configuring certs in mosquitto.

If I enable username/password authentication on the Broker and set up a user that has username/password it works fine on both WSL and Windows. Since  username/password works over TLS I make the assumption that the server certificate is trusted by the client.
The server certificate is signed by a public CA but the client certs are self-signed without a CA.  And yes that is not the best of ideas. We'll change that in future sprints since we are building an IoT platform and having 10 k clients certs to trust is generally a bad design IMHO.
Ok, testing a different broker to see if there is any differences was a good idea. I've set up a HiveMQ cloud account trial, since I already had a Free one to test client certificate authentication.
Now to the interesting, but very annoying part,  it works on HiveMQ 😭. So the crazy Rabbit is doing some weird stuff when  the windows client tries to authenticate and not when it is sent from WSL !?!

Tried to connect to the Broker from windows using the .Net RabbitMQ AMQP client. Since the broker is using the same SSLAuth mechanism for MQTT and AMQP connections.
Turns out that in the case of AMQP it works with the client cert ONLY IF we export the client cert to pkcs12/pfx before using it to create a TLS connection
        var pkcs12 = new X509Certificate2(certificate.Export(X509ContentType.Pkcs12));

        //Create the sslOptions to connect to rabbitmq
        var sslOptions = new SslOption()
        {
            Certs = new X509Certificate2Collection {
                    pkcs12
                },
            Enabled = true,
            ServerName = rabbitAddress
        };

I've tried different Flags when creating the PFX/Pkcs12 cert.  E.g.
        var pkcs12 = new X509Certificate2(clientCert.Export(X509ContentType.Pkcs12), (string)null!, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet);

But it does not make a difference. When debugging on WSL there is no Key property on the client cert object. So my current assumption is that there is something strange happening in Windows regarding the private key handling ....

What is interesting is that it works in WSL but not Windows. Can you provide more details? Are you using .NET core or .NET Fx in Windows? (asking b/c the netstandard mention). Are you using a custom CA that has been configured in one platform but not the other?

We are using .NET core version 8.

I simply can't let this go 😉
I found a way to make it work!!!. As mentioned above the AMQP client works so I had a look at the RabbitMQ AMQP client for .NET
So therefore I changed line 112 in /Source/MQTTnet/Implementations/MqttTcpChannel.cs to
var sslStream = new SslStream(networkStream, false, InternalUserCertificateValidationCallback, InternalUserLocalCertificateValidationCallback);

and implemented the  InternalUserLocalCertificateValidationCallback as
        private X509Certificate InternalUserLocalCertificateValidationCallback(object sender, string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate, string[] acceptableIssuers)
        {
            if (acceptableIssuers != null && acceptableIssuers.Length > 0 &&
                localCertificates != null && localCertificates.Count > 0)
            {
                foreach (X509Certificate certificate in localCertificates)
                {
                    if (Array.IndexOf(acceptableIssuers, certificate.Issuer) != -1)
                    {
                        return certificate;
                    }
                }
            }
            if (localCertificates != null && localCertificates.Count > 0)
            {
                return localCertificates[0];
            }

            return null;
        }

And voilà .... It works!

I'm very surprised it works in Windows but not in WSL under NET8.

Maybe I'm a bit unclear or I do not understand :-)
The change I did above to implement InternalUserLocalCertificateValidationCallback is working both on WSL and Windows on .net8 client.

if you want to just configure MQTTNet (without modifying MqttTcpChannel.cs) to validate the chain for netstandard you might want to try to configure WithCertificateValidationHandler and X509ChainValidator.cs (note this is not required in dotnet8)

I looked at this but I'm having a hard time to see how using WithCertificateHandler and X509ChainValidator would help in our platform. As mentioned above WSL works fine (.net 8) but Windows (.net 8) does not work.
Should I suggest a change to MqttTcpChannel with the following Diff? Would it be possible to get this into any upcoming version of MQTTNet ? 😊
diff.txt

@tufberg Please put the expected code in a comment. I will not download any files to my machine.

@rido-min Do you think the following code is a good practice which can be added to the library as the default behavior or do you think it has higher potential for security issues?
private X509Certificate InternalUserLocalCertificateValidationCallback(object sender, string targetHost, X509CertificateCollection localCertificates, X509Certificate remoteCertificate, string[] acceptableIssuers)
{
    if (acceptableIssuers != null && acceptableIssuers.Length > 0 &&
        localCertificates != null && localCertificates.Count > 0)
     {
        foreach (X509Certificate certificate in localCertificates)
        {
           if (Array.IndexOf(acceptableIssuers, certificate.Issuer) != -1)
            {
                return certificate;
            }
        }
    }

    if (localCertificates != null && localCertificates.Count > 0)
    {
        return localCertificates[0];
    }

    return null;
}

I have some doubts about that code blurb.
Proper CA chain validation requires more checks, such as validity dates, OID constraints etc.., that just
Before making any decision I'd like to fully understand why it's working in WSL but no in Windows, and then come up with a good test plan.
I would start by defining what's the "reference broker with x509 auth" we want to use to validate. We've been using the existing version with mosquitto/aws/iothub with no issues so far, so if this is something "special" about RabbitMQ they should document the expected behavior.

Awesome @chkr1011 and thanks @rido-min for quick responses and feedback.  Greatly appreciated!
We can implement a handler that takes care of the current problem and add that to the options object. That would help a lot👍 Will keep an eye for upcoming releases.

I have some doubts about that code blurb.

I did too.... 🙈 I borrowed it from RabbitMQ .Net AMQP client code base. Apparently RabbitMQ is doing something special in their SSLImplementation and therefore that code have been added to their .Net AMQP Client.
We have looked at several different brokers and the choice landed on RabbitMQ which also supports MQTT v5 since a couple of months back. Have not tried v5 implementation yet though. Adding RabbitMQ to the list of brokers sounds like a good plan. MQTTNet works really well and we have used it a lot in other projects, not with RabbitMQ, but with customers using AWS or Mosquitto.
Again, all help here is very much appreciated. Ping me if you need any help.


React Query's live query is not typed properly

Bug description
The return type of useQuery using @wundergraph/react-query is incomplete. Using the nextjs-react-query example, if we modify the useQuery lines to the following:
	const {data, isSubscribed } = useQuery({
		operationName: 'Dragons',
		liveQuery: true,
                enabled: true,
	});

TypeScript will complain that Property 'isSubscribed' does not exist on type 'UseQueryResult<DragonsResponseData, GraphQLResponseError> (but I can console it normally).
Also I have some feedback on the API. It took me a while to figure this out, but it seems I have to set both liveQuery and enabled to true. It means that the following code
	const {data, isSubscribed } = useQuery({
		operationName: 'Dragons',
		liveQuery: true,
	});

will not enable live query (I think because of this line where options.enabled is undefined by default). This is a bit counter-intuitive. I think you guys should set enabled to true by default.
How to reproduce
See above
Expected behavior
No response
WunderGraph information
N/A
Environment & setup
@wundergraph/react-query v0.2.4

WunderCtl Version
0.125.0

cc @Pagebakers

This will be fixed in the next release, later this week.


[Dropdown] multi level icon position problem in Firefox

Hi,
Is there a bug in or am i missing smthing for the multi level dropdown's icon position?
Screenshot: https://www.evernote.com/l/AAIhTsFOKrVM16zjR2z3J_hphy5dJjGQDhQ
Fiddle: https://jsfiddle.net/2rruuph6/1/
UPDATE: This happens only on Firefox (Mac - 52.02.2 64 Bit)
Thanks.

Place the <i class="dropdown icon"></i> before the "More" text, not after.

Sorry about that.
@ardamose123 Thank you, should’ve checked the HTML pattern.


npm install error

$ npm install
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
npm WARN deprecated<EMAIL_ADDRESS>See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated<EMAIL_ADDRESS>request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated<EMAIL_ADDRESS>this library is no longer supported
npm WARN deprecated<EMAIL_ADDRESS>renamed to unplugin-vue-components, see https://github.com/antfu/unplugin-vue-components/releases/tag/v0.14.0
npm WARN deprecated<EMAIL_ADDRESS>See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated<EMAIL_ADDRESS>The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated<EMAIL_ADDRESS>some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated<EMAIL_ADDRESS>Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated<EMAIL_ADDRESS>https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated<EMAIL_ADDRESS>This SVGO version is no longer supported. Upgrade to v2.x.x.
npm WARN deprecated<EMAIL_ADDRESS><EMAIL_ADDRESS>is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.
npm ERR! code 1
npm ERR! path /home/users/flexdash-main/node_modules/deasync
npm ERR! command failed
npm ERR! command sh -c node ./build.js
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using<EMAIL_ADDRESS>npm ERR! gyp info using<EMAIL_ADDRESS>| linux | x64
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
npm ERR! gyp ERR! find Python checking if "python3" can be used
npm ERR! gyp ERR! find Python - "python3" is not in PATH or produced an error
npm ERR! gyp ERR! find Python checking if "python" can be used
npm ERR! gyp ERR! find Python - executable path is "/usr/bin/python"
npm ERR! gyp ERR! find Python - version is "2.7.5"
npm ERR! gyp ERR! find Python - version is 2.7.5 - should be >=3.6.0
npm ERR! gyp ERR! find Python - THIS VERSION OF PYTHON IS NOT SUPPORTED
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python You need to install the latest version of Python.
npm ERR! gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
npm ERR! gyp ERR! find Python you can try one of the following options:
npm ERR! gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
npm ERR! gyp ERR! find Python   (accepted by both node-gyp and npm)
npm ERR! gyp ERR! find Python - Set the environment variable PYTHON
npm ERR! gyp ERR! find Python - Set the npm configuration variable python:
npm ERR! gyp ERR! find Python   npm config set python "/path/to/pythonexecutable"
npm ERR! gyp ERR! find Python For more information consult the documentation at:
npm ERR! gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
npm ERR! gyp ERR! find Python **********************************************************
npm ERR! gyp ERR! find Python
npm ERR! gyp ERR! configure error
npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
npm ERR! gyp ERR! stack     at PythonFinder.fail (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:330:47)
npm ERR! gyp ERR! stack     at PythonFinder.runChecks (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:159:21)
npm ERR! gyp ERR! stack     at PythonFinder. (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:266:16)
npm ERR! gyp ERR! stack     at PythonFinder.execFileCallback (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:297:7)
npm ERR! gyp ERR! stack     at ChildProcess.exithandler (node:child_process:390:7)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
npm ERR! gyp ERR! stack     at maybeClose (node:internal/child_process:1092:16)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm ERR! gyp ERR! System Linux 3.10.0-1160.53.1.el7.x86_64
npm ERR! gyp ERR! command "/usr/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /home/users/flexdash-main/node_modules/deasync
npm ERR! gyp ERR! node -v v16.15.0
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok
npm ERR! Build failed
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/users/.npm/_logs/2022-06-05T13_27_12_459Z-debug-0.log

hi, even I am facing the same issue.
can you help me with how to resolve this issue, please?
I have been searching for an answer for the past 10 days I am not able to find any solution.
please help me if anyone as any solution to this problem

what are you trying to do with flexdash? there are multiple versions in various stages of usability, if I knew what you want to do I may be able to help...


jvm-opts not working with server mode.

Options defined in .mill-jvm-opts  not picked unlsess --no-server is specified.
macro expansion or shapeless based staff requires large stack size. But set -Xss in .mill-jvm-opts not working.

Do you have a small reproducer for this, by any chance? Or an idea, or some example of a code snippet known to need a high -Xss setting?

import java.lang.management._
val runtimeMxBean = ManagementFactory.getRuntimeMXBean()
val arguments = runtimeMxBean.getInputArguments()

I tried print the vm args in the ZincWorkImpl using java management api. And the options defined .mill-jvm-opts only seen while --no-server specified.


breaks on prefixed spaces inside file/folder name

git clone https://github.com/matu3ba/chepa/tree/cdbc5cc3574aa38f7604a77d57745f854d8ef783
cd chepa
zig build tfgen
cd test_folders && rm -fr base_perf && rm -fr control_sequences
cd bad_patterns
fd -t d | zf

output:
zf terminates immediately without showing prompt.

Hi @matu3ba, sorry for such a long delay in looking at this. Life was busy and I prioritized the fun things rather than fixing this.
However, I followed your instructions and it seems like this is actually fixed?
❯ fd -t d | zf
>
 fname/
--fname/
-fname/
fname /
fname1 --fname2/
fname1 -fname2/
fname1 ~fname2/
~fname/

The filenames with prefixed or inner spaces all work fine! If you don't mind, could you let me know if I have tested this enough to close? Thanks again and sorry for the delay

Hi @natecraddock, can you update the build.zig to latest master with the build changes or which zig version do you target?

@matu3ba because zf is packaged for the homebrew and arch, I target 0.10.0. I will eventually need to update so I can make a branch if you want


Issue when used in SetupComplete.cmd

So I have modified this a bit to inject and run as part of the SetupComplete.cmd and I have it logging the errors into a file.  I am getting some errors that when I run in a separate environment I can't seem to replicate.
Example:
Disabling Wi-Fi Sense...
Set-ItemProperty : Cannot find path
'HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots' because it does not exist.
At C:\Windows\Setup\Scripts\TA2019_Win10.ps1:127 char:2

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PolicyManager\de ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : ObjectNotFound: (HKLM:\SOFTWARE...FiSenseHotspots:String) [Set-ItemProperty], ItemNotFo
undException
FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.SetItemPropertyCommand

Thanks for your response.  It has actually fixed a bunch of other issues I had been having.


remove sidebar, update styles

What's included?
Closes #2412
Who should test?
✅ Product owner
✅ Developers
✅ UTG
How to test?

Go to the preview link
Check the exercise applications view (click applications figure)

Side bar should be removed
Should use full width

Check the Tasks ,Stages, Reports

Should Use full width

Risk - how likely is this to impact other areas?
🟢 No risk - this is a self-contained piece of work
Additional context
Include screen grabs, video demo, notes etc.
Related permissions
Have permissions been considered for this functionality?

No permission changes required
Permissions have been added / updated. Details:

PREVIEW:DEVELOP
can be OFF, DEVELOP or STAGING

Beautiful, @KoWeiJAC! Pls merge and close :-)


Add option to reenable sending of deprecated args field

An option to reenable sending of the deprecated args field would be really helpful for debugging.

Nvm I see that #145 has what I need


Timeout

I'm finding that the first time I access an image - the image is failing to be retrieved.  But it is generating it in the cache.   If I retry and access the image again - it works.
Is there some timeout that is configurable - and perhaps set to low ?

Version etc please....

Is this a remote request?
Local request?
Original Image size?
Original Image Format?
Hosting setup?

What do you mean by failing to be retrieved?

It works fine in testing - but when I publish to a hoster I get the issue.  Local to the web site.
Original size is 3000 x 2000 ... trying to generate a 500 x 500 image
Fails - as in the HTTP request fails.
Latest versions of software from Nuget
thanks

i just did a network trace using the built in browser tools.
the trace says 200OK contenttype image/jpeg and 36.55kb received
but the web browser says "This page can't be displayed' ... I'm just browsing to the image not a webpage
Weird is failing to display - yet the trace looks good.
try again / refresh ... and it works

I was using IE.  Tried with Firefox same issue - except it says "The connection was reset while the page was loading",    again the developer tools / network trace looks good ... says 200 status code 12.42kb transferred.
Refresh and the image appears - this time the network shows 60.58kb transferred

I don't think this is an ImageProcessor issue.
Is it shared hosting by any chance? They're usually underpowered. My money is on your setting imposed by your hosting have a too low value for executionTimeout.
Checkout the following link for configuration info. http://stackoverflow.com/a/13947988/427899

Yes - Shared Hosting.  Thanks for the link.
I changed the  maxRequestLength & maxAllowedContentLength lengths in the web.config ... seems to be working at the moment. :-)   thank you

Ace!... I'll close this then. Have fun!


Docs: Update citation information

:tada: This PR is included in version 0.4.3 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


strongly recommend bottle to support unicode native

strongly recommend bottle to support unicode native.
django and flask both support unicode native, it's import for  unicode users, thanks!

What do you mean by "unicode native"?  What should be supported? Do you mean templates? Or request data?

sorry for my poor english.
for example,I think request.forms[key] should be Unicode, and
@route('/') 's filename should be Unicode too.
2012217壬Marcel Hellkamp <
<EMAIL_ADDRESS>д

What do you mean by "unicode native"?  What should be supported? Do you
mean templates? Or request data?

Reply to this email directly or view it on GitHub:
https://github.com/defnull/bottle/issues/280#issuecomment-4005182

Am 16.02.2012 18:39, schrieb dantezhu:

sorry for my poor english.
for example,I think request.forms[key] should be Unicode, and
@route('/') 's filename should be Unicode too.

Unfortunately it is not that easy. URLs don't have an encoding. They are
byte strings by definition. They are 'usually' encoded with utf8 or
whatever encoding the linking website used, but that is only an
assumption. Same goes for GET and POST parameters.
Since 0.10, you can access request.forms/params/query/GET and .POST
variables via attributes (request.forms.form_name). These attributes
return unicode (utf-8 by default) and an empty string if decoding fails.
This is the best solution I can think of.


Add imgur support and Amazon Music Support

add imgur support so that you can make cover arts work even if the music player doesn't send them like this does using imgur api key https://github.com/Radiicall/jellyfin-rpc and also add amazon music support like this has https://github.com/cytsai1008/bezos-presence but improve artist and song name detection

There is currently "remote arts" which attempts what imagur does. I do not have any plans to integrate that at this time.
Amazon music was looked into, but seeing how your referenced link uses the same api as I do, there is nothing I can do better than it, and amazon music was unreliable and hard to test. is it better now?

What do you mean by "imgur api image fetching"? Is that different than what I already have, and if so, please elaborate.

you can use the imgur api and imgur api key to have the cover art be pulled from imgur like this does https://github.com/Radiicall/jellyfin-rpc

and also this has better song detection then your rpc for amazon music https://github.com/cytsai1008/bezos-presence

I just realized that you are the author of #72 as well. please revisit it as nothing has changed. maybe amazon music has changed, but there is nothing more I will do on that front.
As for imgur: please explain to me in words what you would like. Stop sending me url's and explain what MDRP needs to do that it can't already do.

you can use the imgur api and imgur api key to have the cover art be pulled from imgur like this does https://github.com/Radiicall/jellyfin-rpc

The imgur part in the Jellyfin RPC is simply to host the images of the movies externally instead of setting up port forwarding. The current MDRP fetches the images from an API and caches the URL to that file, making Imgur unnecessary.

add amazon music support like this has https://github.com/cytsai1008/bezos-presence but improve artist and song name detection

For Amazon Music, in DiscordPresenceConfig.ini add amazon music=true=808571949227049000 at the top of the page. As mentioned previously in #72 there's not much more we can do


Fix yyset_lineno() Flex compatibility wrappers

Only superficially tested, but this fixes the problems reported in #88 for me.

Looks good to me.

Let me also update v2.1.5 right away with this change.

There may still be an issue somewhere. My application is not segfaulting in reflex::AbstractMatcher::lineno() because this is a NULL pointer... I am looking at it.

Strange. The changes should be alright though, as they're aligned with the other methods and functions. Thanks for your quick response!

Is it possible that a FlexLexer object exists in a state where the Matcher is NULL? What I am doing in my code is equivalent to instantiating a lexer and immediately calling the lineno(n) method on it.

Yes, apparently this is what is happening. How does the lexer object acquire a matcher?

The matcher is assigned when the lexer's lex (or yylex) function is invoked. In the initial state only the input can be assigned, but no other properties of the matcher. Different matchers are associated with start condition states, while sharing the same input etc. Therefore, the lexer sets the proper matcher(s) at scan time.

I see. If I understand correctly the matcher is not static, thus there must already be a way to tell the next matcher at what line the previous one left the input. Is it so? I am trying to get familiar with the code...

How would you implement a scanner that start counting the input lines from a number different from 1?

Correct. The matcher(s) are not static, but the patterns are because patterns are read-only. The generated scanner source code (e.g. lex.yy.cpp) shows how this is done:
  static const reflex::Pattern PATTERN_INITIAL(reflex_code_INITIAL);
  if (!has_matcher())
  {
    matcher(new Matcher(PATTERN_INITIAL, stdinit(), this));
    YY_USER_INIT
  }

A simple trick/workaround is to initialize the matcher is to present it without any input:
Lexer lexer;
lexer.lex(reflex::Input()); // force matcher init using empty input (produces EOF, be mindful of any wrap() when set)
lexer.in(file); // assign new input, e.g. from a file

In reentrant/bison-bridge "flex code" this becomes:
yyFlexLexer lexer(reflex::Input());
lexer.yylex(); // force init with EOF
yyrestart(&lexer, file); // reentrant yyrestart(): assign new input, e.g. from a file

Doesn't yyrestart() or equivalently calling lexer.in() reset the input line number? I would expect this to be the case, and thus this workaround does not quite work for setting the initial line number.

I don't see why setting the line number after yyrestart() will not work, or am I missing something? The first part of the code is to associate a matcher with the lexer.
In most scenarios that I am familiar with, e..g when implementing #line, the yyset_lineno() function will be called on demand while scanning input, and not before yylex() is called for the first time. When a #line is encountered the specified file name is set and yyset_lineno() is called with the specified line number.

I misunderstood your suggestion. I thought that yyset_lineno() was to be called before yyrestart(). Putting it after, all is working fine.


WriteBuffer buffer error

Plugin Version

Steps to Reproduce

Run flutter create bug.
Update the files as follows: ...
...

Expected results:
Actual results:

Logs

I'm seeing the same thing

waiting for solution

Looks like this is only happening on 3.0. Upgrading to 3.3 fixes this.

flutter upgrade for fixing

already updated

anyone who can help

flutter upgrade for fixing

updated already

flutter upgrade for fixing

updated already

After update, typing comand :

flutter clean
flutter run or flutter build appbundle

Running Gradle task 'assembleDebug'...
/C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: Type 'WriteBuffer' not found.
void writeValue(WriteBuffer buffer, dynamic value) {
^^^^^^^^^^^
/C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: Type 'ReadBuffer' not found.
dynamic readValueOfType(dynamic type, ReadBuffer buffer) {
^^^^^^^^^^
/C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: 'WriteBuffer' isn't a type.
void writeValue(WriteBuffer buffer, dynamic value) {
^^^^^^^^^^^
/C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: 'ReadBuffer' isn't a type.
dynamic readValueOfType(dynamic type, ReadBuffer buffer) {
^^^^^^^^^^
FAILURE: Build failed with an exception.

Where:
Script 'E:\android studio setup\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1156

What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command 'E:\android studio setup\flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 3m 8s
Exception: Gradle task assembleDebug failed with exit code 1

Running Gradle task 'assembleDebug'... /C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: Type 'WriteBuffer' not found. void writeValue(WriteBuffer buffer, dynamic value) { ^^^^^^^^^^^ /C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: Type 'ReadBuffer' not found. dynamic readValueOfType(dynamic type, ReadBuffer buffer) { ^^^^^^^^^^ /C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: 'WriteBuffer' isn't a type. void writeValue(WriteBuffer buffer, dynamic value) { ^^^^^^^^^^^ /C:/Users/SoNiC/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/google_mobile_ads-2.1.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: 'ReadBuffer' isn't a type. dynamic readValueOfType(dynamic type, ReadBuffer buffer) { ^^^^^^^^^^
FAILURE: Build failed with an exception.

Where:
Script 'E:\android studio setup\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1156
What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command 'E:\android studio setup\flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 3m 8s Exception: Gradle task assembleDebug failed with exit code 1

how can i fix this issue?

Hi @Manishmg3994 (and anyone facing this issue)
Does this issue happen with google_mobile_ads/example?
Also, from your logs, it seems you were running the project on Flutter stable-3.0.5 and you've already upgraded Flutter SDK. Please provide the output of flutter doctor -v and flutter run -v.  If the log is too long, please save it into a file and attach it here. Thanks!

flutter upgrade for fixing

updated already

After update, typing comand :

flutter clean
flutter run or flutter build appbundle

this method not working.
I am using flutter version 3.0.1

Anyone still facing this, you have two options:

Update flutter, clean, and rebuild.
Specify a static version. (e.g. google_mobile_ads: 2.1.0, note that there's no carrot ^)

Hi @Manishmg3994 (and anyone facing this issue)
Does this issue happen with google_mobile_ads/example?
Also, from your logs, it seems you were running the project on Flutter stable-3.0.5 and you've already upgraded Flutter SDK. Please provide the output of flutter doctor -v and flutter run -v. If the log is too long, please save it into a file and attach it here. Thanks!

done from mu side but any suggestion to show ads in my app as now ,I have done everything but this time google admob is not giving me ads in my app , i wish Admob should  help me for revenue generation , at last thanks to everyone for their kind support

Hi ,
I face the same error yesterday  .
You can fix it by update flutter to the last version , current version is flutter 3.3.5.
thanks .

"flutter run" works for me, but when i use control+r the error still show and does not run the app

Hi, could you finally solve the problem?? I am having the same issue when I try to implement google_mobile_ads in my flutter project

I'm facing the same issue...
Running Gradle task 'assembleDebug'...
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: Type 'WriteBuffer' not found.
void writeValue(WriteBuffer buffer, dynamic value) {
^^^^^^^^^^^
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: Type 'ReadBuffer' not found.
dynamic readValueOfType(dynamic type, ReadBuffer buffer) {
^^^^^^^^^^
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: 'WriteBuffer' isn't a type.
void writeValue(WriteBuffer buffer, dynamic value) {
^^^^^^^^^^^
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: 'ReadBuffer' isn't a type.
dynamic readValueOfType(dynamic type, ReadBuffer buffer) {
^^^^^^^^^^
FAILURE: Build failed with an exception.

Where:
Script 'C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1156

What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command 'C:\flutter\bin\flutter.bat'' finished with non-zero exit value 1

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 14s
Exception: Gradle task assembleDebug failed with exit code 1

I'm facing the same issue... Running Gradle task 'assembleDebug'... /C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: Type 'WriteBuffer' not found. void writeValue(WriteBuffer buffer, dynamic value) { ^^^^^^^^^^^ /C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: Type 'ReadBuffer' not found. dynamic readValueOfType(dynamic type, ReadBuffer buffer) { ^^^^^^^^^^ /C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:27:19: Error: 'WriteBuffer' isn't a type. void writeValue(WriteBuffer buffer, dynamic value) { ^^^^^^^^^^^ /C:/flutter/.pub-cache/hosted/pub.dartlang.org/google_mobile_ads-2.2.0/lib/src/ump/user_messaging_codec.dart:45:41: Error: 'ReadBuffer' isn't a type. dynamic readValueOfType(dynamic type, ReadBuffer buffer) { ^^^^^^^^^^
FAILURE: Build failed with an exception.

Where:
Script 'C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1156
What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command 'C:\flutter\bin\flutter.bat'' finished with non-zero exit value 1

Try:

Run with --stacktrace option to get the stack trace.
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 14s Exception: Gradle task assembleDebug failed with exit code 1

###For Me This Issue SOLVED AFTER REIMPLEMENT THE googleAdMob

##my troubleshooting steps were as follows:

Check Android studio and flutter update. Tried to run my app but didn't success.
Completly Disable/Removed google ads and comment out ads section. Tried to run again. It was successful.
Finally, reimplement google admob.

My Assumption. I was working on my old project in Android studio flutter project. A pop up message displayed for an update and asked to backup my project otherwise it will overwrite. I didn't check properly and just ignore the message and simply click on update. After that i face this same issue.
Found changes in project after update.

Admob setting missing in Android activity file.
App name change to default com.example.project_name
App icons replaced by default flutter icons.
##All the best. 👍

i'm still facing this error

I'm still facing this error too😭

I just deleted the text "WriteBuffer" and "ReadBuffer" and then it works.. is it okay whit that?

Add this line
import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;

Not sure why this issue is closed, I reproduce in my project too. Any news?

I also got this problem user_messaging_codec.dart:27:19: Error: 'WriteBuffer' isn't a type and Error: 'ReadBuffer' isn't a type. Cause for google mobile ads plugin.
solution goto this location of your drive:- C:\src\flutter.pub-cache\hosted\pub.dartlang.org\google_mobile_ads-2.3.0\lib\src\ump\user_messaging_codec.dart
and edit googleads user_messaging_codec.dart and add :-- "import 'package:flutter/foundation.dart' show ReadBuffer, WriteBuffer;" this line to import the read and write buffer then save the file using ctrl+s and ctrl+s+k.
then do :- 1) flutter clean 2) flutter pub get
it solve my problem, this answer is not found in internet . Follow our youtube channel THECOMPUTERMIND for more. link:-https://www.youtube.com/@thecomputermind1

flutter upgrade works for me

Hi , I face the same error yesterday . You can fix it by update flutter to the last version , current version is flutter 3.3.5. thanks .


feat: permanently fault enospc replicas

This is temporary until we add the logic that will attempt to move them.
Signed-off-by: Tiago Castro<EMAIL_ADDRESS>

bors merge


command decorations don't have button styling on hover / mouse pointer

@meganrogge Can you clarify how to verify this?

On hover of the decorations, you should see a background that is similar to how other buttons look in the workbench when hovered. You shouldn't see this for skipped commands ie the grey circle outline decorations, but should for the other two.


MicroProfile Health 4.0 Specification Review

[x] Specification name and version
[x] Add the label Release Review
[ x Naming conventions for artifacts:

[x] Specification PDF in the form of microprofile-project-spec-version.pdf
[x] Specification HTML in the form of microprofile-project-spec-version.html
project is the microprofile specification short project name (config, health, ...)
version is the two digit x.y version of the specification

[x] The Nexus Staging links (orgeclipsemicroprofile-NNNN where NNNN is the staging repository id) (eg, https://oss.sonatype.org/content/repositories/orgeclipsemicroprofile-NNNN/org/eclipse/microprofile/config/) which contain all the binaries and relevant documentation:

[x] Staging Repo
[x] Spec PDF
[x] Spec HTML
[x] Javadoc
[x] API Jar
[x] TCK Jar

[x] A link in the Eclipse downloads sections is still available for specs and apidocs:

[x] https://download.eclipse.org/microprofile/staging/microprofile-health-4.0/
[x] An apidocs directory containing the javadoc associated with the API jar.

[x] Summary that a Compatible Implementation is complete, passes the TCK, and that the TCK includes sufficient coverage of the specification.

[x] Compatible Certification Request

[ ] Release Review

[x] Follow governance process and create/update release record

Component Release Record

[x] Email to PMC (more info here)
[x] Start release review by emailing EMO (more info here)(Track the bug issue created by EMO after the email)
[x] A member of Steering Committee initiates the ballot by sending an email to [microprofile-wg]<EMAIL_ADDRESS>(more info here
[ ] After the voting has ended, email [microprofile-wg]<EMAIL_ADDRESS>with the ballot result (more info here

Similar comment as #101 (comment)
The javadoc jar file contains the Apache license and the EFSL license, which are okay. But, it also contains the EF TCK license? That should not be part of the javadoc jar file. I don't think this update is a requirement for a respin, but the TCK license should be removed. Open an issue/pr to clean this up after the release.
On a similar vein, the TCK Javadoc jar file contains the EFSL, which doesn't seem right. I think this EFSL should be removed from the TCK Javadoc jar file. Just include this with the issue/pr you create for the previous comment.
Otherwise, looks good! Thanks!


App error if specimen table has no records from collection logged into

Specimen table needs at least one record from the collection in question before the App can launch. This is due to the post-view table needing records fed into it.

Checks for collection records in 'specimen' table.


move to defaults and add sudo

I moved the makepkg_nonroot_user to the defaults folder so that it can be overwritten. I also added a packer_dependencies variable because I wanted to install python2-httplib2.
Since the aur/pkg.yml makes heavy use of sudo I think it makes sense to specify sudo when installing the dependencies with pacman.

Nice, thanks for the contribution!


I cannot run scenes by importing modules from other files.

Description of bug / unexpected behavior
I wanted to have something like a CONFIG dictionary, where there are some parameters to change and the animation would change based on the parameters. However, I am unable to make the animation. I am also aware the CONFIG dictionaries are now deprecated in Manim Community now. I checked Manim Docs, but the code did not work.
Expected behavior
When I ran my code, it gave me an error that said that the module was not found. However, in Grant's Manim, it worked.
How to reproduce the issue
In Grant's version of Manim, you would have 2 files and it was something like this:
File where I import modules (Import_Module.py)
from manimlib.imports import *
from My_Code.Module import *

class Scene_Name(Module_Scene):
    CONFIG = {
        "number": 4
    }

Module File (Module.py)
from manimlib.imports import *
from My_Code.file import *

class Module_Scene(Scene):
    def construct(self):
        number = self.number

        self.add(TextMobject(str(number)))

Then you would run the first file in the terminal, like this:
python3 manim.py My_Code/Import_Module.py -p
I would assume that something similar would happen in Manim Community. I checked the documentation, but it didn't work. The Manim Docs is here:
https://docs.manim.community/en/latest/changelog.html#v0-2-0
The code would look something like this:
File where I import modules (Import_Module.py)
from manim import *
from My_Code.Module import *

class Scene_Name(Module_Scene):
    Scene_Name(number=4)

Module File (Module.py)
from manim import *
from My_Code.file import *

class Module_Scene(Scene):
    def construct(self):
        number = self.number

        self.add(Tex(str(number)))

Then you would run the first file in the terminal, like this:
manim My_Code/Import_Module.py -p -ql
But it gave me this error:
Traceback (most recent call last):
number = self.number
AttributeError: 'Scene_Name' object has no attribute 'number'.
Additional comments
I hope you understand what the error is. Could you please explain how I could fix this problem? Thank you!

Note: I don't know how to have indents/tabs in markdown. That's why the formatting is quite weird. Sorry!

Note: I don't know how to have indents/tabs in markdown. That's why the formatting is quite weird. Sorry!

Put code blocks into blocks of three backticks, like this:
```
your code goes here
```
Otherwise, this is unfortunately pretty hard to read.

Oh. Thank you!

The formatting is better now!

What are the contents of My_code.file?
In your example, you import everything from it, yet nothing from it is used.
This is fine:
from manim import *
from My_Code.file import *

And here, you define Module_Scene by inheriting from Scene, which is a core manim object. Did you redefine Scene in My_code.file?
class Module_Scene(Scene):

Closing this issue due to lack of a response.


Alternative

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...], I'm looking for [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Closing as no issue details were provided.


How does this package work together with Spark?

Planning on using this package + Spark. Would they interfere?

@canfiax Sorry for the delay in my answer. I've been checking Spark and this package is not compatible but I think it could be a good improvement I will try to work on.

It seems Laravel spark will not be free and souce code will be not available so I think it will be difficult to work together with it


feat: add Basis.flag_le_ker_dual

From sphere-eversion; I adapted the proof to mathlib's definition and golfed it a bit.
This adds a new import; as this file is not imported anywhere, this seems fine.

Good point, thank you! I have taken a closer look a realised the lemma proof could be golfed quite bit. It's ready for another look now.

bors merge


[bug] MongoBug/Error?

Error, trying to run Nano-Faucet
Error (replit)
/home/runner/Faucet-v2/node_modules/mongodb/lib/sdam/topology.js:292
                const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${serverSelectionTimeoutMS} ms`, this.description);
                                     ^

MongoServerSelectionError: connection <monitor> to <IP_ADDRESS>:27017 closed
    at Timeout._onTimeout (/home/runner/Faucet-v2/node_modules/mongodb/lib/sdam/topology.js:292:38)
    at listOnTimeout (node:internal/timers:557:17) {
  reason: TopologyDescription {
    type: 'ReplicaSetNoPrimary',
    servers: Map(3) {
      'ac-a6lxmzw-shard-00-00.slzsv1i.mongodb.net:27017' => ServerDescription {
        address: 'ac-a6lxmzw-shard-00-00.slzsv1i.mongodb.net:27017',
        type: 'Unknown',
        hosts: [],
        passives: [],
        arbiters: [],
        tags: {},
        minWireVersion: 0,
        maxWireVersion: 0,
        roundTripTime: -1,
        lastUpdateTime: 14074569,
        lastWriteDate: 0,
        error: MongoNetworkError: connection <monitor> to <IP_ADDRESS>:27017 closed
            at Connection.onClose (/home/runner/Faucet-v2/node_modules/mongodb/lib/cmap/connection.js:136:19)
            at TLSSocket.<anonymous> (/home/runner/Faucet-v2/node_modules/mongodb/lib/cmap/connection.js:63:46)
            at TLSSocket.emit (node:events:390:28)
            at TLSSocket.emit (node:domain:475:12)
            at node:net:687:12 {
          [Symbol(errorLabels)]: Set(1) { 'ResetPool' }
        },
        topologyVersion: null,
        setName: null,
        setVersion: null,
        electionId: null,
        logicalSessionTimeoutMinutes: null,
        primary: null,
        me: null,
        '$clusterTime': null
      },
      'ac-a6lxmzw-shard-00-01.slzsv1i.mongodb.net:27017' => ServerDescription {
        address: 'ac-a6lxmzw-shard-00-01.slzsv1i.mongodb.net:27017',
        type: 'Unknown',
        hosts: [],
        passives: [],
        arbiters: [],
        tags: {},
        minWireVersion: 0,
        maxWireVersion: 0,
        roundTripTime: -1,
        lastUpdateTime: 14073248,
        lastWriteDate: 0,
        error: MongoNetworkError: connection <monitor> to <IP_ADDRESS>:27017 closed
            at Connection.onClose (/home/runner/Faucet-v2/node_modules/mongodb/lib/cmap/connection.js:136:19)
            at TLSSocket.<anonymous> (/home/runner/Faucet-v2/node_modules/mongodb/lib/cmap/connection.js:63:46)
            at TLSSocket.emit (node:events:390:28)
            at TLSSocket.emit (node:domain:475:12)
            at node:net:687:12 {
          [Symbol(errorLabels)]: Set(1) { 'ResetPool' }
        },
        topologyVersion: null,
        setName: null,
        setVersion: null,
        electionId: null,
        logicalSessionTimeoutMinutes: null,
        primary: null,
        me: null,
        '$clusterTime': null
      },
      'ac-a6lxmzw-shard-00-02.slzsv1i.mongodb.net:27017' => ServerDescription {
        address: 'ac-a6lxmzw-shard-00-02.slzsv1i.mongodb.net:27017',
        type: 'Unknown',
        hosts: [],
        passives: [],
        arbiters: [],
        tags: {},
        minWireVersion: 0,
        maxWireVersion: 0,
        roundTripTime: -1,
        lastUpdateTime: 14073920,
        lastWriteDate: 0,
        error: MongoNetworkError: connection <monitor> to <IP_ADDRESS>:27017 closed
            at Connection.onClose (/home/runner/Faucet-v2/node_modules/mongodb/lib/cmap/connection.js:136:19)
            at TLSSocket.<anonymous> (/home/runner/Faucet-v2/node_modules/mongodb/lib/cmap/connection.js:63:46)
            at TLSSocket.emit (node:events:390:28)
            at TLSSocket.emit (node:domain:475:12)
            at node:net:687:12 {
          [Symbol(errorLabels)]: Set(1) { 'ResetPool' }
        },
        topologyVersion: null,
        setName: null,
        setVersion: null,
        electionId: null,
        logicalSessionTimeoutMinutes: null,
        primary: null,
        me: null,
        '$clusterTime': null
      }
    },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    setName: 'atlas-wtnme1-shard-0',
    maxElectionId: null,
    maxSetVersion: null,
    commonWireVersion: 0,
    logicalSessionTimeoutMinutes: null
  },
  code: undefined,
  [Symbol(errorLabels)]: Set(0) {}
}

Config
{
  "self": "https://faucet-v2.imintheicu.repl.co",
  "name": "Prussia's <coin> Faucet",
  "db": "mongodb",
  "port": 8080,
  "owner": "YOUR NAME",
  "logo": false,
  "unopened_reduced_payouts": false,
  "notice": {
    "title": "More front-end potassium",
    "content": "All the faucets have a new look, go check them out!",
    "link": "https://banano.cc"
  },
  "sponsor": {
    "name": "Prussia",
    "link": "https://prussia.dev"
  },
  "captcha": {
    "hcaptcha_sitekey": "b4db4920-1a73-4b9b-995b-...",
    "use_splash": true,
    "prussia_captcha": "https://captcha.prussia.dev"
  },
  "banano": {
    "claim_frequency": 86400000,
    "enabled": false,
    "default": false,
    "auto_receive": false,
    "address": "",
    "rpc": "",
    "payouts": {
      "min_payout": 0.02,
      "max_payout": 0.07,
      "percentage": false
    }
  },
  "nano": {
    "claim_frequency": 86400000,
    "enabled": true,
    "default": true,
    "address": "nano_3p76j3jecwfdq5c9c99pyythx1shimxfz4ec5xeqbkebkgw3nie5jbh4z4kk",
    "rpc": "https://proxy.nanos.cc/proxy",
    "payouts": {
      "min_payout": 0.0001,
      "max_payout": 0.0002,
      "percentage": false
    }
  },
  "xdai": {
    "claim_frequency": 86400000,
    "enabled": false,
    "address": "",
    "rpc": "",
    "payouts": {
      "min_payout": 0.005,
      "max_payout": 0.005,
      "percentage": false
    }
  },
  "vite": {
    "claim_frequency": 86400000,
    "enabled": false,
    "address": "",
    "rpc": "",
    "payouts": {
      "min_payout": 0.01,
      "max_payout": 0.05,
      "percentage": false
    },
    "token": {
      "id": "",
      "amount": 1,
      "decimals": 0,
      "alias": "Token name"
    },
    "optional": true
  },
  "secrets": {
    "use_env": true
  }
}

Hi @ImInTheICU ! Thanks for opening an issue. Since you are using replit, I'm pretty sure I know the issue.
Assuming you set mongo_connection_string correctly in the secrets tab, **this is an issue on replit's end. Sometimes replit has problems connecting to mongodb on certain machines.
The solution is, unfortunately, going into shell and typing in kill 1 to kill the container and have replit switch to a container that does connect to mongodb properly. Luckily, you can kind of automate this, by replacing the first 14 lines of utils/faucet.js to this:
const config = require('../config.js');
const mongo = require('./mongo.js');
const { exec } = require('child-process');

let db = mongo.getDb();

let ready = false;

// Separate collections for each currency
let collections = {};
db.then((db) => {
  ready = true;
  // Check what currencies are supported, and get a collection for each one
  let enabled_coins = config.enabled_coins;
  for (let i = 0; i < enabled_coins.length; i++) {
    collections[enabled_coins[i]] = db.collection(enabled_coins[i]);
  }
});

setTimeout(function() {
  if (!ready) {
    //if replit does not connect to mongodb within 6 seconds, kill the container and wait for a restart
    exec('kill 1');
  }
}, 6000);

And if you put a http pinger like UptimeRobot on the faucet's url, it will automatically restart within 5 minutes of it being killed.
Or, probably better, you can use another host. Render is a good free one that is currently running my faucet. If you put cloudflare caching in front of it, their 100 GB traffic limit is no problem.

As far a I know, Vercel only lets you deploy serverless sites which this isn't, at least not without modification. It might be technically possible to deploy this on Vercel but it doesn't seem like a good idea, from a brief read of their docs.

Damn, that's rough.
Ile attempt Render, never heard or tried it before.

Ile attempt render here soon.
Is there any major limitations of render?

You can more or less only deploy one dynamic website per account (anything with a backend, so this faucet), and each account can only have 100 GB of egress (outbound) bandwidth. 100 GB is a lot though, and even if you have many visitors and larger pictures on the site, that can be solved by using Cloudflare to cache all that and prevent it from adding to the 100 GB limit. Also just generally make sure any assets on your website are compressed and all that.
Build times are also a little longer, but once it's built, it will stay on forever (unlike replit), unless you stop it or there is an error in the code that crashes it. It can also deploy automatically once you commit to a git repo which is pretty cool too. And of course it supports env variables and secret files.

You can more or less only deploy one dynamic website per account (anything with a backend, so this faucet), and each account can only have 100 GB of egress (outbound) bandwidth. 100 GB is a lot though, and even if you have many visitors and larger pictures on the site, that can be solved by using Cloudflare to cache all that and prevent it from adding to the 100 GB limit. Also just generally make sure any assets on your website are compressed and all that.
Build times are also a little longer, but once it's built, it will stay on forever (unlike replit), unless you stop it or there is an error in the code that crashes it. It can also deploy automatically once you commit to a git repo which is pretty cool too. And of course it supports env variables and secret files.

Ah thats sweet, also this faucet is not static ? right?

Ah, it won't be free, but sometimes when buying your domain name, you get free or cheap hosting, and they get you a cpanel account or something like that. It's not as easy to set up as replit or render, but it's something to consider.

No problem! Since you've already created a Render account, it's probably best to stick with that, but for future reference, a friend of mine recommended https://railway.app which seems to be fine for this too.

Anyways, if you need further help you can just mention me in, I guess, this issue, or if you have a discord, might be easier to contact me on discord if the issue is more private or complicated.

Can't contact your discord, (replit display's error when attempting to see your discord page)
Does theses run-commands look good?

Deploy'd and kept getting mongo problems with the IP-Address.
Fixed that, but now after doing the captcha and using the faucet I get a internal server error with 0 error.

Mongo thing is that you need to whitelist all IPs (or just the ones render gives you). Can you be more specific with the captcha error? I assume you are using hcaptcha, you set up an account, did the site key, set the hcaptcha secret in env and so on, right?

https://user-images.githubusercontent.com/111275373/233184637-ab762bde-8b63-4b34-9c8a-d683ce688946.mp4

Hmm, really no logs in render? Are you sure?
If you set all the env variables, config file correctly it should work. I checked the nano account and it was opened, so that's not the problem.
If you are certain there's no obvious issues in the config file, no logs, all env variables are valid and present, could you contact me on Discord (or I can contact you, either way), and I can try to figure out the issue.

Got it working!
Thanks for all the help, very little developer's / contributors on github take time to help people and solve problems on there project!
Turns out the package file was missing node-fetch.
But was suppressed by Render?
And never display'd as a error.

Ah! Thanks for the report, I will make sure node-fetch gets added to the package.json then.


fix(pod): allow sidecar containers to have probes

https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#differences-from-regular-containers
if we check docs, sidecar containers support readiness, liveness and startup probes. I added an extra check to make sure the init container is not sidecar for probe checks.
this way it will be possible to add probes for initcontainers when they are sidecar.
edit: this should be backported to k8s-29/main as well
Fixes #4338

this should be backported to k8s-29/main as well

@serhatcetinkaya what about k8s-28? no need?

my mistake, I thought #3812 was not backported to k8s-28. we should backport to that branch as well. thanks for the notice

@iliapolo hello again, all the suggestions are implemented. Can you take another look when you have time?

💚 All backports created successfully

Status
Branch
Result

✅
k8s-28/main

✅
k8s-29/main

Questions ?
Please refer to the Backport tool documentation


tdesktop: 4.1.0 -> 4.1.1

Description of changes
https://github.com/telegramdesktop/tdesktop/releases/tag/v4.1.1
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 186980 run on x86_64-linux 1

1 package built:

tdesktop


ENH: VK4 reader

This PR implements an import filter for the Keyence VK4 file format.

Hi @jotelha - here is another example of a reader.

Hi @jotelha - can you review this?


Fix missing imports in the barrel file

Summary & motivation
It looks like some types are missing in the barrel file and that leads to some rare imports. I don't know about orders since I think is now longer accepting beta users, but maybe we can add the other two
import { ProcessOrderParams } from '@stripe/stripe-js/types/stripe-js/orders';
import { CollectBankAccountTokenOptions, CollectFinancialConnectionsAccountsOptions } from '@stripe/stripe-js/types/stripe-js/financial-connections';
import { EphemeralKeyNonceOptions } from '@stripe/stripe-js/types/stripe-js/ephemeral-keys';

Testing & documentation
I think no tests are required in this case, really simple fix.
This is the issue I'm trying to fix: https://github.com/stripe/stripe-js/issues/400

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


How to set split information when training custom dataset?

HI i want to train my custom dataset, can you plz tell me how to set split information?
Actually i don't understand the lists in split.py. Why are they that kind of split in cifar or minist.

Hello.
Thanks for your interest.
The split information exists to evaluate the OSR performances.
If you are trying to train your custom dataset to launch the model for the application, splitting the dataset may not be necessary unless you want to evaluate the model under specific settings.
Besides, the form of the split in split.py is from the previous works.
For fair comparisons with previous works, we adopted the split information that was used in previous works. (They say they randomly chose the classes for the Closed / Open set.)
You may modify the split.py to evaluate in various open set circumstances.

Thank you, if it randomly chose the classes for  Closed / Open set, then let me try the same way of splitting my custom dataset.


improve match algorithm doc

https://ast-grep.github.io/advanced/match-algorithm.html
Related to https://github.com/ast-grep/ast-grep/issues/1188

Fixed!


Add option to skip having assets with #[number here] when exporting assets by full container path (with name)

I would like the ability to not have assets with #[some number here] in the filenames of the exported assets. This is making it harder to mod a specific game that supports loading mods but expects one to export some of the assets on it.
My settings (for version v<IP_ADDRESS>):

Yeah, it's already planned.
But what do you expect in that case? Overwriting existing files or just skipping the export of existing files?
Also, if you select exporting assets with pathID in the names (in v0.18.0), there will be no #uniq_id in the names.
Already existing files will be skipped during export.

Yeah, it's already planned. But what do you expect in that case? Overwriting existing files or just skipping the export of existing files?
Also, if you select exporting assets with pathID in the names (in v0.18.0), there will be no #uniq_id in the names. And already existing files will be skipped during export.

in this case if the change to the file is smaller or say is exactly the same then skip, otherwise overwrite if the size of say an image file is bigger. By size I mean in pixels.


Fix pylint issues in third_party/intel

************* Module backend.compiler
third_party/intel/backend/compiler.py:25:8: W0622: Redefining built-in 'bin' (redefined-builtin)
third_party/intel/backend/compiler.py:36:0: R0902: Too many instance attributes (16/7) (too-many-instance-attributes)
third_party/intel/backend/compiler.py:95:28: W0613: Unused argument 'metadata' (unused-argument)
third_party/intel/backend/compiler.py:92:4: R0903: Too few public methods (1/2) (too-few-public-methods)
third_party/intel/backend/compiler.py:145:36: E1101: Class 'XPUOptions' has no '__dataclass_fields__' member (no-member)
third_party/intel/backend/compiler.py:153:8: C0415: Import outside toplevel (triton.language.extra.intel.convert_custom_float8) (import-outside-toplevel)
third_party/intel/backend/compiler.py:160:8: C0415: Import outside toplevel (triton.language.extra.intel.libdevice) (import-outside-toplevel)
third_party/intel/backend/compiler.py:167:23: W0613: Unused argument 'metadata' (unused-argument)
third_party/intel/backend/compiler.py:167:33: W0613: Unused argument 'opt' (unused-argument)
third_party/intel/backend/compiler.py:4:0: C0411: standard import "dataclasses.dataclass" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:5:0: C0411: standard import "functools" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:6:0: C0411: standard import "typing.Any" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:7:0: C0411: standard import "types.ModuleType" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:8:0: C0411: standard import "hashlib" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:9:0: C0411: standard import "re" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:10:0: C0411: standard import "os" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:11:0: C0411: standard import "shutil" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:12:0: C0411: standard import "subprocess" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
third_party/intel/backend/compiler.py:13:0: C0411: standard import "pathlib.Path" should be placed before third party imports "triton.backends.compiler.BaseBackend", "triton._C.libtriton.ir" (wrong-import-order)
************* Module backend.driver
third_party/intel/backend/driver.py:18:14: W0621: Redefining name 'include_dir' from outer scope (line 15) (redefined-outer-name)
third_party/intel/backend/driver.py:31:4: W0621: Redefining name 'library_dir' from outer scope (line 68) (redefined-outer-name)
third_party/intel/backend/driver.py:52:8: W0707: Consider explicitly re-raising using 'except Exception as exc' and 'raise AssertionError(assertion_message) from exc' (raise-missing-from)
third_party/intel/backend/driver.py:89:4: W0621: Redefining name 'importlib' from outer scope (line 1) (redefined-outer-name)
third_party/intel/backend/driver.py:84:17: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
third_party/intel/backend/driver.py:89:4: C0415: Import outside toplevel (importlib.util) (import-outside-toplevel)
third_party/intel/backend/driver.py:101:0: R0205: Class 'XPUUtils' inherits from object, can be safely removed from bases in python3 (useless-object-inheritance)
third_party/intel/backend/driver.py:109:8: W0621: Redefining name 'dirname' from outer scope (line 70) (redefined-outer-name)
third_party/intel/backend/driver.py:110:38: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
third_party/intel/backend/driver.py:121:15: E1101: Instance of 'XPUUtils' has no 'event_pool' member (no-member)
third_party/intel/backend/driver.py:124:8: C0415: Import outside toplevel (torch) (import-outside-toplevel)
third_party/intel/backend/driver.py:182:4: W0622: Redefining built-in 'format' (redefined-builtin)
third_party/intel/backend/driver.py:155:40: W0613: Unused argument 'ids' (unused-argument)
third_party/intel/backend/driver.py:428:0: R0205: Class 'XPULauncher' inherits from object, can be safely removed from bases in python3 (useless-object-inheritance)
third_party/intel/backend/driver.py:432:68: R1735: Consider using '{}' instead of a call to 'dict'. (use-dict-literal)
third_party/intel/backend/driver.py:433:18: C3001: Lambda expression assigned to a variable. Define a function using the "def" keyword instead. (unnecessary-lambda-assignment)
third_party/intel/backend/driver.py:430:28: W0613: Unused argument 'metadata' (unused-argument)
third_party/intel/backend/driver.py:428:0: R0903: Too few public methods (1/2) (too-few-public-methods)
third_party/intel/backend/driver.py:452:8: R1705: Unnecessary "else" after "return", remove the "else" and de-indent the code inside it (no-else-return)
third_party/intel/backend/driver.py:462:8: C0415: Import outside toplevel (torch) (import-outside-toplevel)
third_party/intel/backend/driver.py:461:33: W0613: Unused argument 'device' (unused-argument)
third_party/intel/backend/driver.py:466:8: C0415: Import outside toplevel (torch) (import-outside-toplevel)
third_party/intel/backend/driver.py:474:8: C0415: Import outside toplevel (torch) (import-outside-toplevel)
third_party/intel/backend/driver.py:453:12: W0201: Attribute 'utils' defined outside __init__ (attribute-defined-outside-init)

Fixes #2016.

Changes in general LGTM, but this would make our driver.py be more different from nvidia driver.py.

There is no pylint in upstream, they run only ruff which we also enabled recently for our code. Pylint is more strict and in general we want to use it for our code, however if this creates a big difference between upstream driver and our driver we can disable pylint for third_party/intel and close this PR without merging.

Changes in general LGTM, but this would make our driver.py be more different from nvidia driver.py.

There is no pylint in upstream, they run only ruff which we also enabled recently for our code. Pylint is more strict and in general we want to use it for our code, however if this creates a big difference between upstream driver and our driver we can disable pylint for third_party/intel and close this PR without merging.

Can we keep the changes that are unique to us (e.g., _find_sycl) and remove the changes that would make us more different from nvidia?

Can we keep the changes that are unique to us (e.g., _find_sycl) and remove the changes that would make us more different from nvidia?

I can try. Is it only for driver.py only or for compiler.py as well?

If the goal is to eventually upstream to the OpenAI repo then I do not see how we can have different linters. At the very least we will not be able to enforce these changes, and I cannot see OpenAI wanting to include comments for linters they don't use in their source code.

Can we keep the changes that are unique to us (e.g., _find_sycl) and remove the changes that would make us more different from nvidia?

I can try. Is it only for driver.py only or for compiler.py as well?

Ideally both.

If the goal is to eventually upstream to the OpenAI repo then I do not see how we can have different linters.

We use the same linter (ruff) as upstream does. We we planning to use pylint in addition to ruff, because pylint is more strict and catches more issues than ruff (for example, ruff does not detect obvious syntax errors). Regarding future upstreaming our code: i agree, it would be reasonable to skip pylint for third_party/intel for now. We will continue using pylint for scripts and benchmarks.

Going to disable pylint for third_party/intel, this PR is no longer relevant.


[Form Provider Refactor] RoomNameInput fixes

Details

Followup to https://github.com/Expensify/App/pull/30996
Fixed Issues

$ https://github.com/Expensify/App/issues/32398
PROPOSAL: https://github.com/Expensify/App/issues/32398#issuecomment-1837192947
$ https://github.com/Expensify/App/issues/32399
$ https://github.com/Expensify/App/issues/32386
Tests

Workspace new room:

Log in
Press + button > Press Start chat > Switch to # Room
Check if errors appears when incorrect data is typed in
Check if when spaces are replaced with -
Type correct data and create a new room

Room name:

Log in
If there are no rooms, create a new one (steps above)
In the chat room press its name > Press Settings > Press Room name
Check if the room name is propagated
Check if errors appears when incorrect data is typed in
Check if when spaces are replaced with -
Type correct data and update the name of the room

Edit room name without change:

Go to home screen
Go to + > Start chat > Room.
Create a room with a valid name.
Go to the room > Click header > Settings.
Click Room name.
Click Save without any edit.

Check for consistent errors:

Go to home screen
Go to + > Start chat > Room.
Click Create room without entering room name.
Type [[<<> (don't copy paste) in the name field.

Ensure input can be re-focused:

Open the App
Log in with any Expensify account
Press + button > Press Start chat > Switch to # Room
Enter incorrect data for receiving an error
Focus on another input field
Try to focus again on the name input field

[x] Verify that no errors appear in the JS console

Offline tests

Same as above
QA Steps

Same as above

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/91068263/9dbbed21-4af3-4f90-a592-bf41a7eeedaf

Android: mWeb Chrome
https://github.com/Expensify/App/assets/91068263/054d687b-58b0-483f-b51d-fb81333d0287

iOS: Native
https://github.com/Expensify/App/assets/91068263/0aaff983-f36c-4899-b45e-f2f126089047

iOS: mWeb Safari
https://github.com/Expensify/App/assets/91068263/775331cd-3c82-4471-853c-8f0598f4d85c

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/91068263/6aa48a20-5fe2-45ca-925c-0c48549fc231

MacOS: Desktop
https://github.com/Expensify/App/assets/91068263/d4af9872-860c-47bc-b816-e31a59e0e505

Cc. @luacmartins

Reviewer Checklist

[X] I have verified the author checklist is complete (all boxes are checked off).
[X] I verified the correct issue is linked in the ### Fixed Issues section above
[X] I verified testing steps are clear and they cover the changes made in this PR

[X] I verified the steps for local testing are in the Tests section
[X] I verified the steps for Staging and/or Production testing are in the QA steps section
[X] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[X] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[X] I checked that screenshots or videos are included for tests on all platforms
[X] I included screenshots or videos for tests on all platforms
[X] I verified tests pass on all platforms & I tested again on:

[X] Android: Native
[X] Android: mWeb Chrome
[X] iOS: Native
[X] iOS: mWeb Safari
[X] MacOS: Chrome / Safari
[X] MacOS: Desktop

[X] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[X] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[X] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[X] I verified that comments were added to code that is not self explanatory
[X] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[X] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[X] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[X] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[X] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[X] I verified the JSDocs style guidelines (in STYLE.md) were followed

[X] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[X] I verified that this PR follows the guidelines as stated in the Review Guidelines
[X] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[X] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[X] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[X] If a new component is created I verified that:

[X] A similar component doesn't exist in the codebase
[X] All props are defined accurately and each prop has a /** comment above it */
[X] The file is named correctly
[X] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[X] The only data being stored in the state is data necessary for rendering and nothing else
[X] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[X] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[X] All JSX used for rendering exists in the render method
[X] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[X] If any new file was added I verified that:

[X] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[X] If a new CSS style is added I verified that:

[X] A similar style doesn't already exist
[X] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[X] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[X] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[X] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[X] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[X] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[X] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

We're so close. @kowczarz could you please address the latest comments?

Hey @luacmartins, sorry I didn't manage to fix it yesterday, since I had to leave office earlier, but now it's ready.

@kowczarz Lint please

The "Ensure draft works" test can be removed.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/luacmartins in version: 1.4.14-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/luacmartins in version: 1.4.14-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.4.14-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅