Adds a check on version

As @mandarjog pointed out. We should check the version we get from curl.

Jenkins job manager/presubmit passed

Jenkins job manager/e2e-smoketest passed


WRONGPASS invalid username-password pair or user is disabled in juicefs logs

What happened:
We perform git clone of a large opensource codebase with hundres of thousands of files into a juicefs filesystem. The checkouts fail towards the end with the following git error:
fatal: cannot pread pack file: Input/output error fatal: fetch-pack: invalid index-pack output
In the juicefs client logs, there are multiple occurrences of the following:
2024/09/03 15:51:41.986960 juicefs[10329] <ERROR>: error: WRONGPASS invalid username-password pair or user is disabled.
goroutine 16556954 [running]:
runtime/debug.Stack()
	/usr/local/go/src/runtime/debug/stack.go:24 +0x64
github.com/juicedata/juicefs/pkg/meta.errno({0x3ccef20, 0x400296c1d0})
	/home/ubuntu/juicefs/pkg/meta/utils.go:123 +0xa0
github.com/juicedata/juicefs/pkg/meta.(*redisMeta).doRead(0x40018528c0, {0x3d0c418, 0x40014d3040}, 0x40028f1f80?, 0x10?)
	/home/ubuntu/juicefs/pkg/meta/redis.go:2201 +0x98
github.com/juicedata/juicefs/pkg/meta.(*baseMeta).Read(0x400006ca08, {0x3d0c418, 0x40014d3040}, 0xa8fc, 0x0, 0x40028f1c98)
	/home/ubuntu/juicefs/pkg/meta/base.go:1407 +0x224
github.com/juicedata/juicefs/pkg/vfs.(*sliceReader).run(0x4000db8480)
	/home/ubuntu/juicefs/pkg/vfs/reader.go:173 +0x1d0
created by github.com/juicedata/juicefs/pkg/vfs.(*fileReader).newSlice in goroutine 16556949
	/home/ubuntu/juicefs/pkg/vfs/reader.go:327 +0x2b8 [utils.go:123]
2024/09/03 15:51:41.987871 juicefs[10329] <ERROR>: error: WRONGPASS invalid username-password pair or user is disabled.
goroutine 16556959 [running]:
runtime/debug.Stack()
	/usr/local/go/src/runtime/debug/stack.go:24 +0x64
github.com/juicedata/juicefs/pkg/meta.errno({0x3ccef20, 0x400296c290})
	/home/ubuntu/juicefs/pkg/meta/utils.go:123 +0xa0
github.com/juicedata/juicefs/pkg/meta.(*redisMeta).doRead(0x40018528c0, {0x3d0c418, 0x40014d3040}, 0x40028f1f80?, 0x10?)
	/home/ubuntu/juicefs/pkg/meta/redis.go:2201 +0x98
github.com/juicedata/juicefs/pkg/meta.(*baseMeta).Read(0x400006ca08, {0x3d0c418, 0x40014d3040}, 0xa8fc, 0x0, 0x40028f1db8)
	/home/ubuntu/juicefs/pkg/meta/base.go:1407 +0x224
github.com/juicedata/juicefs/pkg/vfs.(*sliceReader).run(0x4000db8720)
	/home/ubuntu/juicefs/pkg/vfs/reader.go:173 +0x1d0
created by github.com/juicedata/juicefs/pkg/vfs.(*fileReader).newSlice in goroutine 1
	/home/ubuntu/juicefs/pkg/vfs/reader.go:327 +0x2b8 [utils.go:123]
2024/09/03 15:51:43.157841 juicefs[10329] <ERROR>: error: WRONGPASS invalid username-password pair or user is disabled.
goroutine 16558146 [running]:
runtime/debug.Stack()
	/usr/local/go/src/runtime/debug/stack.go:24 +0x64
github.com/juicedata/juicefs/pkg/meta.errno({0x3ccef20, 0x4000cdf310})
	/home/ubuntu/juicefs/pkg/meta/utils.go:123 +0xa0
github.com/juicedata/juicefs/pkg/meta.(*redisMeta).doGetAttr(0x40018528c0, {0x3d0d138, 0x40018d05a0}, 0xa8fc, 0x4001366b40)
	/home/ubuntu/juicefs/pkg/meta/redis.go:831 +0x174
github.com/juicedata/juicefs/pkg/meta.(*baseMeta).GetAttr(0x400006ca08, {0x3d0d138, 0x40018d05a0}, 0x2d7b840?, 0x4001366b40)
	/home/ubuntu/juicefs/pkg/meta/base.go:919 +0x254
github.com/juicedata/juicefs/pkg/vfs.(*VFS).GetAttr(0x4001874410, {0x3d0eb80, 0x40018d05a0}, 0xa8fc, 0xe8?)
	/home/ubuntu/juicefs/pkg/vfs/vfs.go:193 +0x104
github.com/juicedata/juicefs/pkg/fuse.(*fileSystem).GetAttr(0x40018b4d60, 0xfffff7fbd108?, 0x4000049a78, 0x40000499e8)
	/home/ubuntu/juicefs/pkg/fuse/fuse.go:101 +0x98
github.com/hanwen/go-fuse/v2/fuse.doGetAttr(0x400319be18?, 0x40000498c8)
	/home/ubuntu/go/pkg/mod/github.com/juicedata/go-fuse/v2@v2.1.1-0.20240425033113-7c40cb5eb3e9/fuse/opcode.go:301 +0x50
github.com/hanwen/go-fuse/v2/fuse.init.0.func1(0x40000498c8?, 0x23e2758?)
	/home/ubuntu/go/pkg/mod/github.com/juicedata/go-fuse/v2@v2.1.1-0.20240425033113-7c40cb5eb3e9/fuse/opcode.go:774 +0x50
github.com/hanwen/go-fuse/v2/fuse.(*Server).handleRequest(0x4000c10d00, 0x40000498c8)
	/home/ubuntu/go/pkg/mod/github.com/juicedata/go-fuse/v2@v2.1.1-0.20240425033113-7c40cb5eb3e9/fuse/server.go:708 +0x218
github.com/hanwen/go-fuse/v2/fuse.(*Server).loop(0x4000c10d00, 0x1)
	/home/ubuntu/go/pkg/mod/github.com/juicedata/go-fuse/v2@v2.1.1-0.20240425033113-7c40cb5eb3e9/fuse/server.go:681 +0xec
created by github.com/hanwen/go-fuse/v2/fuse.(*Server).readRequest in goroutine 16558145
	/home/ubuntu/go/pkg/mod/github.com/juicedata/go-fuse/v2@v2.1.1-0.20240425033113-7c40cb5eb3e9/fuse/server.go:414 +0x6c0 [utils.go:123]
2024/09/03 15:54:40.424246 juicefs[10329] <ERROR>: error: WRONGPASS invalid username-password pair or user is disabled.
goroutine 18947669 [running]:
runtime/debug.Stack()
	/usr/local/go/src/runtime/debug/stack.go:24 +0x64
github.com/juicedata/juicefs/pkg/meta.errno({0x3ccef20, 0x404e57da20})
	/home/ubuntu/juicefs/pkg/meta/utils.go:123 +0xa0
github.com/juicedata/juicefs/pkg/meta.(*redisMeta).doWrite(0x40018528c0, {0x3d0c418, 0x40014d3040}, 0xa8fd, 0x49, 0x0, {0x4003aab624?, 0x2?, 0x0?, 0x487344?}, ...)
	/home/ubuntu/juicefs/pkg/meta/redis.go:2207 +0x1f8
github.com/juicedata/juicefs/pkg/meta.(*baseMeta).Write(0x400006ca08, {0x3d0c418, 0x40014d3040}, 0xa8fd, 0x49, 0x0, {0x404dc57638?, 0x18d0690?, 0x40?, 0xac9f980?}, ...)
	/home/ubuntu/juicefs/pkg/meta/base.go:1475 +0x1c4
github.com/juicedata/juicefs/pkg/vfs.(*chunkWriter).commitThread(0x404d92d9e0)
	/home/ubuntu/juicefs/pkg/vfs/writer.go:200 +0x1dc
created by github.com/juicedata/juicefs/pkg/vfs.(*fileWriter).writeChunk in goroutine 1
	/home/ubuntu/juicefs/pkg/vfs/writer.go:270 +0x414 [utils.go:123]
2024/09/03 15:54:40.424304 juicefs[10329] <WARNING>: write inode:43261 error: input/output error [writer.go:207]
2024/09/03 15:54:40.424319 juicefs[10329] <ERROR>: write inode:43261 indx:73  input/output error [writer.go:211]

The WRONGPASS error seems to indicate that it is related to redis access but the juicefs mountpoint is fully accessible:
dd if=/dev/urandom of=dummy.bin bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 4.89751 s, 214 MB/s

and subsequently head-ing the file shows the binary data written
What you expected to happen:
Checkout should complete without errors.
How to reproduce it (as minimally and precisely as possible):
Clone an OSS project with many small files and long history (e.g. linux kernel, gcc or llvm) into a juicefs system with the mount flags detailed in the environment below.
Anything else we need to know?
Not sure how relevant but the EC2 clients that access the juicefs mount will be writing to the same volume but not the same set of files. Each client would write to its own subdirectory in the mount at any given time. Also, juicefs binary is running as root (via sudo)
Environment:

JuiceFS version (use juicefs --version) or Hadoop Java SDK version: arm64 1.2.0+2024-06-18.873c47b self compiled as static binary
Cloud provider or hardware configuration running JuiceFS:
AWS Graviton3 EC2 instance running juicefs version 1.2.0+2024-06-18.873c47b
with the following mount options:
juicefs mount --no-usage-report --writeback --no-syslog --background --cache-dir=/tmp/juicefs_cache --cache-size=1024000 --buffer-size=1024 --max-uploads=40 --log=/var/log/juicefs.log<EMAIL_ADDRESS>OS (e.g cat /etc/os-release):
PRETTY_NAME="Ubuntu 24.04.1 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.1 LTS (Noble Numbat)" VERSION_CODENAME=noble ...
Kernel (e.g. uname -a): Linux ip-10-252-53-17 6.8.0-1014-aws #15-Ubuntu SMP Thu Aug  8 20:05:03 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
Object storage (cloud provider and region, or self maintained): Amazon S3
Metadata engine info (version, cloud provider managed or self maintained): MemoryDB Redis 7.1
Network connectivity (JuiceFS to metadata engine, JuiceFS to object storage): Internal Amazon VPC
Others:

The logging suggests that you are using  a WRONG password to access Redis.

If it is a WRONG password for Redis/MemoryDB, then why is it we were still able to list the contents of the mountpoint and even write to it (see the output of dd command above)?
For example, when the MemoryDB password does expire (IAM authentication) we will get:
user@ec2-host:/test$ ls
ls: reading directory '.': Input/output error
user@ec2-host::/test$

