Big performance difference between python-zstd and zstd-rs speeds

Hey! I'm getting a 6x processing speed difference between the python package python-zstd and this package when compressing a single image that is ~13MB in size. The python variant compresses in ~0.38 seconds whilst rust is taking ~2.4 seonds. This same issue occurs when comparing the zstd-cli tool with rust
We have tried to implement this package in all of the different ways we can. And we have also tried to match the python implementation as close as possible but are continuing to get the same result. Both are using the same version of zstd under the hood.
Is there any chance you can see where we have gone wrong to be getting such a big performance lose compared to python and the cli? Please let me know if you need any other information!
Here are our testing scripts and results. Our test device is an embedded system running Yocto linux.
Rust
main.rs:
use std::{fs, path::Path, time::Instant};

use zstd::zstd_safe::CCtx;
use zstd::zstd_safe::CParameter;

fn main() {
    let img_path = Path::new("./img_raw");
    let img_data = fs::read(img_path).unwrap();

    println!("Input size: {:?} bytes", img_data.len());

    for _ in 0..=20 {
        let t0 = Instant::now();
        let mut cctx = CCtx::create();
        cctx.init(1).unwrap();
        let cparam = CParameter::NbWorkers(1);
        cctx.set_parameter(cparam).unwrap();

        let mut output = Vec::new();
        output.reserve(img_data.len());
        let data_size = cctx.compress2(&mut output, &img_data).unwrap();
        println!(
            "Compression time: {:?} | Compression size: {:?}",
            t0.elapsed(),
            data_size
        );
    }
}

cargo.toml:
[package]
name = "zstd_test"
version = "0.1.0"

[dependencies]
zstd = { version = "0.13.2", features = ["zstdmt"] }

console output
sh-5.2# ./zstd_test
Input size: 13120000 bytes
Compression time: 2.424943091s | Compression size: 4141879
Compression time: 2.425405005s | Compression size: 4141879
Compression time: 2.420405395s | Compression size: 4141879
Compression time: 2.418717218s | Compression size: 4141879
Compression time: 2.419599167s | Compression size: 4141879
Compression time: 2.418817959s | Compression size: 4141879
Compression time: 2.419841419s | Compression size: 4141879
Compression time: 2.419766838s | Compression size: 4141879
Compression time: 2.423758679s | Compression size: 4141879
Compression time: 2.419085892s | Compression size: 4141879
Compression time: 2.423615787s | Compression size: 4141879
Compression time: 2.428020042s | Compression size: 4141879
Compression time: 2.419602857s | Compression size: 4141879
Compression time: 2.420533826s | Compression size: 4141879
Compression time: 2.421025891s | Compression size: 4141879
Compression time: 2.423241083s | Compression size: 4141879
Compression time: 2.420323494s | Compression size: 4141879
Compression time: 2.421580927s | Compression size: 4141879
Compression time: 2.424723099s | Compression size: 4141879
Compression time: 2.424607418s | Compression size: 4141879
Compression time: 2.420573007s | Compression size: 4141879

Python
zstd_tests.py
import zstd
import time

img_raw = open("./img_raw", "rb").read()

print(f"Input size: {len(img_raw)} bytes")

for i in range(20):
    t0 = time.time()
    comp = zstd.compress(img_raw, 1, 1)
    print(f"Compression time: {time.time() - t0}s | Compression size: {len(comp)}")

python packages
sh-5.2# python3 -m pip list
Package               Version
--------------------- ------------
...
zstd                  <IP_ADDRESS>

sh-5.2# python3 --version
Python 3.12.4

console output
sh-5.2# python3 zstd_tests.py
Input size: 13120000 bytes
Compression time: 0.3925755023956299s | Compression size: 4141879
Compression time: 0.3913264274597168s | Compression size: 4141879
Compression time: 0.38705897331237793s | Compression size: 4141879
Compression time: 0.38625478744506836s | Compression size: 4141879
Compression time: 0.38326406478881836s | Compression size: 4141879
Compression time: 0.3831746578216553s | Compression size: 4141879
Compression time: 0.3832221031188965s | Compression size: 4141879
Compression time: 0.38354063034057617s | Compression size: 4141879
Compression time: 0.3833439350128174s | Compression size: 4141879
Compression time: 0.383317232131958s | Compression size: 4141879
Compression time: 0.38402223587036133s | Compression size: 4141879
Compression time: 0.38319969177246094s | Compression size: 4141879
Compression time: 0.3832590579986572s | Compression size: 4141879
Compression time: 0.3833591938018799s | Compression size: 4141879
Compression time: 0.38364577293395996s | Compression size: 4141879
Compression time: 0.38327574729919434s | Compression size: 4141879
Compression time: 0.3832426071166992s | Compression size: 4141879
Compression time: 0.38323450088500977s | Compression size: 4141879
Compression time: 0.383345365524292s | Compression size: 4141879
Compression time: 0.3834688663482666s | Compression size: 4141879

zstd_cli
For good measure I also ran the benchmark on the cli tool
console output
sh-5.2# zstd -b1 ./img_raw -o cli_test_output
 1#img_raw           :  13120000 ->   4143404 (x3.166),   35.2 MB/s,  104.3 MB/s

35.2 MB/s for a 13.12MB image comes to ~0.37s. This is in line with the python results

Does using lto = "fat" and --release help?
IIRC since the code is split among zstd-sys, zstd-safe and zstd, there might be some missed optimization that can be claimed back by using fat LTO across crates (rust defaults to thin LTO within crate).

Another reason could be the memory allocator.
IIRC python 3.11 supports optional mimalloc support, python/cpython#90815, it could be that the python version you use uses mimalloc.
Compared to the glibc or musl malloc, mimalloc is a lot more efficient.

Thanks for your replies!

Perhaps using lto = "fat" and --release would help?
IIRC since the code is split among zstd-sys, zstd-safe and zstd, there might be some missed optimization that can be claimed back by using fat LTO across crates (rust defaults to thin LTO within crate).

I did just test using only the lower level zstd-sys commands and got the same slow results. Does this answer this as its only using one of the crates? If not i can give compiling it like this ago

It could be the memory allocator.
IIRC python 3.11 supports optional mimalloc support, python/cpython#90815, it could be that the python version you use uses mimalloc.
Compared to the glibc or musl malloc, mimalloc is a lot more efficient.

I am using Python3.12 which appears to use mimalloc as you said. If it is indeed the memory allocator is there any remedy for it?

If it is indeed the memory allocator is there any remedy for it?

You could use mimalloc for rust as well, mimalloc would be a simple drop-in replacement.

Ok so I tried this and got the same result as before. I will note that my installation of the libmimalloc.so was a bit hacky, our system doesnt have a package manager. So I installed it on another system and copied it over.
Below are the tests and the results:
main.py
use std::ffi::c_void;
use std::{fs, path::Path, time::Instant};

use zstd::zstd_safe::zstd_sys::{
    ZSTD_CCtx_setParameter, ZSTD_cParameter, ZSTD_compress2, ZSTD_createCCtx, ZSTD_initCStream,
};

use mimalloc::MiMalloc;

#[global_allocator]
static GLOBAL: MiMalloc = MiMalloc;

fn main() {
    let img_path = Path::new("/vyoma/test_scripts/img_raw");
    let mut img_data = fs::read(img_path).unwrap();

    println!("Input size: {:?} bytes", img_data.len());

    for _ in 0..=20 {
        let t0 = Instant::now();

        let mut cctx = unsafe { ZSTD_createCCtx() };
        unsafe {
            ZSTD_initCStream(cctx, 1);
        }
        unsafe {
            ZSTD_CCtx_setParameter(cctx, ZSTD_cParameter::ZSTD_c_nbWorkers, 1);
        }
        let mut output = Vec::new();
        output.reserve(img_data.len());
        unsafe {
            ZSTD_compress2(
                cctx,
                output.as_mut_ptr(),
                img_data.len(),
                img_data.as_mut_ptr() as *mut c_void,
                img_data.len(),
            );
        }

        println!(
            "Compression time: {:?} | Compression size: ???",
            t0.elapsed(),
            // data_size
        );
    }
}

output
sh-5.2# LD_PRELOAD=/usr/lib/libmimalloc.so.2 ./hello_world_rust
Input size: 13120000 bytes
Compression time: 2.437150634s | Compression size: ???
Compression time: 2.429171483s | Compression size: ???
Compression time: 2.43176177s | Compression size: ???
Compression time: 2.428406566s | Compression size: ???
Compression time: 2.431454117s | Compression size: ???
Compression time: 2.428295235s | Compression size: ???
Compression time: 2.432154654s | Compression size: ???
Compression time: 2.429074973s | Compression size: ???
Compression time: 2.430695889s | Compression size: ???
Compression time: 2.428498607s | Compression size: ???
Compression time: 2.430916991s | Compression size: ???
Compression time: 2.428063662s | Compression size: ???
Compression time: 2.431278435s | Compression size: ???
Compression time: 2.428181474s | Compression size: ???
Compression time: 2.431276635s | Compression size: ???
Compression time: 2.432433326s | Compression size: ???
Compression time: 2.430921342s | Compression size: ???
Compression time: 2.431368166s | Compression size: ???
Compression time: 2.43074851s | Compression size: ???
Compression time: 2.430214834s | Compression size: ???
Compression time: 2.433638589s | Compression size: ???

