glfwGetPhysicalDevicePresentationSupport needs additional surface parameter to have complete check for presentation support

According to spec,
To determine whether a queue family of a physical device supports presentation to a given surface, we must call vkGetPhysicalDeviceSurfaceSupportKHR.
plus,
to create a swapchain, surface(a parameter in VkSwapchainCreateInfo) must be a surface that is supported by the device as determined using vkGetPhysicalDeviceSurfaceSupportKHR.
Validation layer will report error if we do not call vkGetPhysicalDeviceSurfaceSupportKHR before vkCreateSwapchain. I must manually add vkGetPhysicalDeviceSurfaceSupportKHR even I've called glfwGetPhysicalDevicePresentationSupport.
I would like to issue pull request. but I need to add additional surface parameter to the function, which will change the interface....
Please refer to this.
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/818

glfwGetPhysicalDevicePresentationSupport is merely an abstraction of the corresponding platform-specific functions vkGetPhysicalDeviceWin32PresentationSupportKHR, vkGetPhysicalDeviceXlibPresentationSupportKHR, vkGetPhysicalDeviceWaylandPresentationSupportKHR and vkGetPhysicalDeviceMirPresentationSupportKHR and is meant for use before surface creation.

I see!
I have some couple of simple vulkan apps that use glfw.
I wish to make them as simple as I can only to show how to correctly use glfw with vulkan (No rendering).
Will you accept the pull request?
still need some time to finish them

I will not accept it. It will change the ABI.


network connectivity does not recover from an initial network outage

What version of gRPC and what language are you using?
gRPC v1.56.0 (I also tried v1.55.1 and master) for C++
What operating system (Linux, Windows,...) and version?
Ubuntu 20.04
What runtime / compiler are you using (e.g. python version or version of gcc)
gcc 9.4.0
What did you do?
I modified the helloworld greeter_client/_server examples to use TLS and set grpc.min_reconnect_backoff_ms and grpc.max_reconnect_backoff_ms to the same value, 4000 in the provided example. The client reuses the Stub to call "SayHello" multiple times.
I started the server and blocked all traffic with the firewall to simulate a network outage.
I started the client and saw the expected "failed to connect to all addresses" error.
I unblocked the traffic with the firewall to end the "network outage".
I waited for the client to make a successful connection.
Here are the modified cpp files.
greeter_client.cc
#include <iostream>
#include <memory>
#include <string>
#include <thread>

#include "absl/flags/flag.h"
#include "absl/flags/parse.h"

#include <grpcpp/grpcpp.h>

#ifdef BAZEL_BUILD
#include "examples/protos/helloworld.grpc.pb.h"
#else
#include "helloworld.grpc.pb.h"
#endif

ABSL_FLAG(std::string, target, "localhost:50051", "Server address");

using grpc::Channel;
using grpc::ClientContext;
using grpc::Status;
using helloworld::Greeter;
using helloworld::HelloReply;
using helloworld::HelloRequest;

class GreeterClient {
 public:
  GreeterClient(std::shared_ptr<Channel> channel)
      : stub_(Greeter::NewStub(channel)) {}

  bool SayHello(const std::string& user) {
    HelloRequest request;
    request.set_name(user);

    HelloReply reply;

    ClientContext context;

    Status status = stub_->SayHello(&context, request, &reply);

    if (status.ok()) {
      std::cout << "OK: " << reply.message() << std::endl;
      return true;
    }
    std::cout << "ERR: " << status.error_code() << ": " << status.error_message()
            << std::endl;
    return false;
  }

 private:
  std::unique_ptr<Greeter::Stub> stub_;
};

constexpr const char ROOT_CERT[] = R"(
-----BEGIN CERTIFICATE-----
MIIDCzCCAfOgAwIBAgIUDsfZJzxcbWjrdAAEwqBEGpi1xHgwDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJbW9yaXR6LmNhMCAXDTIzMDYyNzEzMzE1NFoYDzIxMjMw
NjAzMTMzMTU0WjAUMRIwEAYDVQQDDAltb3JpdHouY2EwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCzkoaS0sjhp/eFyjXW0tUolMyMdZOAgKgSKp6AwD/E
2GG1ucVmtWN7+afGbR2NuoG25k4U/52/9FZqLwCLmKzf9f/xSNJA7HQE7QE6smWo
CPNhpiedmLfwxvqaRSHBwzHQFb7bI6n67zhRujUm1YiHKipac84uE40sx3iWw1F1
KLdtMZ2rmjdQ7Or/c1URPMDEMtVawAnP6cCJM/z8zJpSFUqukAi4hDUaJmvO1c6K
dUiAuBbaIP5yypKE+U88G1P9JeE12SpSSto/D5lNG1B6f+caVa8mLL9rF06NqpuK
CX9fGb2N9/vOllZ+kJYhWQz8PRh1sHLtBZrRKxLM/aUTAgMBAAGjUzBRMB0GA1Ud
DgQWBBT/y11XavrJVX3MU2695B+HzieHbjAfBgNVHSMEGDAWgBT/y11XavrJVX3M
U2695B+HzieHbjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAz
8/577tLISpu4I8EtG9FDg9x7uRk2j+PJya69XIrUVxsaKS6y0BL0kpGLFfdY3gQt
21dfYkWWSH6HhH7ch79rMUdqjscQuPlp2asPqe23zZ8KkNofEKPCXXXCoHimEtWs
dd3P3kVS7ZYB+/TzVlN7QyFHe0M+we9PaYcfffcEdl57xUxx0OpbQqPzJSTIOgX+
tmeAxKcIJrEHPAG+/jP5IeL7efHtkufUBoxFcd9huu1QWGrNB3gGKnvW7XO/TmSY
TCYGoQywV0e07YJLtzUTetTazuN8I38ndTZkVszGw09Uqd1rNijBKLYD29hTpxdT
29Pllcs5egKR/+e0YFSS
-----END CERTIFICATE-----
)";

constexpr const char SSL_TARGET_NAME[] = "moritz-service";

static auto create_channel(const std::string& address) {
  grpc::ChannelArguments args{};

  constexpr int backoff = 4000;
  args.SetInt("grpc.min_reconnect_backoff_ms", backoff);
  args.SetInt("grpc.max_reconnect_backoff_ms", backoff);

  args.SetSslTargetNameOverride(SSL_TARGET_NAME);

  std::shared_ptr<grpc::ChannelCredentials> channel_creds;
#ifndef DISABLE_TLS
  channel_creds = grpc::SslCredentials(grpc::SslCredentialsOptions{ROOT_CERT, "", ""});
#else
  channel_creds = grpc::InsecureChannelCredentials();
#endif
  return grpc::CreateCustomChannel(address, channel_creds, args);
}

int main(int argc, char** argv) {
  absl::ParseCommandLine(argc, argv);
  std::string target_str = absl::GetFlag(FLAGS_target);

  GreeterClient greeter(create_channel(target_str));

  while (!greeter.SayHello("moritz")) {
      std::this_thread::sleep_for(std::chrono::milliseconds(500));
  }
  std::cout << "DONE" << std::endl;

  return 0;
}

greeter_server.cc
#include <iostream>
#include <memory>
#include <string>

#include "absl/flags/flag.h"
#include "absl/flags/parse.h"
#include "absl/strings/str_format.h"

#include <grpcpp/ext/proto_server_reflection_plugin.h>
#include <grpcpp/grpcpp.h>
#include <grpcpp/health_check_service_interface.h>

#ifdef BAZEL_BUILD
#include "examples/protos/helloworld.grpc.pb.h"
#else
#include "helloworld.grpc.pb.h"
#endif

constexpr const char ROOT_CERT[] = R"(
-----BEGIN CERTIFICATE-----
MIIDCzCCAfOgAwIBAgIUDsfZJzxcbWjrdAAEwqBEGpi1xHgwDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJbW9yaXR6LmNhMCAXDTIzMDYyNzEzMzE1NFoYDzIxMjMw
NjAzMTMzMTU0WjAUMRIwEAYDVQQDDAltb3JpdHouY2EwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCzkoaS0sjhp/eFyjXW0tUolMyMdZOAgKgSKp6AwD/E
2GG1ucVmtWN7+afGbR2NuoG25k4U/52/9FZqLwCLmKzf9f/xSNJA7HQE7QE6smWo
CPNhpiedmLfwxvqaRSHBwzHQFb7bI6n67zhRujUm1YiHKipac84uE40sx3iWw1F1
KLdtMZ2rmjdQ7Or/c1URPMDEMtVawAnP6cCJM/z8zJpSFUqukAi4hDUaJmvO1c6K
dUiAuBbaIP5yypKE+U88G1P9JeE12SpSSto/D5lNG1B6f+caVa8mLL9rF06NqpuK
CX9fGb2N9/vOllZ+kJYhWQz8PRh1sHLtBZrRKxLM/aUTAgMBAAGjUzBRMB0GA1Ud
DgQWBBT/y11XavrJVX3MU2695B+HzieHbjAfBgNVHSMEGDAWgBT/y11XavrJVX3M
U2695B+HzieHbjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAz
8/577tLISpu4I8EtG9FDg9x7uRk2j+PJya69XIrUVxsaKS6y0BL0kpGLFfdY3gQt
21dfYkWWSH6HhH7ch79rMUdqjscQuPlp2asPqe23zZ8KkNofEKPCXXXCoHimEtWs
dd3P3kVS7ZYB+/TzVlN7QyFHe0M+we9PaYcfffcEdl57xUxx0OpbQqPzJSTIOgX+
tmeAxKcIJrEHPAG+/jP5IeL7efHtkufUBoxFcd9huu1QWGrNB3gGKnvW7XO/TmSY
TCYGoQywV0e07YJLtzUTetTazuN8I38ndTZkVszGw09Uqd1rNijBKLYD29hTpxdT
29Pllcs5egKR/+e0YFSS
-----END CERTIFICATE-----
)";