but that wasn't the case when those WRONGPASS errors were appearing in the logs.
More on the IAM authentication method for MemoryDB:
We are using the IAM user of MemoryDB https://docs.aws.amazon.com/memorydb/latest/devguide/auth-iam.html where by a dynamically generated IAM token is used as the redis password.
From our discussions with AWS, while the IAM token is valid to use as a password within 15 minutes of obtaining it, once the connection to MemoryDB is established, it would remain active until the expiration of the IAM role of the credentials used. Additionally, we used an assumed role for which the credentials can last for a maximum of 12 hours because the instance profile credentials (from curl http://<IP_ADDRESS>/latest/meta-data/iam/security-credentials/MyEc2IAMRole/) is only valid for 6 hours.
We are generating the MemoryDB (which requires AWS SigV4 signing of various parameters) password from the following steps:

Using Python boto3 lib with the code sample here: https://docs.aws.amazon.com/memorydb/latest/devguide/LambdaMemoryDB.step2.html#LambdaMemoryDB.step2.1, modified to use boto3.assume_role() in the class like so:

        sts_client = boto3.client('sts')
        assumed_role = sts_client.assume_role(
            RoleArn=self.iam_role,
            DurationSeconds=self.role_duration,
            RoleSessionName='MyMemoryDBRole',
            )

        # Get the assumed role credentials
        self.credentials = assumed_role['Credentials']
        session = boto3.Session(
            aws_access_key_id=self.credentials['AccessKeyId'],
            aws_secret_access_key=self.credentials['SecretAccessKey'],
            aws_session_token=self.credentials['SessionToken'],
        )

before returning the credentials, we found, through trial and error as it was not documented, that we had to url-encode the resulting generated token-password like so (python from urllib.parse import quote):

return quote(signed_url.removeprefix("https://"), safe='')

the resulting Redis URI that is passed to the juicefs mount command is like so (the redis password is now an extremely long string):
rediss://redisuser:myrediscluster%2F%3FAction%3Dconnect%26User%3Dredisuser%26X-Amz-Algorithm%3DAWS4-HMAC-SHA256%26X-Amz-Credential%3DASIASTQGD3GMLGAIE903%252F20240903%252Faws-region%252Fmemorydb%252Faws4_request%26X-Amz-Date%3D20240903T113520Z%26X-Amz-Expires%3D900%26X-Amz-SignedHeaders%3Dhost%26X-Amz-Security-Token%3DFwoGZXIvYXdzELX%252F%252F%252F%252F%252F%252F%252F%252F%252F%252FwEaDEIVKGkLU4EVPByY9SK1AaBao61ZLOMnkL8h8tx3JD3MyZNnbKOW1j5iS%252Bf5n7DYGO7T9HGY8njpqjrfJQCJwo3J4aCxhMx8Ff4J3c%252FaaNPQ%252FBI%252BIoUzFgtHemzkYpAUKQOv1uQjHYNJIAETrse98%252FiM4f7pD%252BvB%252FNCueSkDDmXSKUB8G0pDc%252Fm4DTjbDfp21T8zdO%252Bu3rN%252BgR7YASokTIjD%252F34m%252By9pZ9ZgxVucODr7XgFVaD%252BgE1%252BgGsZt8KdRijrNumco%252BOjbtgYyLZlkPFWedwE92AU1UD5ooYzQedr9bc5dqpKptxwNjtyMVVy9XlFIVyALXSi0xA%253D%253D%26X-Amz-Signature%3Dc5dbbc42e96cc3f987e11747b479572b26ce90827d4262a4201fddb48102ecd5@clustercfg.myrediscluster.asdfghj.memorydb.aws-region.amazonaws.com:6379/0

Question:
Does JuiceFS open any more new connections to Redis at times other than the first time the mount, or does it reuse the connection established when the instant the mount connection was issued?
If JuiceFS does indeed try to establish new connections when read/writes increase, that could explain why the password is no longer valid, if more than 15 minutes have elapsed from the time the mount command was issued.
Is there a way we can make JuiceFS spawn multiple Redis connections (that are kept alive, so that MemoryDB doesn't terminate them) at the start so that read/write processes could just reuse these opened connections, rather than opening new ones on demand?
Thank you!
P.S. JuiceFS rocks! We see significant performance gains over AWS EFS.

The go-redis use a pool of connections to access MemoryDB, so the additional connections are created based on request/workload. A single connection can only handle a request/response at a time.
We could ask go-redis for this feature, but even with that, I think it will still be easy to run into this problem.


instance_group issue

Test on Triton server 20.03 and models  are trained in tensorflow1.13.1.
I want to set model1(only using GPU6) and model2(only using GPU7) because our models need large max_workspace_size_bytes to optimazation.
So I write config like:
model1:
instance_group [
{
count: 1
kind: KIND_GPU
gpus: [ 6 ]
}
]
model2:
instance_group [
{
count: 1
kind: KIND_GPU
gpus: [ 7 ]
}
]
When I Run like:
export CUDA_VISIBLE_DEVICES=6,7
trtserver --model-store=/data/  --grpc-infer-thread-count=16 --grpc-stream-infer-thread-count=16
Some issue log likes and how to fix this issue? Thanks.
Creating trt-gpu-serving-zxold-210-2003 ... done
Attaching to trt-gpu-serving-zxold-210-2003
trt-gpu-serving-zxold-210-2003    | 2020-05-28 19:19:45.059522: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.2
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.103087 18 metrics.cc:164] found 8 GPUs supporting NVML metrics
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.109310 18 metrics.cc:173]   GPU 0: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.115843 18 metrics.cc:173]   GPU 1: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.122639 18 metrics.cc:173]   GPU 2: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.130587 18 metrics.cc:173]   GPU 3: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.138430 18 metrics.cc:173]   GPU 4: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.146622 18 metrics.cc:173]   GPU 5: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.155051 18 metrics.cc:173]   GPU 6: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.165410 18 metrics.cc:173]   GPU 7: GeForce RTX 2080 Ti
trt-gpu-serving-zxold-210-2003    | I0528 11:19:45.166174 18 server.cc:120] Initializing Triton Inference Server
trt-gpu-serving-zxold-210-2003    | E0528 11:19:45.649714 18 server.cc:138] failed to enable peer access for some device pairs
trt-gpu-serving-zxold-210-2003    | E0528 11:19:45.660432 18 model_repository_manager.cc:1519] instance group coarse_lung_seg_0 of model coarse_lung_seg specifies invalid or unsupported gpu id of 6. The minimum required CUDA compute compatibility is 6.000000

When you set:
export CUDA_VISIBLE_DEVICES=6,7
Only GPU 6 and 7 are visible to Triton, but they appear as GPU 0 and GPU 1 (that is just how CUDA_VISIBLE_DEVICES works). So you must use 0 and 1 in your model configuration. The error message could be clearer so we will look into improving that.


Installation failure: limits.h: No such file or directory