Hmmm I think
comp = zstd.compress(img_raw, 1, 1)

Might not be equivalent to the rust code you have.

https://github.com/sergey-dryabzhinsky/python-zstd/blob/eba9e633e0bc0e9c9762c985d0433e08405fd097/src/python-zstd.c#L102
Looking at python zstd source code, it uses ZSTD_compressBound for the buffer size.

BTW your rust code doesn't call ZSTD_freeCCtx which python version does.

Damn i was really hoping that would be it! But i tried a few combinations of your suggestions but nothing changed.
I tried both using ZSTD_compressBound and hardcoding a size a bit bigger than the compressed size (5mb) for Vec::reserved and the size passed to the compress function but nothing worked 😞

Vec::reserved and the size passed to the compress function

Maybe try using Vec::reserve_exact

Yeh i did. Also no luck

Maybe it's the zstd version that is different, or the way they are built?

Overallocating could cost a couple of ms, but far from the 2s difference we're seeing here.
The difference in compilation is that python-zstd uses DYBAMIC_BMI2=0 to disable runtime cpu feature detection, which again could be non-zero cost but far from 2s per run.
You are running in release mode, right? We don't manually specify the C compiler opt level, so I think it inherits it from the rust side.

Overallocating could cost a couple of ms, but far from the 2s difference we're seeing here.
The difference in compilation is that python-zstd uses DYBAMIC_BMI2=0 to disable runtime cpu feature detection, which again could be non-zero cost but far from 2s per run.
You are running in release mode, right? We don't manually specify the C compiler opt level, so I think it inherits it from the rust side.

No I wasn't and that it fixed it! Sorry for my ignorance, what is the difference that would cause such a different performance difference?

such a different performance difference?

Because the vendored libzstd will have the same optimization level as rust.

Right. And why is the non-optimised version of libzstd so slow?

 Lots of work.

@scrottty you could override profile for zstd by adding:
[profile.dev.package."zstd-sys"]
opt-level = "z"

To make sure libzstd is always built in release mode.

z is to optimize for size, right? Release defaults to opt-level = 3 I think: https://doc.rust-lang.org/cargo/reference/profiles.html#opt-level

Sorry that's a typo, I've updated my comment.

Amazing thank you! I was almost there but had ...package.zstd instead of ...package."zstd-sys".
Thank you so much for taking the time to answer my questions. Really appreciate it!


Update the design file in OCI package to design.yml

Notes for Reviewers
This PR fixes problems in the generation of the artifacthub-pkg file when exporting as an OCI package from MeshMap. The metadata generated was not using the expected date format. And the design yml file did not match the naming convention ArtifactHub expects. With these changes a user can extract the files from the OCI and drop them right into an ArtifactHub repo.
Signed commits

[x] Yes, I signed my commits.

@humblenginr what have you identified as the cause of the long-running build check? https://github.com/meshery/meshery/actions/runs/10322650732/job/28578362504?pr=11595

The failing build check is unrelated and an item for @humblenginr to address.


[1.4.7] Railcraft shows duplicate tank values for each block in a multiblock

I am unsure about this issue. It seems like Railcraft is not properly reporting back its internal tanks.
I will see what I can do about it

I am sorry, but I had much more to do that I thought. I had a few free minutes today. So I fixed thiss issue, finally. Thanks for reporting! :)

Forgot to say: I will publish the new version asap. However, most likely not today, sadly

Sorry for the delay! Uploading the new version right now


Fastlane/Spaceship Authentication issue

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
Job fails when attempting to login to app store connect after making the "fastlane pilot export -a $bundle_id" call. Error that is given is:
/Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http/response.rb:124:in error!': \e[31m[!] 403 "Forbidden"\e[0m (Faraday::ConnectionFailed)`
and
/Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http/response.rb:124:in error!': 403 "Forbidden" (Net::HTTPServerException)`
It appears to be a problem with spaceship authentication.
Please look into this when you have a chance @joshdholtz 🙏
Command executed
fastlane pilot export -a $bundle_id
Complete output when running fastlane, including the stack trace and command used

 [14:44:19]: Login to App Store Connect (****)
Available session is not valid any more. Continuing with normal login.
Looking for related GitHub issues on fastlane/fastlane...
Could not access the GitHub API, you may have better luck via the website.
https://github.com/fastlane/fastlane/search?q=403 "Forbidden"&type=Issues&utf8=✓
/Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http/response.rb:124:in error!': \e[31m[!] 403 "Forbidden"\e[0m (Faraday::ConnectionFailed) 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http/response.rb:133:in value'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http.rb:982:in connect' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http.rb:943:in do_start'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http.rb:932:in start' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:146:in request_via_request_method'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:131:in request_with_wrapped_block' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:122:in perform_request'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:66:in block in call' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/adapter.rb:50:in connection'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:64:in call' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/stats_middleware.rb:45:in call'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/helper/rels_middleware.rb:17:in call' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-cookie_jar-0.0.7/lib/faraday/cookie_jar.rb:24:in call'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday_middleware-1.1.0/lib/faraday_middleware/response_middleware.rb:36:in call' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday_middleware-1.1.0/lib/faraday_middleware/response_middleware.rb:36:in call'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/rack_builder.rb:154:in build_response' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/connection.rb:511:in run_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/connection.rb:281:in post' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:899:in block in send_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:657:in with_retry' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:898:in send_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:742:in request' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:492:in send_shared_login_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/tunes/tunes_client.rb:130:in send_login_request' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:824:in do_login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:404:in login' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:366:in login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/tunes/spaceship.rb:24:in login' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/connect_api/client.rb:56:in login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/connect_api/spaceship.rb:85:in login' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/manager.rb:36:in login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/manager.rb:19:in start' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/tester_exporter.rb:10:in export_testers'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/commands_generator.rb:149:in block (2 levels) in run' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/command.rb:187:in call'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/command.rb:157:in run' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/runner.rb:444:in run_active_command'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:117:in run!' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/delegates.rb:18:in run!'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/commands_generator.rb:167:in run' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/commands_generator.rb:19:in start'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/fastlane/lib/fastlane/cli_tools_distributor.rb:114:in take_off' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/bin/fastlane:23:in <top (required)>'
from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/fastlane:23:in load' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/fastlane:23:in '
from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:22:in eval' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:22:in '
/Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http/response.rb:124:in error!': 403 "Forbidden" (Net::HTTPServerException) 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http/response.rb:133:in value'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http.rb:982:in connect' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http.rb:943:in do_start'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/net/http.rb:932:in start' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:146:in request_via_request_method'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:131:in request_with_wrapped_block' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:122:in perform_request'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:66:in block in call' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/adapter.rb:50:in connection'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-net_http-1.0.1/lib/faraday/adapter/net_http.rb:64:in call' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/stats_middleware.rb:45:in call'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/helper/rels_middleware.rb:17:in call' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/faraday-cookie_jar-0.0.7/lib/faraday/cookie_jar.rb:24:in call'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday_middleware-1.1.0/lib/faraday_middleware/response_middleware.rb:36:in call' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday_middleware-1.1.0/lib/faraday_middleware/response_middleware.rb:36:in call'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/rack_builder.rb:154:in build_response' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/connection.rb:511:in run_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/faraday-1.7.1/lib/faraday/connection.rb:281:in post' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:899:in block in send_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:657:in with_retry' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:898:in send_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:742:in request' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:492:in send_shared_login_request'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/tunes/tunes_client.rb:130:in send_login_request' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:824:in do_login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:404:in login' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/client.rb:366:in login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/tunes/spaceship.rb:24:in login' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/connect_api/client.rb:56:in login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/spaceship/lib/spaceship/connect_api/spaceship.rb:85:in login' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/manager.rb:36:in login'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/manager.rb:19:in start' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/tester_exporter.rb:10:in export_testers'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/commands_generator.rb:149:in block (2 levels) in run' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/command.rb:187:in call'
from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/command.rb:157:in run' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/runner.rb:444:in run_active_command'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:117:in run!' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/gems/commander-4.6.0/lib/commander/delegates.rb:18:in run!'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/commands_generator.rb:167:in run' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/pilot/lib/pilot/commands_generator.rb:19:in start'
from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/fastlane/lib/fastlane/cli_tools_distributor.rb:114:in take_off' 	from /Users/atomato/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/fastlane-2.192.0/bin/fastlane:23:in <top (required)>'
from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/fastlane:23:in load' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/fastlane:23:in '
from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:22:in eval' 	from /Users/atomato/.rvm/gems/ruby-2.7.0/bin/ruby_executable_hooks:22:in '

Environment

 ✅ fastlane environment ✅
Stack

Key
Value

OS
10.15.1

Ruby
2.7.0

Bundler?
true

Git
git version 2.21.1 (Apple Git-122.3)

Installation Source
~/.rvm/gems/ruby-2.7.0/bin/fastlane

Host
Mac OS X 10.15.1 (19B88)

Ruby Lib Dir
~/.rvm/rubies/ruby-2.7.0/lib

OpenSSL Version
OpenSSL 1.1.1g  21 Apr 2020

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
11.3.1

Swift Version
5.1.3

System Locale

Variable
Value

LANG
en_US.UTF-8
✅