constexpr const char SERV_KEY[] = R"(
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAwUfwlM89B71dCdv9NXcFhXcx+f6m+fykvwxNWYr7XDAE7Ok/
iYZH5YrCwqUhvDTbOlaRxEtAvRe6/JgHizBv5YHaTCPywsssQj+43xD9oPoYPYav
6qSaTl6sLaEd9gz2C0xxKZi2EyutctY+0IqEsSDpc4s1DEpPLoAdyrgR/2K/lBoV
QxV87viRMfKB7Dca6UsclDeD4OyB/zoeqrUXoPZZ3b/h5Pl62642VcTK2IEz61x4
JNyQvxE9+QleIuONFQ3YvJOZ3r0gYjc04x6HaIDtPMrY3dt+qS6B0ogR6Kr+ATaM
A85uXu0f6IMTKiay0AdirNpcOfK+9JjJdcuqzQIDAQABAoIBAGtvnqZJD+aWdvn9
A6HNeA85M1mAGLbKnZTotLI6VABpXMOH396E+r/4QsxJWBgy1U13Q212WxUA9Npl
c4QGN5y+cmZycQWgRAjLPOsZmbH6crD4hh6Kwo8fhtuSPIJBsB6Vri1uCn9bfv1f
Y+ktphaDceDdF26ue5cgde7yJGbtN5UCUBpI58+NI4kNhglWKTelwZTwo4UgiPQE
fNhJaEcy1KcGbbCEEEyenTgBrPUMU7fFH/5CiHVILdfn5GWSiQx5GjtriG4jCcRa
/cAbFtqpgabRJ0cLjwVC3jNSfJLiYDinYI+vCmF8F1yf80r612XP+RndGTbGc4vD
u+hdluECgYEA9R4NbrzZ7/dyny4xkfSUeiaQDRMNw2xiOnrfVc//K7TZbc/g2DyI
XknQA03WORyuxkoWF/0FeMEZGgyhwTqIMbP+gjCwoSytGhVLv2aW7hv0LTahEvq2
Fw/7kqbAqOWU+akpfH8Vb8BtAxCWNUqF6dS1/k2RqJjanVilBNk6IfUCgYEAydy6
HssmY/yyGtBwfMhf9Jdr1RheksIGBhMDnjpYJPdbIuzFkpKU2NlqCb9zzvVC/oic
JXQMXsQYLV4dzzMCUqat0kRAUvbkctXdIR9I33Dg9sA+Atr3p/MGCH1BpundeVlz
yQFiSJB/pJYKnwOkc2I+xSlKk9ME38ETaiBiZnkCgYEAw6WHJzqJ4eXqkW+3lT5Z
PN6G4EizFabvCKqGlOH+VI53dhUU7MP0PP5BkEGSmedxAUilNeR5d5b5SDeI7Mih
aLq4jIX8lckpKcaRvWZPViLt1SDjlFiU+veA399FrAoDzPre6EYvgBFhca7Nlh+z
n55u3VpgxueqpyjYHnSc1/kCgYEAv6ksqmo2hD78mEsKUuApg2F2B/lAalWARKov
CD/bSxX02T84BAfa/d3IOYMnIPxr5KKupzz9Nck4L3MqGH4VGYaaiYc2D8/Nbl8y
uu0qUsSpRH+ZITroY/Vx6AONnz5zg3F0ZwhCWiWgnBO99+cMcGV6tdaTsbFs8kou
9dfTtfkCgYAHIj/eUqL9lpFjX7Ge87J0OFBKTEy+qzBiSLumnv2TGr2ISKmFwGWb
gQhbnUxumsKQWZEOafgAVlGqnQnoP17JMx3/lFnVwRH4pt2kpJ6+P7nMoJTBV4Vq
2Np5J1/qviyJ+QKtWANpDWESGPHFck5WLi6lPAsIl5cg6kIL2n95Qg==
-----END RSA PRIVATE KEY-----
)";

constexpr const char SERV_CERT[] = R"(
-----BEGIN CERTIFICATE-----
MIICtjCCAZ4CFBn5KmSMNSZshklV4ps6exHaeyvNMA0GCSqGSIb3DQEBCwUAMBQx
EjAQBgNVBAMMCW1vcml0ei5jYTAgFw0yMzA2MjcxMzMxNThaGA8yMTIzMDYwMzEz
MzE1OFowGTEXMBUGA1UEAwwObW9yaXR6LXNlcnZpY2UwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDBR/CUzz0HvV0J2/01dwWFdzH5/qb5/KS/DE1Zivtc
MATs6T+JhkflisLCpSG8NNs6VpHES0C9F7r8mAeLMG/lgdpMI/LCyyxCP7jfEP2g
+hg9hq/qpJpOXqwtoR32DPYLTHEpmLYTK61y1j7QioSxIOlzizUMSk8ugB3KuBH/
Yr+UGhVDFXzu+JEx8oHsNxrpSxyUN4Pg7IH/Oh6qtReg9lndv+Hk+XrbrjZVxMrY
gTPrXHgk3JC/ET35CV4i440VDdi8k5nevSBiNzTjHodogO08ytjd236pLoHSiBHo
qv4BNowDzm5e7R/ogxMqJrLQB2Ks2lw58r70mMl1y6rNAgMBAAEwDQYJKoZIhvcN
AQELBQADggEBABvQJOI9OuJj5l9IMudkAXVuBI+nm4w01OhpWefYhTq4DItJAtzJ
JnN8y/06mAGV3IbewlEcNx+fERbdvBfaH+n36Ksx+BWRcexasrbU4dJeJruGBv9D
gZXj3V3gPrztsCp3GtcMac7OKx3hJGCZWHaTP7WRxS4hdeMeaQxo5xTmUQJ4XnD1
/MKGB/cRwEEIpaAaYBVL24y9LdXHvG80g4sCGZccRECieO8nkLE+Zlnj66TNntOl
IU86VqSAqtR9n1fkX8rVTUxXkQT+5QyYeNXu+kswtGpGotGgVCoJw+SoBB9QRssN
6ZOkZ3KUnDT8hSwgJ82PlqwyQGzCINXWKnA=
-----END CERTIFICATE-----
)";

/* these keys were create using two shell scripts:
 * one to create my own CA
 * CA_key_and_cert.sh:
#!/bin/sh

name=moritzCA

check_not_exist() {
    if [ -e $1 ]
    then
        echo "$1 already exists." >&2
        exit 1
    fi
}

key=${name}.key
crt=${name}.crt

check_not_exist $key
check_not_exist $crt

echo "creating the key for the CA"
openssl genrsa -aes256 \
    -out $key \
    2048

echo "creating a self-signed certificate from the key"
openssl req \
    -out $crt \
    -new \
    -key $key \
    -x509 \
    -days 36500 \
    -subj "/CN=moritz.ca"
echo "Key and Certificate generation done for $name."
echo "CA Key file:    $key"
echo "CA Certificate: $crt"

 * and the second one for a service
 * service_cert_from_CA.sh:
#!/bin/sh

name=moritz
ca=moritzCA

check_exist() {
    if [ ! -e $1 ]
    then
        echo "$1 not found." >&2
        exit 1
    fi
}

check_not_exist() {
    if [ -e $1 ]
    then
        echo "$1 already exists." >&2
        exit 1
    fi
}

key=${name}.key
csr=${name}.csr
crt=${name}.crt

check_exist $ca.key
check_exist $ca.crt

check_not_exist $key
check_not_exist $csr
check_not_exist $crt

mkdir -p archive || exit 1

servicename="moritz-service"

echo creating the key
openssl genrsa \
    -out $key \
    2048 || exit 1

echo creating a certificate signing request
openssl req \
    -out $csr \
    -new \
    -key $key \
    -subj "/CN=${servicename}" || exit 1

echo signing the request using the CA key
openssl x509 \
    -in $csr \
    -out $crt \
    -days 36500 \
    -req \
    -CA $ca.crt \
    -CAkey $ca.key \
    -CAcreateserial || exit 1

echo archiving certificate
serial=$(openssl x509 -in $crt -serial -noout)
serial=${serial#serial=}
archivename=$(date '+%F_%H-%M-%S')-${serial}-$crt
cp $crt archive/$archivename

echo the request is no longer needed
rm $csr

ecoh "Key and Certificate generation done for $name."
echo "Key file:       $key"
echo "Certificate:    $crt"
echo "Serial number:  $serial"
 */

using grpc::Server;
using grpc::ServerBuilder;
using grpc::ServerContext;
using grpc::Status;
using helloworld::Greeter;
using helloworld::HelloReply;
using helloworld::HelloRequest;

ABSL_FLAG(uint16_t, port, 50051, "Server port for the service");

// Logic and data behind the server's behavior.
class GreeterServiceImpl final : public Greeter::Service {
  Status SayHello(ServerContext* context, const HelloRequest* request,
                  HelloReply* reply) override {
    std::cout << "msg from: " << request->name() << std::endl;
    std::string prefix("Hello ");
    reply->set_message(prefix + request->name());
    return Status::OK;
  }
};

static auto server_cred() {
#ifndef DISABLE_TLS
    auto server_cred_options = grpc::SslServerCredentialsOptions();
    server_cred_options.pem_root_certs = ROOT_CERT;
    server_cred_options.pem_key_cert_pairs.push_back(
            grpc::SslServerCredentialsOptions::PemKeyCertPair{SERV_KEY,
                                                              SERV_CERT});
    return grpc::SslServerCredentials(server_cred_options);
#else
    return grpc::InsecureServerCredentials();
#endif
}

int main(int argc, char** argv) {
  absl::ParseCommandLine(argc, argv);
  uint16_t port = absl::GetFlag(FLAGS_port);
  std::string server_address = absl::StrFormat("<IP_ADDRESS>:%d", port);
  GreeterServiceImpl service;

  grpc::EnableDefaultHealthCheckService(true);
  grpc::reflection::InitProtoReflectionServerBuilderPlugin();
  ServerBuilder builder;

  builder.AddListeningPort(server_address, server_cred());

  builder.RegisterService(&service);

  std::unique_ptr<Server> server(builder.BuildAndStart());
  std::cout << "Server listening on " << server_address << std::endl;

  server->Wait();
  return 0;
}

A script, that shows the steps to reproduce the issue:
run.sh
#!/bin/bash