From https://github.com/bpython/bpython/issues/880:
Installing in a linux OS
pip version 20.3.3
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/.venvs/bpython/bin/python /usr/local/bin/.venvs/bpython/lib/python3.8/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmp2q79061b
       cwd: /tmp/pip-install-9cqvozjs/cwcwidth
  Complete output (29 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.8
  creating build/lib.linux-x86_64-3.8/cwcwidth
  copying cwcwidth/__init__.py -> build/lib.linux-x86_64-3.8/cwcwidth
  warning: build_py: byte-compiling is disabled, skipping.

  running build_ext
  building 'cwcwidth._impl' extension
  creating build/temp.linux-x86_64-3.8
  creating build/temp.linux-x86_64-3.8/cwcwidth
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -D_XOPEN_SOURCE=600 -I/usr/local/bin/.venvs/bpython/include -I/usr/local/include/python3.8 -c cwcwidth/_impl.c -o build/temp.linux-x86_64-3.8/cwcwidth/_impl.o
  In file included from /usr/local/include/python3.8/Python.h:8,
                   from cwcwidth/_impl.c:28:
  /usr/local/include/python3.8/pyconfig.h:1612: warning: "_XOPEN_SOURCE" redefined
   #define _XOPEN_SOURCE 700

  <command-line>: note: this is the location of the previous definition
  In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h:7,
                   from /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h:34,
                   from /usr/local/include/python3.8/Python.h:11,
                   from cwcwidth/_impl.c:28:
  /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h:194:15: fatal error: limits.h: No such file or directory
   #include_next <limits.h>  /* recurse down to the real one */
                 ^~~~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for cwcwidth
  Building wheel for curtsies (PEP 517): started
  Building wheel for curtsies (PEP 517): finished with status 'done'
  Created wheel for curtsies: filename=curtsies-0.3.5-py3-none-any.whl size=35190 sha256=876c749990b52fb84c250a633adc5d3b6d3bf71ffc0576828b85e58e34d87632
  Stored in directory: /tmp/pip-ephem-wheel-cache-rgpw5ry5/wheels/5e/0c/93/071e8cd9549a478fe062b9d3f3680c69d857ca75286dd30b47
Successfully built curtsies
Failed to build cwcwidth
ERROR: Could not build wheels for cwcwidth which use PEP 517 and cannot be installed directly

@slmg which Linux OS is that?

Ah sorry just created https://github.com/sebastinas/cwcwidth/issues/2 for the same purpose.
The Linux OS I have been opperating in is the docker image python:3.8-slim-buster.

Ah sorry just created https://github.com/sebastinas/cwcwidth/issues/2 for the same purpose.
The Linux OS I have been opperating in is the docker image python:3.8-slim-buster.

No problem, thanks. I'll try to see what the issue is.

No problem, thanks. I'll try to see what the issue is.

The issue is that the docker image removes gcc and libc6-dev after building Python, so it's impossible to build C extensions afterwards. I will include wheels (maybe using https://github.com/joerick/cibuildwheel) in the next release so that it's not necessary to build the extension module during install.

The issue is that the docker image removes gcc and libc6-dev after building Python, so it's impossible to build C extensions afterwards. I will include wheels (maybe using https://github.com/joerick/cibuildwheel) in the next release so that it's not necessary to build the extension module during install.

Thanks that was a fast one :+1:
I confirm that installing gcc and libc6-dev allows the installation to operate normally. Yes a wheel would be more convenient and prevent future instance of users missing out compilation dependencies.
Thanks you for maintaining and sharing this work!

Thanks that was a fast one :+1:
I confirm that installing gcc and libc6-dev allows the installation to operate normally. Yes a wheel would be more convenient and prevent future instance of users missing out compilation dependencies.
Thanks you for maintaining and sharing this work!

Version 0.1.2 on PyPI  includes with wheels for Windows, Linux and Mac OS.

Version 0.1.2 on PyPI  includes with wheels for Windows, Linux and Mac OS.


Add self-defined Theorem-like environments

Thank you for building this plugin which really helps!
I wonder if it is possible to add self-defined Theorem-like environments, such as Figure, Table.
Now I changed the profile to implement this but I think this is not proper.
The markdown text looks like this

And the rendered result is here

Glad to hear you're enjoying this plugin!
Also thank you a lot for buying me a coffee, it means a lot to me.

This is a great idea. I will add this in a future release!
By the way, can I ask why you'd like to treat figures and tables as theorem callouts, rather than normal image embeds or markdown table? Maybe is it because you want links to be displayed like "Figure 1" or "Table 2"?

By wrapping tables and figures with callouts, I can write captions for them and reference them easily with this plugin.

I donated because this is really a helpful plugin! Thanks a lot for your contribution.


Files API Service Turndown, starting on July 28th!

Google will shut down the Files API as announced there :
https://cloud.google.com/appengine/docs/deprecations/files_api

Decommission Date
Decommission Event

May 20, 2015
No new applications will have access to the Files API. Applications created prior to May 20, 2015 will continue to run without any issues. However, we strongly encourage developers to start switching over to the Cloud Storage Client Library today.

July 28th, 2015
Starting at 12pm Pacific Time, the Files API will be temporarily shutdown for 24 hrs.

August 4th, 2015
We will permanently shut down the Files API at 12:00pm Pacific time.

Migrations strategies will depend on the use cases
Google recommends using the Google Cloud Storage and its client library
but...

Djangoappengine's file storage will be affected and won't work anymore!
https://github.com/django-nonrel/djangoappengine/blob/master/djangoappengine/storage.py

Take a look at #78


Use caching allocator from rmm instead of cub.

Codecov Report

Merging #6131 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #6131   +/-   ##
=======================================
  Coverage   78.52%   78.52%
=======================================
  Files          12       12
  Lines        3069     3069
=======================================
  Hits         2410     2410
  Misses        659      659

Continue to review full report at Codecov.

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


Streamflix provider not working while website works fine

Description
Streamflix provider shows an error that "No source found" but there are at least two sources available in the website directly and able to play the stream without any issues. In the app it shows the two sources and whichever source I choose it gives the same error.
Reproduction steps

Open Streamflix App
Choose SFlix provider
Choose any of the available video in there (e.g. Damsel or Origin)
Click Watch and choose any source (VidCloud or Upcloud)

App version
1.5.1
Operating system
Fire TV Stick 4K Max - Fire OS <IP_ADDRESS>
Logs
No response
Please confirm the following

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[X] If related to a provider, I have checked the site and it works, but not the app.

The videos servers have change their encryption method, as soon as I find a solution I will made a new release.

No, this is not fixed in the new version 1.5.2
Currently I'm working on app support for mobile and then I'll implement a new provider (probably SoraStream). So, until there is a definitive solution for the SFlix provider, I recommend you to use AnyMovie

Gotcha i will wait on Sorastream its a beast of a provider lol Any Movie provider does not have a lot of content as Streamflix did

AnyMovie is also not working at the moment all the movies go blank and a "timeout" flashes on the bottom middle of screen then vanishes

Two new providers added (SoraStream and SuperStream) on Release 1.6.1

SFlix and TMDb (ex SoraStream) fixed on Release 1.6.5


Why does the library need NSPhotoLibraryAddUsageDescription and NSPhotoLibraryUsageDescription?

I cannot understand why are needed both NSPhotoLibraryAddUsageDescription and NSPhotoLibraryUsageDescription?
I think should only need NSPhotoLibraryAddUsageDescription because does not read anything from the library.
Am I wrong?
Thank you.

@JorgeFrias this may help explain:

You need to declare both NSPhotoLibraryUsageDescription and NSPhotoLibraryAddUsageDescription to get it WORKS on both iOS 9, 10.3 and 11.
Technically it's different. I used to not declare NSPhotoLibraryUsageDescription, it works fine on iOS 9 and 11 but failed and crashed on iOS 10.3.
This is a really bad version controlling from Apple while higher version doesn't comply and support older version permission.

https://stackoverflow.com/a/51888019

Thanks @digitallysavvy for finding this. I believe your answer explains why I recommended to have both permissions in the Info.plist file. So I'll close this issue for now.

@JorgeFrias this may help explain:

You need to declare both NSPhotoLibraryUsageDescription and NSPhotoLibraryAddUsageDescription to get it WORKS on both iOS 9, 10.3 and 11.
Technically it's different. I used to not declare NSPhotoLibraryUsageDescription, it works fine on iOS 9 and 11 but failed and crashed on iOS 10.3.
This is a really bad version controlling from Apple while higher version doesn't comply and support older version permission.

https://stackoverflow.com/a/51888019

Thank you!


SAVED posts

Can this tool be used to download all my SAVED posts of my Instagram account? Thanks.

Yes, ofc you can!
First, you will need to log in to Instagram using instascrape login.
Then, use instascrape down saved to download all your saved posts.
All your saved posts will be downloaded to ./saved by default.
Feel free to ask me if you have any trouble using it!

Thanks so much! Do you know if it would save my posts in folders organized the way they are on my Instagram SAVED section? Thanks.

When running instascrape login I get "✖ cannot find 'csrftoken' from cookies".

Please see #2 for more details regarding the cannot find 'csrftoken' from cookies issue.

Thanks so much! Do you know if it would save my posts in folders organized the way they are on my Instagram SAVED section? Thanks.

No, it can't because instascrape will download the posts with the modification time automatically set to the creation time of the post, and the downloaded files will have the file name set to the post ID. Your file manager will sort them by their file name and modification time.

So I had a problem... Using this, instagram blocked my account after "suspicious activity" (and b/c I logged in from a site that looks like instagram...
Any solutions you think?

So I had a problem... Using this, instagram blocked my account after "suspicious activity" (and b/c I logged in from a site that looks like instagram...
Any solutions you think?

Could you provide a screenshot of the "suspicious activity" message Instagram sent you?

Could you provide a screenshot of the "suspicious activity" message Instagram sent you?

Well I didn't save it but found a similar one  from google images...
Perhaps what would solve this is to download in steps... so if I have 3,000 saved items. To download 300 and then wait 10 minutes or half hour or smthn... (I'm willing to download 300 every day even...)

Well I didn't save it but found a similar one  from google images...
Perhaps what would solve this is to download in steps... so if I have 3,000 saved items. To download 300 and then wait 10 minutes or half hour or smthn... (I'm willing to download 300 every day even...)

Any ideas?

Any ideas?

I'll just open a new issue I guess

I'll just open a new issue I guess


Allow to pass custom context value properties to getInterpreter on createReactContextHelpers

Hi there,
I am finding myself in a situation where I would like to add properties on the context value created with createReactContextHelpers.
In my case I am creating a form with rc-field-form and I would like to add it to the react context.
I tried to add it to the machine context, but when then trying to use it I am having issues. I think to do with the ability to pass refs around.
Aside from my quite specific scenario, do you think it would be good to be able to add other customer properties to the react context?
If the getInterpreter function was to returns something like: { interpreter, otherValues }.
What do you think? Should I attempt a PR?

Can you share what the ideal API for your use case would look like?
On Mon, May 24, 2021, 17:30 otrebu @.***> wrote:

Hi there,
I am finding myself in a situation where I would like to add properties on
the context value created with createReactContextHelpers.
In my case I am creating a form with rc-field-form and I would like to
add it to the react context.
I tried to add it to the machine context, but when then trying to use it I
am having issues. I think to do with the ability to pass refs around.
Aside from my quite specific scenario, do you think it would be good to be
able to add other customer properties to the react context?
If the getInterpreter function was to returns something like: {
interpreter, otherValues }.
What do you think? Should I attempt a PR?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/VanTanev/xstate-helpers/issues/2, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABROH6D7FKUZV7WIDVV27LTPJPHBANCNFSM45NK36AQ
.

@otrebu I think I'll close this. It's probably best to have a separate react context for data that is not a part of the machine.


update EOmaps to v3.0

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@conda-forge-admin, please rerender

... somethings wrong with azure-pipelines...
https://github.com/conda-forge/conda-forge.github.io/issues/1604


Optimize IF on constant operand in ExpressionOptimizer

@cberner Supersede #3276
In RowExpression framework, CASE is converted to a nested IF in SqlToRowExpressionTranslator.Visitor.visitSearchedCaseExpression
I'm not sure how to implement the unit test. Right now TestExpressionOptimizer only has one simple test. Should we create some helper functions, like optimize in TestExpressionInterpreter? Then we can add tests like assertEqual("IF (TRUE, 1 , 2) ", "1")

This ExpressionOptimizer runs on each worker after they get its split to run. That means each splits need to run it (although this optimize should be super fast). I am curious why not we just run the optimize on coordinator node at logical plan phase?

We're planning to do that, but there's a fair bit of refactoring that needs to be done first. Currently the row expressions only exist on the workers

Added a test in TestExpressionOptimizer and merged. Thanks!


LOC CHECKIN | vsts-rm-extensions master | 20180226

validation checks didn't report. Closing and re-opening the PR to re-initiate the validation checks..


Parliamentary governance needs to finally force grandpa finalize permissions?

When there is more than a certain number of validators in the grandpa consensus that are always dropped, which makes it impossible to finalize, is it necessary to force finalize through parliamentary governance voting?

@gguoss If finality drops, the governance has no mechanism to finalize blocks. It would require a hard-fork recovery or the use of the GRANDPA offline-fallback.


[BUG] Heathcheck timeout parameter not parsable

What is the bug?
the OpenSearch client cannot change the default timeout for health checks.
The cluster endpoint for healthcheck requires a string representing time units:
http "os-morel-1:9200/_cluster/health?timeout=4s"

It fails if you supply an integer or float.
(rayish) √ deus_lex % http "os-morel-1:9200/_cluster/health?timeout=4.2"
HTTP/1.1 400 Bad Request
content-encoding: gzip
content-length: 172
content-type: application/json; charset=UTF-8

{
    "error": {
        "reason": "failed to parse setting [timeout] with value [4.2] as a time value: unit is missing or unrecognized",
        "root_cause": [
            {
                "reason": "failed to parse setting [timeout] with value [4.2] as a time value: unit is missing or unrecognized",
                "type": "illegal_argument_exception"
            }
        ],
        "type": "illegal_argument_exception"
    },
    "status": 400
}

However, the client call requires a numeric value and fails with a time unit string
x = OpenSearch(["http://os-morel-1:9200"])

x.cluster.health(timeout="4s")

ConnectionError: ConnectionError(Timeout value connect was b'4s', but it must be an int, float or None.) caused by: ValueError(Timeout value connect was b'4s', but it must be an int, float or None.)

x.cluster.health(timeout=4)

ConnectionError: ConnectionError(Timeout value connect was 4, but it must be an int, float or None.) caused by: ValueError(Timeout value connect was 4, but it must be an int, float or None.)

How can one reproduce the bug?
Steps to reproduce the behavior.
What is the expected behavior?
As with previous versions of elasticsearch client, I expect "timeout="4s" to work properly
What is your host/environment?
Operating system, version.
Do you have any screenshots?
If applicable, add screenshots to help explain your problem.
Do you have any additional context?
Add any other context about the problem.

I can see that the 'request_timeout' parameter can be used to get around this issue.  I'm not sure if that's recommended practice or if this bug needs fixing.

This problem emerges from where the client encodes URL parameters as strings, which causes a validation error for the timeout parameter further down the stack.
I will open a PR that resolves the problem.  I'll write a test too.  I hope you will consider merging it.


If there isn't at least one enabled DDC external display, then don't tap any keys

If there isn't at least one enabled DDC external display, then don't tap any keys. The use case for this is when a user wants to use MonitorControl for a monitor that resides in one location (e.g. their home), but does not want to use MonitorControl in another location (e.g. their workplace). But they also don't want to manually run or quit MonitorControl when they move locations.

Hi, sorry for getting to you just now, I lost track of this one for the most part. You still have some conflicts which need to be resolved, I do agree that this could be a useful feature.

Hey, this one is (probably) resolved by this:
https://github.com/MonitorControl/MonitorControl/issues/456


Indexing rate decays dramatically over time

Hi,
When initiating the _reindex API I've noticed initially the DPS is around 2.5K docs/second.  The problem I'm seeing is that over time DPS starts to degrade and eventually getting down to 600 DPS.
Cluster information:
single node cluster 3 shards no replicas,
64GB Ram (32GB allocated to ES)
index1 containing 65 Million documents. The index takes up 12GB of space so I'm getting an average doc size of .203KB  Pretty small.
Disk space 1.7TB
The new index is on the same machine and you can see the output of the indexing rate over an extended period of time.

In addition I've followed most of the indexing performance enhancement tips suggest by ES.  i.e. refresh_interval : -1
I can provide additional metrics if necessary.  Also I was thinking that it might be an issue with the search so I turned the debug and info logging up but no search logs are coming through.  Is a scroll / scan not considered a search?  Doesn't make sense.
Thanks,
Michael Hunn

Hmm, could you change more shards(10 or the above) for the new index?


"az functionapp config set --use-32bit-worker-process" is not applying changes in v2.60.0

Describe the bug
I am unable to update a function app to use 64 bit, when using version 2.60.0. This was working correctly in 2.59.0 and 2.54.0.
Conversely, if the function app is already configured to use 64 bit, I cannot switch it to use 32 bit.
For example:
PS>az functionapp config show --name my-functionapp --resource-group my-resource-group --query "use32BitWorkerProcess"
true
PS> az functionapp config set --name my-functionapp --resource-group my-resource-group --use-32bit-worker-process false
{
...
"use32BitWorkerProcess": true,
...
}
PS>az functionapp config show --name my-functionapp --resource-group my-resource-group --query "use32BitWorkerProcess"
true
Related command
az functionapp config set
Errors
No errors, but the update is not applied after executing the command
Issue script & Debug output
> az functionapp config set --name my-functionapp --resource-group my-resource-group --use-32bit-worker-process false --debug
see attached file for debug output (too long to post in plain text)
az-functionapp-config-debug-output.txt
Expected behavior
The "use32BitWorkProcess" property should be updated according to the value passed with --use-32bit-worker-process
Environment Summary
azure-cli                         2.60.0
core                              2.60.0
telemetry                          1.1.0
Extensions:
account                            0.2.5
azure-devops                      0.25.0
cosmosdb-preview                  0.26.0
datafactory                        0.7.0
quota                              0.1.0
Dependencies:
msal                              1.28.0
azure-mgmt-resource             23.1.0b2
Python location 'C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe'
Extensions directory 'C:\Users\username.azure\cliextensions'
Python (Windows) 3.11.8 (tags/v3.11.8:db85d51, Feb  6 2024, 22:03:32) [MSC v.1937 64 bit (AMD64)]
Legal docs and information: aka.ms/AzureCliLegal
Additional context
No response

Thank you for opening this issue, we will look into it.

I can confirm that this is broken in 2.60.0 for other configs as well - eg az functionapp config set --always-on false is also finishing without an error, but it doesn't actually change the requested setting.

same here

Currently using 2.61.0 and the issue is still present, equvialent commands work for webapps (i.e. az webapp config set --always-on false) but functionapp set commands have no impact. The same config set operations done through the azure portal UI do work just fine.

It's been another 3 weeks, do we have any ideas on a fix and where that might sit in a future roadmap/release cycle?
@AnatoliB  @Francisco-Gamino  @shreyabatra4 @amamounelsayed @kaibocai @shreyas-gopalakrishna @kamperiadis

Also seeing this here on 2.63.0

[like]  Mark Buck reacted to your message:

From: Kris Lipscombe @.>
Sent: Tuesday, August 20, 2024 4:24:48 PM
To: Azure/azure-cli @.>
Cc: Mark Buck @.>; Manual @.>
Subject: Re: [Azure/azure-cli] "az functionapp config set --use-32bit-worker-process" is not applying changes in v2.60.0 (Issue #28962)
CAUTION: This email originated from outside of the VPS Group network. Do not click or open attachments unless you recognise the sender and know the content is safe.
Also seeing this here on 2.63.0
—
Reply to this email directly, view it on GitHubhttps://github.com/Azure/azure-cli/issues/28962#issuecomment-2299262728, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AZVCXNMMVPEXEZ24FA2IVOTZSNUVBAVCNFSM6AAAAABHWX5VB6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEOJZGI3DENZSHA.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

Same for me in version 2.63.0

3 months we've had this problem, is this even being looked at?


Console scripts

Add entry points to allow use of command line scripts for MAGIC+LST1 analysis. Renaming of folders. Closes #15 .

Thank you very much for your modifications, much appreciated!


Implement integration and interoperability tests

[ ] Rust (initiator) <-> Rust (responder)
[ ] Golang (initiator) <-> Golang (responder)
[ ] Rust (initiator) <-> Golang (responder)
[ ] Golang (initiator) <-> Rust (responder)

Done in eacffc4ce49ae64f86a1f20785650be1c98ddf76


IAM: get_role should thrown when role is unexisting

This better mimics the behaviour of Boto

Thanks!

@spulec do you plan on releasing this soon?

0.4.4 is now released.


[BYOC][TRT] Fix small bug preventing TRT runtime compilation for versions < 6

Small typo in code fixed.
@comaniac @anijain2305

@trevor-m please trigger the CI again.

@comaniac The CI passed now

Thanks @trevor-m


Proposal:Visual designer for WinUI3

It has been over two years now.

Any updates?

Closing as dup of #5917.

It will be of interest to anyone searching for a Visual Designer.... Hot Design from Uno Platform achieves this goal of being a Visual designer for WinUI3 (and other targets)
https://github.com/unoplatform/uno/discussions/18833


All chart examples do not increase in size  when increasing browser width

Expected behavior

From a browser width of >1024 px
Decrease browser width to <400 px
Chart size decreases as browser decreases
Increase browser back to >1024 px
Expect chart size to increase

Current behavior
Chart size doesnt increase back as I increase the browser width
Reproducible sample
https://codepen.io/leelenaleee/pen/WNyJXEe
Optional extra steps/info to reproduce
https://github.com/chartjs/Chart.js/assets/3683356/499539d1-7356-46ab-be8e-237b28a0e24d
Possible solution
No response
Context
No response
chart.js version
4.3.0
Browser name and version
Chrome 113.0.5672.126
Link to your project
No response

Duplicate of https://github.com/chartjs/Chart.js/issues/11005


Add 'Linking' example

Since IntentAndroid is being deprecated and Linking is the new API to deal with URLs, here comes the basic Linking API example. :)

@facebook-github-bot shipit


Get work, how about examples or guides?

Very excellent project, I'd like to develop Shopify apps via powerful Nest.js too. Is there any guide on handling auth, custom storage, webhook .etc? Thanks in advance

You can check out https://github.com/nestjs-shopify/example-nx-app for an example NestJS/NextJS/MikroORM app.
It uses auth, webhooks, custom storage. The sessions are stored in the database.


LIBCLOUD-641: The Aurora Compute libcloud driver

Aurora Compute is the CloudStack based public cloud offering from
PCextreme B.V., a Dutch hosting provider.

LGTM
It would also be good to get a test account so we can test it as well.
/cc @runseb

@Kami I'll look in to a test account.

@Kami @wido I have an account, I will test this.

Tested. I fixed te url by adding a slash. Everything seems to work fine.

@wido Also, if you want some more "promotion" of the driver, you should also consider adding some basic documentation to docs/compute/drivers/ (at least a basic description and a logo of the provider would be nice).
See docs/compute/drivers/ikoula.rst for an example.

There was a failing test case which I fixed in a2b04ff591578ec04e2c34bf05ac5262bca0176e.

@wido ^^ bump - it would be great to add some docs and a logo. This way we can also feature this driver on our home page (https://libcloud.apache.org/).

Haven't forgotten, but didn't get to it yet. My apologies!


Review all TODO items in the new implementation prior to 1.0.0

Description of issue or feature request:
We have multiple TODO items in the source code inside the new implementation and it will be good to review them one by one and decide if we want to fix them now or leave them.
If we decide to leave them it will be good to create separate issues (where it makes sense) or group them in one summarization issue.

For Metadata API:

2 TODOs about pylint: disable=too-many-arguments. Let's remove the TODOs, in my opinion the lint is useful in most situations but not here so the disables are fine
TODO about serialization error location: this could be an issue of its own, and relates to the other exception work going on. IMO the errors should be in the common exceptions file because metadata API users have to handle deserializationerror (it's not an internal error)

The ngclient TODOs should get handled by #1312, #1761 and #1714

Closing as #1794, #1805 are closed and  #1804 has been filed


Custom list labels

keystone.createList('InternalTodosList', {
  adminUiLabel: 'My TODO list',
  fields: {
    ...
  }
})

As is,  I am stuck with the administration UI showing Internal Todos List on the dashboard.

If you replace adminUiLabel with label in your example you should get what you want. Let me know if that doesn't work out.


ChartPointsAreaLayer supports Gradient

ChartPointsAreaLayer now takes in an array of UIColors. If you pass one color in the array, the layer will just display that color. If you pass more than one color, the layer will display a gradient. In this case, the first color passed will be first color at the top of the gradient. The last color passed will be the last color at the bottom of gradient.
To allow for full control of the visible gradient, the gradient will start at the highest pint of the visible line and end at the bottom of the visible chart. This turned out to be a challenge because the UIBezierPath generates weird bounds values. However, I was able to understand it enough to come up with the solution. It works perfectly in the AreasExample and MultiTrackerExample. Not sure how it will hold up in other cases.
I think we can also add a top-down animation option. But I think it's a good start. This is my second pull request!

Awesome, thanks a lot!
Just some minor things:

Could you handle the first array element as optional, i.e. use colors.first?.cgColor or if let colors.first {...}. Otherwise, if for some reason an empty array is passed the subscripting would cause a crash.
Could you add a convenience initializer that accepts only one color? This way the code is backwards compatible and more straight forward for people that don't want to use gradients.

Thanks for the feedback! I'm still very new to this reusability mindset. I'm not sure if the guard statement I added is exactly how you wanted it.

Sorry, I did this review 2 days ago but forgot to click "Submit review". New to reviews here ;)

For some reason the squash worked for this branch. Let me know if it's okay!

Thanks! 👍


Keep track of download 'size'/performance of app

To be able to prevent us from creating a bloated, too-big-to-use-with-limited-connectivity app, we should keep an eye on the size of the app over time (while we add features).
There are ways to do this automatically.
See: https://github.com/GoogleChrome/lighthouse-ci
Proposed solution

Setup an automated Lighthouse-test
Enable this on every PR/every week
Maybe there is a way to get an overview/dashboard of the scores over time?

See #306


fix: Internal error during verifying explicit examples if an example has no value key

Fixes #882

Codecov Report

Merging #883 (fac97e7) into master (f5f8243) will decrease coverage by 0.13%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #883      +/-   ##
==========================================
- Coverage   98.97%   98.83%   -0.14%
==========================================
  Files          62       62
  Lines        4310     4310
  Branches      735      735
==========================================
- Hits         4266     4260       -6
- Misses         21       26       +5
- Partials       23       24       +1

Flag
Coverage Δ

unittests
98.83% <ø> (-0.12%)
:arrow_down:

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

Impacted Files
Coverage Δ

src/schemathesis/specs/openapi/examples.py
96.70% <ø> (ø)

src/schemathesis/utils.py
98.27% <0.00%> (-1.73%)
:arrow_down:

src/schemathesis/extra/pytest_plugin.py
98.40% <0.00%> (-1.60%)
:arrow_down:

src/schemathesis/cli/__init__.py
98.81% <0.00%> (-1.19%)
:arrow_down:

Continue to review full report at Codecov.

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


Asset Catalog OMAS does not log the server name

Asset Catalog OMAS - audit log is incomplete. It does not log the server name when Audit Code messages are used.

FYI - the server name is included automatically in every log record for the audit log


Unsubscribing takes long sometimes

"I had subscribed to mytopic and left my tablet off to the side for some of the weekend. When I unsubscribed from it this morning, it did take a bit to remove itself from the UI. Would like to see if that can be replicated"

Hey @Copephobia have you seen this issue at all recently? I can't reproduce this and I don't understand how this could be happening.

Cannot reproduce


Keys and reward

Does this require your Chia keys?
What exactly are the rewards you receive?

Keys binds to your plots. If you want to reuse your existing plots you need to put the same key in. The reward is spare coin.


Server with Thread Pool Updated

@atryus will do the full review for this PR, but I saw a few style guide issues (make sure you have consistent 8-space indents and have return types for functions on their own lines). Also, make sure you're thinking about writing unit tests for the code (necessary before it'll get merged to master)


Calendar feed updating really slowly

I've missed the start of a few runs due to the calendar feed updating very slowly.
As I understand it, you're running the calendar through Google Calendar, which is likely causing the delay.
Have you considered running the feed through a free CDN like Cloudflare? This would protect your server while providing faster updates for everyone.

Hi @DarkFox,
I know what you mean, the Google Calendar Android app on my phone is always notifying me of runs late.
The current situation is a little bit different. The calendar feed is actually self-hosted rather than hosted on Google Calendar, and my server updates very quickly: right now the max update frequency is every 3 minutes (only to avoid hammering GDQ's servers).
The slowdown comes when someone uses Google Calendar as a client to subscribe to this feed, because Google refuses to poll my server for updates any faster than once every few hours. Therefore, the bottleneck is on Google's side, not mine, so I can't control it, not even with a Cache-Control: max-age response header. Also, iCalendar sadly doesn't have a push notification system like RSS's rssCloud webhook eventing.
Adding a CDN would reduce load on my server in the face of very high request volume, but at this point it's not high enough to stress my server with its simple in-memory caching. It could also improve latency across regions due to faster upload speeds, but the payloads are relatively small, and ICS requests are generally not latency-sensitive due to being fetched in the background. Also, CDNs generally work best with longer cache durations, so I've avoided using one here. Overall, adding a CDN would just result in Google polling the CDN slowly, and the problem would not be solved.
Since I can't think of a way to convince Google Calendar to poll my server more frequently, the only technique I can offer is using a different iCalendar client. I personally use Vivaldi's calendar system to subscribe to this calendar, for example.

Since this seems to be the most frequently-encountered issue with this project, and since Google Calendar is so popular, here is an idea. I'm not sure if this is a good idea or not, but I might try to find the time to add a new feature to this project to automatically mirror these events into a separate calendar hosted in Google Calendar, which would hopefully update faster than the external ICS file that Google polls slowly, because it would be a push instead of a poll/pull.
So far I only have auth and reads working, it still needs other functionality like variable timers, event identity, event diffing, and writes.

I've been pulling the feed directly into Home Assistant using the ics_calendar integration, but there still seemed to be some delay.
For now I've dockerized the executable and am running it locally, which seems to work a little better. Another issue might also simply be how quickly the GDQ team updates the schedule.

Added a new integration that pushes events to Google Calendar every minute to avoid Google's slow polling of external ICS files. This should make updates appear much faster for Google Calendar users.


Add files via upload

@shoxiyy Thank you for your patience while waiting for a review and processing your request. Pull request merged.


how to use local LLMs

May I ask how to deploy a local model instead of gpt?

Hi! I have implemented huggingface model version in the dev branch. You may download the dev branch code. In the Readme, you can see the "Huggingface TextGeneration Model" command to run PromptAgent. You can check the code in src/prompt_optim_agent/language_model. There is hf_text2text_model.py and hf_textgeneration_model.py. If you want to implement your own model, you can write a .py file with similar structure - load model and write a batch_forward_func/generate fucntion, and add the model type to the init.py.  I wrote the huggingface version but have not tried yet, due to limited GPU resource. I only tested ctranslate mistral-7b-instruct model (more gpu friendly). You can also see the command in the Readme "CTranslate model". Note: You'd better use instruction-tuned models, e.g. mistral-7b-instruct, llama-chat.

Thanks for your reply.


prefilter: move api handler from daemon to prefilter hive cell

Currently, the daemon implements the Prefilter API handler. With it comes the last dependency from the daemon to the prefilter itself.
Therefore, this commit moves the prefilter API handler from the daemon to the existing prefilter hive cell and removes the dependency from the daemon to the prefilter.

/test

rebased to main to get some fixes for Gateway API checks.

/test


transitive buffrs resolution corrupts input crates

Suppose I have:
FooApi - buffrs package, corresponds to buffrs.
FooClient - client for Foo, using this API. Let's say it uses the buffrs directly.

and then we have Bar which is in a different repo, depends on Foo from a registry.
What will happen when we run cargo build is approximately:

FooClient will be downloaded into $CARGO_HOME/registry/cache/registry_id/foo-client-0.0.0.crate.
It will be extracted into $CARGO_HOME/registry/cache/registry_id/foo-client-0.0.0.
When the build happens, the crate's buildscript will have a target dir. This is where it supposed to write to. Cargo says:

OUT_DIR If the package has a build script, this is set to the folder where the build script should place its output. See below for more information. (Only set during compilation.)

OUT_DIR the folder in which all output and intermediate artifacts should be placed. This folder is inside the build directory for the package being built, and it is unique for the package in question.

Unfortunately, buffrs does not write its output here. Instead it writes down a few more protobuf files into $CARGO_HOME/registry/cache/registry_id/foo-client-0.0.0, because it's writing into some subdir of $CARGO_MANIFEST_DIR.
In my case, this is failing because my cargo manifest is in a read only directory.
I think that during Cargo builds, buffrs needs to be writing into $OUT_DIR in the cargo script, not into the source dir. Writing into the source dir makes sense during development, but not for published crates, because if buffrs somehow corrupted an input crate due to a bug (e.g. vendored a proto wrong), this would survive cargo cleaning.
For now I can work around by just not using the buffrs helpers in the cargo code (I have no dependencies) but this seems to be a misuse of Cargo.

My sense is that vendored protobuf files will have to be checked into the repository.

For documentation:
We should probably solve theses issues by defining the include field in cargo manifests to zip up the protobufs in the crate tarball.
See https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields

A todo here would be to write a section in the buffrs book on how to publish crates to make this solution visible to people

For documentation:
We should probably solve theses issues by defining the include field in cargo manifests to zip up the protobufs in the crate tarball.
See https://doc.rust-lang.org/cargo/reference/manifest.html#the-exclude-and-include-fields
A todo here would be to write a section in the buffrs book on how to publish crates to make this solution visible to people

An annoying side-effect of this approach is that you have to then manually specify everything you want bundled in the crate's package. That's not very maintainable, even if you use globs. What is the rationale for not including the proto/ folder into version control?

Well you can do that @asmello – it's just not very neat (in my personal opinion) to check in artifacts of package managers.
If if fits your needs better then just go ahead 😊

Also fwiw @asmello if I understand the docs of cargo correctly:
include = ["*", "proto/vendor"]

Should do the trick?


deps: Bump @rtk-query/codegen-openapi from 1.0.0 to 1.2.0 and re-generate API

This bumps @rtk-query/codegen-openapi to version 1.2.0 and runs npm run api to apply changes to the API.

/retest

/retest


Tire returns no hits

I have an application that uses tire, and the communication works on co-worker`s computer and on a staging server. I have the same issue on two on my computers: one running Ubuntu, other one OSX.
Elasticsearch is working, I can communicate with it through curl commands. I can create indices and store data in them and I can retrieve them through curl or browser.
When I use Tire to take care of this:
$ rake environment tire:import CLASS='Deal'
[IMPORT] Creating index 'deals' with mapping:
{"deal":{"properties":{}}}
# 2011-10-17 19:47:47:251 [CREATE] ("deals")
#
curl -X POST "http://localhost:9200/deals" -d '{"mappings":{"deal":{"properties":{}}}}'

# 2011-10-17 19:47:47:251 [200]

[IMPORT] Starting import for the 'Deal' class
--------------------------------------------------------------------------------
352/352 | 100% # 2011-10-17 19:47:50:783 [BULK] ("deals")#########
#
curl -X POST "http://localhost:9200/_bulk" -d '{... data omitted ...}'

# 2011-10-17 19:47:50:783 [200]

================================================================================
Import finished in 3.53648 seconds

But still
ruby-1.9.2-p290-patched > Deal.tire.search '*'

2011-10-17 19:56:37:127 [_search] (["deals"])

curl -X GET "http://localhost:9200/deals/deal/_search?pretty=true" -d '{"query":{"query_string":{"query":"*"}}}'

# 2011-10-17 19:56:37:127 [200] (17 msec)

 => #<Tire::Results::Collection:0x000001071417e0 @response={"took"=>17, "timed_out"=>false, "_shards"=>{"total"=>5, "successful"=>5, "failed"=>0}, "hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}}, @options={:type=>"deal"}, @time=17, @total=0, @facets=nil, @wrapper=Tire::Results::Item>

And:
curl -XGET 'http://localhost:9200/deals/deal/1'

returns
{"_index":"deals","_type":"deal","_id":"1","exists":false}

Hello,
can you check what is in deals index using curl -XGET 'http://localhost:9200/deals/_search?q=*' after import is finished?
Can you gist Deal model please? Its hard to recreate the issue without it.

Hi,
it's probably some mis-configuration in your project, or some edge-case bug. Please do verify with curl or browser, that your index exists and data have been stored: http://localhost:9200/deals/_search?q=*, as @vhyza suggested.
Also, what type of model is Deal? ActiveRecord, ActiveModel (eg. Mongoid), etc.

Hey, thanks for the replies.
Deal is an ActiveRecord base and, as far as I know, in every configuration we tried (both where it works and where it doesn't), it uses MySQL, so no funky databases.
https://gist.github.com/1295013
When I to use that url you suggested, I get hits all right. It says it got all 352 of them.
{"took":113,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":352,"max_score":1.0,"hits":[{"_index":"deals","_type":"document","_id":"4","_score":1.0, "_source" : {"area":null,"building_address":null,"building_antique":null,"building_area":null,"building_built_date":null,"building_common_percentage_rights":null,"building_condition_id":null,"building_condition_rating":null,"building_coord_system":null,"building_description":null,"building_functional_rating":null,"building_general_location_rating":null,"building_ground_levels":null,"building_id":null,"building_infrastructure_known":null,"building_lat":null,"building_lon":null,"building_material_id":null,"building_mortgage":null,"building_mortgage_holder_id":null,"building_mortgage_value":null,"building_no":null,"building_percentage_rights":null,"building_premises_count":null,"building_premises_total_area":null,"building_price":null,"building_primary_purpose_id":null,"building_right_id":null,"building_roof_type_id":null,"building_secondary_purpose_id":null,"building_size":null,"building_underground_levels":null,"building_usable_area":null,"building_usage_percentage":null,"building_user_count":null,"building_vat":null,"building_volume":null,"buyer_type_id":null,"city":"G\u0142og\u00f3w","county_id":null,"created_at":"2011-10-17T15:15:14Z","deal_type_id":null,"document_date":null,"document_type_id":null,"entry_date":null,"id":4,"kw_no":"940827","land_price":null,"land_vat":null,"latitude":"51.6673638","local_right_id":null,"local_type_id":null,"longitude":"16.0707595","lot_antique":null,"lot_area_name":null,"lot_area_no":null,"lot_coord_system":null,"lot_description":null,"lot_easement":null,"lot_general_location_rating":null,"lot_infrastructure_known":null,"lot_kw_no":null,"lot_land_no":null,"lot_land_percentage":null,"lot_lat":null,"lot_lon":null,"lot_main_purpose_id":null,"lot_map_sheet":null,"lot_mortgage":null,"lot_mortgage_holder_id":null,"lot_mortgage_value":null,"lot_obstacle":null,"lot_planning_permission":null,"lot_planning_permission_purpose_id":null,"lot_right_expires":null,"lot_right_id":null,"lot_road_connection":null,"lot_road_easement":null,"lot_specific_location_rating":null,"lot_street":null,"lot_terrain_rating":null,"lot_teryt":null,"lot_verified":null,"lot_zip":null,"notes":null,"object_type_id":null,"premises_area":null,"premises_building_level":null,"premises_common_percentage_rights":null,"premises_condition_rating":null,"premises_equipment":null,"premises_functional_rating":null,"premises_kw":null,"premises_mortgage":null,"premises_mortgage_holder_id":null,"premises_mortgage_value":null,"premises_no":null,"premises_notes":null,"premises_price":null,"premises_primary_purpose_id":null,"premises_right_id":null,"premises_room_count":null,"premises_specific_location_rating":null,"premises_vat":null,"premises_wear_percentage":null,"pricing_method_id":null,"pricing_reason_id":null,"pricing_technique_id":null,"property_no":null,"property_type_id":null,"rciwn":null,"rciwn_description":null,"seller_type_id":null,"signature":null,"street":"ul. Mickiewicza 53","transaction_date":"2006-04-19T03:39:26Z","transaction_form_id":null,"transaction_no":"857381","transaction_price":"372915.0","transaction_type_id":null,"transaction_vat":null,"user_id":null,"zip":"67-200","full_address":"ul. Mickiewicza 53, G\u0142og\u00f3w 67-200, "}},

Hmmm, so http://localhost:9200/deals/_search?q=* actually returns all the docs, but Deal.tire.search '*' does not return anything? That's crazy :)
Your model looks alright to me. What if you try searching on the DSL level?
Tire.search("deals") { all }  # or similar

t = Tire.search("deals") { :all }

Returns hits similar to those fetched with curl. I'm not sure however if it returned all data, tho' when I call for <t.results> it says:
 => #<Tire::Results::Collection:0x00000105783998 @response={"took"=>97, "timed_out"=>false, "_shards"=>{"total"=>5, "successful"=>5, "failed"=>0}, "hits"=>{"total"=>352, "max_score"=>1.0, "hits"=>[{"_index"=>"deals", "_type"=>"document", "_id"=>"4", "_score"=>1.0, "_source"=>{"area"=>nil, "building_address"=>nil,
#(...)

When I try to grab <t.results[0]> it goes
NameError: uninitialized constant Document
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/rake-0.9.2/lib/rake/ext/module.rb:36:in `const_missing'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/activesupport-3.1.0/lib/active_support/inflector/methods.rb:124:in `block in constantize'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/activesupport-3.1.0/lib/active_support/inflector/methods.rb:123:in `each'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/activesupport-3.1.0/lib/active_support/inflector/methods.rb:123:in `constantize'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/activesupport-3.1.0/lib/active_support/core_ext/string/inflections.rb:43:in `constantize'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/tire-0.3.3/lib/tire/results/item.rb:61:in `class'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/tire-0.3.3/lib/tire/results/item.rb:66:in `inspect'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/railties-3.1.0/lib/rails/commands/console.rb:45:in `start'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/railties-3.1.0/lib/rails/commands/console.rb:8:in `start'
	from /Users/ellmo/.rvm/gems/ruby-1.9.2-p290-patched/gems/railties-3.1.0/lib/rails/commands.rb:40:in `<top (required)>'
	from script/rails:6:in `require'
	from script/rails:6:in `<main>'

and the <t> itself becomes corrupted as from now on every call on this object will give a <NameError: uninitialized constant Document>

The correct syntax is: Tire.search("deals") { all }, beware.
The "uninitialized constant Document" is a nasty, known, issue, which I'm about to fix right now.
There's still something crazy with your model integration, the Deal.tire.search "whatever" should work. Lemme release a new version, and we'll continue debugging then.

actually Tire.search("deals") { all } gives
[REQUEST FAILED] NameError
NameError: undefined local variable or method `all' for #<Tire::Search::Search:0x00000105741840>

at least on my machine

Grr, sorry, Tire.search("deals") { query { all } } (quite obviously :)

@ellmo: Could you rerun the tests with the newly releasesd 0.3.6? It will solve the NameError, at least.
Still, I don't understand why it's not returning results. Are you sure you're waiting the default 1sec, or refreshing the index? Is this not a part of a test suite?

@ellmo: Thanks for info. I think there is problem with _type you have in index. It should be deal not document. Tire is looking only for documents with _type deal. For example, search url generated by Tire looks like this http://localhost:9200/deals/deal/_search?pretty=true
So I think there was some problem with document import. Its weird because I tried import now and everything works fine. Are you using last version of Tire?

Hey,
1.I upgraded tire to 0.3.7.
2.Removed all ES indices through curl -XDELETE ...
3.Imported them back again through rake environment tire:import CLASS="Deal"
Deal.tire.search "*"

still does not return any hits, however
t = Tire.search("deals") { query { string "*"} }

does seem to work. I guess it doesn't hurt to use it instead. However when I call t.results.size on the object (and yes, there's no more NameError, so thank you for that!), it's size is 10 and I have 352 objects indexed (allegedly).
What am I missing?

Did you check http://localhost:9200/deals/_search?q=* after new import? I think you still have document _type instead deal
Please, can you try following?

curl -X DELETE http://localhost:9200/deals
replace Deal model with basic one (https://gist.github.com/1299758)
rake environment tire:import CLASS="Deal"
see http://localhost:9200/deals/_search?q=* to check if _type is deal now

If _type is correct Deal.search "*" should returns some hits

@ellmo: As suggested by @vhyza, double check your documents have the "deal" _type. You must be doing something funky if your documents end up with different _type in ES, or there's a grave bug somewhere.

when I call t.results.size on the object it's size is 10 and I have 352 objects indexed

results.size gives you the size of returned collection, results.total will give you the total size of documents for your query.

@ellmo: Ping, any news?


Update get-started.md so that "cluster" reads as "clusters" to reflect multiplicity

fixes Issue #2309

Summary
Related issue(s)
Fixes #

PR made on the wrong release version of Kubestellar.io documentation (should be the unreleased version)


Log git metadata and platform info when zebrad starts up

Motivation
Sometimes it is hard to diagnose user bug reports, because we don't know what platform or build they're running with.
Scheduling
This change is not required for the stable release. We can do it when it becomes a problem for bug reports.
Suggested Solution

If the zebrad command is a server command, log the panic metadata at info level

Existing Code
Panic metadata:
https://github.com/ZcashFoundation/zebra/blob/2f46d698dd86e40e7928bddca948f5be14667934/zebrad/src/application.rs#L263-L266
Server command:
https://github.com/ZcashFoundation/zebra/blob/2f46d698dd86e40e7928bddca948f5be14667934/zebrad/src/application.rs#L343-L347

This will help with diagnosing user issue reports.


Mouse reaction conflict between control nodes and 2D viewport

Godot version:
Godot 3.2.2 win 64
OS/device including version:
Windows 10 x64 (Vega 8 with Ryzen 3)
Issue description:
The control nodes stop reacting when there's a viewport 2D scene.
Steps to reproduce:
Create a Basic GUI, make a 2D scene.
Create a Viewport, add the 2D scene.
Control nodes on the parent scene will stop working.
Minimal reproduction project:
Editor (GUI).zip
There's two scenes (bugged scene and non bugged scene).
Use the two to compare, specially on the bugged scene, click on the center right checkboxes, they don't work, they only work when you click Import Sprites, hit cancel, then the 2D scene inside the viewport dissapears and the checkboxes works.

In your MRP, the Control BODY in the SubViewport accepts the events, that you are missing in the main viewport.
This is a duplicate of #39666.


chore(main): release 1.31.0

:robot: I have created a release beep boop
1.31.0 (2024-09-12)
Features

add specific option for each operations + default schema (bdd343a)
change visibility of _applyPagination to protected (bfc25d7)

Code Refactoring

change .ts to .js (0fe8097)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/Andesite-Lab/Core/releases/tag/v1.31.0 :sunflower:


Support UART Air Quality Sensors

Related:

https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues/359

Q: Can we do 2x hardware UART (ie: AQ Monitor and GPS)

I've got the Ikea vindriktning UART particle sensor https://esphome.io/components/sensor/pm1006.html https://learn.adafruit.com/ikea-vindriktning-hack-with-qt-py-esp32-s3-and-adafruit-io
Also Winsen UART CO2 sensor MH-Z19b, they have a few models with different ranges + interfaces and power requirements but all very similar https://www.winsen-sensor.com/sensors/co2-sensor/mh-z19b.html
Also some GPS things. An old NMEA stream over uart device for a car, and some SimCom GPS/GSM/3G/4G/5G modules with ESP32's attached to most (ignoring soldered on SimCom SOMS I have one that is a Pi Hat and some that are PCI-E based but designed for lilygo/ttgo T-PCI-E esp32 boards).

Supported in Beta 73 onwards, closing!


Error elision

Neugram is intended as a scripting language. This proposal adds the equivalent of a default set -e mode to the language.
Unhandled non-nil errors turn into panics. Starting with
func f() error
func g() (int, error)

then
// nil error is ignored, non-nil error panics
f()
x := g()

// returned error is always ignored
_ = f()
x, _ := g()

// returned error value is left to the programmer
err := f()
x, err := g()

Libraries should still handle errors just as in Go.
TODO

Throw, not panic. Make it impossible to recover, so it doesn't get used in libraries.

Some basic top-level error elision works. Here are two examples that do not:
import "os"
for i := 0; i < 1; i++ {
        f := os.Open("does not exist") // should unwind, instead interpreter freezes
        _ = f
}

import "os"
f := os.Open("/tmp")
f.Close()
f.Close() // returns an error, should turn into a panic but doesn't

Those cases were fixed in fa885793d3.

This is mostly done. One big case to cover:
func useFile(f os.File) {}
useFile(os.Open("/tmp"))

I think error elision is in pretty good shape at this point. The major uses I planned for it are implemented. Future bugs and feature requests can get their own issues.


A few build questions

Hello,
I'm more familiar with the old style of using zephyr(micro_ros_setup). My issues was here, and have been directed here.
Questions:

Using the nightly workflow as a template, I create a docker image based off Ubuntu 22.04, with necessary apt installs. Once built, under a container, I have a build script(z.sh) which gets sourced(source z.sh), with necessary zephyr sdk install. Any guidance/comments on this setup?
z.txt

Once the above script finishes, I clone micro_ros_zephyr_module under zephyrproject/zephyr, then build  using
west build -p always -b disco_l475_iot1 micro_ros_zephyr_module
but building with any other board fails:
west build -p always -b nucleo_h743zi micro_ros_zephyr_module
with alot of redifinition errors(see redefinition.log). There is another issue detailing this, but I'm on v3.1 and sdk 0.14.2. I made sure to checkout v3.1 of zephyr.
redefinition.log

3.In the old method, one could change the transport. We are using udp. How does one do that here and configure microros. Is that required now?

Hardware description:
Nucleo H743zi
RTOS:
Zephyr
Installation type:
micro_ros_zephyr_module
Version or commit hash:
humble

Steps to reproduce the issue

Expected behavior
Actual behavior
Additional information

I recommend you use the Zephyr Getting Started instead of our CI: https://docs.zephyrproject.org/3.1.0/develop/getting_started/index.html make sure that you check out version v3.1

If you source your Zephyr installation it is not necessary to clone this repo inside the Zephyr installation folder. Regarding the redefinitions, make sure that the conf is correct and also that you have here the specific board configuration. In any case, have you tried to build a Zephyr app without micro-ROS, and the same configuration and include zephyr/posix/time.h where seems to be the error: conflicting types for 'APSR_Type'?

You can change the transport by selecting in menuconfig which one is needed to be built, here you have the implementations, and here the transport configuration at app level.

Thanks.
Regarding 2.
I'm able to build successfully a blinky with west build -p always -b nucleo_h743zi samples/basic/blinky with time.h included in blinky/src/main.c.
Investigating...

Ok, let us know what you find

How would one add the board configuration to microros?
zephyr/boards/arm has the nucleo_h743zi

That's Zephyr configuration using .conf and .overlay files
This is a sample app, just modify main.c

I managed to get a successful compile with the nucleo_h743zi.
Just had to create the overlay file in the micro_ros_zephyr_module root.
/ { 	aliases { 		uros-serial-port = &usart3; 	}; };
I still have a question on 4. above. There was a way to separate the microros install from the application.
In this case, the app code is under the micro_ros_zephyr_module. We have our entire application checked in a separate repository. Any suggestions on how to handle this situation?
I feel we will have to use micro_ros_zephyr_module as a submodule to our source.
Thank you.


h264enc: fix one h264 HDR comformance issue

As spec, only when bitstream contains 0x000000/0x000001/0x000002/0x000003
need to insert emulation byte 0x03
This patch is to fix: https://github.com/01org/libyami/issues/265

+1


Rate limit on SimpleREST

Is your feature request related to a problem? Please describe.
Some bots call APIs that has rate limits.
Describe the solution you'd like
A parameter to execute tests with a maxium of X per second.
Describe alternatives you've considered
Setting a delay between tests could be an alternative.
Additional context
Executing tests too fast could make users blocked.

I agree, this might be very useful. I added it to our backlog.
Your suggested alternative solution could work: just add a PAUSE instruction to the convo file in the first #me section:
...
#me
PAUSE 5000
text to send ...

#bot
...

This will wait 5 seconds before starting the conversation.

@staticdev This was added in the latest Botium Core. https://botium.atlassian.net/wiki/spaces/BOTIUM/pages/360603/Botium+Configuration+-+Capabilities#Rate-Limiting


Custom Classification

In the training process described for sentence_prediction, what should the 'sentence_classification_head' be?
How do I set my own customised tag. I want to do a 3 class classification (NLI on clinical data)

You might take a look at the tutorial here: https://github.com/pytorch/fairseq/blob/master/examples/roberta/README.custom_classification.md
You can then try setting --task sentence_prediction --num-classes 3. The sentence_classification_head is created automatically by the task: https://github.com/pytorch/fairseq/blob/master/fairseq/tasks/sentence_prediction.py#L210-L213


Invalid firmware version on CMSIS-DAP

I am trying to interface with an ATSAMV71-XULT, and getting this error:
INFO:pyocd.board.board:Target type is atsamv71q21b
Traceback (most recent call last):
  File "./test.py", line 22, in <module>
    with ConnectHelper.session_with_chosen_probe(unique_id=args.unique_id) as session:
  File "/home/kongr45gpen/.local/lib/python3.7/site-packages/pyocd/core/session.py", line 339, in __enter__
    self.open()
  File "/home/kongr45gpen/.local/lib/python3.7/site-packages/pyocd/core/session.py", line 453, in open
    self._probe.open()
  File "/home/kongr45gpen/.local/lib/python3.7/site-packages/pyocd/probe/cmsis_dap_probe.py", line 170, in open
    self._link.open()
  File "/home/kongr45gpen/.local/lib/python3.7/site-packages/pyocd/utility/concurrency.py", line 28, in _locking
    return func(self, *args, **kwargs)
  File "/home/kongr45gpen/.local/lib/python3.7/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 644, in open
    self._read_protocol_version()
  File "/home/kongr45gpen/.local/lib/python3.7/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 624, in _read_protocol_version
    patch = int(fw_version[2] if len(fw_version) > 2 else 0)
ValueError: invalid literal for int() with base 10: '01B6'

The reported firmware version for CMSIS-DAP is:
fw_version_str = "03.25.01B6"

I'm not sure if the documentation supports a hexadecimal string as the patch version or not, and not sure how to go around this issue. Also note that working with this board worked perfectly before commit bbf361e3b289f19d1ed354fa017a460b119d9cd8.

I have observed a similar problem with the Particle Debugger running firmware version v0254.2:
File "/Users/xyz/venv/lib/python3.9/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 645, in open
    self._read_protocol_version()
  File "/Users/xyz/venv/lib/python3.9/site-packages/pyocd/probe/pydapaccess/dap_access_cmsis_dap.py", line 621, in _read_protocol_version
    patch = int(fw_version[1][1])
ValueError: invalid literal for int() with base 10: '\x01'

The reported firmware version in my case is:
fw_version_str = "0254.2A"

I am getting the same error with the Microchip SAMG55 Xplained Pro development board, which has the microchip embedded debugger on it. It returns 03.25.01B6 for the DAP version, just as in the original case.
It's clear from https://arm-software.github.io/CMSIS_5/DAP/html/group__DAP__Info.html that this field should be one of the valid DAP protocol versions, not a vendor software revision, but it seems microchip has implemented it incorrectly.
I've worked around it in a fork, here: https://github.com/mcbridejc/pyOCD
I also submitted PR #1201 in case @flit  wants to pull it in.

Hi all, thanks for reporting these issues.
Prior to CMSIS-DAP v2.1, the description of the DAP_Info value 0x04 was actual "firmware version", but they really meant protocol version. In v2.1 this was made very clear, and a separate Product Firmware Version = 0x09 value was added. I thought I was the only one to misunderstand the pre-2.1 description! (In DAPLink.) So it's very interesting to see other firmware doing the same.
We'll have to add some workarounds for these firmwares. An exception handler is needed for the conversion to int.
Then there's the question of whether to try and detect the product and map to a CMSIS-DAP protocol version. Currently pyocd only uses the protocol version to decide whether to read the new Product Firmware Version value. So, for now, it will be fine if it just defaults to CMSIS-DAP v1.0.0 for an invalid protocol version.
However, that may not always be the case in the future, so it might be wise to go ahead and implement a version mapping for the products we know about now.

Thanks for the context. I didn't realize the older protocol docs described it differently. Supporting all the things in the embedded world is always a never ending chore!
The PR I submitted was basically the narrowest change I thought I could make to get my case working. I don't actually know what other version strings are out there now or will be tomorrow on microchip EDBG devices....so it may not be robust at all.
Perhaps the best path for now is to check the reported version against the list of CMSIS-DAP protocol versions and if it's not found default to v1.0.0 as you say? I like that approach. I'm not at all offended if you reject that PR to do something different, or I can rework it to check for valid protocol versions instead of having specific vid/pid + version exceptions.

Definitely need to wrap with an exception handler.
Checking against known CMSIS-DAP versions is probably ok. My only concern with this is that it means that new CMSIS-DAP protocol versions will require an immediate pyocd update. For now that's unlikely to be an issue since I'm involved with or at least aware of CMSIS-DAP protocol changes. And, this is probably better than explicit checks against non-compliant firmware versions, which will also have to be updated and have less visibility about.
If you would like to update your PR that would be great! I'm always happy to have more contributors. 😄 (I'll comment on the PR too.)

This issue should be resolved now with version 0.32.0. If you still see problems, please reopen.


Audit widget RELEASE

Related Issues
https://github.com/descope/etc/issues/4255
Description
Audit widget
Must

[x] Tests
[x] Documentation (if applicable)

Looks good to me but I think it will be better if @asafshen will take a look as well


Test sliding and sliding cancelling

Read for more detail in the Physics section of the GDD, which I will port next week to the wiki. Basically whenever mint creates a sliding animation for BOB, then two states need to be check.
The player executing the slide, and the player canceling the slide midway to jump up (for now when said cancellation happens, just try to switch between the sliding sprite and the standing sprite. When we start work of Hestmor, we will try to see if cancelling the slide could have its own executable animation.)

Released in #88


Make scala.Seq = strawman.collection.immutable.Seq

Is this a step towards #179 ?

Other non-immutable collection types in package object scala:

type IterableOnce[+A] = scala.collection.IterableOnce[A]: New, replaces TraversableOnce, no immutable version

type Iterator[+A] = scala.collection.Iterator[A]: Like IterableOnce this has no immutable version

type Iterable[+A] = scala.collection.Iterable[A]: There is an immutable.Iterable but I suggest we keep this one as the lowest common denominator for abstracting over collection types.

type IndexedSeq[+A] = scala.collection.IndexedSeq[A]: Since we're changing Seq we should also change IndexedSeq

type BufferedIterator[+A] = scala.collection.BufferedIterator[A]: Why is this even here? BufferedIterator is not a very common type. I suggest deprecating the alias.

type StringBuilder = scala.collection.mutable.StringBuilder: Probably quite common, I'd keep it for now

Incidentally, if we're going to add immutable iterators, now would be the time to do it.  They're annoying to use because the signature works out to be equivalent to
def advance: Option[(Immuterator[A], A)]

which imposes an additional burden of keeping track of the advanced state of the immutable iterator.
But since we're thinking about an enhanced immutable interface, I thought it was worth raising.
Note for those wondering about usage: immutable iterators are best consumed in tail-recursive methods, e.g.
def sum(ii: Immuterator[Int], accumulator: Int = 0) = ii.advance match {
  case Some((ij, n)) => sum(ij, accumulator + n)
  case None => accumulator
}

and similar constructs.

@szeiger agreed on all points

@Ichoran what’s the advantage over pattern matching on case head :: tail?

could we move the immutable-iterator discussion to a new ticket?

Further issues:

Implicit conversions from Array to Seq are very common (at least in the compiler codebase). I'll add a deprecated even-lower-priority-than-WrappedArray conversion from Array to immutable.IndexedSeq that copies the array.

Should toSeq and toIndexedSeq always return the immutable version? It would be nicer if toSeq actually gave you a Seq (and not just a collection.Seq). When used on an existing mutable collection they would have copy it anyway to avoid accidental sharing so it shouldn't be much of a performance issue.

This "immutable iterator" looks like a Stream or LazyList to me, assuming advance doesn't really advance anything. If it does, it is no longer immutable, just a less efficient mutable iterator.

In brief: immutable iterators don't cache anything (unlike LazyList), and are a generalization of head-tail decomposition to collections where tail isn't terribly efficient.  But, yeah, if we wanted to do this we should talk about it on another ticket.

I wholeheartedly agree with @dwijnand. Everything else in Predef is now immutable by default. We should keep Iterable immutable as well. When you write code that takes an Iterable in Scala, one would first assume that it is immutable. Handling possible mutations under one's feet is tricky, and should be explicit.

Reopening because we might want to make scala.Iterable[+A] = scala.collection.immutable.Iterable[A] as well…

(given the description of this ticket, maybe it's better to create a new one to track that)

@dwijnand done!


k3s: Documentation Updates

Problem
The k3s documentation is in need of a refactor due to length and clarity concerns.
Proposal
Rebuild the NixOS Wiki and nixpkgs documentation for the k3s module and packages to be clear and concise. Facilitate through this PR a discussion of any changes to the process of maintaining the package and make overall process clear to contributors and users.
Checklist

[X] checked latest Nixpkgs manual (source) and latest NixOS manual (source)
[X] checked open documentation issues for possible duplicates
[X] checked open documentation pull requests for possible solutions

Add a :+1: reaction to issues you find important.

Wiki: https://wiki.nixos.org/wiki/K3s

This spun off of a conversation in #312795 with @superherointj, figured a small issue to track thoughts and conversation around updates would be useful.
CC: @euank @Mic92 @yajo

Yes, once release happens we should delete all K3s versions that exist in nixos-stable but the latest. And add the aliases warnings (for those versions).

This is one point where I disagree on the process given those branches still receive upstream support, but something we can discuss as part of any documentation update work.

I also don't like we having to rush versions forward and to drop versions too early. For a brief moment we were more relaxed on this, but a NixOS release manager intervened such that we would not have EOL versions by the end of a NixOS release. Most of the existing K3s documentation was born out of that. @euank tried his best to explain the situation to the release manager. And @euank got away with the situation we have now. Fortunately, recently Jon Ringer & Wegank came to the understanding that we could judge it by ourselves [with certain limits], which makes things easier, and so we are in a middle ground. A sane approach to this. Because honestly we don't have the resources to handle everything perfectly. Nixpkgs doesn't want packages versioned and wants to drop packages ASAP because build resources are limited and there are security considerations like having to handle CVEs, etc. And other philosophical considerations.
What we got now can work. If somebody still needs some earlier version it is possible to reference it in as a new nixpkgs input. But obviously, it is not as convenient as just mentioning the wanted version.

The target of this issue should be to move content from Wiki to nixpkgs k3s's README.md, and keep a reference at Wiki for it.
Some things should be a solution instead of a documentation, such as: K3s reset node script. Firewall rules.

Really appreciate the context provided above, I will think a little deeper on the versioning process as it stands before jumping deeper into that area.

The target of this issue should be to move content from Wiki to nixpkgs k3s's README.md, and keep a reference at Wiki for K3s's README.md.
Some things should be a solution instead of a documentation, such as: K3s reset node script. Firewall rules. But that is not required to close this issue. The thinking here is to use Wiki as a user draft for the documentation.

I don't mind owning the first draft on this as I know everyone is busy, looking like I will have some time this coming weekend for work on it. At first blush we could have a primary README that splits out more specific topics where each topic is made as clear and concise as possible. Possibly an examples style directory if we would like more detailed use cases written out (rather than linking to external examples which can link rot). First stab at a possible structure:

README.md
USAGE.md

examples/REAL_WORLD_ONE.md
examples/REAL_WORLD_TWO.md

TROUBLESHOOTING.md
VERSIONING.md
MAINTENANCE.md

README.md focuses on simple layman's terms descriptions, most basic use case (e.g. single node), and high level descriptions for linking out to the more detailed use cases and reference materials. Keep the cognitive burden of each file low and the purpose clear and constrained.

On the file structure, I think would be best to have a directory for ./docs/ and keep only the README.md at K3s directory.
I agree it's important to provide functional examples. Maybe one for Raspberry Pi which is a common use case.

Took a first stab at the documentation update in #314395, take a look when y'all can and would love feedback. There were some inconsistencies in stated intent and execution details for package maintenance so I tried to reconcile them so that versioning policy and execution details matched. If I missed the mark for historical conversations, let me know.


Prisma Crashes on Upsert with Composite Unique Index

Bug description
The following code is causing a crash:
await prisma.image.upsert({
  create: data,
  update: data,
  where: {
    src_categoryId: {
      src: data.src,
      categoryId: category.id,
    },
  },
});

However switching to a create or changing the where from scr_categoryId to just id: 'something' works fine.
How to reproduce
I can create a repo if needed but here are the basic properties:
Schema
model Category {
  id        String          @default(uuid()) @id
  name      String          @unique
  images    Image[]

  @@map("categories")
}

model Image {
  id                 String           @default(uuid()) @id
  src                String
  categoryId         String           @map("category_id")
  category           Category @relation(fields: [categoryId], references: [id])

  @@map("images")
  @@unique([src, categoryId])
}

Expected behavior
Should search based on the composite unique
Prisma information
See above
Environment & setup

OS: Mac OS (latest)
Database: PostgreSQL
Prisma version:

@prisma/cli          : 2.0.0-beta.5
Current platform     : darwin
Query Engine         : query-engine 0c2ec197653b278b2978845ef958db88824cd82e
Migration Engine     : migration-engine-cli 0c2ec197653b278b2978845ef958db88824cd82e
Introspection Engine : introspection-core 0c2ec197653b278b2978845ef958db88824cd82e
Format Binary        : prisma-fmt 0c2ec197653b278b2978845ef958db88824cd82

Node.js version: v12.16.3

Closing this. @ryands17 helped me debug. Turns out this was fixed in beta 6. Please make sure to update your CLI and client to match the same version and run npx prisma generate!


Marking more classes @BetaApi

In gax, all of retrying (except RetrySettings) and all of batching are marked; all public gax-grpc classes are being marked.

Codecov Report

Merging #291 into master will increase coverage by 1.47%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #291      +/-   ##
============================================
+ Coverage     69.41%   70.88%   +1.47%
- Complexity      339      341       +2
============================================
  Files            68       68
  Lines          1625     1817     +192
  Branches        136      148      +12
============================================
+ Hits           1128     1288     +160
- Misses          432      464      +32
  Partials         65       65

Impacted Files
Coverage Δ
Complexity Δ

...ain/java/com/google/api/gax/grpc/ApiException.java
100% <ø> (ø)
4 <0> (ø)
:arrow_down:

.../java/com/google/api/gax/grpc/ProviderManager.java
0% <ø> (ø)
0 <0> (ø)
:arrow_down:

.../com/google/api/gax/grpc/BatchedRequestIssuer.java
78.94% <ø> (ø)
6 <0> (ø)
:arrow_down:

.../com/google/api/gax/batching/ThresholdBatcher.java
94.73% <ø> (+0.21%)
14 <0> (ø)
:arrow_down:

...gle/api/gax/grpc/InstantiatingChannelProvider.java
47.95% <ø> (+1.44%)
9 <0> (ø)
:arrow_down:

...le/api/gax/batching/AccumulatingBatchReceiver.java
100% <ø> (ø)
4 <0> (ø)
:arrow_down:

...va/com/google/api/gax/grpc/SimpleCallSettings.java
100% <ø> (ø)
4 <0> (ø)
:arrow_down:

...oogle/api/gax/batching/BatchingFlowController.java
100% <ø> (ø)
3 <0> (ø)
:arrow_down:

...ava/com/google/api/gax/grpc/UnaryCallSettings.java
94.28% <ø> (+1.69%)
3 <0> (ø)
:arrow_down:

...main/java/com/google/api/gax/grpc/PageContext.java
100% <ø> (ø)
3 <0> (ø)
:arrow_down:

... and 73 more

Continue to review full report at Codecov.

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

LGTM


Added FQDN Network Policy feature on GKE Cluster

Added the possibily to enable FQDN Network Policy feature on standard GKE Cluster
Checklist

I applicable, I acknowledge that I have:

[x] Read the contributing guide
[x] Ran terraform fmt on all modified files
[x] Regenerated the relevant README.md files using tools/tfdoc.py
[x] Made sure all relevant tests pass

Hey @luigi-bitonti thanks for the PR, can you also add the change on the autopilot-module?

Hey @luigi-bitonti thanks for the PR, can you also add the change on the autopilot-module?

Hey @luigi-bitonti thanks for the PR, can you also add the change on the autopilot-module?

Hi Daniel, I didn't do it because GCP doc (https://cloud.google.com/kubernetes-engine/docs/how-to/fqdn-network-policies#enable_fqdn_network_policy_in_a_new_cluster) said that "You can't enable this feature when you create a new Autopilot cluster", but only on an existing one.
Do you want the feature anyway?

Hey @luigi-bitonti thanks for the PR, can you also add the change on the autopilot-module?

Hi Daniel, I didn't do it because GCP doc (https://cloud.google.com/kubernetes-engine/docs/how-to/fqdn-network-policies#enable_fqdn_network_policy_in_a_new_cluster) said that "You can't enable this feature when you create a new Autopilot cluster", but only on an existing one. Do you want the feature anyway?

It's a good catch, I didn't see that we this one. So actually, during the preview, we can use it on existing clusters only, that would drive us to this in two steps. I think, but @juliocc keep me honest, I'd go ahead with Standard only and open an issue the integrate this as soon as it reaches the GA stage. @juliocc wdyt?

I'm okay not adding the flag to autopilot as long as we open an issue to keep track of it.


Enable macOS for CocoaPods release

Description
Fixes #1514
Testing instructions
Types of changes
Checklist

[ ] Prefix PR title with [WIP] if necessary.
[ ] Add tests to cover changes as needed.
[ ] Update documentation as needed.
[ ] I have read the guidelines for adding a new blockchain
[ ] If there is a related Issue, mention it in the description (e.g. Fixes #<issue_number> ).

we disabled mac on purpose because after enabling bitcode, the final binary size bloated over 1G

@hewigovens Would it be ok to make the macOS version a separate pod?

That's possible, we will revisit enabling mac later

@grachyov we tried Encrypted Ink, it looks still under development, but a cool idea to support

@hewigovens thanks! This branch is no good anymore. I have used it to build macOS pod referencing forked repo.
I'll close this pull-request and submit a new one later.
Would it be better to release macOS version as a subspec or as a separate pod?

Please include in current spec, no need to create a new one. Thanks