LC_ALL
en_US.UTF-8
✅

LANGUAGE

fastlane files:
No Fastfile found
No Appfile found
fastlane gems

Gem
Version
Update-Status

fastlane
2.193.0
✅ Up-To-Date

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

did_you_mean
1.5.0

executable-hooks
1.6.1

bundler-unload
1.0.2

rubygems-bundler
1.4.5

bundler
2.2.26

rake
13.0.6

CFPropertyList
3.0.3

public_suffix
4.0.6

addressable
2.8.0

artifactory
3.0.15

atomos
0.1.3

aws-eventstream
1.1.1

aws-partitions
1.493.0

aws-sigv4
1.2.4

jmespath
1.4.0

aws-sdk-core
3.119.1

aws-sdk-kms
1.47.0

aws-sdk-s3
1.100.0

babosa
1.0.4

claide
1.0.3

colored
1.2

colored2
3.1.2

highline
2.0.3

commander
4.6.0

declarative
0.0.20

digest-crc
0.6.4

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20190701

dotenv
2.7.6

emoji_regex
3.2.2

excon
0.85.0

faraday-em_http
1.0.0

faraday-em_synchrony
1.0.0

faraday-excon
1.1.0

faraday-httpclient
1.0.1

faraday-net_http
1.0.1

faraday-net_http_persistent
1.2.0

faraday-patron
1.0.0

faraday-rack
1.0.0

multipart-post
2.0.0

ruby2_keywords
0.0.5

faraday
1.7.1

http-cookie
1.0.4

faraday-cookie_jar
0.0.7

faraday_middleware
1.1.0

fastimage
2.2.5

gh_inspector
1.1.3

jwt
2.2.3

memoist
0.16.2

multi_json
1.15.0

os
1.1.1

signet
0.15.0

googleauth
0.17.0

httpclient
2.8.3

mini_mime
1.1.1

trailblazer-option
0.1.1

uber
0.1.0

representable
3.1.1

retriable
3.1.2

rexml
3.2.5

webrick
1.7.0

google-apis-core
0.4.1

google-apis-androidpublisher_v3
0.10.0

google-apis-playcustomapp_v1
0.5.0

google-apis-iamcredentials_v1
0.7.0

google-apis-storage_v1
0.6.0

google-cloud-env
1.5.0

google-cloud-errors
1.1.0

google-cloud-core
1.6.0

google-cloud-storage
1.34.1

json
2.5.1

mini_magick
4.11.0

naturally
2.2.1

optparse
0.1.1

plist
3.6.0

rubyzip
2.3.2

security
0.1.3

simctl
1.6.8

terminal-notifier
2.0.0

unicode-display_width
1.7.0

terminal-table
1.8.0

tty-screen
0.8.1

tty-cursor
0.7.1

tty-spinner
0.9.3

word_wrap
1.0.0

nanaimo
0.3.0

xcodeproj
1.21.0

rouge
2.0.7

xcpretty
0.3.0

xcpretty-travis-formatter
1.0.1

Seeing the same issue here!

Hi, does the user you use have rights to this app and does it have rights manage testers? You should check Role/Apps in Users and Access tab on Appstore Connect.

Hi @lucgrabowski, Thanks for the reply.
Yes, the user we are using has the "App Manager" role and looks to have permissions to manage Testflight testers on appstore connect:

Hi, and have you checked in Users and Access if the user has rights to the app (the one with the bundle identifier that you use in  fastlane pilot export?

Hi @joshdholtz, are you able to look into this? Thanks.

Was able to resolve this issue. Thanks for the help @lucgrabowski


[QA] Minigames | Liquid Labyrinth Pipeline Illumination Issue

Explorer Alpha build versions:

v0.39.0

Issue Description:
In the Liquid Labyrinth minigame, the goal is to connect pipes, and when time runs out, water flows through them, illuminating the pipes as it advances. However, SOMETIMES the illumination fails, leaving some pipes with shiny liquid while others do not light up.
This issue is intermitent, doesn't have an 10/10 repro step
STR:

Start the Liquid Labyrinth minigame.
Connect the pipes to complete the objective.
Wait for the time to run out.

❌ Actual Result
Some pipes do not illuminate when the water flows through them.
https://github.com/user-attachments/assets/94816346-4390-4fff-a3ca-97540eaf3698
✅ Expected Result
All connected pipes should illuminate as the water flows through them.

I make an update to the liquid labyrinth repo: https://github.com/decentraland-scenes/minigame-pipe-mania/commit/f3b9606f2f55fd423801cf022c0a0b575d3b696e to preload 3d model that is used on the scene at the start of the scene. Hope this solve the issue


How to prevent changes ?

Since url is public? How do I prevent users from editing the database ?
Anyone can make requests and edit the database! Any workaround ?

Don't share your endpoint address, keep it in the server where you usually store your database credentials.


Read out values like scene settings from a config file for the Mock

It would be a bit better if a local settings file is read by the Mock code and this is used locally rather than having this hardcoded in the CPHmock.
File could be named as: config.ini
This should be set as ignored in the .gitignore file as this should be actually never be committed and pushed into the repository.
Currently those attributes should be configurable in the config.ini file:
snifferIP
snifferPort
songScenes
menuScene
pauseScene
sectionDetection
behavior
switchScenes
sectionActions
blackList

Solid Idea. Go for it :)


InMemoryConnector and AiopgConnector still handle queueing_lock differently

Follow up to https://github.com/peopledoc/procrastinate/issues/372 - we're only discovering these peu à peu as we're using the library.
Bug description
For the database connector the following works:

enqueue job in queue A with queueing lock B
run worker on queue A, so that the job enters state SUCCEEDED
enqueue job in queue A with queueing lock B
...

For the InMemoryConnector, this does not work:

enqueue job in queue A with queueing lock B
run worker on queue A, so that the job enters state SUCCEEDED
enqueue job in queue A with queueing lock B

-> Raises AlreadyEnqueued
Bug source
The Database queueing lock is implemented using a unique index on queueing_lock with the additional check that status = 'todo' (schema here)
The Memory queueing lock implementation has a "unique index via any check" without the additional check that status = 'todo' (implementation here)
Fix
To fix this, the job status also needs to be checked, see #379

oh, that's true...
I wonder if there would be an easy way to catch those beforehand.

oh, that's true...
I wonder if there would be an easy way to catch those beforehand.

I think first unifying the in-memory connector API and aiopg connector API and then also merging all their test cases would give better assurances that both behave in the same way and that the procrastinate itself is truly connector agnostic.
To approach this one could first merge the test cases, leading to a lot of stuff breaking, and then adapt the connectors/other affected code.
That'll be a fair share of work though and of course there will be internal discussions/prioritization/non-goals that I'm now aware of.

I think first unifying the in-memory connector API and aiopg connector API and then also merging all their test cases would give better assurances that both behave in the same way and that the procrastinate itself is truly connector agnostic.
To approach this one could first merge the test cases, leading to a lot of stuff breaking, and then adapt the connectors/other affected code.
That'll be a fair share of work though and of course there will be internal discussions/prioritization/non-goals that I'm now aware of.


Increase draggable area of ReflexSplitters

Have you taken the splitter code from Monokle Cloud or Desktop? I made substantial improvements to a bug that kept dismounting and recreating children instead of rerendering them.


Link to example issues from readme ?

Thanks for your comment on https://github.com/scientific-python/specs/issues/181, Looking at the readme I'd love to see the kind of issue it opens !

That's a good point!
I have a bunch of these here (I used that repo to debug the action), but you can also look at xarray's issue tracker to see a few more realistic examples.


Set up apps in new validator test network 'sandbox'

Task
Configure and set up apps for the new validator test network 'sandbox'
Common Tasks

[ ] Create a release branch release/sandbox

Token and Multisig Signer

[ ] Create .env files
[ ] Create netlify app building from release branch
[ ] Configured required Netlify env vars
[ ] Configure domain for token.sandbox.vega.xyz

Block Explorer and Stats

[ ] Create .env files
[ ] Create netlify app building from release branch
[ ] Configured required Netlify env vars
[ ] Configure domain for explorer.sandbox.vega.xyz

Console and Console-Lite

[ ] Create .env files
[ ] Create netlify app building from release branch
[ ] Configured required Netlify env vars
[ ] Configure domain for console.sandbox.vega.xyz

Liquidity Provision Dashboard

[ ] Create .env files
[ ] Create netlify app building from release branch
[ ] Configured required Netlify env vars

Note: LP dashboard doesn't have a custom domain yet

Need URLs from Fryd

Done for BE

Discussed and decided with Dex that LP Dashboard doesn't need to be on sandbox yet as it's not 'live' at all. Have created a ticket to do it later down the line if relevant


Check that layer coordinate is used for mf6 when converting to sparse

In GitLab by @Huite on Aug 3, 2021, 10:41
I received a report that removing an empty layer from a river package resulted in a modflow6 error, presumably because imod-python misnumbers the layers.
There is some logic for this, the layer argument in to_sparse:
https://gitlab.com/deltares/imod/imod-python/-/blob/master/imod/mf6/pkgbase.py#L59
But seems worthwhile to double check, and maybe add another test.

In GitLab by @Huite on Dec 20, 2021, 21:08
Duplicate of #210