MY_INSTALL_DIR=~/github/grpc_install
export LD_LIBRARY_PATH=$MY_INSTALL_DIR/lib

echo 'start server'
./greeter_server &
spid=$!

echo 'simulate network outage for a few seconds'
sudo iptables -I INPUT -p tcp --dport 50051 -j DROP

echo 'start client, it will retry again and again'
# --target $LAN_IP:$PORT is important
# it seems that blocking traffic with iptables does not work for localhost
./greeter_client --target '<IP_ADDRESS>:50051' &
cpid=$!

sleep 10
echo ''
echo '>>> network outage is over <<<'
echo ''
sudo iptables -D INPUT -p tcp --dport 50051 -j DROP

sleep 60
kill $cpid
echo 'the client did not manage a connection'
echo 'but if we try with a new connection now, it works'
./greeter_client --target '<IP_ADDRESS>:50051'

kill $spid
wait

What did you expect to see?
I expected the client to at some point notice that the connection is back, establish als TLS connection and allow RPC calls.
What did you see instead?
The client never recovers and is unable to make RPC calls until the Stub and Channel are closed and reopened.
Here is an example output for the run.sh script above
start server
simulate network outage for a few seconds
start client, it will retry again and again
Server listening on <IP_ADDRESS>:50051
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown

>>> network outage is over <<<

ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Failed to connect to remote host: FD Shutdown
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
ERR: 14: failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:50051: Handshake read failed
the client did not manage a connection
but if we try with a new connection now, it works
msg from: moritz
OK: Hello moritz
DONE

Anything else we should know about your project / environment?
I noticed this issue when a script that tests our server before deployment did not manage to connect to the server even with 50 retries. The connection to the datacenter was gone for a few seconds, but the gRPC channel never seemed to recover (until closed and reopened).
What I noticed, trying to reproduce the issue with the helloworld examples:

The issue does not occur with insecure connections.
Setting grpc.min_reconnect_backoff_ms and grpc.max_reconnect_backoff_ms to the same values is a precondition (I tried1000, 2000, and 4000 ms). If min and max differ, the connection can recover from the outage. (Edited: this used to say grpc.min_reconnect_backoff_ms twice)
The network traffic must be blocked for the very first request. If a previous RPC call was successful the connection can recover from the outage as well.

Is there anything else you need me to provide or test or specify?

Seems like you have same issue as me #33423.

Yeah, that looks like the same issue.
I have retried my example with different values for min_/max_reconnect_backoff_ms
at 9s timeout I did not see the connection recover,
at 10s timeout it took about two minutes,
at 11s timeout the connection recovered within a minute.
at 12s timeout it took less than half a minute.

I do not get why you are setting GRPC_ARG_MIN_RECONNECT_BACKOFF_MS. That just reduces the amount of time, the connection has for connect to succeed. If you just want to limit the backoff, simply setting MAX_BACKOFF should be enough.

That being said, I understand the surprise as to why reducing GRPC_ARG_MIN_RECONNECT_BACKOFF_MS to below 5 seconds is causing an issue. This has to do with how the C++ sync API works with the underlying threading model. Currently, it uses something called backup pollers for polling fds in certain edge cases. Your scenario qualifies as one of these edge cases and the backup poller becomes responsible for polling the fd. The things is that this backup poller by default only polls every 5 seconds.
You wouldn't see this issue with the new and shiny async callback API that we recommend using. (Verified your example on callback API and it doesn't have the same issue. Even with the sync API, there would be no issue if you do not reduce GRPC_ARG_MIN_RECONNECT_BACKOFF_MS)

does the latest released version fix this problem?


Review GLITCH test

The expectation is that changes of +/- 1 PI code should never cause a glitch in the PI output.  I think the current GLITCH test only checks for glitches in steady-state, so this needs to be updated.

I updated the test to do this, and found some glitches, so I'm re-assigning to @sjkim85.  To reproduce the issue, check out the glitch_tests branch and run pytest tests/new_tests/GLITCH -s.  Two different kinds of errors are seen:

True glitches (i.e., very short pulses and multiple clock edges).  These only occur at a few specific code transitions, like 496 -> 495 and 240 -> 239.
Low-resolution issues, where certain code transitions cause a much bigger change in phase than expected (~10ps instead of ~1ps).  An example would be the 255 -> 256 transition.  This kind of error occurs much more frequently on negative code transitions than positive code transitions.  Also, it appears to have a periodic behavior while codes are decreasing (i.e., every "N" codes there is a big step)

I was trying to see waveforms but I got this errors.
(I ran the pytest  in the glitch_tests branch as you suggested after I did "python make.py --view fpga)
[cid:35241fae-bd5f-43ea-b73d-0b9ec09f645b]

From: Steven Herbst<EMAIL_ADDRESS>Sent: Thursday, April 30, 2020 6:38 PM
To: StanfordVLSI/dragonphy2<EMAIL_ADDRESS>Cc: Sung-Jin Kim<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [StanfordVLSI/dragonphy2] Review GLITCH test (#21)
I updated the test to do this, and found some glitches, so I'm re-assigning to @sjkim85https://github.com/sjkim85. To reproduce the issue, check out the glitch_tests branch and run pytest tests/new_tests/GLITCH -s. Two different kinds of errors are seen:

True glitches (i.e., very short pulses and multiple clock edges). These only occur at a few specific code transitions, like 496 -> 495 and 240 -> 239.
Low-resolution issues, where certain code transitions cause a much bigger change in phase than expected (~10ps instead of ~1ps). An example would be the 255 -> 256 transition. This kind of error occurs much more frequently on negative code transitions than positive code transitions. Also, it appears to have a periodic behavior while codes are decreasing (i.e., every "N" codes there is a big step)

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/StanfordVLSI/dragonphy2/issues/21#issuecomment-622207136, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGWDJIU4PQATBASLOJCPMBTRPIRZVANCNFSM4MVCNUTA.

You can send me a Slack message or email with the error message and we can debug from there.  In general, I suggest re-running pip install -e . in the top-level directory to reinstall DragonPHY when you see errors, since there may be new package dependencies that were added.  Also, you'll need to switch to the pwl_cos branch on DaVE since there is an open pull request.  When in doubt, the definitive install steps can always be found in the regress.sh script.

Note: while @sjkim85 is debugging this, I marked the GLITCH test "work in progress".  To run the GLITCH test, add --runwip to the normal arguments you pass to pytest (otherwise the test will be skipped).  Then, as a condition for resolving this issue, we need to remove the "work in progress" marker from the test.

@sjkim85 Thanks for all of your work on this issue.  I noticed that it's still marked as "work-in-progress", meaning that the GLITCH test is not being run in the regression.  Could you update this in the next PR?
This can be done by changing pytest.mark.wip in test_glitch.py to:
@pytest.mark.parametrize((), [pytest.param(marks=pytest.mark.slow) if SIMULATOR=='vivado' else ()])

Should just be a one line change but it could be more involved if it turns out the that GLITCH test is not passing on the regression server.

Sure.
I will push this change with dragonphy_top (add mdll) soon.
Thanks
-Sung-Jin

From: Steven Herbst<EMAIL_ADDRESS>Sent: Thursday, May 7, 2020 11:19 AM
To: StanfordVLSI/dragonphy2<EMAIL_ADDRESS>Cc: Sung-Jin Kim<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [StanfordVLSI/dragonphy2] Review GLITCH test (#21)
@sjkim85https://github.com/sjkim85 Thanks for all of your work on this issue. I noticed that it's still marked as "work-in-progress", meaning that the GLITCH test is not being run in the regression. Could you update this in the next PR?
This can be done by changing pytest.mark.wip in test_glitch.py to:
@pytest.mark.parametrize((), [pytest.param(marks=pytest.mark.slow) if SIMULATOR=='vivado' else ()])
Should just be a one line change but it could be more involved if it turns out the that GLITCH test is not passing on the regression server.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/StanfordVLSI/dragonphy2/issues/21#issuecomment-625418842, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGWDJIUATEAB4XNXPGRW5ODRQL3UXANCNFSM4MVCNUTA.

Closing since this was resolved a few days ago in the PR mentioned about dragonphy_top/mdll


world map: Mouse tooltips should be constrained to world map view

When the world map icon mouse hover tooltip extends beyond the world map view it should become right-aligned to the edge of the world map view, similar to how both the Mouse tooltips/highlight plugin and the official osrs world map icon tooltips work.

Looking into this.


basic setup/rc-app initialize

This PR includes the initial setup of the News-Aggregation-App using the rc-apps cli.

 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.Umang Utkarsh seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

I @abhinavkrin . Please add the required tags
Thanks.


Travis passes despite gradle build failing

I tried to build 6f642513b3 using ./gradlew build but groovydoc failed:
Execution failed for task ':pact-jvm-consumer-groovy_2.12:groovydoc'.
> java.lang.NoClassDefFoundError: groovy/text/TemplateEngine

Travis CI did not catch this, probably because 'build' task is not run.

I'm trying to build 4dad256db42c7 and I get an error:
* Where:
Build file '/home/piotr-kubowicz/devel/collab/pact-jvm/pact-jvm-server/build.gradle' line: 14

* What went wrong:
A problem occurred evaluating project ':pact-jvm-server_2.12'.
> Could not resolve all files for configuration ':pact-jvm-server_2.12:compile'.
   > Could not find groovy-indy.jar (org.codehaus.groovy:groovy:2.5.3).
     Searched in the following locations:
         file:/home/piotr-kubowicz/.m2/repository/org/codehaus/groovy/groovy/2.5.3/groovy-2.5.3-indy.jar


Remove RenderSliverFillViewport since it has no widget

We seem to have deprecated the render object without leaving a widget in place to use it. We should just remove it.
History: https://github.com/flutter/flutter/pull/37024

cc @goderbauer @LongCatIsLooong

Yes, that sounds good.

(We may want to make sure https://github.com/flutter/flutter/issues/39060 is solved first.)

@Hixie I believe the PR was reverted, which means RenderSliverFillViewport is not deprecated anymore. Right?

RenderSliverFillViewport is not currently marked deprecated. It seems weird that we don't have a widget for it though.

It also appears to have a widget SliverFillViewport, which uses the RenderObject internally. I am going to close this one.

My first attempt got reverted because of a benchmark regressed: https://github.com/flutter/flutter/issues/39060. Had to take a different approach that keeps using RenderSliverFillViewport


Add getPrivate/setPrivate methods

Addressing this: https://github.com/nodejs/nan/issues/587
Of note, I set this to use get/setPrivate on module version 49+, although this should work with older versions as well (I know it does not work in with modules <= 46, but is already marked deprecated in modules 48, I have not tested against 47).
I've tried to maintain coding standards, although to be totally frank I'm completely unsure that i put this in the correct place in the code at all, and that I handled it properly (some functions seem to be redeclared entirely, while others have a single declaration with different contents).
Regarding testing, I've not added anything to the test suites, but I've been able to build and use nodegit using this change on node 0.12.15, 4.4.7, 6.2.2, 6.3.1, and electron 1.2.8, and 1.3.3, all succesfully (note that building nodegit for node 6.3 wont work on windows for separate reasons). I'd be happy to try to add something to the tests if this is a welcome change.
I've got a commit of nodegit working this way here: https://github.com/nodegit/nodegit/tree/nan-test
I assume some documentation would also need to be added for this.

I think we can use NODE_MODULE_VERSION >= NODE_6_0_MODULE_VERSION here, so that will be changed already for node 6.x which is running v8 v5.0 (it was deprecated in v8 v4.9). node 5.x was v8 v4.6-something.

So, is this a desirable change for v6?

I believe this should be changed for node v6 and all the future versions.

Now that Node 7 is out using 5.4.500.36 and this can be tested, what do I need to do to get this in motion?

I also need this to add Node 7 support to one of my modules.

Question:
Is it necessary to include object->HasPrivate in the implementation for GetPrivate? It seems like object->GetPrivate already returns a maybe.

I'm lacking unit tests for the new functionality, that's about it.

I assume some documentation would also need to be added for this.

@maxkorp, could you look into that too?

I crave this so bad.

I believe this issue can be closed, because of https://github.com/nodejs/nan/pull/630

Bah, I completely dropped the ball on this one. Sorry about that guys, and thanks Koopa for following through on the tests.


Can we add delete_objects for Object?

As batch delete is supported, we can use batch().remove(paths) to delete objects.
I guess Object is aim to mock object storage products for public cloud, and many object store provide delete_objects interface.  I wonder if it is necessary to add delete_objects for Object although it behavior is  the same as batch().remove(paths).

As described in https://docs.rs/opendal/latest/opendal/docs/concepts/index.html, Object is the smallest unit representing an object (including file, dir and so on). All operations on object are performed on the object itself.
For example:
op.object("abc").read().await?
op.object("def/").scan().await?

The behavior looks clear and correct, right? But if we add delete_objects to object, the semantics are confused:
// What's the relation between `abc` and input `def`?
op.object("abc").delete_objects(vec!["def".to_string()]).await?

So it is not a good idea for me to add delete_objects on object.

Make sense to me.

can you share more details about this question?

For normal object store(oss/cos), the architecture is very flat. I mean there are no concept of directory, there can be infinitely many objects under a bucket. But for other file store like hdfs, he smallest unit is the leaf node of the directory tree.
So I just mistakenly thought that object stands for object storage😅 Never mind~

Hi, @wcy-fdu, I have provided the new internal documents for OpenDAL: https://opendal.databend.rs/opendal/docs/internals/index.html
Can you take a look and give me some feedback?

Hi, @wcy-fdu, I have provided the new internal documents for OpenDAL: https://opendal.databend.rs/opendal/docs/internals/index.html
Can you take a look and give me some feedback?

Very clear👍


Allow Tempfile, File, Pathname for some IO methods

Motivation
These functions can take more types of arguments than just a simple string, this adds in a few other classes (Tempfile, File, and Pathname) that I know work as a first argument.
See also a previous issue I opened: https://github.com/sorbet/sorbet/issues/1783
Test plan
Not sure how I'd add tests for this. Happy to do so if someone points me in the right direction.

Sorry for high latency on review.


Seeking is never be fired when using YouTube

I made a fiddle for it.
https://jsfiddle.net/7rdcmywq/1/

I confirm that Seeking is not working, nor on FF, Chrome, Safari on OSX 10.11.6

Also checked with Vimeo, seeked and seeking events are not working.


HEVC log file not created correctly during CARLA simulation.

Describe the bug
When I run a simulation on CARLA, I get the log video files in hevc.mkv format. When I try to open the video with VLC, only a quick visualization of the video is shown (less than half a second). Then the video stops.
How to reproduce or log data
It happens every time I run a simulation and a video/log files are created. To do this I followed the installation instructions.
Expected behavior
A creation of a correct HEVC file.
Additional context
I tried to find the problem by checking the VLC log file. It says "mkv error: cannot use the segment". Then I tried to extract the frames of the video using ffmpeg. I only could get 2 frames. However, the video file that I used is +40 Mb, which corresponds to around 20 seconds of simulation.
The bz2 log file seems to be ok.
Operating system: Ubuntu 20.04

HVECs are currently encoded using OMX which I don't think has a PC version. So on the computer we store the logs as raw.
If you want to implement this you need another implementation of VideoEoncoder in selfdrive/loggerd powered by something like ffmpeg and use that on the PC.

Would implementing libde265 be a viable solution?

Since it's for development only I don't attach too much value to the exact backend. As long as it's not too much code and nicely abstracted in a VideoEncoder class it's fine.

Closing this as there's nothing really to track here. This is more of a nice to have.


Rule-Breaking "Core" Events

I was going through the code and noticed in the core package that you have these case-specific events defined
According to the standards, shouldn't these events be kept outside of core and within their own use-case-based modules?

Thanks for observation. Those are old events I've used with Node event emitter, but those are not used anymore, I replaced them with Domain Events. i'm gonna delete em for now.
Answering your question, where to keep events depends on your handling strategy:

if you have orchestrator for events in a single place, you can store those events in a module's folder. For example domain-event-handlers module - this is an orchestrator. It handles all events that happen in domain and decides what to do.
if you use choreography (handling events from anywhere, not from one place) then store those events in a separate folder to avoid modules depending on each other's internals (this creates coupling). For example, if user sends 'user-created' event and  you want to handle it from multiple places:  from Wallet module, and from Email module, and other places etc.

Orchestration vs. Choreography
It's simpler for Domain Events Pattern since those events are in-process only, so either approach can be ok. I chose orchestrating to have one place I can see  all the domain events that are handled in one place.
If using just Node event emitter it's more convenient to store those event names in one place and use choreography. It will be easier later when you need to separate modules in a microservice since you'll have to share those event names as a package/git submodule.
I hope this answers your question.


Window and taskbar icon is not set correctly in CI when building for Windows

More info is needed. Potentially related to the release of electron-builder v24.9.1.

Consider including a known-good packages.lock file that can be overwritten.


Feature/inference api

From one of our client calls, we found a demand to use model deployment in automatic data pipelines using the studio python api client. In this PR, we built the api client side code for model deployment.
To test, you need to need to pull the branch in this PR from the backend code.

can you fix mypy checks?

Failing in dev currently:
cleanlab_studio.errors.APIError: Length of values (2) does not match length of index (100)

Can you let me know which model and test input you tested with?

Looked at the input file here and it seems like there is a formatting error in the header. Also, I thought we weren;t allowing users to put headers in the input files. I'll include that in the python docstring as well so that users will be warned ahead of time.


Add rohitmanthena's file

created a branch, created a file and made a commit, and opened a pull request

This is rohit


enable ipvlan for hybrid real device & virtual device tests

please update doc to fix the accidental removal.
please add interface selection in topology for ipvlan eth0 interface in case multiple interface(wlan0, etho) both have ip, or you can at default choose eth0 when both wlan0 and ehto have ip


fix preview image

Category

[x] Content fix
[ ] New article

Contents of the Pull Request
If we take a look at the published article you can see that the top of the image falls away. This is where I put an important piece that gives some insight on the article.

In this PR I have added some margin to the image to place the content more centrally. 😄

always good to double check :-) Thanks again!


Prevent default

Hello, when I try to click on another page I am being redirected to home because of href='#'. And I have no access to the event object on the clickHandler. How can I call preventDefault on this?

Hello @Fleeck . Thanks for feedback. I use href='#' to match the style of bootstrap4. But i just like you mentioned, it not appropriate. I have add new pr to handle that.

Also about the clickHandler. The parameter of the clickHandler is the number of selected page. I think you don't need preventDefault after i remove href='#'. But if there is any problems, please feel free to ask. Thanks.

Please try new version 0.7.0 to see if it solves you problems. Thank you very much.

Thanks!

@Fleeck Thanks i will take it into consideration.

@Fleeck Please try 0.7.1. I just set it as the default style of a in this component. Thanks.

Thanks, works as expected.


Made no-destroy SSH command stop saving host keys.

Modified the disco_bake output to include the necessary option to avoid saving the IP address and host key when connecting to a host baked with the --no-destroy option.

Replaces #96 which was getting annoying.

👍


chore(deps): update dependency @types/react to v16.9.55

This PR contains the following updates:

Package
Type
Update
Change

@types/react
devDependencies
patch
16.9.54 -> 16.9.55

Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you modify the PR title to begin with "rebase!".
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

Available now for Enterprise: Renovate Pro with real-time webhook handling and priority job queue.

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

v6.1.18
GitHub release

Your semantic-release bot :package::rocket:


Installing fast-eslint causes crash on opening js file

Opening any Javascript file is now causing an issue. Everything was working until I upgraded to the current fast-eslint version.
My .eslintrc:
{
  "parser": "babel-eslint",

  "env": {
      "browser": true,
      "node": true,
      "es6": true
  },

  "rules": {
    // needed for eslint
    "strict": 0,

    // react stuff
    "react/jsx-boolean-value": 1,
    "react/jsx-no-undef": 2,
    "react/jsx-uses-react": 2,
    "react/jsx-uses-vars": 1,
    "react/no-did-mount-set-state": 1,
    "react/no-did-update-set-state": 1,
    "react/no-unknown-property": 1,
    "react/react-in-jsx-scope": 1,
    "react/self-closing-comp": 1,
    "react/wrap-multilines": 1
  },

  "ecmaFeatures": {
        "jsx": true,
        "modules": true
  },

  "plugins": [
    "react"
  ]
}

Hi @slimjim777, I couldn't reproduce your error.
What is the eslint / atom error message ?

@slimjim777, ok I released a fix https://github.com/Adezandee/fast-eslint/releases/tag/v2.2.1 locking eslint to version 2.2.x. This should solve your issue

I did have older versions installed (eslint 1.10.3, eslint-plugin-react 3.15.0) and uninstalling them from the project and allowing the package to manage the dependencies fixed the issue.
Thanks.


Can't delete old known_hosts

My host changed, and now ConnectBot won't let me connect.  The connection is immediately dropped -- presumably since the saved key in ConnectBot doesn't match the server end.
There is no way to delete the saved key, or overwrite it with the new one.

I need it too. I changed my host several days ago, now I can't connect to it :(
I won't use root on my phone.

I am having the same issue right now, configuration seems to persist so reinstalling doesn't work. Couldn't find the .ssh folder in my android home as well.


Ability to find the runner version

The version of runner cannot be checked from any command, unless we check install location.
gauge --version java
would tell the latest gauge-java version.

Another idea:
Have gauge --version or gauge -v print out all plugin versions along with gauge version.
This will also help the user know what plugins are installed and which versions.


Generating entry classes with PHP

Hi there,
I stumbled upon this blog post https://contentful.com/developers/docs/php/tutorials/generating-entry-classes-based-on-content-types-management-sdk/
I was following along the instructions and installed
composer require contentful/contentful-management
composer require --dev nikic/php-parser

However I receive the following error when running
php vendor/bin/contentful-management generate:entry-classes --access-token=$ACCESS_TOKEN --space-id=$SPACE_ID --environment-id=$ENVIRONMENT_ID --dir=$OUTPUT_DIR --namespace="App\\Entity"

Error
Could not open input file: vendor/bin/contentful-management
I was just wondering if it's still possible to generate Entities with this library?
Any suggestions would be much appreciated!
Thanks,
Rob

Hi @robmellett ,
you're right, it seems composer no longer correctly installs the binary. Code generation itself should still be possible; I'll look into why the install is broken. You can manually add the file, though: https://github.com/contentful/contentful-management.php/blob/master/bin/contentful-management
I'll ping you once I have a solution ready & released :)

Thanks @Sebb767!

@robmellett did you ever get code generation to work?  I tried the recommendation above but still do not get any files generated and no errors thrown.

Try php vendor/contentful/contentful-management/bin/contentful-management

Hi @robmellett , with v4.1.0 code generation should be fixed. Can you try again?


portable_endian.hpp includes windows.h - which tends to cause several issues in including files

Including windows.h has the tendency to break code, e.g.:

https://stackoverflow.com/questions/11544073/how-do-i-deal-with-the-max-macro-in-windows-h-colliding-with-max-in-std

and often also in not easily addressable ways:

https://developercommunity.visualstudio.com/t/error-c2872-byte-ambiguous-symbol/93889

Trying to include laz-perf in PotreeConverter is a pretty difficult experience due to that. Would you accept a PR that moves the #   include <winsock2.h> from portable_endian.hpp into a separate portable_endian.cpp file? As long as the include is in a cpp file, it won't cause issues.
Right now I'm having succes after replacing
 #       define htobe16 htons
 #       define htole16(x) (x)
 #       define be16toh ntohs
 #       define le16toh(x) (x)

 #       define htobe32 htonl
 #       define htole32(x) (x)
 #       define be32toh ntohl
 #       define le32toh(x) (x)

 #       define htobe64 htonll
 #       define htole64(x) (x)
 #       define be64toh ntohll
 #       define le64toh(x) (x)

with
inline uint16_t htobe16(uint16_t value);
inline uint16_t htole16(uint16_t value) {return value;};
inline uint16_t be16toh(uint16_t value);
inline uint16_t le16toh(uint16_t value) {return value;};

inline uint32_t htobe32(uint32_t value);
inline uint32_t htole32(uint32_t value) {return value;};
inline uint32_t be32toh(uint32_t value);
inline uint32_t le32toh(uint32_t value) {return value;};

inline uint64_t htobe64(uint64_t value);
inline uint64_t htole64(uint64_t value) {return value;};
inline uint64_t be64toh(uint64_t value);
inline uint64_t le64toh(uint64_t value) {return value;};

And then implementing the functions that rely on the windows api in portable_endian.cpp as follows:
inline uint16_t htobe16(uint16_t value){
	return htons(value);
}

inline uint16_t be16toh(uint16_t value){
	return ntohs(value);
}

inline uint32_t htobe32(uint32_t value){
	return htonl(value);
}

inline uint32_t be32toh(uint32_t value){
	return ntohl(value);
}

inline uint64_t htobe64(uint64_t value){
	return htonll(value);
}

inline uint64_t be64toh(uint64_t value){
	return ntohll(value);
}

What are you including in your code that is bringing in portable_endian? I don't see where this would be happening.
More generally speaking, if you're running on Windows, it seems reasonable for your code to work with Windows.h. The issues you linked have pretty simple workarounds, though MS should have been hung long ago for #define'ing min and max.

I've tried following the https://github.com/hobu/laz-perf/blob/master/cpp/examples/point10.cpp example, for which I've also needed to include streams.hpp. Not sure why point10.cpp doesn't need that include, but I can't use MemoryStream without including it.
On the other hand, I might not actually need MemoryStream and streams.hpp since I probably should follow the readlaz.cpp example.

More generally speaking, if you're running on Windows, it seems reasonable for your code to work with Windows.h.

I've had so many problems with windows.h that I've never been able to solve so that I started using it only in cpp files. The min/max error isn't really the problem, it's the "byte = ambiguous" that I wasn't able to solve even with the suggested fixes in the link above.

Were you able to make progress?

Have to focus on another projects for the next couple of days, but will let you know about progress.

Closed, because I've just been using it wrong.


How do I make the postprocessor (ffmpeg) output verbose info to the tty?

Please help, I'd really like to do this

Duplicate of #1304.


need to make object of footer links

head to minimalistapp/src/constants.js and add an object that has the format
export const links = {
    linkname: 'link',
}

for every option in footer of home page

Hi @gitmank, I would like to work on this issue. For that, I need to know that where I can find the links for all the footer elements.

heyy @ankitk26 ,
thanks for your interest!
I actually meant to assign this issue to a friend who is just getting started. You seem to be an experienced web dev. Would you like to work on some other challenging issues? I could open new ones too. Let me know.

Okay no problem. I can try to work on other issues.


Error issue

Dear Mathigatti,
I feel your idea cool. I try to make it work since 2 days but I donnot succeed yet.
Here the error message on the command prompt on Win 10:
Traceback (most recent call last):
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\table_example.py", line 2, in
from ocr import Ocr
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\ocr.py", line 1, in
from googleVisionApi import GoogleVisionApi
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\googleVisionApi.py", line 5, in
from google.cloud.vision import types
ImportError: cannot import name 'types' from 'google.cloud.vision' (C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_init_.py)
I have followed the steps for google credentials. I have the credential.json. I even tried by setting manally the env variable but the same error appears. Any thought?
Thank you,
Eddy

Seems like it doesn't work for the latest vision api version, you should install google-cloud-vision==1.0.0
Try something like: pip install -U google-cloud-vision==1.0.0

Seems like it doesn't work for the latest vision api version, you should install google-cloud-vision==1.0.0
Try something like: pip install -U google-cloud-vision==1.0.0

Top! I see. Now I am dealing with Google Auth.
RUNNING ON sample/input/sample.png
Traceback (most recent call last):
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\table_example.py", line 46, in
main(imagePath)
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\table_example.py", line 13, in main
ocr = Ocr()
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\ocr.py", line 16, in init
self.googleApi = GoogleVisionApi()
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\googleVisionApi.py", line 11, in init
self.client = vision.ImageAnnotatorClient()
File "C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_v1\gapic\image_annotator_client.py", line 164, in init
self.transport = image_annotator_grpc_transport.ImageAnnotatorGrpcTransport(
File "C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_v1\gapic\transports\image_annotator_grpc_transport.py", line 65, in init
channel = self.create_channel(
File "C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_v1\gapic\transports\image_annotator_grpc_transport.py", line 108, in create_channel
return google.api_core.grpc_helpers.create_channel(
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\api_core\grpc_helpers.py", line 275, in create_channel
composite_credentials = _create_composite_credentials(
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\api_core\grpc_helpers.py", line 217, in _create_composite_credentials
credentials, _ = google.auth.default(scopes=scopes)
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\auth_default.py", line 340, in default
credentials, project_id = checker()
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\auth_default.py", line 185, in _get_explicit_environ_credentials
credentials, project_id = load_credentials_from_file(
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\auth_default.py", line 96, in load_credentials_from_file
raise exceptions.DefaultCredentialsError(
google.auth.exceptions.DefaultCredentialsError: File credential.json was not found.
I followed all the steps of Installing the client library and Setting up authentication mentioned by cloud google.com.
I created the Json and dowloaded it. I put it in the /src folder and renamed it to credential.json. Checked it, everything is inside the file. Might be the set up auth but I can't find what. I have seen that people do set the auth path on the code but I think it can be done without a hard put in code.
I appriciate your help. Thank you mathigatti

Top! I see. Now I am dealing with Google Auth.
RUNNING ON sample/input/sample.png
Traceback (most recent call last):
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\table_example.py", line 46, in
main(imagePath)
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\table_example.py", line 13, in main
ocr = Ocr()
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\ocr.py", line 16, in init
self.googleApi = GoogleVisionApi()
File "C:\Users*\AppData\Local\Programs\Python\Python39\img2txt-master\src\googleVisionApi.py", line 11, in init
self.client = vision.ImageAnnotatorClient()
File "C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_v1\gapic\image_annotator_client.py", line 164, in init
self.transport = image_annotator_grpc_transport.ImageAnnotatorGrpcTransport(
File "C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_v1\gapic\transports\image_annotator_grpc_transport.py", line 65, in init
channel = self.create_channel(
File "C:\Users*\AppData\Local\Programs\Python\Python39\lib\site-packages\google\cloud\vision_v1\gapic\transports\image_annotator_grpc_transport.py", line 108, in create_channel
return google.api_core.grpc_helpers.create_channel(
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\api_core\grpc_helpers.py", line 275, in create_channel
composite_credentials = _create_composite_credentials(
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\api_core\grpc_helpers.py", line 217, in _create_composite_credentials
credentials, _ = google.auth.default(scopes=scopes)
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\auth_default.py", line 340, in default
credentials, project_id = checker()
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\auth_default.py", line 185, in _get_explicit_environ_credentials
credentials, project_id = load_credentials_from_file(
File "C:\Users\Magicbook\AppData\Local\Programs\Python\Python39\lib\site-packages\google\auth_default.py", line 96, in load_credentials_from_file
raise exceptions.DefaultCredentialsError(
google.auth.exceptions.DefaultCredentialsError: File credential.json was not found.
I followed all the steps of Installing the client library and Setting up authentication mentioned by cloud google.com.
I created the Json and dowloaded it. I put it in the /src folder and renamed it to credential.json. Checked it, everything is inside the file. Might be the set up auth but I can't find what. I have seen that people do set the auth path on the code but I think it can be done without a hard put in code.
I appriciate your help. Thank you mathigatti

Try moving the credential.json file to the root folder of the repository

Try moving the credential.json file to the root folder of the repository

Yes, I have seen that you changed paths aswell. No error displayed, only a permission denied, I am redirected to enable billing on project to run through it so I guess that it works! Thank you. I have a question then. Is the running of your program in the free Tier of Google Cloud or will I be charged according to my use?
Sincerely,

Yes, I have seen that you changed paths aswell. No error displayed, only a permission denied, I am redirected to enable billing on project to run through it so I guess that it works! Thank you. I have a question then. Is the running of your program in the free Tier of Google Cloud or will I be charged according to my use?
Sincerely,

If you run it only for a few thousand images per month then it's free, you can check the API vision pricing details.

If you run it only for a few thousand images per month then it's free, you can check the API vision pricing details.

Cool, that's great. Thank you for your help. Have a beautiful day.

Cool, that's great. Thank you for your help. Have a beautiful day.


Mod:

🛸 Item modifier report
Current item modifier
Attacks Exerted by Seismic Cry deal 35% increased Damage
Expected item modifier
The enchant is not recognized at all when evaluating an item that has it.
Copied item data

Item Class: Helmets
Rarity: Rare
Gale Ward
Fencer Helm
--------
Quality: +20% (augmented)
Armour: 140 (augmented)
Evasion Rating: 140 (augmented)
--------
Requirements:
Level: 52
Str: 49
Dex: 49
--------
Sockets: G B
--------
Item Level: 66
--------
Attacks Exerted by Seismic Cry deal 35% increased Damage (enchant)
--------
18% increased Global Accuracy Rating
+88 to maximum Life
Regenerate 11.5 Life per second
+24% to Cold Resistance
15% increased Light Radius

Screenshots

🌍  Your Environment

Version: 0.7.14
PoE: 3.14.2

Fixed in a86a18b by trimming stat descriptions to avoid trailing spaces, which cause some stats to not be picked up properly.


Delete .github/ISSUE_TEMPLATE directory

:x: Build PIX-BACEN-SDK-dotnet 1.1.238 failed (commit https://github.com/guibranco/PIX-BACEN-SDK-dotnet/commit/229b218178 by @guibranco)

:white_check_mark: Build PIX-BACEN-SDK-dotnet 1.1.243 completed (commit https://github.com/guibranco/PIX-BACEN-SDK-dotnet/commit/69a976ce11 by @guibranco)


[Bug] [Resource] Resource authorization is disabled

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
Resource authorization is disabled
What you expected to happen
Normal
How to reproduce
Resource authorization
Anything else
No
Version
dev
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Please confirm if this issue exists in 31x and 30x.


gbrt_minimize and forest_minimize documentation

I am reading through skopt's docs and it seems like there might be a typo in the description for both gbrt_minimize and forest_minimize.
gbrt_minimize:
Gradient boosted regression trees are used to model the (very) expensive to evaluate function func.

forest_minimize:
A tree based regression model is used to model the expensive to evaluate function func.

What is the above supposed to say?

The descriptions could be less cryptic. Is there also a typo in them?
The basic idea behind all the methods in scikit-optimize is to use a surrogate model and fit it to the responses from the function that we are trying to minimise. There are many different kinds of models that can be used for this. In gbrt_minimize and forest_minimize we use gradient boosted trees and a random forest respectively to do that job. Maybe together we can work out a better one sentence summary and create a PR?

@betatim Sounds good. What is "the expensive" referring to?

How about something like:
A tree based regression model is used to evaluate the objective function func. The model is improved by sequentially evaluating the expensive function at the next best point.
Perhaps remove 'expensive' from the first sentence since the second sentence also describes the function as expensive?

To me, it is not clear how exactly trees are built in forest_minimize and gbrt_minimize.  Do they build a tree for each dimension? Or each tree takes as input the whole dimension space?
I think that adding references could help the understanding of the methods, see https://github.com/scikit-optimize/scikit-optimize/issues/118


possible fix for a scenario that image proxy is not closed for code scanner correctly in some cases

I wonder in which cases neither of the callbacks is called though? It's either the onSuccess or the onFailure listener - how could there be a third state? lol

lol ur right


Feature: use yarn or some other package manager that supports lockfiles

or just don't write important tooling in JS since you end up pulling in the entire ecosystem and then need an entire dev team to keep up with the security updates... which is probably what happened to this project and is in all likelihood why it looks dead


Inspecting arguments with accessors

What is your issue?
I recently read about the suggested approach to extending xarray here: Extending xarray 2
We have a lot of functions on xarray datasets that are domain-specific enough to spatial mosaics that I think I want to start using these.
One issue I am seeing so far is that when I use the accessor in jupyter notebook, the arguments and docs are inspected and returned, which makes it nice and usable. However, within vscode, it is unable to inspect the args. The side effect is slower development and no more type checking, which isn’t ideal. This is also an issue with the rio accessor.
Am I missing something here? Has anyone noticed this and is there an existing fix? This must also be an issue with pandas custom accessors, too. Is there a way to more officially register accessors within my packages entry points?
For example
## inside notebooks
ds.sp.my_function() # I can inspect as usual
ds.rio.write_crs() # I can inspect as usual

## inside vscode
ds.sp.my_function() # I can not inspect the args or their types
ds.rio.write_crs() # I can not inspect the args or their types

I have seen sphinx-autosummary-accessors — sphinx-autosummary-accessors documentation 1, but that only seems relevant for doc generation.

Unfortunately I don't think this is possible since this kind of inspection is using static code analysis while jupyter Notebook can inspect dynamically.
In https://github.com/pydata/xarray/pull/7117
I tried to enable this for mypy.
But without any kind of plugin I doubt it is possible to tell static checkers about this.

Yeah, I was afraid of that lol. This must also be a pandas issue, too, since they recommend a similar way of extending pandas dataframes. I couldn't find a similar pandas issue/pr and was a bit surprised by that.
My temp solution is to use type narrowing:
def use_domain_specific_dataset(dset: xr.Dataset):
    if not isinstance(dset.ma, MyAccessor):
        raise ValueError
    # gets some type checking
    dset.sp.add_latlon_layers()

Seems to at least provide the basic sanity checks


Prepare for Tailwind 4.0

We can explore using a rust NIF to load in the classes on mix format, eliminating the generation step as well as the js loader script
If the above works, then that greatly simplifies getting custom classes, almost for free

It looks like the rust part only covers parsing.
All of the class resolution/ordering/outputting CSS seems to still happen in JS unless I'm mistaken.
In addition, it looks accessing the theme isn't going to be supported in 4.0, or a new API has to be uncovered
It may be more productive to reverse engineer the sort order instead


Update fs2-core to 3.2.2

Updates co.fs2:fs2-core from 3.1.6 to 3.2.2.
GitHub Release Notes - Changelog - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "co.fs2", artifactId = "fs2-core" } ]

labels: library-update, early-semver-minor, semver-spec-minor

@Mergifyio rebase


Add proofing for math operations inside variables' curly braces

I am using Pycharm CE + plugin v.0.6.7.
I would like the proofing tool to correctly parse mathematical operations inside curly braces of a variable, e.g.:
*** Variables ***
${var_1}    23

*** Test Cases ***
Plugin Test
    [Tags]  run
    ${var_1}=  Convert To Integer  ${var_1}
    ${var_2}=  Set Variable  ${var_1 + 1}
    ${var_3}=  Convert To String  ${var_1 + 1}

Now results in:

I can this growing quickly beyond my knowledge.
${var1 + 1}, sure as you point out
${1 + var1} ?
${var1 + var2} ?
Is there a general rule? or everything inside the ${} split by spaces is fair game at some kind of declaration?

Here goes the documentation for this case: http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#extended-variable-syntax
If it was up to me I would use something like
/keyword([ ]?(\+|\-|\*|\/)[ ]?(([\d]+\.?[\d]*)|(\.[\d]+))[ ]?)*/

Elucidation being here.
I have to mention, that strings with .method() work fine already:
${var_3}=  Convert To String  ${var_1.__abs__()}
I reckon plugin thinks its a case of extended assignment (next chapter in the same doc). I can't think of when this might be a bad thing, but I'm not that good with RF either.
Here are also some examples of appropriate syntax:
${var_2}=  Set Variable  ${var_1 +.1}
${var_2}=  Set Variable  ${var_1 +1.}
${var_2}=  Set Variable  ${var_1 +1.1}
${var_2}=  Set Variable  ${var_1+1}
${var_2}=  Set Variable  ${var_1 + 1}
${var_2}=  Set Variable  ${var_1 + 1 }  # trailing space
${var_2}=  Set Variable  ${var_1 + 1 - 1 / 1 * 1}
${var_2}=  Set Variable  ${var_1.method()}
${var_2}=  Set Variable  ${var_1.method() }  # trailing space
${var_2}=  Set Variable  ${var_1.method() + 1}
${var_2}=  Set Variable  ${var_1.method(arg1, arg2)}
${var_2}=  Set Variable  ${var_1.method1().method2()}

And some bad uses (will cause error):
${var_2}=  Set Variable  ${var_1 +.}
${var_2}=  Set Variable  ${var_1 +}
${var_2}=  Set Variable  ${var_1 + }  # trailing space

There is also a case of immediate trailing space after var:
${var_2}=  Set Variable  ${var_1 }  # trailing space
but I don't this it's worth adding to the plugin due to its utter uselessness.


cannot choose country when input whole country name

hi :) i found some bug and fix it.
browser : chrome
you can see this issue on your demo page(https://bluewatertracks.github.io/paper-countries/components/paper-countries/)

when you type 'china' and mouse over to china country

Closing issue cannot choose country when input whole country name #8.


_.try is incompatible with AWS SDK v3

Typescript 4.8.4
Radash 8.0.3-alpha.1
This may be related to #60
If I'm reading the documentation for _.try correctly, the following two code snippets should be (roughly) functionally identical
// try/catch
import { S3Client, GetObjectCommand, GetObjectCommandInput } from '@aws-sdk/client-s3';

const params = {
  Bucket: 'my-bucket',
  Key: 'my-key'
};

const s3client = new S3Client({});

let [res, err];
try {
  res = await s3client.send(new GetObjectCommand(params));
} catch (e) {
  err = e;
}

// _.try
import { S3Client, GetObjectCommand, GetObjectCommandInput } from '@aws-sdk/client-s3';

const params = {
  Bucket: 'my-bucket',
  Key: 'my-key'
};

const s3client = new S3Client({});

const [res, err] = _.try(s3client.send)(new GetObjectCommand(params));

However, with the latter construction, Typescript brings up the error: Expected 3 arguments, but got 1. ts(2554)
I tried the workaround listed in #60:
 const [err, res] = await _.try(async () => await s3client.send(new GetObjectCommand(params)))

But that produced the error Type '() => Promise<[Error, null] | [null, GetObjectCommandOutput]>' must have a '[Symbol.iterator]()' method that returns an iterator. ts(2488).
Any thoughts on how I could use _.try with AWS SDK v3?

On this last example, you need to call the function. try returns a function to be called.
const [err, res] = await _.try(async () => await s3client.send(new GetObjectCommand(params)))

this ^^^ becomes vvv
const [err, res] = await _.try(async () => await s3client.send(new GetObjectCommand(params)))()

That did it, paving the way for #125 ... :\


Error badges update

When update is available not show correct icon for badges updater.updater.

@pepeEL do you still have this entity in your HA? I'm on HA 0.87.1 and there is no updater entity in my HA.

Lost icon in app:

In web is ok

You can not implement all icons material ?


Extend JSON comparison to highlight differences

Currently an Assertion between the JSON in the response to a file in the repository will lead to a unsatisfying validation error if there is a difference.
It would great when the error is documented for the report, that there would be highlighting on the response JSON of the keys and values that are different.
* Assert jsonpath "$" = "!{file:json-resp/test.json}"
For JSON diff's there are a number of libaries to pick from. My expectation would be to get something like the following in the end:
Java: https://github.com/deblockt/json-diff

Should it generate a patch, like shown in the Readme of json-diff, that highlights expected and actual?

the patch is good, but only if the color coding is included

Color coding would be possible, but please in another issue.


Problem Building Examples

Hi, great library but I haven't been able to build the examples I keep getting this error on my macOS Sierra, clang, MacBook pro.
error: use of undeclared identifier
'box_nbh2d'
auto nbh = box_nbh2d<vuchar3, 3, 3>(img);
Any help would be great. Thanks!

Sorry for this. I fixed the examples in my last commit d07727bfaec5de8859941e1a81b73694f3f6f73c
I made the access to the neighborhood less verbose :
  pixel_wise(relative_access(img), out) | [] (auto n, auto& b) {
    vint3 sum = vint3::Zero();

    sum += n(0, -1).template cast<int>();
    sum += n(0, 0).template cast<int>();
    sum += n(0, 1).template cast<int>();

    b = (sum / 3).cast<unsigned char>();
  };

Thanks


feat(evm): CW-21016 update core depend for evm

Checklist:

README.md includes:

[ ] The details of signing data and transaction data, this includes parameters.
[ ] Official docs or white paper.
[ ] Website or api can query assets and broadcast transaction.

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

Task linked: CW-21016 [QA] manual and automation testing


[Bug]: Automatically set focus when adding a new row to a table widget

Is there an existing issue for this?

[X] I have searched the existing issues

Description
When adding a new row to a table, it would be useful if the focus was automatically set to the first editable field of the new row. This will avoid the need for the user to manually click on the input, providing a more intuitive user interface.
Steps To Reproduce
Create a table widget.
Connect to a datasource
Allow adding new rows
Click 'Add new Row'
Public Sample App
No response
Environment
Production
Severity
Low (Cosmetic UI issues)
Issue video log
No response
Version
Cloud

Hello @Nikhil-Nandagopal , I'm interested in picking up this issue.

@PrasadMadine sure, go ahead

Hi @rahulbarwal , Since the InlineCellEditor of PlainTextCell is re-rendering for every editable column of new added row the auto focus is being catched at the last cell rather than first cell.

That would not be correct experience.
Instead of autofocus, why not force focus into the very first column we know to be editable.
Note: this should happen only when user clicks on Add new row, after that user is free to put focus anywhere.


[Kindenv] Allow running kind with sudo

Allow running kind with root permissions by prefixing it with sudo (optionally).
Add a flag or environment to enable the behavior.

Fixed by https://github.com/alexandremahdhaoui/tooling/pull/8


Update 04-create-dax-calculations-in-power-bi-desktop.md

Module: 00
Lab/Demo: 00
Fixes # .
Changes proposed in this pull request:

Submitted by AnthonyOakley on behalf of MOC Labs Review


Quick fix for issue #66

Issue #66
Description of changes:
Added .distinct() to avoid duplicates in the returned list. This is a quickfix just to move on with the development but there is a corner case I believe it is not covered when there are two keys one representing a file and one a directory. However please see the note below (that I will report to the issue as well).
If I well understood, the current implementation retrieves all keys (!) in the bucket and then filters the one matching the provided prefix. This is highly undesirable as it would break for buckets of a noticeable size. See Isse #66 for more.

@markjschreiber can we merge this one?

Another design consideration is that the listObjectsV2 will return up to 1000 objects so we might need to add some logic to make multiple calls if there are more to return.

Yes, we need to use continuation-token

The general idea with Mockito is that there is a mocked S3Client. In this mocked client you define the implementation of certain methods that you want to test so that when they are called the mock returns some test value rather than making a real call to S3. So you can setup a test to ensure you correctly handle duplicates by making a mock client that returns a list with duplicates when listObjectsV2 is called. Or a mock where the response from the client indicates that more values remain allowing you to test the logic required to make multiple calls.
I may get to this today but probably not until tomorrow.

Thanks! an example would be very helpful.

@stefanofornari, can you take a look at  this branch https://github.com/awslabs/aws-java-nio-spi-for-s3/tree/markjschreiber/issue66
I think it resolves the issue with Directory streams. It now uses the delimiter("/") method to prevent listing all keys and it also uses a paginator for handling more than 1000 entries. I need to test this more but would be good if you can try it out too.

Hi Mark, see https://github.com/awslabs/aws-java-nio-spi-for-s3/issues/75#issuecomment-1616076980, the first test on MinIO are not successful.
On the code:
https://github.com/awslabs/aws-java-nio-spi-for-s3/blob/b54d783f15e5c65a4d3fceb30c9ba032ad6464a2/src/main/java/software/amazon/nio/spi/s3/S3FileSystemProvider.java#L293
What about just use substring(FinalPathString.length()) so to avoid the overheard of regex?
About this snippet:
https://github.com/awslabs/aws-java-nio-spi-for-s3/blob/b54d783f15e5c65a4d3fceb30c9ba032ad6464a2/src/main/java/software/amazon/nio/spi/s3/S3FileSystemProvider.java#L285-L301
I could not try it, but I have the feeling it still get all keys before creating the stream, which takes us at square 0,

The delimiter method of the builder means that the call to S3 will only return 1 level of objects and directories (common prefixes) rather than the full bucket content.

The delimiter method of the builder means that the call to S3 will only return 1 level of objects and directories (common prefixes) rather than the full bucket content.

True, but still one level can have thousands elements. We probably need to build an iterator that asks one page at a time.

The call in the new code is wrapped in an autopaginator

The call in the new code is wrapped in an autopaginator

Yes of course, but you are collecting all responses first, then you create the iterator on s3Paths.

True. I probably need to use a join iterator that lazily combines the commonPrefixes and objects returned in each page triggering new pages when it runs out of items. Even better would be to buffer them in the background if we assume that iteration over the whole directory is likely.

Yep exactly. I would keep the lazy approach since network is expensive and it may not be needed. It would be easy to iterate through all results in a separate thread by the caller if needed.

Complete fix by merge 92


AppCompatImageView

Why not extends a AppCompatImageView?

Yes it really should can't use it in my projects otherwise

What feature of AppCompatImageView are you missing?

Setting the tint and backgroundTint in older Android versions also being able to use the Compat XML-tags.

Yea, using the app:srcCompat is pretty crucial for me as well.
@hdodenhof
I also so that someone made a pull request for that. Any chance of merging and upload a new version?

IMO the major argument against extending AppCompatImageView, which is having to include a dependency on the support library, still clearly outweighs the benefit of it. The only theoretical benefits would be (a) support for VectorDrawable using srcCompat and (b) support for tint attributes, with (a) being not being a good idea and (b) not being supported out of the box (i.e. more changes would have to be made). Also (b) can be already achieved using a ColorFilter.
I'm still open for arguments but I'm closing this for now based on the outlined reasoning.


Messages duplicated when consumers > partitions

Start 3 consumers on a topic with 2 partitions. It is expected that 2 consumers will receive messages from a single partition while the other is idle. The current result is that the 3rd consumer will get duplicate (as in already received by other consumers) messages from both partitions

unable to reproduce


Request absolute timeout

Coverage increased (+1.6%) to 78.378% when pulling 9d8df4e67b4ff1cfc13677f6614715d4a8cf80e4 on elhigu:request-absolute-timeout into 4c8a4814e2997b196f42fb70ba3f18e5b71b6dc8 on Vincit:master.


Update OES images

Update images to incorporate new features related to
i. Manual Judgement
ii. OPA policy configurations
iii. Option to specify spinnaker authn in sapor

@Nirmalyasen, proceeding to merge this PR with updated images of OES for arab bank demo


issue with Carthage

I was trying to include this library into my project through Carthage, but the command of 'carthage update' returned the following error message:
(carthage version 0.16.2)
Failed to read file or folder at /private/var/folders/lw/4h75rrkj6c74_htcv9nkk2rw0000gn/T/carthage-archive.Be2knk/__MACOSX/LocationPicker.framework: Error Domain=com.antitypical.Result Code=0 "the DTSDKName key in its plist file is missing" UserInfo={com.antitypical.Result.function=readFailed, NSLocalizedDescription=the DTSDKName key in its plist file is missing, com.antitypical.Result.line=776, com.antitypical.Result.file=/tmp/carthage20160413-39362-hmnet1/Source/CarthageKit/Project.swift}

Thanks for your feedback, I will resolve the issue soon.

This issue is fixed in version 1.0.4, you can now include this library to your project via Carthage.


Warn against absolute paths in Documentation/Usage.md

Resolves rdar://115726598.

@swift-ci test

@swift-ci test

@swift-ci test windows


feat!: assume React by default in liferay-portal (#107)

Before:

Preset
Extends

liferay
eslint:recommended, prettier

react
liferay

metal
liferay

portal
liferay

Now:

Preset
Extends

liferay
eslint:recommended, prettier

react
liferay

metal
react

portal
react

The motivation here is to make it easier to build React projects in liferay-portal, because right now we have > 30 projects using React and they all need an ".eslintrc.js" file to select the preset.
After this change, we will be able to delete those special cases, and replace them with a hopefully-smaller number of config files that select the "metal" preset instead.
Closes: https://github.com/liferay/eslint-config-liferay/issues/107

Tested this in liferay-portal.
It finds these issues that need fixes/config: https://gist.github.com/wincent/2e2b7ac1750afd43663877d6caf6906f
End result is: https://gist.github.com/wincent/6daac55f2d9a3f52813a3c84373e9de6


ModuleNotFoundError: No module named 'math' (Nuitka '1.0.6' on Python '3.10')

Hello,
from Nuitka (User Manual) I have used a sample just to give it a try.
The problem is that I get an error ModuleNotFoundError: No module named 'math'.
I don't know why Nuitka has issues with builtin random or math modules.
nuitka --standalone hello.py --run
(venv) [root@cent01 ldif-mixer]# python -m nuitka --standalone hello.py --run
Nuitka-Options:INFO: Used command line options: --standalone hello.py --run
Nuitka-Options:INFO: Detected static libpython to exist, consider '--static-libpython=yes' for better performance, but errors may happen.
Nuitka:INFO: Starting Python compilation with Nuitka '1.0.6' on Python '3.10' commercial grade 'not installed'.
Nuitka-Plugins:INFO: multiprocessing: Injecting pre-module load code for module 'multiprocessing':
Nuitka-Plugins:INFO: multiprocessing:     Monkey patching "multiprocessing" load environment.
Nuitka-Plugins:INFO: multiprocessing: Injecting post-module load code for module 'multiprocessing':
Nuitka-Plugins:INFO: multiprocessing:     Monkey patching "multiprocessing" for compiled methods.
Nuitka:INFO: Completed Python level compilation and optimization.
Nuitka:INFO: Generating source code for C backend compiler.
Nuitka:INFO: Running data composer tool for optimal constant value handling.
Nuitka:INFO: Running C compilation via Scons.
Nuitka-Scons:INFO: Backend C compiler: gcc (gcc).
Nuitka-Scons:INFO: Backend linking program with 13 files (no progress information available).
Nuitka-Scons:WARNING: You are not using ccache.
Nuitka:INFO: Keeping build directory 'hello.build'.
Nuitka:INFO: Successfully created 'hello.dist/hello'.
Nuitka:INFO: Launching 'hello.dist/hello'
Traceback (most recent call last):
File "/usr/local/netzwert/ldif-mixer/hello.dist/hello.py", line 11, in
File "/usr/local/netzwert/ldif-mixer/hello.dist/random.py", line 49, in
ModuleNotFoundError: No module named 'math'
hello.py
import random

def talk(message):
    return "Talk " + message

def main():
    print(talk("Hello World"))

if __name__ == "__main__":
    main()

Best Regards,
Kresimir

Congratulations on reading the user manual, it would be have been sweet if you read the issue template and provided the output of nuitka --version as well.

nuitka --version

python -m nuitka --version
1.0.6
Commercial: None
Python: 3.10.5 (main, Sep  5 2022, 15:45:28) [GCC 8.5.0 20210514 (Red Hat 8.5.0-13)]
Flavor: Unknown
Executable: /usr/local/netzwert/Python-3.10.5/venv/bin/python
OS: Linux
Arch: x86_64
Distribution: Centos (based on Fedora) 8
Note: python 3.10.5 is compiled from source without errors.

I think I also need the output with --show-scons to see what code path is taken.

I think I also need the output with --show-scons to see what code path is taken.

I was playing with Nuitka arguments for several hours and managed it to work (on other py sample file, different than hello.py):
note: as third-party dependency I use bonsai (Bonsai LDAP)
requirements.txt
bonsai==1.5.0
Nuitka==1.0.6
ordered-set==4.1.0
zstandard==0.18.0

python -m nuitka --standalone --show-modules --show-modules-output=ldif-mixer.trace --include-module=math,bonsai._bonsai,select,_contextvars --follow-stdlib --show-scons ldif-mixer.py --run
The main question: why at least math module is not supported out-of-box ?
-show-modules-output: ldif-mixer.zip

The --follow-stdlib option is not a good idea to use, but also not what you gave initially. The scons output, I didn't find it in the log provided, which indeed is minimal. Lets stick to hello world for now and find it there.

That is very helpful. I believe your libpython3.10 might be miscompiled. At leaast I am using --enable-shared or older systems, albeit all Debian, and have it working. It can be avoided by using --static-libpython=yes in which case it may still not work, and of course will even be better for performance.

Closing for lack of feedback


Cant get messages on MS exchange

Hi everyone,
Im using the lib 2.1.8 on Laravel 8.0.2 / PHP 7.4 and an MS exchange server.
Im able to connect to the account, count the number of emails in a specific folder, but cannot get the messages. Here's the code and the stack error.
Conf imap :

$oClient = new Client([
	 'host'  => 'Server',
        'port'  => 993,
        'protocol'  => 'imap', //might also use imap, [pop3 or nntp (untested)]
        'encryption'    => 'ssl', // Supported: false, 'ssl', 'tls'
        'validate_cert' => true,
        'username' =><EMAIL_ADDRESS>        'password' => 'password'
	]);
'options' => [
        'delimiter' => '/',
        'fetch_body' => true,
        'fetch_flags' => true,
        'message_key' => 'list',
        'fetch_order' => 'asc',
        'open' => [
            // 'DISABLE_AUTHENTICATOR' => 'GSSAPI'
        ],
        'decoder' => [
            'message' => 'utf-8', // mimeheader
            'attachment' => 'utf-8' // mimeheader
        ]
    ]

Connect  : OK
Count messages : OK
Get All messages from folder :  KO
Code :
$oClient->connect();
	$oFolder = $oClient->getFolder('Orange');
	$count = $oFolder->query()->all()->count();
	$messages = $oFolder->query()->all()->get();
	echo "$count";

Error seems to append when fecthing the messages.

Thx,
Djey

Hi @DjeyKey ,
thanks for your well written report. I'm just missing one important thing: how can I reproduce this behavior?
Please try to narrow it down by sending yourself a simple test email and try to fetch just this one.
$count = $oFolder->query()->subject("test")->count();
$messages = $oFolder->query()->subject("test")->get();
echo "$count";

..then try to expand the amount of mails:
$count = $oFolder->query()->all()->limit(5)->count();
$messages = $oFolder->query()->limit(5)->get();
echo "$count";

..until you find the one that fails. If you can identify a single troubling email, please dump the complete (anonymized) message structure $message->getStructure() and post it here or send it to<EMAIL_ADDRESS>if you want to keep it "private".
Best regards,

Thanks for your reply.
Research for "troubling" email is done, but i cant get the structure, i still got the same error.
Additionnal information about the "troubling" email :

this is a forwarded message from Outlook Office 2019
maybe this is a special MIME type : TNEF ?

I just sent you the message for some privacy, this is a ZIP for keeping its original structure.
Best regards

After few exchage with Webklex support,
i tried as advised to cahnge the conf param from "imap" to ""legacy-imap" but this protocol dont seems to be effective, because i get a client connection error.
Anyway, most of my investigations are coming clother to the TNEF encapsluation from MS excahnge when theres multipart messages and attachments.


No build instructions

This looks cool! How do I build it? I might have missed the instructions somewhere...

I had the same issue so I'll just let people know what I've done to build it on Ubuntu:
sudo apt-get install maven
#Build the plugin (From the root of the repository)
mvn install
# target/ConsoleLogToWorkspace.hpi should be created


Update Moya 8.0.0

Update Moya 8.0.0

thanks @crazydragon91 🍻
expect a new cocoapods release within the next few hours