In GitLab by @JoerivanEngelen on Oct 8, 2021, 09:30
marked this issue as related to #192


Uptime Robot unable to check on amplify site

I have a vanilla react app on amplify. I have uptime robot setup but it's just getting "connection timeout" and thinks the site is down.
Some other details

The site is definitely not down, I checked
I can hit the website url from things like postman too and I get back the html I want
When I host the same react app on netlify, I can hit the url with uptime roboto and it gets a correct response that it's up
I can't get any more details from uptime robot about what error it's getting (is it a CORs error message, etc-- they wont say and their UI won't give any details)
I have uptime robot setup to ping our backend API, and all is working well. So it's not a matter of us not understanding how to setup uptime robot

Given that I can hit the same app when it's hosted on netlify, it feels like some kind of issue with the default headers that amplify sets up maybe?
I sort of remember us having a similar issue with reflect.run too
Can anyone point me in the right direction?

Hi @acomito I'm not familiar with uptime robot but I will take a look and see if I can reproduce.

Thanks @hloriana . I remember we had some issues with reflect.run running against our site as well... maybe a header setting that needs to be changed from the amplify defaults to allow services like this to programmatically hit the website?

@hloriana I wanted to restart this issue.
We're trying to monitor uptime with synthetic API tests on datadog and having the same issue.
Is there a certain header that these uptime/pinging services are sending that amplify is saying no to?

Seems like maybe the default cloudfront is blocking the user agent from "robots"

Apologies for the lack of updates on this issue. If these 3rd party tools depend on the user-agent header, then that is likely why the functionality is failing.
The user-agent header is replaced with a value of "Amazon CloudFront", this is because we don't make the user-agent part of the cache key in the interest of increasing your cache hit ratio. Otherwise, given the cardinality of this header, you would experience a very low cache hit ratio, which is undesirable.


SAK-29575 Changes in SASS to to show portalchat panel header on the chat bar instead of overlapping

Portal chat bar was hidden by portal chat panel when it is visible. This panel should be on the bar not overlapping.

LGTM


NTR immune receptor activity and innate immune receptor activity

+[Term]
+id: GO:0140375
+name: immune receptor activity
+is_a: GO:0038023 ! signaling receptor activity
+created_by: pg
+creation_date: 2019-10-18T14:11:15Z
+default-namespace: molecular_function
+default-namespace: Receiving a signal and transmitting it in a cell to initiate an immune response. {xref="PMID:31415752", xref="Wikipedia:Immune_receptor"}
+[Term]
+id: GO:0140376
+name: innate immune receptor activity
+def: "Receiving a signal and transmitting it in a cell to initiate an innate immune response." [PMID:28921463, PMID:31415752]
+is_a: GO:0140375 ! immune receptor activity
To replace BP's response/detection to molecule of x origin (see #17980)

Children would be:
*'complement receptor activity'
*'cytokine receptor activity'
*'immunoglobulin receptor activity'
*'MHC class I receptor activity'
*'MHC class Ib receptor activity'
*'MHC class II receptor activity'
and for 'innate immune receptor activity'

'pattern recognition receptor activity'

@addiehl Is this OK ? I wonder why this term was not created.
Thanks, Pascale

Pull request: https://github.com/geneontology/go-ontology/pull/18062


[etlas] Support spark deployments natively

Spark development in Eta is onerous right now because you have to wait for uberjars to build (really kills dev productivity). I propose a native support for Spark in etlas where we send the location of the dependency jars to spark-submit and avoid the repeated overhead of uberjar generation.
Specifying you want Spark:
etlas configure --spark-deployment
OR
new cabal field per executable: deployment-mode: spark.
etlas run --with-spark-submit=[PATH-TO-SPARK-SUBMIT] -- [args for spark submit]

The gradle plugin can support customized deployments pretty well, so it makes more sense to use it for these use cases.


breaking: remove NATIVE_URI DestinationType

Platforms affected
all
Motivation and Context

NATIVE_URI was only used on iOS and windows, on Android it acts like FILE_URI.
On iOS it returned ALAssetsLibrary urls that are not compatible with WKWebView and ALAssetsLibrary was deprecated on iOS 9, so I don't think it makes sense to keep this destination type since it's not supported by all platforms and it's deprecated on iOS.
Description

also removes other usages of ALAssetsLibrary since it's deprecated
Testing

tested on real iOS device
Checklist

[x] I've run the tests to see all new and existing tests pass
[x] I added automated test coverage as appropriate for this change
[x] Commit is prefixed with (platform) if this change only applies to one platform (e.g. (android))
[ ] If this Pull Request resolves an issue, I linked to the issue in the text above (and used the correct keyword to close issues using keywords)
[x] I've updated the documentation if necessary

This is used on Windows also I thought, because if I pick a file from the photo storage, I can only seem to get a hold of the correct path using the NATIVE_URI.
I'm currently on 4.1.0.

when this is removed, how do i get the PATH to the file from the PHOTOLIBRARY, as the FILE_URI returns the file that is in temporary storage, i want the file that is saved like NATIVE_URI did before


Allow increment_version_number without a patch value

We normally don't use a patch number for our project versions, so we usually go 1.1 -> 1.2 -> 1.3 . agvtool allows you to set a new-marketing-version string as such, however using increment_version_number will throw an error as 1.2 does not match the format A.B.C.
What would you think about allowing the usage with versions that (optionally) do not have a patch value?

I think this is required by the Apple versioning tool fastlane is using under the hood. Also, standard semantic versioning always includes a patch value.

The tool will let you do it, but I agree that it doesn't keep with semantic versioning (I've since got our team on X.Y.Z version numbers :] ). Going to close this, as I think you are correct that the current approach is best.


Add "set/activate open window" feature

Also allows resetting the "open window" state back.
To check if a window is open in a zone, call
IsOpenWindowDetected() on a State object.
You need to add a using of KoenZomers.Tado.Api.Helpers to see the
extension method.

Finally got Tado to detect an open window.


Changed javascript to work with UTC times

Changed javascript to use UTC time instead of user's local time, which fixes the issue where user's that live in a timezone before UTS would see "Failed to load Rivens data!"

Aha, thanks for the PR! However this is a bit too drastic to force it to become UTC.
Its actually fine for it to be the user's local time, as the data repo all have hardcoded dates, regardless of when DE posts the data. It just always starts at 25 Mar 2019.
My mistake was letting the Date constructor do the job, and it polluted the date with timezone stuff. By using the local time, and then setting the date information, this is fixed already.


RRTMGP Dependence on MKL

This is mainly for @dr0cloud but @tclune might know of a good alternative as well.
Namely, it would be nice for portability reasons to remove the requirement of MKL in RRTMGP. For example, the Docker build image for GEOS has MKL and it's responsible for about 2 GB! Obviously, we'd want to use the MKL if found, but if not, if we could failover to something as simple as Fortran's random_number() that'd be good.

It should be straightforward to provide a substitute interface if MKL is not found.


Correct broken link to Intaact API Documentation

It appears that Intaact Wiki no longer exists at that url.

Thank you @mciocchi


Trailing Cursor

closes : #335
I have created a custom cursor. later I added a trailing effect to the custom cursor. And also updated CSS styles for optimal user experiences.
https://github.com/HimanshuNarware/CareerZunction_Intern/assets/125206920/edd63cac-4f8c-47ca-88ca-c405be826c45

@HimanshuNarware please review and merge this PR

@HimanshuNarware please review and merge this PR

Can you change the cursor to pointer type when it hovers over the clickable button?

@Shubh942 I have updated the cursor please review it
https://github.com/HimanshuNarware/CareerZunction_Intern/assets/125206920/33e2e007-b81b-46b2-961d-cb0ded9daeef

Also add the I type cursor when text field is hovered.

You can see it on contact us page.

@Shubh942 I have updated the cursor please review it and if it aligns with the changes requested then merge the PR.
https://github.com/HimanshuNarware/CareerZunction_Intern/assets/125206920/ba21afda-0912-42c9-a4c4-c92131607578

@Shubh942 please review this PR


Make firewalld changes effective on active config

Currently changes are not made to the active config, so firewalld needs to be restarted in order make the firewall changes.  Adding "immediate: true" removes the need for the service restart.  This also fixes the name of the task in the neutron role.

LGTM


Mirroring fails unless Nuget.Common is added explicitly

I was trying to set up Nuget.Org mirroring and the MirroringService was throwing an exception every time a request was made that "Nuget.Common 4.7.0.x" was missing.
I found this to be an issue when trying to set up the server from scratch. I built the source in Visual Studio and ran once, then disabled the Nuget.Org feed in VS2017 and enabled the read through caching. The app would then throw an exception on line 71 of MirroringService.cs (this is from memory). Problem is that I now have that package cached locally and so can't recreate the issue.
My fix was pretty simple; if I add the Nuget.Common.4.7.0.nupkg to both the Baget and BaGet.Core projects, the pass through cashing now works first time. It's such a small change, but it seems to make the server happy.
I have a branch with the fix in it (and also the appsetting.json was changed to meet our needs, so I won't do a pull request from that branch...) It's probably worth adding that in though, as it wasn't obvious as to what was failing until I stepped through the code.
https://github.com/memsom/BaGet/tree/Fixes/make_readthrough_work

Hey, I'd like to understand the issue a little bit better before I add a reference to NuGet.Common. Would you be able to give me the full exception? You should be able to clear your local NuGet fallback by deleting the folder at C:\Users\<username>\.nuget\packages\<id>\<version>\ and launching a new instance of BaGet. Thanks!

I haven't been able to reproduce this. If anyone else runs into this, please let me know and we can reopen this issue.


Crash: document.body is null (edge case)

An edge case:
When omitting both <head> and <body> (technically valid, see the spec), document.body can be null, causing Deku to crash on addNativeEventListeners().
Solution
Attach the events to document instead of document.body.

My initial solution was to attach events to document.documentElement (AKA <html) instead, considering

An HTML document always has a root html element, even if the string  doesn't appear anywhere in the markup. - the spec

but for some reason that only worked for the initial events added and afterwards just silently failed for some reason. Hmm.
Also created a PR for this: #204

Fixed in #204


Allow for Nokogiri versions > 1.5.0

It doesn't really make sense to lock down the host app to Nokogiri 1.5.0 when nothing in the gem requires that specific version.

The build on this PR failed because the gem still supports ruby 1.8.7. Is that still a requirement?

Closing this due to inactivity.


DatePicker could animate the Month label's color

This does not appear to be a feature of the Material Design spec ...
Fading the Month title as it's dragged away from the center of the PageableList seems like a nice flourish.

cc @yjbanov in case you are interested in doing this. Should be relatively easy.

It seems unlikely that we're going to address this in the foreseeable future.

A significant update to the date/time picker widgets is underway per https://material.io/components/pickers/; we hope to land it in January/Februrary of 2020.
I'm going to close this issue, since we're planning to (just) build what's in the spec.
CC @darrenaustin


Glow Style & Life bar

Glow style beside 0 it's not showing through wall even if occlusion on.
Life bar it`s everytime full even if you hit the enemy.

Hello! You can use Chams Health based until this is fixed. Its full chams, but this still shows health.

I know bud. I'm just saying where are the bugs. Also the HP and ARMOR ar not working proper. For example if i hit him 2 times it`s saying 96, 98, 86 does not do anything else. It's not showing the true life of the enemy.

Health & armor bars are fixed. Glow styles are managed by game so can't fix it right now.


useSchema function should accept an Array of FormKitSchemaNodes as well.

Describe the feature
After trying to build my own Input Library I found two smaller issues/missing features:
First of all I think the useSchema function should accept an Array of FormKitSchemaNodes as well, since it can be possible to have more than one direct child schemes. Probably even better would be to change the FormKitInputSchema type to include FormKitSchemaNode[] as well.
Code i'm talking about: https://github.com/formkit/formkit/blob/master/packages/inputs/src/compose.ts#L115
Second thing: I think the useSchema function as well as the localize should be in an extra package to make it easier to use for people who want to build input libraries, as these two function are fairly common to be used. localize could probably also be a good fit for the @formkit/utils repo.

Thanks for the suggestion. I agree that we should come up with a way to accept an array of schema nodes for useSchema 👍
Is there a reason that localize should be moved to utils vs keeping it in inputs? FWIW it actually cannot be moved to utils because @formkit/utils is at the root of the whole dependency graph, and localize requires some typings from @formkit/core — so that would be circular. My hope is that the inputs package would be that extra package you're describing, a self-contained project of inputs and utilities for building inputs.

Side note, I'd be really interested to hear your general feedback on building your own input library @kgierke. Feel free to DM me in discord (justin-schroeder#2348)

Is there a reason that localize should be moved to utils vs keeping it in inputs?

No the reasoning was to only have one dependency for building libraries (@formkit/core) but I think using (@formkit/inputs) should also be fine.
I will drop you a message throughout the weekend on discord.

I actually think I've changed my mind on this — having a single root element allows us to provide simple extension capability via extends() — this would not be possible without a root node. That said, you can still use a "fragment" style node:
{
  $el: null,
  children: [
    // add multiple here
  ]
}


Consider using one export

👋
Hey, since this library has only one function, maybe it's a good idea to export it like this:
module.exports = highlight;

It will be possible to use imports this way:
const highlight = require('sql-highlight');
// or
import highlight from 'sql-highlight';

Using { highlight } in imports gives me false expectations that there are more functions inside while there is only one.
What do you think?

I think that would make sense. I don't plan to add new features to this library any time soon, so the API shouldn't be changing further in the future. The question is if this change should be backwards compatible, ie. supplying both a default and named export.
I think something like the following might be in order
module.exports = highlight
module.exports.highlight = highlight

Any thoughts?

@scriptcoded I think, it's perfectly fine to make it backwards compatible and deprecate or even change to ES module export in next major version 😉

@vladshcherbin :+1: Sounds good. I'll see if I get time to do this tomorrow.

Resolved in 80bb46617704e87c2d4cfa54ccb7ecd8dab1a486. I'll make sure to release this later today.


Nffs example

I have created a NFFS file system example for NRF52 devices. This example creates a file system in flash if it does not already exist and writes a file to it. For each target power cycle the file will be read and a counter in the file incremented. Hopefully, this example will make using NFFS much easier.

I believe that you'll have to fix your coding style first before this can be merged.
ref: http://docs.zephyrproject.org/contribute/contribute_guidelines.html#coding-style

@koffes First things first, you need checkpatch to pass. Try running it locally or check the errors generated by Shippable.

@koffes Also, the commit message must be preceded by a prefix. For example:
samples: fs: Add an NFFS sample

Thank you for the feedback. I am held up by a few other tasks now, but will address these issues as soon as possible.

@koffes this PR need to use cmake instead of make now.

Please rebase you work on top of the master - looks like you start from quite old master.

Thank you for your comments. Yes, this work was done some time ago and consequently, a lot of alterations has to be done. Unfortunately, my efforts has been directed elsewhere. Perhaps someone else can continue on this PR?

@koffes - unfortunately we all have lot of works, so I don't expect that someone else will take over the PR. But thank for communicate this early.

outdated, closing. Reopen with updates/rebase if needed.


Use btree to search fields in DFSchema

Which issue does this PR close?

Part of #7698.
Rationale for this change

Current DFSchema implementation uses vector to operate with fields. It makes search of a column by name algorithmically complex.
What changes are included in this PR?

Use BTreeMap to index field qualifiers.
Are these changes tested?

Are there any user-facing changes?
No

Is there a reason to use a b-tree ( $\mathrm{O}(\log{n})$ ) vs a hash map ( $\mathrm{O}(1)$ )?

I plan to review this and related PRs tomorrow morning

Related comment: https://github.com/apache/arrow-datafusion/issues/7698#issuecomment-1781787244

Is there a reason to use a b-tree ( O(logn) ) vs a hash map ( O(1) )?

Using b-tree we can query all fields matching to a "prefix" in one O(logn) hop (column.*.*.*, column.table.*.*, column.table.schema.*, column.table.schema.catalog).
It is used in fields_with_unqualified_name method to query all fields by specific name.

Is there a reason to use a b-tree ( O(logn) ) vs a hash map ( O(1) )?

Using b-tree we can query all fields matching to a "prefix" in one O(logn) hop (column.*.*.*, column.table.*.*, column.table.schema.*, column.table.schema.catalog). It is used in fields_with_unqualified_name method to query all fields by specific name.

Is that such a common operation that it is worth to keep an expensive index on every single schema in the query graph? I think the planner that resolves these names can easily order the fields and build this index locally.

Made a benchmark
Baseline - Data Fusion 32 (a0c5affca271d67980286cb2ae08ea8eec75a326)
index_of_column_by_name 10
                        time:   [11.323 ns 11.325 ns 11.328 ns]
                        change: [-0.0714% +0.3045% +0.6180%] (p = 0.09 > 0.05)
                        No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  1 (1.00%) high severe

index_of_column_by_name 20
                        time:   [4.1947 ns 4.1963 ns 4.1981 ns]
                        change: [-2.1038% -1.5880% -1.2714%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

index_of_column_by_name 50
                        time:   [34.841 ns 34.851 ns 34.871 ns]
                        change: [-0.2590% -0.1783% -0.0774%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 13 outliers among 100 measurements (13.00%)
  1 (1.00%) low severe
  4 (4.00%) low mild
  5 (5.00%) high mild
  3 (3.00%) high severe

index_of_column_by_name 100
                        time:   [88.736 ns 88.927 ns 89.119 ns]
                        change: [+4.6597% +5.0086% +5.3786%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) low mild
  4 (4.00%) high mild

index_of_column_by_name 500
                        time:   [403.20 ns 403.70 ns 404.29 ns]
                        change: [+1.5771% +1.6483% +1.7326%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  3 (3.00%) low mild
  4 (4.00%) high severe

index_of_column_by_name 1000
                        time:   [909.73 ns 910.11 ns 910.48 ns]
                        change: [-2.0626% -1.6648% -1.3588%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild

DFSchema::new 10        time:   [328.91 ns 329.14 ns 329.38 ns]
                        change: [-0.8652% -0.8013% -0.7418%] (p = 0.00 < 0.05)
                        Change within noise threshold.

DFSchema::new 20        time:   [725.37 ns 725.93 ns 726.56 ns]
                        change: [+0.4542% +0.5177% +0.5841%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  2 (2.00%) high severe

DFSchema::new 50        time:   [1.6864 µs 1.6892 µs 1.6924 µs]
                        change: [+1.3382% +1.4765% +1.6362%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe

DFSchema::new 100       time:   [3.4953 µs 3.4965 µs 3.4978 µs]
                        change: [-3.4655% -3.2889% -3.1317%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low severe
  1 (1.00%) high mild
  2 (2.00%) high severe

DFSchema::new 500       time:   [23.470 µs 23.477 µs 23.485 µs]
                        change: [-1.8427% -1.7821% -1.7253%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe

DFSchema::new 1000      time:   [45.504 µs 45.515 µs 45.528 µs]
                        change: [-2.8088% -2.6555% -2.4933%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe

cargo bench  172.06s user 0.50s system 153% cpu 1:52.07 total

This PR
index_of_column_by_name 10
                        time:   [33.607 ns 33.663 ns 33.717 ns]
                        change: [+196.44% +196.92% +197.41%] (p = 0.00 < 0.05)
                        Performance has regressed.

index_of_column_by_name 20
                        time:   [21.509 ns 21.522 ns 21.535 ns]
                        change: [+412.46% +412.90% +413.42%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  1 (1.00%) high severe

index_of_column_by_name 50
                        time:   [43.590 ns 43.651 ns 43.713 ns]
                        change: [+24.956% +25.143% +25.325%] (p = 0.00 < 0.05)
                        Performance has regressed.

index_of_column_by_name 100
                        time:   [68.349 ns 68.373 ns 68.401 ns]
                        change: [-23.444% -23.221% -22.998%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  2 (2.00%) low mild
  4 (4.00%) high mild
  1 (1.00%) high severe

index_of_column_by_name 500
                        time:   [65.428 ns 65.444 ns 65.461 ns]
                        change: [-83.785% -83.768% -83.752%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) low severe
  1 (1.00%) low mild
  4 (4.00%) high mild
  3 (3.00%) high severe

index_of_column_by_name 1000
                        time:   [74.167 ns 74.174 ns 74.183 ns]
                        change: [-91.855% -91.850% -91.844%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
  3 (3.00%) high mild
  3 (3.00%) high severe

DFSchema::new 10        time:   [956.63 ns 957.20 ns 957.81 ns]
                        change: [+190.77% +191.00% +191.28%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe

DFSchema::new 20        time:   [2.4375 µs 2.4384 µs 2.4393 µs]
                        change: [+235.82% +236.06% +236.36%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 7 outliers among 100 measurements (7.00%)
  4 (4.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe

DFSchema::new 50        time:   [6.5247 µs 6.5275 µs 6.5303 µs]
                        change: [+287.52% +288.07% +288.63%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  2 (2.00%) high mild
  1 (1.00%) high severe

DFSchema::new 100       time:   [15.298 µs 15.330 µs 15.368 µs]
                        change: [+337.14% +340.86% +347.06%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 15 outliers among 100 measurements (15.00%)
  4 (4.00%) low mild
  6 (6.00%) high mild
  5 (5.00%) high severe

DFSchema::new 500       time:   [92.211 µs 92.284 µs 92.361 µs]
                        change: [+292.82% +293.14% +293.47%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild

DFSchema::new 1000      time:   [204.70 µs 204.87 µs 205.05 µs]
                        change: [+349.22% +349.78% +350.32%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

cargo bench  252.05s user 1.60s system 150% cpu 2:48.82 total

Made a benchmark.
Baseline - Data Fusion 32 (a0c5aff)
index_of_column_by_name 10
                        time:   [11.323 ns 11.325 ns 11.328 ns]
                        change: [-0.0714% +0.3045% +0.6180%] (p = 0.09 > 0.05)
                        No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  1 (1.00%) high severe

index_of_column_by_name 20
                        time:   [4.1947 ns 4.1963 ns 4.1981 ns]
                        change: [-2.1038% -1.5880% -1.2714%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

index_of_column_by_name 50
                        time:   [34.841 ns 34.851 ns 34.871 ns]
                        change: [-0.2590% -0.1783% -0.0774%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 13 outliers among 100 measurements (13.00%)
  1 (1.00%) low severe
  4 (4.00%) low mild
  5 (5.00%) high mild
  3 (3.00%) high severe

index_of_column_by_name 100
                        time:   [88.736 ns 88.927 ns 89.119 ns]
                        change: [+4.6597% +5.0086% +5.3786%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 5 outliers among 100 measurements (5.00%)
  1 (1.00%) low mild
  4 (4.00%) high mild

index_of_column_by_name 500
                        time:   [403.20 ns 403.70 ns 404.29 ns]
                        change: [+1.5771% +1.6483% +1.7326%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  3 (3.00%) low mild
  4 (4.00%) high severe

index_of_column_by_name 1000
                        time:   [909.73 ns 910.11 ns 910.48 ns]
                        change: [-2.0626% -1.6648% -1.3588%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) high mild

DFSchema::new 10        time:   [328.91 ns 329.14 ns 329.38 ns]
                        change: [-0.8652% -0.8013% -0.7418%] (p = 0.00 < 0.05)
                        Change within noise threshold.

DFSchema::new 20        time:   [725.37 ns 725.93 ns 726.56 ns]
                        change: [+0.4542% +0.5177% +0.5841%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 6 outliers among 100 measurements (6.00%)
  1 (1.00%) low mild
  3 (3.00%) high mild
  2 (2.00%) high severe

DFSchema::new 50        time:   [1.6864 µs 1.6892 µs 1.6924 µs]
                        change: [+1.3382% +1.4765% +1.6362%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  1 (1.00%) high mild
  1 (1.00%) high severe

DFSchema::new 100       time:   [3.4953 µs 3.4965 µs 3.4978 µs]
                        change: [-3.4655% -3.2889% -3.1317%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low severe
  1 (1.00%) high mild
  2 (2.00%) high severe

DFSchema::new 500       time:   [23.470 µs 23.477 µs 23.485 µs]
                        change: [-1.8427% -1.7821% -1.7253%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 6 outliers among 100 measurements (6.00%)
  3 (3.00%) high mild
  3 (3.00%) high severe

DFSchema::new 1000      time:   [45.504 µs 45.515 µs 45.528 µs]
                        change: [-2.8088% -2.6555% -2.4933%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 5 outliers among 100 measurements (5.00%)
  4 (4.00%) high mild
  1 (1.00%) high severe

cargo bench  172.06s user 0.50s system 153% cpu 1:52.07 total

This PR
index_of_column_by_name 10
                        time:   [33.607 ns 33.663 ns 33.717 ns]
                        change: [+196.44% +196.92% +197.41%] (p = 0.00 < 0.05)
                        Performance has regressed.

index_of_column_by_name 20
                        time:   [21.509 ns 21.522 ns 21.535 ns]
                        change: [+412.46% +412.90% +413.42%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 6 outliers among 100 measurements (6.00%)
  2 (2.00%) low mild
  3 (3.00%) high mild
  1 (1.00%) high severe

index_of_column_by_name 50
                        time:   [43.590 ns 43.651 ns 43.713 ns]
                        change: [+24.956% +25.143% +25.325%] (p = 0.00 < 0.05)
                        Performance has regressed.

index_of_column_by_name 100
                        time:   [68.349 ns 68.373 ns 68.401 ns]
                        change: [-23.444% -23.221% -22.998%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  2 (2.00%) low mild
  4 (4.00%) high mild
  1 (1.00%) high severe

index_of_column_by_name 500
                        time:   [65.428 ns 65.444 ns 65.461 ns]
                        change: [-83.785% -83.768% -83.752%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 10 outliers among 100 measurements (10.00%)
  2 (2.00%) low severe
  1 (1.00%) low mild
  4 (4.00%) high mild
  3 (3.00%) high severe

index_of_column_by_name 1000
                        time:   [74.167 ns 74.174 ns 74.183 ns]
                        change: [-91.855% -91.850% -91.844%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 8 outliers among 100 measurements (8.00%)
  1 (1.00%) low severe
  1 (1.00%) low mild
  3 (3.00%) high mild
  3 (3.00%) high severe

DFSchema::new 10        time:   [956.63 ns 957.20 ns 957.81 ns]
                        change: [+190.77% +191.00% +191.28%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  3 (3.00%) high mild
  1 (1.00%) high severe

DFSchema::new 20        time:   [2.4375 µs 2.4384 µs 2.4393 µs]
                        change: [+235.82% +236.06% +236.36%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 7 outliers among 100 measurements (7.00%)
  4 (4.00%) low mild
  1 (1.00%) high mild
  2 (2.00%) high severe

DFSchema::new 50        time:   [6.5247 µs 6.5275 µs 6.5303 µs]
                        change: [+287.52% +288.07% +288.63%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 4 outliers among 100 measurements (4.00%)
  1 (1.00%) low mild
  2 (2.00%) high mild
  1 (1.00%) high severe

DFSchema::new 100       time:   [15.298 µs 15.330 µs 15.368 µs]
                        change: [+337.14% +340.86% +347.06%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 15 outliers among 100 measurements (15.00%)
  4 (4.00%) low mild
  6 (6.00%) high mild
  5 (5.00%) high severe

DFSchema::new 500       time:   [92.211 µs 92.284 µs 92.361 µs]
                        change: [+292.82% +293.14% +293.47%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 2 outliers among 100 measurements (2.00%)
  2 (2.00%) low mild

DFSchema::new 1000      time:   [204.70 µs 204.87 µs 205.05 µs]
                        change: [+349.22% +349.78% +350.32%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) high mild

cargo bench  252.05s user 1.60s system 150% cpu 2:48.82 total

Could you please add summary?
It seems that btree provides an advantage with 100+ cols

Thank you -- I plan to review this more carefully tomorrow

Thank you -- I plan to review this more carefully tomorrow

@alamb I think it's a good idea to introduce user defined cacheprovider for both DFSchema and arrow Schema. It will allow to take benefits from btree and avoid building it when is not necessary.
My assumption is that user knows when schema become invalid and can manage it invalidation from the cache


Validate Airgap HA helm chart installs

https://github.com/rancher/docs/pull/808/files

rancher/rancher:v2.1.0-rc2
No issues found during airgap HA installation.


Different default values for inherited structs

We're using a lot of bonded<T> to represent inheritance per https://microsoft.github.io/bond/manual/bond_cs.html#polymorphism
It would be very practical if in such scenarios you could "overload" the default value of the kind/type enum discriminator on the base struct.
Maybe something like:
enum Kind
{
    rectangle,
    circle,
    none
}

struct Shape
{
    0: Kind kind = none;
}

struct Rectangle: Shape
{
    base: kind = rectangle;
    0: int32 width;
    1: int32 height;
}

or
struct Rectangle: Shape
{
    kind: rectangle;
    0: int32 width;
    1: int32 height;
}

It would be great to add something like this. I use boost::mpl::map to assign the kind before publishing derived structs.


Improve discoverability in Entities view

Based on initial user feedback, a couple of issues we should address:

Show all policy tags function is not discoverable; would prefer to default to showing all policy tags and having option to hide the in-compliance tags.
"How do I sort and filter the Entities table to only the things I want to edit"; maybe solved by #50 and #51? Maybe remove "show values for this tag in the table" and instead implement a search filter that scans entity name, tag key & value?

bullet 1 - changed the default to show all tags for the entity
bullet 2 - fixed in #50 and #51


Add pmtiles source support (uses new expeimental maplibre-native with pmtiles support)

This PR adds experimental pmtiles source support. It uses the maplibre-native changes from https://github.com/maplibre/maplibre-native/pull/2882 , which adds the support.
This is pins maplibre-native to
https://github.com/tdcosta100/maplibre-native/tree/5e9e6cc71f53a6f61a628af3e4f0485e15799405
The build adds this flag so maplibre-native will get built with pmtiles support
-DMLN_WITH_PMTILES=ON
To use pmtiles as a source, you would use this syntax
http/https
    "openmaptiles": {
      "type": "vector",
      "url": "pmtiles://https://wifidb.net/demo/pmtiles/sources/planetiler-openmaptiles-latest.pmtiles"
    },

local file
    "openmaptiles": {
      "type": "raster",
      "url": "pmtiles://file:///opt/basemaps/planetiler-openmaptiles-latest.pmtiles"
    },

Known issues.
Some of my older pmtiles were converted from mbtiles that did not have a min/max zoom. the older version of the pmtiles converter did not handle this well, but newer versions do. these older files seem to not work with the current experimental code. I assume changes will need to be made in the PR or my files need to be reconverted. that error looks like this

thank you!!


ocamlPackages.duppy: 0.9.2 -> 0.9.3

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/ocaml:duppy/versions.
meta.description for ocamlPackages.duppy is: Library providing monadic threads
meta.homepage for ocamlPackages.duppy is: https://github.com/savonet/ocaml-duppy
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.9.3 with grep in /nix/store/c2a3y7zj3wpx0vw6b6mxq3a814n5zw57-ocaml4.14.1-duppy-0.9.3
found 0.9.3 in filename of file in /nix/store/c2a3y7zj3wpx0vw6b6mxq3a814n5zw57-ocaml4.14.1-duppy-0.9.3

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
liquidsoap

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/c2a3y7zj3wpx0vw6b6mxq3a814n5zw57-ocaml4.14.1-duppy-0.9.3 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A ocamlPackages.duppy https://github.com/r-ryantm/nixpkgs/archive/daf4863891eadae16e0774d92ad503c5db29ffc3.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/c2a3y7zj3wpx0vw6b6mxq3a814n5zw57-ocaml4.14.1-duppy-0.9.3
ls -la /nix/store/c2a3y7zj3wpx0vw6b6mxq3a814n5zw57-ocaml4.14.1-duppy-0.9.3/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

liquidsoap
ocamlPackages.duppy

Maintainer pings
cc @dali99 for testing.

@ofborg build ocamlPackages.duppy liquidsoap


Inserting a date returns an error

Describe the bug
When trying to insert a date using the library, it returns the following error:
Steps to reproduce
import clickhouse_connect

client = clickhouse_connect.get_client(
    host='',
    user='default',
    password='',
    secure=True
)

# Create table with one string column
client.command("""
    CREATE OR REPLACE TABLE lms.test (
        my_string String,
        my_number UInt8,
        my_date Date
    ) ENGINE = MergeTree() ORDER BY tuple()
""")

# Insert one sample row
client.insert(
    'lms.test',
    [['Hello, ClickHouse!', 8, '2024-01-01']],
    column_names=['my_string', 'my_number', 'my_date']
)

Expected behaviour
It should just work
clickhouse-connect and/or ClickHouse server logs
Error serializing column `my_date` into data type `Date`
Traceback (most recent call last):
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/driver/transform.py", line 104, in chunk_gen
    col_type.write_column(data, output, context)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/datatypes/base.py", line 202, in write_column
    self.write_column_data(column, dest, ctx)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/datatypes/base.py", line 217, in write_column_data
    self._write_column_binary(column, dest, ctx)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/datatypes/temporal.py", line 47, in _write_column_binary
    column = [(x - esd).days for x in column]
               ~~^~~~~
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.date'
Traceback (most recent call last):
  File "/Users/pmusa/Coding/clickhouse/training/analytics/scripts/import clickhouse_connect.py", line 21, in <module>
    client.insert(
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/driver/client.py", line 609, in insert
    return self.data_insert(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/driver/httpclient.py", line 255, in data_insert
    response = self._raw_request(block_gen, params, headers, error_handler=error_handler, server_wait=False)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/driver/httpclient.py", line 436, in _raw_request
    error_handler(response)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/driver/httpclient.py", line 240, in error_handler
    raise ex
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/driver/transform.py", line 104, in chunk_gen
    col_type.write_column(data, output, context)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/datatypes/base.py", line 202, in write_column
    self.write_column_data(column, dest, ctx)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/datatypes/base.py", line 217, in write_column_data
    self._write_column_binary(column, dest, ctx)
  File "/Users/pmusa/Coding/python-venv/lib/python3.12/site-packages/clickhouse_connect/datatypes/temporal.py", line 47, in _write_column_binary
    column = [(x - esd).days for x in column]
               ~~^~~~~
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.date'

Configuration
Environment

clickhouse-connect version: 0.7.8
Python version: Python 3.12.7 (main, Oct  1 2024, 02:05:46) [Clang 15.0.0 (clang-15<IP_ADDRESS>)] on darwin
Operating system: MacOS

ClickHouse server
ClickHouse Cloud <IP_ADDRESS>09

The library doesn't automatically parse string values as dates (or date times), since there are many possible formats and determining the input string format and parsing to dates is expensive.
Accordingly, when inserting data, clickhouse-connect can recognize Python datetime.date and datetime.datetime values, and integer values that match the internal ClickHouse date value (days since Jan 1, 1970).  Otherwise it is the caller's responsibility to convert the insert data into ones of those formats.


Issues retrieving parallax x/y factors from a TiledLayer

While being able to retrieve other layer properties from my TiledLayers strangely enough TiledLayer.layer.parallaxX/Y have both always returned 0 for me, which is strange since the default values of the parallax scrolling factors are set to 1. Inside of my .tmx map file I can see the parallax scale factors set for each of my layers and it seems to be correct

Hey
Thanks for reporting! I will have a look at it.
With kind regards,
TheBoneJarmer

Hey
I just learned that I wrongly mapped the parallaxX and parallaxY attribute. Fucked that one up pretty good ghehe. Made a patch and hopefully within a few minutes the new NuGet package is available.  My apologies! And thank you for letting me know. I will correct that and send a new patch on your way. :)

The new NuGet has been published in the meantime. The new version is 3.2.3.

Tile/object layers are working like charms, awesome appreciate you fixing this 👍
( I think you just need to touch up on image layers, still getting 0 from both parallax values :P )

Hey
Glad to hear!! And thanks for pointing that one out. I made some changes on develop just now that fixes that, added support for the class attribute on a layer (heck, never knew it was possible lol) and done rid of some warnings. I'm cool with releasing another patch but if you don't need this asap I'd rather wait till I got a bunch of stuff again. D:
With kind regards,
TheBoneJarmer

A quick patch would be greatly appreciated around now but I understand that releasing small tiny minimal patches with very little changes isn't ideal, your call.

Than I'll do it. I was not sure you meant you just noticed or that you actually needed it right now. But it seems the latter is the case. Hence I just pushed out a new release. I already got a notification from TeamCity that the build succeeded so within a couple of minutes the NuGet package should be available. :)
Mind you, it is not a patch this time but a minor release because I changed the property type string to an enum as requested by someone else. You might need to change that as well.

Hey @Frankfires
Just to be certain, you mentioned things work flawlessly in the other issue. Does that mean this one is solved for you as well?
With kind regards,
TheBoneJarmer

Yes, I am now able to retrieve parallax values from image layers, thanks for the fix :D

Awesome 😎


Add animation to hover effect on Developer card

Description
Currently, when the developer card is hovered over by a mouse, it shows a link to go to the profile page. We had a suggestion to add smooth transitions to it.
Acceptance criteria

Make a smooth transition to show a link to go to profile page when Developer card is hovered. (Feel free to use your creativity)
The theme changes color should apply as well
Add a GIF to show the changes

Hi @subeshb1 ,  can I help to add smooth transition effects?

hey can i contribute to this

I assigned this to @sadakchap

Hi @Malvika18 sorry this was assigned. You looked at others issues: https://github.com/subeshb1/developer-community-stats/issues?q=is%3Aissue+is%3Aopen+label%3A"help+wanted"
or you can create your own by providing suggestions

Hi @subeshb1 , I tried these 2 transition -

this is simple smooth transition

this transition has a little zoom effect

Please, let me know which one should I implement?

This is great work @sadakchap! I like the first one :)

Fixed by #216


Show Popup Once Via Cookie?

Hi,
Is there anyway to make a notification only diplay once every 24 hours or set period of time?
Kind Regards

This is a control you should do the part, not the plugin.
thank you.

This is a control you should do, not the plugin.
thank you.


Are these libraries supported?

Hi!
Are these Python 3 libraries compatible with Nuitka?
OS
Shutil
Subprocess
Sys

You can use all Python library modules and all extension modules freely.

https://nuitka.net/doc/user-manual.html

Nuitka goes far beyond standard library, it's supposed to work with almost anything from PyPI, definitely working with AI stuff, PySide6, many GUI frameworks, database stuff, etc. since it's extremely compatible. It just currently doesn't allow code to access source code of compiled code, but we might add that in the future.


[Omen Rank Thingie] /Breed no longer working after most recent update. Same with /Hatch.

Describe the bug
Omens and all players are unable to use /breed. Even normal players, such as me, are unable to use /breed and even get a prompt saying 'you cannot use this command!', for Omens and everyone, it says the command simply does not exist. The same exists for /Hatch.
To Reproduce
Steps to reproduce the behavior:

Mod in Omen on yourself.
Use /breed 1 2
Use /hatch too.
 Not that the command doesn't exist altogether.
Username:
BUGJUUICER/BUG-JUICER#0940
Server name (all applicable):
All servers don't have breed or hatch working, far as I'm aware.

Thank you for the report, I will investigate and update as I get new information.

Both commands still don't work, at least on Atlas, even though they have been updated according to a recent changelog (24/11/2022 21:28).

Closing due to command being changed and worked on.


Add LookAt function to GizmoVisual class

🎉 New feature
Summary
The LookAt function updates the rotation visuals in a GizmoVisual so that they always face the specified position. This is used by TransformController so that the rotation visuals (handles) are always positioned in front of the attached object w.r.t the camera so that they are easy to click on by the mouse.
Checklist

[x] Signed all commits for DCO
[x] Added tests
[ ] Added example and/or tutorial
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] Consider updating Python bindings (if the library has them)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

Can we merge this after Harmonic?

Can we merge this after Harmonic?

yes, no hurry


[New game]: Add Go Game

🎮 Game Request
Objective:
The primary goal in Go is to control more territory on the board than your opponent by surrounding empty points and capturing their stones.
How to Achieve It:

Territory: Players aim to surround and secure as much empty space (territory) on the board as possible using their stones.
Capturing: Stones can be captured by completely surrounding them with your own stones, thereby removing them from the board and gaining points.
Winning Condition: At the end of the game, players count the points based on the territory they control and the stones they have captured. The player with more points wins.

Point down the features
Territory Points:

Territory points are the primary way to score in Go. They represent the empty intersections (points) of the board that are completely surrounded by one player's stones.
Each empty point enclosed by a player's stones counts as one point towards their territory at the end of the game.

Captured Stones:

Captured stones are the stones of the opponent that a player successfully surrounds and removes from the board.
Each captured stone counts as one point towards the player's score at the end of the game.

Komi:

Komi is a predetermined number of points added to the score of the player who plays second (typically White) to compensate for the advantage of playing first (Black).
Komi is usually around 6.5 to 7.5 points in professional games and helps to balance the game.

Dead Stones:

Dead stones are stones that are considered captured or surrounded and are no longer in play.
Dead stones do not count towards the owner's territory or score.

Endgame and Counting:

The game ends when both players pass consecutively, signaling that no more moves are beneficial.
After the game ends, players together determine which stones are dead (captured) and remove them from the board.
Players then count the number of empty points they have surrounded (territory points), add the number of stones they have captured, and subtract the number of their own stones that have been captured by the opponent.
The player with the higher total of territory points, captured stones, and komi wins the game.

Screenshot:-

Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @AsmitaMishra24 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

Hey @AsmitaMishra24!
We are already having a similar game request in #4559 👀
Make sure you come up with a cool unique idea 😀
Waiting for your new game idea 💗.

Hey @AsmitaMishra24 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


POST JSON - Wrong content type

If I try to post JSON-Data with node-fetch-native, the "Content-Type" header is always set to
text/plain;charset=UTF-8
by "const extractContentType = (body, request)".
This can be a serious issue with some backend frameworks, that send "Bad Request" responses with missing or incorrect Content-Type ( "application/json" is needed here ).
This is also a serious issue with the useFetch(...)-Wrapper ( the new default for fetching data ) in the new Version 3 of the popular Nuxt framwork ( wich uses node-fetch-native).

Thank you!

Hi. I cannot reproduce this issue anymore:

Also on server-side when testing https://github.com/unjs/ofetch/issues/88#issuecomment-1203578878 seems undici issue was the cause.
If you still got the issue, please ping me to reopen and investigate together.


Added docker-compose.yml and Dockerfile files

Hi, I'm added to this repository simple Dockerfile and docker-compose.yml files.

thank you


DOES NOT WORK - NO MAPS - HELP ME PLX.

HELLO,  SOMEONE HELP ME WHY IT DOES NOT WORK ??  :+1:  :+1:

Actually neither version 0.1.3 nor v0.1.2 are showing UI.
On a fresh win 10 64bit installation i tryied to run 0.1.3 First and it didn't showed up then tryied 0.1.2 and also this isn't working properly.

This happened to me too. The problem were spaces in the folder name of the program. Try to remove any spaces in the folder name if there are any and please tell us if this helped.


Update GraphMakie.jl

This is based on a snipped by @elkaps. @elkaps, i couldn't find your email so the co-author thingy didn't seem to work... Let me know how you want to handle the authorship!

@SimonDanisch I'm happy that you can make use of the code. I added an email address to my profile but if it's any inconvenience please don't bother with the authorship.


⚠ gorzdrav.org has degraded performance

In 2c527b2, gorzdrav.org (https://gorzdrav.org) experienced degraded performance:

HTTP code: 200
Response time: 6287 ms

Resolved: gorzdrav.org performance has improved in 348b052.


Post Download Failing

Description
Post Download option will fail for posts without pictures. We can either disable downloads for such posts or find a workaround.
Steps to reproduce
click download on posts without picture just caption.
Screenshots

Desktop (please complete the following information)
No response
Smartphone (please complete the following information)
No response
Additional information
Please clarify your approach to this problem (you'll disable the button or do something else?)

Hey @narayan954, can you assign me this bug, and also i am seeing a login page and trying to sign-up but firebase is giving OPERATION_NOT_ALLOWED, can you please specify the login process too?

Hey @narayan954, can you assign me this bug, and also i am seeing a login page and trying to sign-up but firebase is giving OPERATION_NOT_ALLOWED, can you please specify the login process too?

@mughalfrazk Yes you can work on this bug. About the error you're facing... I've mentioned about it in the discord channel. I've disabled it for the production version.Google OAuth and Facebook OAuth are working fine and you can login using them for now.

@mughalfrazk Yes you can work on this bug. About the error you're facing... I've mentioned about it in the discord channel. I've disabled it for the production version.Google OAuth and Facebook OAuth are working fine and you can login using them for now.

@narayan954 I am getting this when i am trying facebook or google login, and i am running it on localhost:3000. I am not familiar with the discord discussion, can you add me to that channel?

Hi, are you not a participant of GSSOC 23 ? Discord discussion is exclusive to the program participants.
About the error... I dont think you should be facing that, the domain you're telling localhost is an authorized one. All ports are authorized as well. Did you modify something in the oauth?

No i am not part of GSSOC 23, do i need to?
found the issue, Apparently <IP_ADDRESS> is not authorized but localhose is.

No i am not part of GSSOC 23, do i need to? found the issue, Apparently <IP_ADDRESS> is not authorized but localhost is.

Actually this project is currently a part of GSSOC, but it's okay if you wish to contribute :)
Yes, <IP_ADDRESS> is not in the list... adding.....