"Statistics not ready yet. Waiting." in Web Interface

my environment running ArangoDB
I'm using the latest ArangoDB of the respective release series:

[ ] 2.8
[ ] 3.0
[ ] 3.1
[X] 3.2
[ ] 3.3
[ ] self-compiled devel branch

Mode:

[ ] Cluster
[X] Single-Server

Storage-Engine:

[X] mmfiles
[ ] rocksdb

On this operating system:

[ ] DCOS on

[ ] AWS
[ ] Azure
[ ] own infrastructure

[x] Linux

[ ] Debian .deb
[ ] Ubuntu .deb
[ ] SUSE   .rpm
[X] RedHat .rpm
[ ] Fedora .rpm
[ ] Gentoo
[ ] docker - official docker library
[ ] other:

[ ] Windows, version:
[ ] MacOS, version:

this is a web interface-related issue:
I'm using the web interface with this browser:   Mozilla Firefox  running on this OS: Windows Server 2012 R2 Standard

[ ] authentication is enabled?
[ ] using the cluster?
[X] _system database?

These are the steps to reproduce:

open the browser on http://<IP_ADDRESS>:8529
log in as root
use database [X] _system [ ] other:
click to DASHBOARD
...

The following problem occurs: [Screenshot?]
Statistics not ready yet. Waiting.

Instead I would be expecting:
Statistic Information
Having this issue with ArangoDB version 3.2.9 running on RHEL 7.5. Same problem with ArangoDB version 3.3.10.
Works fine with RedHat 6 in other server.
Note:
gather server statistics
statistics = true

Hi @annguyenliaison,
I tried to reproduce this issue on 3.2.9 and 3.3.10. On fresh installation of 3.3.10, the Dashboard UI hangs with the message "Statistics not ready yet. Waiting." for around ~10 to 15seconds but eventually loads the statistics. Also, this is not recurring issue on my side. The Dashboard loads withour any problems the next time. Can you please confirm if the Dashboard loads eventually or hangs indefinitely.
Best,

Hi @vinaypyati ,
Yes, it still hangs indefinitely.  I also tried to restart arangodb several times, but nothing changes. Other things are fine, only getting stuck with Dashboard.
Note that there is no internet connection with the server.

Hi @vinaypyati ,
Yes, it still hangs indefinitely.  I also tried to restart arangodb several times, but nothing changes. Other things are fine, only getting stuck with Dashboard.
Note that there is no internet connection with the server.

Hi @annguyenliaison,
Thank you for the information. Unfortunately, the issue still is still not reproducible.
Can you please try restarting ArangoDB with storage engine set to RocksDB and check if the issue still persists? You can change the storage engine with the option --server.storage-engine=rocksdb from command line.
Can you please also confirm the browser and browser version that you are using to access the web UI?
Best,

Hi @annguyenliaison
Just sending a quick followup - have you been able to try out Vinay's suggestion?
Best,

Hi @vinaypyati and @OmarAyo ,
Sorry for the delay. I still couldn't have a chance to try Vinay's suggestion. The arangoDB has been being used 24/7 without the Statistics display. I will try with storage engine as RocksDB maybe next week.
I used Google Chrome 65.0.3325.181 (Official Build) (64-bit) and FireFox 52.0.2 (64-bit) to access the web UI.
For other information, I also run these following commands earlier after installing arangoDB before in that server:
sudo bash -c "echo madvise >/sys/kernel/mm/transparent_hugepage/enabled"
sudo bash -c "echo madvise >/sys/kernel/mm/transparent_hugepage/defrag"
sudo bash -c "echo 2 >/proc/sys/vm/overcommit_memory"
sudo bash -c "echo 0 >/proc/sys/vm/zone_reclaim_mode"
sudo bash -c "sysctl -w 'vm.max_map_count=10000000'"
sudo bash -c "echo 74 > /proc/sys/vm/overcommit_ratio"
export GLIBCXX_FORCE_NEW=1
BR,
-An

Hi,
I have just tested on a different RH 7.3 server with arangodb version 3.2.9 and statistic works on web interface.
The browser here in this case is Firefox 60.0.2 (64-bit) and there is internet connection.
So there might be some problem with the one above (ArangoDB version 3.2.9 running on RHEL 7.5). Do you think there are some missing things in /usr/share/arangodb3/js or/and /var/lib/arangodb3-apps ?

Hi @annguyenliaison,
Sorry for the delay and thank you for the details. Good to know that statistics work on RH 7.3 with ArangoDB version 3,2,9. I did further tests and tried reproducing this issue with RHEL 7.5 and ArangoDB version 3.2.9. Statistics work here.
I confirm that the warning that you receive on the browser console dygraphs: Can't plot empty data set is reproducible with fresh installation on my side too. The browser warns with this error and eventually displays the statistics after 10 to 15 seconds. However, we are analyzing more on this warning and will keep you updated.
You mentioned that on your side RHEL 7.5 does not have an internet connection. Is it possible to check if you can reproduce it with an internet connection?
Best,

Hi @annguyenliaison,
Just sending a quick follow up. We see similar issues being reported. Wanted to confirm if this issue is also similar. Can you let us know if you switch tabs or keep ArangoDB Web Interface in the background in your browser and visit back after a long time(an hour or so) to check if the Dashboard has been loaded?
Thanks!

Hi,
We haven't heard back from you for a while now. I will go ahead and close this issue. Please feel free to reopen if you have any further queries.
Thanks!


Documentation re: iOS 9 minimum version

Recent versions of Xcode now throw warnings when projects default to iOS 8. We should:

Make the default template iOS 9.
Provide documentation as to how to target iOS 8 for those still wanting to do so.
Provide documentation as to how to migrate old projects.

cc @jmagman @xster @csells

The template change is tracked in https://github.com/flutter/flutter/issues/60035 and automatically migrate existing projects in #62880.
@kf6gpe should we use this issue to track the documentation changes?

Sounds good. Didn't realize you'd already started issues for the work! That's great.
This is for tracking documentation then.

Provide documentation as to how to target iOS 8 for those still wanting to do so.

I don't think we document how to target iOS 8 anymore--we shouldn't advertise or imply that it will work.

Default template updated in https://github.com/flutter/flutter/pull/62902
Tool automatically migrates in https://github.com/flutter/flutter/pull/85174
Website updated: https://github.com/flutter/website/pull/6057

Closing as done!


Stack Manager: ruby gems support?

I see in https://github.com/vert-x3/vertx-lang-ruby/blob/master/pom.xml#L323 you are already using the ruby gems maven proxy.  Could/is this support available in the Stack Manager?
The support for the type is already included: https://github.com/vert-x3/vertx-stack/blob/367d36d6ae82dac53b16b6e1c7338ac1fa6bbd92/stack-manager/src/main/java/io/vertx/stack/model/Dependency.java#L57

so you mean to be able to configure the stack manager to use a specific repository ?

So basically being able to use the same pattern as:
<dependencies>
  <dependency>
    <groupId>rubygems</groupId>
    <artifactId>rails</artifactId>
    <version>.3.0.3</version>
    <type>gem</type>
  </dependency>
  ...
</dependencies>

but of course in the json format that stack manager.
from: http://rubygems-proxy.torquebox.org
The Idea being that when using the ruby lang you can download the Gem Dependencies the same way Maven Jar deps are downloaded.

@vietj okay i went about this in a different way.  I was thinking that taking advantage of ruby's bundler would be better.
So i put this together:
Dockerfile:
...
# Current workaround to make bundler function
ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin

#Install bundler
RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler

# Show gems list so we can confirm bundler is installed
RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem list -d

RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile

# Use this when you want to test the path resolution of the search for bundle
# RUN java -Djruby.debug.scriptResolution=true -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile
...

Full dockerfile example:
# Notice the difference between VERTX_HOME and VERTICLE_HOME.
# VERTX_HOME is the location of the vertex executable/command

# Alpine cannot be used because Jruby requires cglib
FROM vertx/vertx3
# FROM vertx/vertx3-alpine

ENV VERTICLE_HOME /usr/verticles

COPY logging.properties ${VERTICLE_HOME}/logging.properties
ENV VERTX_JUL_CONFIG $VERTICLE_HOME/logging.properties

# Setup Stack Manager for Vertx
COPY vertx-stack.json ${VERTX_HOME}/vertx-stack.json
# Download and resolve dependencies listed in stack manager
RUN vertx resolve && rm -rf ${HOME}/.m2

COPY config.json ${VERTICLE_HOME}/config.json

# Setup the cluster Hazelcast configuration
COPY cluster.xml ${VERTICLE_HOME}/cluster.xml

# Copies the starting verticles to the home directory
COPY $VERTICLE_NAME $VERTICLE_HOME/$VERTICLE_NAME
# Copies the sub-verticles into a verticles directory
COPY verticles $VERTICLE_HOME/verticles

COPY Gemfile $VERTICLE_HOME/Gemfile

# Current workaround to make bundler function
ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin

#Install bundler
RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler

# Show gems list so we can confirm bundler is installed
RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem list -d

RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile

# Use this when you want to test the path resolution of the search for bundle
# RUN java -Djruby.debug.scriptResolution=true -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile

# Starts the starting verticle in the home directory
WORKDIR $VERTICLE_HOME
ENTRYPOINT ["sh", "-c"]
# CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* $VERTX_ARGS"]
CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* -conf config.json $VERTX_ARGS"]

initial design was based on:
https://spin.atomicobject.com/2013/04/24/bundler-jruby-complete/
https://github.com/jruby/jruby/issues/3186#issuecomment-144786246
https://github.com/jruby/jruby/issues/2488
https://github.com/shoes/shoes4/pull/1168
has not been fully tested yet, but its a start to get the gems in the VERTICLE_HOME.
I think could also do a deps resolution similar to Stack Manager, where we do a bundle package and delete the rest of the files.
http://bundler.io/v1.16/man/bundle-package.1.html
Current console output of the build is:
Building cam-worker_01
Step 1/18 : FROM vertx/vertx3
 ---> e841617fbb56
Step 2/18 : ENV VERTICLE_HOME /usr/verticles
 ---> Using cache
 ---> 44cf2fa51e16
Step 3/18 : COPY logging.properties ${VERTICLE_HOME}/logging.properties
 ---> Using cache
 ---> afa9955265cd
Step 4/18 : ENV VERTX_JUL_CONFIG $VERTICLE_HOME/logging.properties
 ---> Using cache
 ---> 468580126dfe
Step 5/18 : COPY vertx-stack.json ${VERTX_HOME}/vertx-stack.json
 ---> Using cache
 ---> 9658255bf461
Step 6/18 : RUN vertx resolve && rm -rf ${HOME}/.m2
 ---> Using cache
 ---> 346bb8120aa6
Step 7/18 : COPY config.json ${VERTICLE_HOME}/config.json
 ---> Using cache
 ---> 8081e9c47544
Step 8/18 : COPY cluster.xml ${VERTICLE_HOME}/cluster.xml
 ---> Using cache
 ---> 47f2ca8e5d0a
Step 9/18 : COPY $VERTICLE_NAME $VERTICLE_HOME/$VERTICLE_NAME
 ---> a115d4a400ff
Step 10/18 : COPY verticles $VERTICLE_HOME/verticles
 ---> 889284e09f38
Step 11/18 : COPY Gemfile $VERTICLE_HOME/Gemfile
 ---> 56bc678b2bf7
Step 12/18 : ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin
 ---> Running in b64a637ddd82
Removing intermediate container b64a637ddd82
 ---> d4e3671da0e1
Step 13/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler
 ---> Running in 8d318a04ec10
Successfully installed bundler-1.16.1
1 gem installed
Removing intermediate container 8d318a04ec10
 ---> e4d7ae4eb4a1
Step 14/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem list -d
 ---> Running in 3ba5eab496ed
bundler (1.16.1)
    Authors: André Arko, Samuel Giddins, Chris Morris, James Wen, Tim
    Moore, André Medeiros, Jessica Lynn Suttles, Terence Lee, Carl
    Lerche, Yehuda Katz
    Homepage: http://bundler.io
    License: MIT
    Installed at: /root/.gem/jruby/2.3.0

    The best way to manage your application's dependencies

did_you_mean (1.0.1)
    Author: Yuki Nishijima
    Homepage: https://github.com/yuki24/did_you_mean
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    "Did you mean?" experience in Ruby

jar-dependencies (0.3.10)
    Author: christian meier
    Homepage: https://github.com/mkristian/jar-dependencies
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    manage jar dependencies for gems

jruby-openssl (0.9.21)
    Platform: java
    Authors: Ola Bini, JRuby contributors
    Homepage: https://github.com/jruby/jruby-openssl
    Licenses: EPL-1.0, GPL-2.0, LGPL-2.1
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    JRuby OpenSSL

jruby-readline (1.1.1)
    Platform: java
    Author: JRuby contributors
    Homepage: https://github.com/jruby/jruby
    Licenses: EPL-1.0, GPL-2.0, LGPL-2.1
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    JRuby Readline

json (1.8.3)
    Platform: java
    Author: Daniel Luz
    Homepage: http://json-jruby.rubyforge.org/
    License: Ruby
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    JSON implementation for JRuby

minitest (5.4.1)
    Author: Ryan Davis
    Homepage: https://github.com/seattlerb/minitest
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    minitest provides a complete suite of testing facilities supporting
    TDD, BDD, mocking, and benchmarking

net-telnet (0.1.1)
    Author: SHIBATA Hiroshi
    Homepage: https://github.com/ruby/net-telnet
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Provides telnet client functionality.

power_assert (0.2.3)
    Author: Kazuki Tsujimoto
    Homepage: https://github.com/k-tsj/power_assert
    Licenses: 2-clause BSDL, Ruby's
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Power Assert for Ruby

psych (2.2.4)
    Platform: java
    Authors: Aaron Patterson, SHIBATA Hiroshi, Charles Oliver Nutter
    Homepage: https://github.com/ruby/psych
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Psych is a YAML parser and emitter

rake (10.4.2)
    Authors: Eric Hodel, Jim Weirich
    Homepage: https://github.com/ruby/rake
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Rake is a Make-like program implemented in Ruby

rdoc (4.2.0)
    Authors: Eric Hodel, Dave Thomas, Phil Hagelberg, Tony Strauss
    Homepage: http://docs.seattlerb.org/rdoc
    License: Ruby
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    RDoc produces HTML and command-line documentation for Ruby projects

test-unit (3.1.1)
    Authors: Kouhei Sutou, Haruka Yoshihara
    Homepage: http://test-unit.github.io/
    Licenses: Ruby, PSFL
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    An xUnit family unit testing framework for Ruby.
Removing intermediate container 3ba5eab496ed
 ---> fd59804051cd
Step 15/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile
 ---> Running in 93dce86c9812
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from https://rubygems.org/....
Resolving dependencies.....
Fetching clavius 1.0.3
Installing clavius 1.0.3
Fetching thread_safe 0.3.6 (java)
Installing thread_safe 0.3.6 (java)
Fetching tzinfo 1.2.5
Installing tzinfo 1.2.5
Fetching biz 1.7.0
Installing biz 1.7.0
Using bundler 1.16.1
Bundle complete! 1 Gemfile dependency, 5 gems now installed.
Bundled gems are installed into `/usr/verticles/bundle`
Removing intermediate container 93dce86c9812
 ---> 7b0823bc7062
Step 16/18 : WORKDIR $VERTICLE_HOME
Removing intermediate container d4b8d1e54269
 ---> a4107ce92f4d
Step 17/18 : ENTRYPOINT ["sh", "-c"]
 ---> Running in 11ea7da0e520
Removing intermediate container 11ea7da0e520
 ---> 35db3050a133
Step 18/18 : CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* -conf config.json $VERTX_ARGS"]
 ---> Running in 4ae4dac2c982
Removing intermediate container 4ae4dac2c982
 ---> 221df32ab9e3
Successfully built 221df32ab9e3
Successfully tagged camundaworkervertx_cam-worker_01:latest
Creating camundaworkervertx_cam-worker_01_1 ... done
Attaching to camundaworkervertx_cam-worker_01_1
cam-worker_01_1  | Starting Primary Verticle
cam-worker_01_1  | Succeeded in deploying verticle
cam-worker_01_1  | Starting fetch-and-lock Verticle
cam-worker_01_1  | Starting httpserver Verticle
cam-worker_01_1  | Starting task-complete Verticle
cam-worker_01_1  | Starting calculate-numbers Verticle

Few issues:

Setting of the path: ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin in the docker file, "feels" wrong.. Better way to do this?

Bundler is running as root and we see this warning message appear in console.  Assume this is a message/error that should be resolved.

How it currently works:
You add a Gemfile file to your $VERTICLE_HOME, in this case mine looks like:
source 'https://rubygems.org'

gem "biz"

Additions that could be added in this model was moved forward:

Run Bundle install for multiple gemfiles, so each verticle could have their own gem files for better portability.

updated example for simplicity
Building cam-worker_01
Step 1/18 : FROM vertx/vertx3
 ---> e841617fbb56
Step 2/18 : ENV VERTICLE_HOME /usr/verticles
 ---> Using cache
 ---> 44cf2fa51e16
Step 3/18 : COPY logging.properties ${VERTICLE_HOME}/logging.properties
 ---> Using cache
 ---> afa9955265cd
Step 4/18 : ENV VERTX_JUL_CONFIG $VERTICLE_HOME/logging.properties
 ---> Using cache
 ---> 468580126dfe
Step 5/18 : COPY vertx-stack.json ${VERTX_HOME}/vertx-stack.json
 ---> Using cache
 ---> 9658255bf461
Step 6/18 : RUN vertx resolve && rm -rf ${HOME}/.m2
 ---> Using cache
 ---> 346bb8120aa6
Step 7/18 : COPY config.json ${VERTICLE_HOME}/config.json
 ---> Using cache
 ---> 8081e9c47544
Step 8/18 : COPY cluster.xml ${VERTICLE_HOME}/cluster.xml
 ---> Using cache
 ---> 47f2ca8e5d0a
Step 9/18 : COPY $VERTICLE_NAME $VERTICLE_HOME/$VERTICLE_NAME
 ---> 5723ba685104
Step 10/18 : COPY verticles $VERTICLE_HOME/verticles
 ---> f50bc5bccaa0
Step 11/18 : COPY Gemfile $VERTICLE_HOME/Gemfile
 ---> d88b3a12c65a
Step 12/18 : ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin
 ---> Running in a4c1f00f4363
Removing intermediate container a4c1f00f4363
 ---> c4927c5c10c2
Step 13/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler
 ---> Running in 95fc2f473661
Successfully installed bundler-1.16.1
1 gem installed
Removing intermediate container 95fc2f473661
 ---> 6cfe30e7f36f
Step 14/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem list -d
 ---> Running in 50256ce3a260
bundler (1.16.1)
    Authors: André Arko, Samuel Giddins, Chris Morris, James Wen, Tim
    Moore, André Medeiros, Jessica Lynn Suttles, Terence Lee, Carl
    Lerche, Yehuda Katz
    Homepage: http://bundler.io
    License: MIT
    Installed at: /root/.gem/jruby/2.3.0

    The best way to manage your application's dependencies

did_you_mean (1.0.1)
    Author: Yuki Nishijima
    Homepage: https://github.com/yuki24/did_you_mean
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    "Did you mean?" experience in Ruby

jar-dependencies (0.3.10)
    Author: christian meier
    Homepage: https://github.com/mkristian/jar-dependencies
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    manage jar dependencies for gems

jruby-openssl (0.9.21)
    Platform: java
    Authors: Ola Bini, JRuby contributors
    Homepage: https://github.com/jruby/jruby-openssl
    Licenses: EPL-1.0, GPL-2.0, LGPL-2.1
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    JRuby OpenSSL

jruby-readline (1.1.1)
    Platform: java
    Author: JRuby contributors
    Homepage: https://github.com/jruby/jruby
    Licenses: EPL-1.0, GPL-2.0, LGPL-2.1
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    JRuby Readline

json (1.8.3)
    Platform: java
    Author: Daniel Luz
    Homepage: http://json-jruby.rubyforge.org/
    License: Ruby
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    JSON implementation for JRuby

minitest (5.4.1)
    Author: Ryan Davis
    Homepage: https://github.com/seattlerb/minitest
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    minitest provides a complete suite of testing facilities supporting
    TDD, BDD, mocking, and benchmarking

net-telnet (0.1.1)
    Author: SHIBATA Hiroshi
    Homepage: https://github.com/ruby/net-telnet
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Provides telnet client functionality.

power_assert (0.2.3)
    Author: Kazuki Tsujimoto
    Homepage: https://github.com/k-tsj/power_assert
    Licenses: 2-clause BSDL, Ruby's
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Power Assert for Ruby

psych (2.2.4)
    Platform: java
    Authors: Aaron Patterson, SHIBATA Hiroshi, Charles Oliver Nutter
    Homepage: https://github.com/ruby/psych
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Psych is a YAML parser and emitter

rake (10.4.2)
    Authors: Eric Hodel, Jim Weirich
    Homepage: https://github.com/ruby/rake
    License: MIT
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    Rake is a Make-like program implemented in Ruby

rdoc (4.2.0)
    Authors: Eric Hodel, Dave Thomas, Phil Hagelberg, Tony Strauss
    Homepage: http://docs.seattlerb.org/rdoc
    License: Ruby
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    RDoc produces HTML and command-line documentation for Ruby projects

test-unit (3.1.1)
    Authors: Kouhei Sutou, Haruka Yoshihara
    Homepage: http://test-unit.github.io/
    Licenses: Ruby, PSFL
    Installed at (default): uri:classloader:/META-INF/jruby.home/lib/ruby/gems/shared

    An xUnit family unit testing framework for Ruby.
Removing intermediate container 50256ce3a260
 ---> 89de443b068e
Step 15/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile
 ---> Running in ab5ccb1541b4
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Fetching gem metadata from https://rubygems.org/...............
Resolving dependencies......
Fetching concurrent-ruby 1.0.5 (java)
Installing concurrent-ruby 1.0.5 (java)
Fetching i18n 0.9.5
Installing i18n 0.9.5
Fetching minitest 5.11.3
Installing minitest 5.11.3
Fetching thread_safe 0.3.6 (java)
Installing thread_safe 0.3.6 (java)
Fetching tzinfo 1.2.5
Installing tzinfo 1.2.5
Fetching activesupport 5.1.5
Installing activesupport 5.1.5
Using bundler 1.16.1
Fetching working_hours 1.1.3
Installing working_hours 1.1.3
Bundle complete! 1 Gemfile dependency, 8 gems now installed.
Bundled gems are installed into `/usr/verticles/bundle`
Removing intermediate container ab5ccb1541b4
 ---> a30deeebefcf
Step 16/18 : WORKDIR $VERTICLE_HOME
Removing intermediate container aafaefe2663d
 ---> 64bd489dc98d
Step 17/18 : ENTRYPOINT ["sh", "-c"]
 ---> Running in c477d0eb4f8f
Removing intermediate container c477d0eb4f8f
 ---> 751b8efffe10
Step 18/18 : CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* -conf config.json $VERTX_ARGS"]
 ---> Running in 3fad3374f7dc
Removing intermediate container 3fad3374f7dc
 ---> 230f4e0bbcd2
Successfully built 230f4e0bbcd2
Successfully tagged camundaworkervertx_cam-worker_01:latest
Creating camundaworkervertx_cam-worker_01_1 ... done
Attaching to camundaworkervertx_cam-worker_01_1
cam-worker_01_1  | Starting Primary Verticle
cam-worker_01_1  | Succeeded in deploying verticle
cam-worker_01_1  | Starting calculate-numbers Verticle
cam-worker_01_1  | Starting httpserver Verticle
cam-worker_01_1  | Starting task-complete Verticle
cam-worker_01_1  | Starting fetch-and-lock Verticle
cam-worker_01_1  | 2018-02-23 17:53:15 -0500
cam-worker_01_1  | 2018-02-23 11:00:00 -0500
cam-worker_01_1  | 2018-02-23 09:15:00 -0500

Ruby File:
require 'working_hours'

# Configure working hours
WorkingHours::Config.working_hours = {
  :tue => {'09:00' => '12:00', '13:00' => '17:00'},
  :wed => {'09:00' => '12:00', '13:00' => '17:00'},
  :thu => {'09:00' => '12:00', '13:00' => '17:00'},
  :fri => {'09:00' => '12:00', '13:00' => '17:05:30'},
  :sat => {'19:00' => '24:00'}
}

# Configure timezone (uses activesupport, defaults to UTC)
WorkingHours::Config.time_zone = 'Eastern Time (US & Canada)'

# Configure holidays
WorkingHours::Config.holidays = [Date.new(2018, 02, 22)]

puts 1.working.day.from_now
puts 2.working.hours.from_now
puts 15.working.minutes.from_now

Gemfile:
source 'https://rubygems.org'

gem "working_hours"

[ ] add support for deployment tag of bundle install

@vietj if you have some ideas for best approaches for optimizations, that would be great!  happy to do a PR.

Note for future testing:
Use the following as basis for seeing how jruby is resolving the executable gem location
RUN java -Djruby.debug.scriptResolution=true -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --binstubs --gemfile=$VERTICLE_HOME/Gemfile

specifically:  -Djruby.debug.scriptResolution=true

When testing for where gems are being installed, use the following
# Show gems list so we can confirm bundler is installed. Used for troubleshooting where Bundler gets installed:
 RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem list -d

the -d will display the details and therefore print out the install path of the gems.  THis is important for debugging to understand where bundler gets installed vs the gems that come with jruby-complete

Updated Dockerfile with cleaner install:
# Notice the difference between VERTX_HOME and VERTICLE_HOME.
# VERTX_HOME is the location of the vertex executable/command

# Alpine cannot be used because Jruby requires cglib to install bundler
FROM vertx/vertx3
# FROM vertx/vertx3-alpine

ENV VERTICLE_HOME /usr/verticles

COPY logging.properties ${VERTICLE_HOME}/logging.properties
ENV VERTX_JUL_CONFIG $VERTICLE_HOME/logging.properties

# Setup Stack Manager for Vertx
COPY vertx-stack.json ${VERTX_HOME}/vertx-stack.json
# Download and resolve dependencies listed in stack manager
RUN vertx resolve && rm -rf ${HOME}/.m2

COPY config.json ${VERTICLE_HOME}/config.json

# Setup the cluster Hazelcast configuration
COPY cluster.xml ${VERTICLE_HOME}/cluster.xml

# Copies the starting verticles to the home directory
COPY $VERTICLE_NAME $VERTICLE_HOME/$VERTICLE_NAME
# Copies the sub-verticles into a verticles directory
COPY verticles $VERTICLE_HOME/verticles

# -- RUBY GEMFILE ISTALL: START --
# Copy Gemfile into VERTICLE_HOME
COPY Gemfile $VERTICLE_HOME/Gemfile

# Set Path for where bundler will get installed
# This is set before bundler install to prevent post-install warning
ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin

# Install Bundler gem
RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler

# Install gems in gemfile located in VERTICLE_HOME
# @TODO Make --path location configurable
RUN BUNDLE_SILENCE_ROOT_WARNING=true java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --gemfile=$VERTICLE_HOME/Gemfile

# Print Gemfile.lock file for logging purposes, so we know what was installed by bundle install
RUN cat $VERTICLE_HOME/Gemfile.lock
# -- RUBY GEMFILE INSTALL: END --

# Starts the starting verticle in the home directory
WORKDIR $VERTICLE_HOME
ENTRYPOINT ["sh", "-c"]
# CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* $VERTX_ARGS"]
CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* -conf config.json $VERTX_ARGS"]

Console Output:
Building cam-worker_01
Step 1/18 : FROM vertx/vertx3
 ---> e841617fbb56
Step 2/18 : ENV VERTICLE_HOME /usr/verticles
 ---> Using cache
 ---> 44cf2fa51e16
Step 3/18 : COPY logging.properties ${VERTICLE_HOME}/logging.properties
 ---> Using cache
 ---> afa9955265cd
Step 4/18 : ENV VERTX_JUL_CONFIG $VERTICLE_HOME/logging.properties
 ---> Using cache
 ---> 468580126dfe
Step 5/18 : COPY vertx-stack.json ${VERTX_HOME}/vertx-stack.json
 ---> Using cache
 ---> 9658255bf461
Step 6/18 : RUN vertx resolve && rm -rf ${HOME}/.m2
 ---> Using cache
 ---> 346bb8120aa6
Step 7/18 : COPY config.json ${VERTICLE_HOME}/config.json
 ---> Using cache
 ---> 8081e9c47544
Step 8/18 : COPY cluster.xml ${VERTICLE_HOME}/cluster.xml
 ---> Using cache
 ---> 47f2ca8e5d0a
Step 9/18 : COPY $VERTICLE_NAME $VERTICLE_HOME/$VERTICLE_NAME
 ---> 0f828cc56402
Step 10/18 : COPY verticles $VERTICLE_HOME/verticles
 ---> 0ed803699d5f
Step 11/18 : COPY Gemfile $VERTICLE_HOME/Gemfile
 ---> b0546b5aa8a9
Step 12/18 : ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin
 ---> Running in 1252b03599ca
Removing intermediate container 1252b03599ca
 ---> 558baba051c4
Step 13/18 : RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler
 ---> Running in c4fbac1f8b10
Successfully installed bundler-1.16.1
1 gem installed
Removing intermediate container c4fbac1f8b10
 ---> dcbd6c07d3ec
Step 14/18 : RUN BUNDLE_SILENCE_ROOT_WARNING=true java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --gemfile=$VERTICLE_HOME/Gemfile
 ---> Running in cb295810f9af
Fetching gem metadata from https://rubygems.org/...............
Resolving dependencies......
Fetching concurrent-ruby 1.0.5 (java)
Installing concurrent-ruby 1.0.5 (java)
Fetching i18n 0.9.5
Installing i18n 0.9.5
Fetching minitest 5.11.3
Installing minitest 5.11.3
Fetching thread_safe 0.3.6 (java)
Installing thread_safe 0.3.6 (java)
Fetching tzinfo 1.2.5
Installing tzinfo 1.2.5
Fetching activesupport 5.1.5
Installing activesupport 5.1.5
Using bundler 1.16.1
Fetching working_hours 1.1.3
Installing working_hours 1.1.3
Bundle complete! 1 Gemfile dependency, 8 gems now installed.
Bundled gems are installed into `/usr/verticles/bundle`
Removing intermediate container cb295810f9af
 ---> 13a6915a4793
Step 15/18 : RUN cat $VERTICLE_HOME/Gemfile.lock
 ---> Running in a1fc115edd38
GEM
  remote: https://rubygems.org/
  specs:
    activesupport (5.1.5)
      concurrent-ruby (~> 1.0, >= 1.0.2)
      i18n (~> 0.7)
      minitest (~> 5.1)
      tzinfo (~> 1.1)
    concurrent-ruby (1.0.5)
    concurrent-ruby (1.0.5-java)
    i18n (0.9.5)
      concurrent-ruby (~> 1.0)
    minitest (5.11.3)
    thread_safe (0.3.6)
    thread_safe (0.3.6-java)
    tzinfo (1.2.5)
      thread_safe (~> 0.1)
    working_hours (1.1.3)
      activesupport (>= 3.2)
      tzinfo

PLATFORMS
  java
  ruby

DEPENDENCIES
  working_hours

BUNDLED WITH
   1.16.1
Removing intermediate container a1fc115edd38
 ---> 28f0f5a7bd2e
Step 16/18 : WORKDIR $VERTICLE_HOME
Removing intermediate container 70d1e02caabe
 ---> a3899e4a19bd
Step 17/18 : ENTRYPOINT ["sh", "-c"]
 ---> Running in 7557f1f729a8
Removing intermediate container 7557f1f729a8
 ---> 3eaadffcce66
Step 18/18 : CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* -conf config.json $VERTX_ARGS"]
 ---> Running in 369d7b3b831b
Removing intermediate container 369d7b3b831b
 ---> fca0b9cc2dc8
Successfully built fca0b9cc2dc8
Successfully tagged camundaworkervertx_cam-worker_01:latest
Creating camundaworkervertx_cam-worker_01_1 ... done
Attaching to camundaworkervertx_cam-worker_01_1
cam-worker_01_1  | Starting Primary Verticle
cam-worker_01_1  | Succeeded in deploying verticle
cam-worker_01_1  | Starting task-complete Verticle
cam-worker_01_1  | Starting httpserver Verticle
cam-worker_01_1  | Starting calculate-numbers Verticle
cam-worker_01_1  | Starting fetch-and-lock Verticle
cam-worker_01_1  | 2018-02-24 12:13:44 -0500
cam-worker_01_1  | 2018-02-23 15:00:00 -0500
cam-worker_01_1  | 2018-02-23 13:15:00 -0500

Notable updates:
RUN BUNDLE_SILENCE_ROOT_WARNING=true java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --gemfile=$VERTICLE_HOME/Gemfile
The env var BUNDLE_SILENCE_ROOT_WARNING=true is submitted with bundler commands to prevent the Root warning.
and
After the run of bundle install, we do a RUN cat $VERTICLE_HOME/Gemfile.lock to print the lockfile contents to the console for logging purposes so we know exactly what was loaded into the env.

Can see a working example at:
.rb file: https://github.com/DigitalState/camunda-worker-vertx/blob/feature-ruby-rubygems-stackmanager/worker/verticles/ruby-biz/ruby-biz.rb
gemfile: https://github.com/DigitalState/camunda-worker-vertx/blob/feature-ruby-rubygems-stackmanager/worker/Gemfile
dockerfile: https://github.com/DigitalState/camunda-worker-vertx/blob/feature-ruby-rubygems-stackmanager/worker/Dockerfile

@StephenOTT do you think it would be possible to move the vertx .rb files in gems instead of jars ?

so still requires the jars (for the java code) but rb code would be in gems instead

Not sure what you mean.

to have vertx for (j)ruby fully contained in gems file instead of jar files. not sure it makes sense though.

I don't know enough about jruby to comment on the viability of that.  What's your thinking/reasoning?
At the moment my understanding of the stack is: everything is executed in the jvm. Therefore you need a executable for the jvm.  Jruby-complete offers a compartmentalized jruby executable in the jar.  The addition gems I am downloading are outside the scope of jruby-complete and more inside of the scope of vertex instance and potentially vertex verticles.
If you are not using the jruby-complete jar, are you looking to install ruby rvm/jruby as a more integrated install in the OS?   If yes, what's the value/goal?

Additional cleanup for dockerfile to reduce the amount of intermediate containers:
# Notice the difference between VERTX_HOME and VERTICLE_HOME.
# VERTX_HOME is the location of the vertex executable/command

# Alpine cannot be used because Jruby requires cglib to install bundler
FROM vertx/vertx3:3.5.1
# FROM vertx/vertx3-alpine

ENV VERTICLE_HOME /usr/verticles

COPY logging.properties ${VERTICLE_HOME}/logging.properties
ENV VERTX_JUL_CONFIG $VERTICLE_HOME/logging.properties

# Setup Stack Manager for Vertx
COPY vertx-stack.json ${VERTX_HOME}/vertx-stack.json
# Download and resolve dependencies listed in stack manager
RUN vertx resolve && rm -rf ${HOME}/.m2

# config.json file that will be used in the --conf argument of 'exec vertx run'
COPY config.json ${VERTICLE_HOME}/config.json

# Setup the cluster Hazelcast configuration
COPY cluster.xml ${VERTICLE_HOME}/cluster.xml

# Copies the starting verticles to the home directory
COPY $VERTICLE_NAME $VERTICLE_HOME/$VERTICLE_NAME
# Copies the sub-verticles into a verticles directory
COPY verticles $VERTICLE_HOME/verticles

# -- RUBY GEMFILE INSTALL: START --
# Copy Gemfile into VERTICLE_HOME
COPY Gemfile $VERTICLE_HOME/Gemfile

# Set Path for where bundler will get installed
# This is set before bundler install to prevent post-install warning
ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin

RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler \
 && BUNDLE_SILENCE_ROOT_WARNING=true java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --gemfile=$VERTICLE_HOME/Gemfile \
 && cat $VERTICLE_HOME/Gemfile.lock
# -- RUBY GEMFILE INSTALL: END --

# Starts the starting verticle in the home directory
WORKDIR $VERTICLE_HOME
ENTRYPOINT ["sh", "-c"]
# CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* $VERTX_ARGS"]
CMD ["exec vertx run $VERTICLE_NAME -cp $VERTICLE_HOME/* -conf config.json $VERTX_ARGS"]

specific focus on the following section:
# -- RUBY GEMFILE INSTALL: START --
# Copy Gemfile into VERTICLE_HOME
COPY Gemfile $VERTICLE_HOME/Gemfile

# Set Path for where bundler will get installed
# This is set before bundler install to prevent post-install warning
ENV PATH=$PATH:/root/.gem/jruby/2.3.0/bin

RUN java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S gem install --user-install --no-document bundler \
 && BUNDLE_SILENCE_ROOT_WARNING=true java -jar ${VERTX_HOME}/lib/jruby-complete-<IP_ADDRESS>.jar -S bundle install --path=${VERTICLE_HOME}/bundle --gemfile=$VERTICLE_HOME/Gemfile \
 && cat $VERTICLE_HOME/Gemfile.lock
# -- RUBY GEMFILE INSTALL: END --

@vietj just following up on your preview comment

Added a PR to vertx examples repo https://github.com/vert-x3/vertx-examples/pull/272

On related notes,
two issues i have noticed:

On slower machines (like when developing locally) the startup of a jRuby verticle (especially when its the main verticle being started up through the vertx run command, will cause event loop blocking beyond the 200ms limit and throw warnings.

The GEM_PATH example usage in the CLI as shown here: http://vertx.io/docs/vertx-core/ruby/#_verticle_deployment_options does not work.  The CLI throws a expecting double quote object error that appears related to jackson parsing (based on some googling of the error)

@vietj  are these known issues?

yes
I don't think so


Fix: Error occurs when removing max or min value from a question #837

Closes # https://github.com/UserOfficeProject/user-office-project-issue-tracker/issues/837
Description
When removing max or min values from a Rich Text Input or Text Input the system produces an error.
Motivation and Context
Resolve the error when removing max or min values from a Rich Text Input or Text Input.
How Has This Been Tested
Manually tested user-friendly error message.
Changes
Update frontend pages to resolve the error.
Tests included/Docs Updated?

[x] I have added tests to cover my changes.
[ ] All relevant doc has been updated

Should we not add e2e test for this since it was a bug not easy to find.

After testing, it is found that Yup.number().transform is not working in this scenario because the field clear up will not trigger the function.

Maybe this PR could also widen a little bit of scope and address preventing negative values for min/max as well. Otherwise, this could also be solved in another task.

Replaced


NSFS | NC | Health script | add account uid gid can access new_buckets_path check

Environment info

NooBaa Version: master
Platform: NC

Actual behavior

Currently there is no check if an account can access its new_buckets_path during the run of the health script.

Expected behavior

During the health script run, a check if an account can access its new_buckets_path will be executed.

Steps to reproduce

Create a path that only root can access - for example -  sudo mkdir /tmp/root_dir ; chmod 700 /tmp/root_dir/
Add an account having uid=200, gid=200, new_buckets_path = /tmp/root_dir/
Run health script - currently you won't see an error, after this bug is resolved - expect to see this issue reported.

Verified on downstream build 02/12
Below is the output from health script . Error is properly reported for the accounts having no access to fs directories
[root@ananrhel92-x-worker1 ~]# jq '.' output_all.json
{
  "service_name": "noobaa_nsfs",
  "status": "OK",
  "memory": "338.2M",
  "checks": {
    "services": [
      {
        "name": "noobaa_nsfs",
        "service_status": "active",
        "pid": "2241747",
        "error_type": "PERSISTENT"
      },
      {
        "name": "rsyslog",
        "service_status": "active",
        "pid": "2240893",
        "error_type": "PERSISTENT"
      }
    ],
    "endpoint": {
      "endpoint_state": {
        "response": {
          "response_code": "RUNNING",
          "response_message": "Endpoint running successfuly."
        },
        "total_fork_count": 2,
        "running_workers": [
          2,
          1
        ]
      },
      "error_type": "TEMPORARY"
    },
    "accounts_status": {
      "invalid_accounts": [
        {
          "name": "ibm2",
          "storage_path": "/mnt/fs1/root_dir/",
          "code": "ACCESS_DENIED"
        }
      ],
      "valid_accounts": [
        {
          "name": "ibm1",
          "storage_path": "/mnt/fs1/ibm1/"
        }
      ],
      "error_type": "PERSISTENT"
    },
    "buckets_status": {
      "invalid_buckets": [],
      "valid_buckets": [
        {
          "name": "bucket1000",
          "storage_path": "/mnt/fs1/ibm1/bucket1000"
        }
      ],
      "error_type": "PERSISTENT"
    }
  }
}

@naveenpaul1 , marking this as verified

closing the issue per the last comment


Run local apps over HTTPS

Add instructions for how to generate a local CA and a wildcard certificate for *.levellingup.gov.localhost, and then update docker-compose's commands and environment variables to configure Flask to use them.
This will allow us to use authenticator locally via the MHCLG test AD.

Ideally this would mean all developers have a test.communities account and we stop using the DEBUG_USER mechanism ... but we still have that as a fallback for the interim

some issues locally on macs:

occasionally slow connections on requests/responses

Is there anything blocking merging this? Would be good to get this in now that it's required for auth.

I ended up seeing some peculiar lag/latency behaviour when running this on my mac. If no-one else has this issue though, maybe it's just me, in which case I can look into it for just me ... But I didn't want to merge it if it degrades performance for all mac users.


Load with transformers?

Hi,
I downloaded the checkpoint from this link, and I load it like this:
from transformers import AutoModelForVision2Seq
model = AutoModelForVision2Seq.from_pretrained('./table-llava-v1.5-13b/')

The loading process is not successful. My transformer version is: 4.42.4
Part of the errror messages are like this:

Besides, it seems that there should be a preprocessor_config.json which is not released. Would you please tell me how could I use the released model like we use ordinary llava models?

I'm having the same problem with table-llava-v1.5-7b, transformers==4.31.0.

This is probably because the saved Table-LLaVA checkpoints from the original LLaVA repository is not directly compatible with the Transformers, which is mentioned in this github issue. I will try the provided conversion script and upload new checkpoints. But for now, maybe the checkpoints can only be loaded locally with the provided script instead of directly loading from HuggingFace, i.e., download Table-LLaVA checkpoints and set the 'model-path' to your local path of the model weights folder. Sorry for the inconvenience.

I downloaded the Table-LaVA checkpoint from huggingface and set "model-path" to the local path of the model weights folder, but it still doesn't work.

I download the checkpoints and set the model-path but when I run inference，it still chose to load files by trying to connect to 'https://huggingface.co' which led to errors


Is it possible to embed an Image in summary as well

Is it possible to embed an Image in summary as well, something like this -

Just select Raise your hand Raise your hand in the meeting controls.

Meeting presenters will also receive a notification that your hand is raised, and they can lower your hand once you've had a chance to talk.

Currently, it appears like this -

@kumaranupam21 - Just to confirm, is this something you are requesting for new feature (raise your hand) released recently for Teams meeting?

No, that was just an example of the type of communication I want to create where I want to show some image as part of the summary text as well. I tried the markdown, but it doesn't render the referred image.

In the current version of company communicator, you can not embed images in message summary.
Alternatively, you can use button title/button url while composing messages for sharing more details.
Please refer below link for supported markdown in adaptive cards in Teams:
https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-format?tabs=adaptive-md%2Cconnector-html


Declare the license expression

Setuptools knows to look in LICENSE for the license body
Part of: #2

Note that the License field in package metadata is deprecated in favour of license expressions: https://packaging.python.org/en/latest/specifications/core-metadata/#license
Either way, the full license text is expected to be in the LICENSE file, and this doesn't change here.

In that case, let's use the proper expression:  License-Expression: MIT


Circular Dependency inside Hook/Model

Circular dependencies inside Hook/Models fail silently. They can be prevented by being careful in the development or letting adonis resolve hooks by registering hooks like the following: this.addHook('beforeSave', 'UserHook.foo'), but I was expecting to get an error or warning about the circular dependency so I can quickly address it.
Package version
6.1.3
Node.js and npm version
node 11.6.0
npm 6.5.0-next.0
Sample Code and explanation
// UserHook.js
"use strict";
const { MAX_PASSWORD_LENGTH } = require("../../Helpers/userhelper");

class UserHook {
  async validatePassword(user) {
    if (user.password.length > MAX_PASSWORD_LENGTH) {
      throw new Error("Password too long");
    }
  }
}

module.exports = UserHook;

// User.js
class User extends Model {
  static boot() {
    super.boot();
    this.addHook("beforeSave", "UserHook.validatePassword");
  }
}

module.exports = User;

// userhelper.js
const User = use('App/Models/User');

const getUser = async id => User.find('id');

const MAX_PASSWORD_LENGTH = 255;
module.exports = {
  MAX_PASSWORD_LENGTH,
  getUser
}

The code below works because we are letting Adonis resolve dependencies and don't require the hook at the top of our Model file. I could also be changing the validatePassword function of our hook to static and register it inside the Model with following code:
// User.js
const UserHook = require('./Hooks/UserHook');

class User extends Model {
  static boot() {
    super.boot();
    this.addHook("beforeSave", UserHook.validatePassword); // now a static async function
  }
}

module.exports = User;

In that case, we would be getting TypeError: User.find is not a function. Because of the circular dependency, the User model inside the helper is just an empty object causing it to fail if we are trying to call find, query or any other method on it.
Is there something we can be doing in lucid to throw a warning or error that a circular dependency might be present?

Hey @ReasonableDeveloper! 👋
I believe we can be clearer in the documentation.
The issue here isn't a Circular Dependency, it's that you are not using the IoC Container to add the hook.

The issue will persist for CommonJs, since Node.js doesn't allow Circular dependencies. However, with the support for Typescript, the import syntax does allow Circular dependencies when dependency itself is used at a later stage


Errors in using VJE src in Visual Studio 2017 Community

Hi,
I downloaded your latest source as I wanted to see if an enhancement was possible. I notice no changes for quite a while.
First there were unloaded NuGet packages. Reloaded them. 5 packages were back level, but initially I did not update them.
Next, the WPF designer would not load MainWiIndow because of several errors for which I cannot see the reason.
Same result after I updated the back-level NuGet packages.
I just wanted to see what is involved in turning the Schema property descriptions into a multiline word-wrapped text field. As an alternative, or as well, I would like to show any Schema (v7) $comment fields in your GUI. I use quite a few json files to configure a complex application. Using VJE has been a great help to our consultants already. I would like to improve its self-documentation in the Schema to get rid of most external documentation, as well as its value in validation and field xrefs..
Eric Whitchurch

You need to work with the xaml directly as the designer is not working with the views

Thanks for the response. I will look at doing that later when I have time.


Scoped variables outside of functions translate to different code.

Take this:
var x = "poop";
var dorp = function() {
    var y = x;
    var x = "parp";
    console.log("inner x:", x);
    console.log('inner y:', y);
}

dorp();
console.log("outer x:", x);

If you JS->CS then run the compiled CoffeeScript, you get an entirely different output:
var dorp, x;

x = "poop";

dorp = function() {
  var y;
  y = x;
  x = "parp";
  console.log("inner x:", x);
  return console.log("inner y:", y);
};

dorp();

console.log("outer x:", x);

The new version partially fixes this, and even adds a warning to show you what's going on:

http://js2coffee.github.io/js2coffee-redux/

nice :+1:

This is very cool!

fixed in v2.0.0


/moo worldage is incompletable to TimeChanger 2.2.1

If I use /moo worldage with TimeChanger 2.2.1 it will say something like world frozen...

If you freeze the time, then the time is frozen: /moo worldAge relies on the world time, which gets modified by TimeChanger.


Add support for blosc2 when c-blosc2 2.0.4 gets released

It seems that blosc2 2.0.3 broke support for a few python libraries
https://github.com/conda-forge/imagecodecs-feedstock/pull/37#issuecomment-928072055
We should add back support when 2.0.4 is released (or if we make a package for 2.0.2)

This was done a while back


Timeout errors when multiple jobs run concurrently on saucelabs

We created a CI job that verifies every pull request.   We have a saucelabs concurrency limit of 10 and maxInstances in our wdio.conf.js is also set to 10.  This seems to work fine provided that only one CI job is running at a time, but if multiple CI jobs are run concurrently they almost always fail.
My guess is that the test is starting before a saucelabs vm is available so our test will timeout while waiting for a VM to become available?  Is it possible to prevent starting a test runner or perhaps temporarily increase the timeout until VM is available and then reset the timeout to configured value?

our test will timeout while waiting for a VM to become available?

Yes, that is the case

temporarily increase the timeout until VM is available and then reset the timeout to configured value?

I think we could something like this. We could use the onPrepare hook to check the users concurrency value and see how many available instances there are. The problem I see is let's they that there is one capability available because a different build has finished a test but hasn't finished. Should the service then kick off the test? When do we know that we can kick off the build?

I don't suppose there might be a way for the test to somehow reserve the VM before starting the test and then use that vm for the test runner.  Thus test would only start after the vm has been reserved.

The problem I see is let's they that there is one capability available because a different build has finished a test but hasn't finished.

Not ideal, but we could probably set maxInstances to 9 thus if such a race condition occurs both will succeeded.  That would be better than limiting the concurrency on our CI jobs and dedicating a few instances to each.

@kurtharriger well the service doesn't know about other builds that are going on. The only thing it can find out is how many instances are available but that doesn't help much. Also we can only check that in the onPrepare hook. To do stuff in the before hook we have to establish a session which won't work if all vms are blocked.
Maybe we could check if there is a build running at that moment. But I am not sure how much that really helps because that build might be triggered by a different project.

My understanding of how this all works is still very limited so I probably need to spend more time looking at the code.. but I don't think it needs to know what other builds are going on.
My thinking is that the vm session should be established before the test is established. I'm assuming  onPrepare is not subject to the jasmine timeout interval and thus it would block here until the vm is actually acquired rather than 1 instance is available. Then once acquired it would run the test using this session.
I'm not actually sure where all this currently happens, in a quick look of the code it looks like onPrepare sets up the tunnel, but I'm not really sure how or where VMs are allocated.  Maybe oPrepare is driver hook that just does the tunnel for all tests and before is the per spec code that allocates the vm which would make it more complicated.  But if prepare runs for each runner then maybe this is feasible?

I'm assuming onPrepare is not subject to the jasmine timeout interval and thus it would block here until the vm is actually acquired

Kinda, onPrepare can hold off the actual execution of the test. However once you kick it off it will start spawning all vms that are required based on spec file and capability number. So even if we wait until one vm is available it could start to ask for way more than just one vm.

I'm not actually sure where all this currently happens

As I said onPrepare gets executed before the launcher spawns all sub processes.

how or where VMs are allocated

A vm gets allocated if you ask for a session (between onPrepare and before hook).

before is the per spec code that allocates the vm

The before hook gets executed once a vm got allocated.

Okay, so if I understand correctly onPrepare is a hook is run in the cli launcher process to set up the sauce tunnel and is not subject to the jasmine timeout, but runs only once for all test suites.   The before hook actually starts the VM, but is run in the child runner process and is subject to the jasmine timeout interval.
I think it would be okay to spawn the runner process and have the runner process block until a vm is available, but the before hook doesn't sound like it can do this.  Perhaps the runner process needs an additional hook that is invoked before starting jasmine which could setup the saucelabs instance prior to starting jasmine runner?

to set up the sauce tunnel and is not subject to the jasmine timeout, but runs only once for all test suites

Yes

The before hook actually starts the VM

No the wdio runner starts the vm

but is run in the child runner process

Yes

and is subject to the jasmine timeout interval

No, the before hook is getting executed before jasmine starts
I believe an additional hook that gets executed before a new vm gets allocated might do the trick but I am not really a fan of adding another hook for that which only would fulfill that purpose. I believe it is a better idea to check if a build is already running and only kick off new builds when no build is running.

 WebdriverIO supports now a beforeSession hook that allows to defer the session initialization until a certain state (available VMs) is met.


Cryptoconditions

[x] conversion of reference ILP javascript library
[x] SHA256
[ ] RSA
[x] ED25519
[x] Threshold

Crypto Conditions
This spec is from the [Interledger Protocol (ILP)]
(https://interledger.org/five-bells-condition/spec.html)
Motivation
We would like a way to describe a signed message such that multiple actors in a distributed system can all verify the same signed message and agree on whether it matches the description.
This provides a useful primitive for distributed, event-based systems since we can describe events (represented by signed messages) and therefore define generic authenticated event handlers.
Terminology

Condition
A condition is the hash of a description of a signed message.

Fulfillment
A fulfillment consists of a description of a signed message and a signed message that matches the description.
The description can be hashed and compared to a condition. If the message matches the description and the hash of the description matches the condition, we say that the fulfillment fulfills the condition.

Hashlock
A tuple consisting of a bytestring and its hash where the hash is published first and the publication of the corresponding bytestring acts as a one-bit, one-time signature.

Basic Format
Bitmask
Any system accepting crypto-conditions must be able to state its supported
algorithms. It must be possible to verify that all algorithms used in a certain
condition are indeed supported even if the fulfillment is not available yet.
In order to meet these design goals, we define a bitmask to express the supported primitives.
The following bits are assigned:

Type Bit
Exp.
Int.
Condition Type

1
20
1
SHA-256

10
21
2
RSA-SHA-256

100
22
4
THRESHOLD-SHA-256

1000
23
8
ED25519-SHA-256

Conditions contain a bitmask of types they require the implementation to support. Implementations provide a bitmask of types they support.
ILP Features
Crypto-conditions are a simple multi-algorithm, multi-message, multi-level, multi-signature standard.

Multi-algorithm
Crypto-conditions can support several different signature and hash algorithms and support for new ones can be added in the future.
Implementations can state their supported algorithms simply by providing a bitmask. It is easy to verify that a given implementation will be able to verify the fulfillment to a given condition, by verifying that the condition's bitmask condition and its own bitmask of supported algorithms supported satisfies condition & ~supported == 0 where & is the bitwise AND operator and ~ is the bitwise NOT operator.
Any new high bit can redefine the meaning of any existing lower bits as long as it is set. This can be used to remove obsolete algorithms.
The bitmask is encoded as a varint to minimize space usage.

Multi-signature
Crypto-conditions can abstract away many of the details of multi-sign. When a party provides a condition, other parties can treat it opaquely and do not need to know about its internal structure. That allows parties to define arbitrary multi-signature setups without breaking compatibility.
Protocol designers can use crypto-conditions as a drop-in replacement for public key signature algorithms and add multi-signature support to their protocols without adding any additional complexity.

Multi-level
Basic multi-sign is single-level and does not support more complex trust relationships such as "I trust Alice and Bob, but only when Candice also agrees". In single level 2-of-3 Alice and Bob could sign on their own, without Candice's approval.
Crypto-conditions add that flexibility elegantly, by applying thresholds not just to signatures, but to conditions which can be signatures or further conditions. That allows the creation of an arbitrary threshold boolean circuit of signatures.

Multi-message
Crypto-conditions can sign not just one, but multiple messages at the same time and by different people. These messages can then be used as inputs for other algorithms.

Usage
import binascii
from bigchaindb.crypto.condition import Condition
from bigchaindb.crypto.fulfillment import Fulfillment
from bigchaindb.crypto.fulfillments.sha256 import Sha256Fulfillment

# Parse a condition from a URI
example_condition_uri = 'cc:1:1:47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU:1'
parsed_condition = Condition.from_uri(example_condition_uri)
print(isinstance(parsed_condition, Condition))
# prints True

print(binascii.hexlify(parsed_condition.hash))
# prints b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'

# Compile a condition
parsed_condition_uri = parsed_condition.serialize_uri()
print(parsed_condition_uri)
# prints 'cc:1:1:47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU:1'
print(parsed_condition_uri == example_condition_uri)
# prints True

# Parse a fulfillment
example_fulfillment_uri = 'cf:1:1:AA'
parsed_fulfillment = Fulfillment.from_uri(example_fulfillment_uri)
print(isinstance(parsed_fulfillment, Sha256Fulfillment))
# prints True
# Note: Merely parsing a fulfillment DOES NOT validate it.

# Validate a fulfillment
parsed_fulfillment.validate()
# prints True

ILP Encoding
Binary types

VARUINT
Unsigned variable-length integer. Implementation matches Base128 Varints in Protocol Buffers. Implementations MAY define different maximum lengths for their varints, as long as that length is long enough to cover their bitmask and their maximum supported fulfillment length. (This is safe, because no larger varuint can appear in a valid crypto-condition.)

VARBYTES
Consists of a VARUINT length field followed by that many bytes.

VARARRAY
Consists of a VARUINT length fields followed by that many bytes filled with elements of the array.

String types

BASE10
Variable-length integer encoded as a base-10 (decimal) number. Implementations MUST reject encodings that are too large for them to parse. Implementations MUST be tested for overflows.

BASE16
Variable-length integer encoded as a base-16 (hexadecimal) number. Implementations MUST reject encodings that are too large for them to parse. Implementations MUST be tested for overflows. No leading zeros.

BASE64URL
Base64-URL encoding. See RFC4648 Section 5.

Condition
Conditions are ASCII encoded as:
"cc:" BASE10(VERSION) ":" BASE16(TYPE_BITMASK) ":" BASE64URL(HASH) ":" BASE10(MAX_FULFILLMENT_LENGTH)

Conditions are binary encoded as:
CONDITION =
  VARUINT TYPE_BITMASK
  VARBYTES HASH
  VARUINT MAX_FULFILLMENT_LENGTH

The TYPE_BITMASK is the boolean OR of the TYPE_BITs of the condition type and all subcondition types, recursively.
Fulfillment
Fulfillments are ASCII encoded as:
"cf:" BASE10(VERSION) ":" BASE16(TYPE_BIT) ":" BASE64URL(FULFILLMENT_PAYLOAD)

Fulfillments are binary encoded as:
FULFILLMENT =
  VARUINT TYPE_BIT
  FULFILLMENT_PAYLOAD

The TYPE_BIT is the single bit representing the top level condition type.
Condition Types
SHA-256
SHA-256 is assigned the type bit 20 = 0x01.
Notes
This type of condition is also called a hashlock. We can use revealing the preimage as a type of one bit signature.
Bitcoin supports this type of condition via the OP_HASH256 operator
Condition
HASH = SHA256(PREIMAGE)

Fulfillment
FULFILLMENT_PAYLOAD =
  VARBYTES PREIMAGE

Usage
import binascii, hashlib
from bigchaindb.crypto.condition import Condition
from bigchaindb.crypto.fulfillments.sha256 import Sha256Fulfillment

secret = ''
puzzle = binascii.hexlify(hashlib.sha256(secret.encode()).digest())
print(puzzle)
# prints b'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'

# Create a SHA256 condition
sha256condition = Condition()
sha256condition.bitmask = 0x01
sha256condition.hash = binascii.unhexlify(puzzle)
sha256condition.max_fulfillment_length = 1
sha256condition_uri = sha256condition.serialize_uri()
print(sha256condition_uri)
# prints 'cc:1:1:47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU:1'

# Create a fulfillment
sha256fulfillment = Sha256Fulfillment()

# Create a condition from fulfillment
sha256fulfillment.condition
# raises ValueError: Could not calculate hash, no preimage provided
sha256fulfillment.preimage = secret
print(sha256fulfillment.condition.serialize_uri() == sha256condition_uri)
# prints True

# Compile a fulfillment
print(sha256fulfillment.serialize_uri())
# prints 'cf:1:1:AA'

# Even better: verify that the fulfillment matches the condition
print(sha256fulfillment.validate() and \
    sha256fulfillment.condition.serialize_uri() == sha256condition.serialize_uri())
# prints True

RSA-SHA-256
RSA-SHA-256 is assigned the type bit 21 = 0x02.
Warning: not (yet) implemented in BigchainDB, for info see the ILP specification
ED25519-SHA-256
ED25519-SHA-256 is assigned the type bit 23 = 0x08.
Condition
HASH = SHA256(
  VARBYTES PUBLIC_KEY
  VARBYTES MESSAGE_ID
  VARBYTES FIXED_PREFIX
  VARUINT DYNAMIC_MESSAGE_LENGTH
)

Fulfillment
FULFILLMENT_PAYLOAD =
  VARBYTES PUBLIC_KEY
  VARBYTES MESSAGE_ID
  VARBYTES FIXED_PREFIX
  VARUINT DYNAMIC_MESSAGE_LENGTH
  VARBYTES DYNAMIC_MESSAGE
  VARBYTES SIGNATURE

The DYNAMIC_MESSAGE_LENGTH is included to provide a maximum length for DYNAMIC_MESSAGE even if the actual message suffix length is different. This value is used to calculate the MAX_FULFILLMENT_LENGTH in the condition.
The MESSAGE_ID represents an identifier for the message. All messages in a cryptocondition that have a common identifier must match, otherwise the condition is invalid. Implementations may return messages as a map of MESSAGE_ID => MESSAGE pairs.
The message to be signed is the concatenation of the FIXED_PREFIX and DYNAMIC_MESSAGE.
The MESSAGE_ID, FIXED_PREFIX, DYNAMIC_MESSAGE_LENGTH and DYNAMIC_MESSAGE fields have the same meaning as in the RSA-SHA-256 condition type.
Usage
from bigchaindb.crypto.ed25519 import Ed25519SigningKey, Ed25519VerifyingKey
from bigchaindb.crypto.fulfillments.ed25519_sha256 import Ed25519Sha256Fulfillment

# We use base58 key encoding
sk = Ed25519SigningKey(b'9qLvREC54mhKYivr88VpckyVWdAFmifJpGjbvV5AiTRs')
vk = sk.get_verifying_key()

# Create an ED25519-SHA256 condition
ed25519_fulfill`nt = Ed25519Sha256Fulfillment()
ed25519_fulfillment.public_key = vk
ed25519_fulfillment.message_prefix = 'Hello world!'
ed25519_fulfillment.max_dynamic_message_length = 32  # defaults to 0
ed25519_condition_uri = ed25519_fulfillment.condition.serialize_uri()
print (ed25519_condition_uri)
# prints 'cc:1:8:qQINW2um59C4DB9JSVXH1igqAmaYGGqryllHUgCpfPU:113'

# ED25519-SHA256 condition not fulfilled
print(ed25519_fulfillment.validate())
# prints False

# Fulfill an ED25519-SHA256 condition
ed25519_fulfillment.message = ' Conditions are here!'
ed25519_fulfillment.sign(sk)
print(ed25519_fulfillment.validate())
# prints True

print(ed25519_fulfillment.serialize_uri())
# prints
#  'cf:1:8:IOwXK5OtXlY79JMscOEkUDTDVGfvLv1NZOv4GWg0Z-K_DEhlbGxvIHdvcmxkI
#   SAVIENvbmRpdGlvbnMgYXJlIGhlcmUhQENbql531PbCJlRUvKjP56k0XKJMOrIGo2F66u
#   euTtRnYrJB2t2ZttdfXM4gzD_87eH1nZTpu4rTkAx81hSdpwI'
print (ed25519_fulfillment.condition.serialize_uri())

# Parse a fulfillment URI
parsed_ed25519_fulfillment = Ed25519Sha256Fulfillment.from_uri('cf:1:8:IOwXK5OtXlY79JMscOEkUDTDVGfvLv1NZOv4GWg0Z-K_DEhlbGxvIHdvcmxkISAVIENvbmRpdGlvbnMgYXJlIGhlcmUhQENbql531PbCJlRUvKjP56k0XKJMOrIGo2F66ueuTtRnYrJB2t2ZttdfXM4gzD_87eH1nZTpu4rTkAx81hSdpwI')

print(parsed_ed25519_fulfillment.validate())
# prints True
print(parsed_ed25519_fulfillment.condition.serialize_uri())
# prints 'cc:1:8:qQINW2um59C4DB9JSVXH1igqAmaYGGqryllHUgCpfPU:113'

Implementation
The exact algorithm and encodings used for PUBLIC_KEY and SIGNATURE are Ed25519 as defined in draft-irtf-cfrg-eddsa-04.
THRESHOLD-SHA-256
THRESHOLD-SHA-256 is assigned the type bit 22 = 0x04.
Condition
HASH = SHA256(
  VARUINT TYPE_BIT
  VARUINT THRESHOLD
  VARARRAY
    VARUINT WEIGHT
    CONDITION
)

The TYPE_BIT is 0x04. The reason we need this is because threshold conditions are a structural condition. Structural conditions can have subconditions, meaning their TYPE_BITMASK can have multiple bits set, including other structural conditions. This TYPE_BIT prevents the possibility that two different structural fulfillments could ever generate the exact same condition.
The VARARRAY of conditions is sorted first based on length, shortest first. Elements of the same length are sorted in lexicographic (big-endian) order, smallest first.
Fulfillment
FULFILLMENT_PAYLOAD =
  VARUINT THRESHOLD
  VARARRAY
    VARUINT WEIGHT
    FULFILLMENT
  VARARRAY
    VARUINT WEIGHT
    CONDITION

Usage
from bigchaindb.crypto.fulfillments.sha256 import Sha256Fulfillment
from bigchaindb.crypto.fulfillments.ed25519_sha256 import Ed25519Sha256Fulfillment
from bigchaindb.crypto.fulfillments.threshold_sha256 import ThresholdSha256Fulfillment

# Parse some fulfillments
sha256_fulfillment = Sha256Fulfillment.from_uri('cf:1:1:AA')
ed25519_fulfillment = Ed25519Sha256Fulfillment.from_uri('cf:1:8:IOwXK5OtXlY79JMscOEkUDTDVGfvLv1NZOv4GWg0Z-K_DEhlbGxvIHdvcmxkISAVIENvbmRpdGlvbnMgYXJlIGhlcmUhQENbql531PbCJlRUvKjP56k0XKJMOrIGo2F66ueuTtRnYrJB2t2ZttdfXM4gzD_87eH1nZTpu4rTkAx81hSdpwI')

# Create a threshold condition
threshold_fulfillment = ThresholdSha256Fulfillment()
threshold_fulfillment.add_subfulfillment(sha256_fulfillment)
threshold_fulfillment.add_subfulfillment(ed25519_fulfillment)
threshold_fulfillment.threshold = 1  # OR gate
print(threshold_fulfillment.condition.serialize_uri())
# prints 'cc:1:d:9DdkQtOl2m9yjqZzCg6ck5b2zM3tAPLlJMaHsKkszIA:114'

# Compile a threshold fulfillment
threshold_fulfillment_uri = threshold_fulfillment.serialize_uri()
# Note: If there are more than enough fulfilled subconditions, shorter
# fulfillments will be chosen over longer ones.
print(threshold_fulfillment_uri)
# prints 'cf:1:4:AQEBAQABAQggqQINW2um59C4DB9JSVXH1igqAmaYGGqryllHUgCpfPVx'

# Validate fulfillment
print(threshold_fulfillment.validate())
# prints True

# Parse the fulfillment
reparsed_fulfillment = \
    ThresholdSha256Fulfillment.from_uri(threshold_fulfillment_uri)
print(reparsed_fulfillment.validate())
# prints True

# Increase threshold to a 3-port AND gate
threshold_fulfillment.threshold = 3
print(threshold_fulfillment.validate())
# prints False

# Create a nested threshold condition
# VALID = SHA and DSA and (DSA or DSA)
nested_fulfillment = ThresholdSha256Fulfillment()
nested_fulfillment.add_subfulfillment(ed25519_fulfillment)
nested_fulfillment.add_subfulfillment(ed25519_fulfillment)
nested_fulfillment.threshold = 1  # OR gate

threshold_fulfillment.add_subfulfillment(nested_fulfillment)
print(threshold_fulfillment.serialize_uri())
# prints
#  'cf:1:4:AwMBAQABCCDsFyuTrV5WO_STLHDhJFA0w1Rn7y79TWTr-BloNGfivwxIZWxsby
#   B3b3JsZCEgFSBDb25kaXRpb25zIGFyZSBoZXJlIUBDW6ped9T2wiZUVLyoz-epNFyiTDq
#   yBqNheurnrk7UZ2KyQdrdmbbXX1zOIMw__O3h9Z2U6buK05AMfNYUnacCAQQBAQEIIOwX
#   K5OtXlY79JMscOEkUDTDVGfvLv1NZOv4GWg0Z-K_DEhlbGxvIHdvcmxkISAVIENvbmRpd
#   GlvbnMgYXJlIGhlcmUhQENbql531PbCJlRUvKjP56k0XKJMOrIGo2F66ueuTtRnYrJB2t
#   2ZttdfXM4gzD_87eH1nZTpu4rTkAx81hSdpwIBAQggqQINW2um59C4DB9JSVXH1igqAma
#   YGGqryllHUgCpfPVxAA'

Current coverage is 89.24%

Branch #1 has no coverage reports uploaded yet.

No diff could be generated. No reports for master found.

Powered by Codecov. Updated on successful CI builds.


[h264d] Unmark the duplicated frame_num with the coming frame in DPB

Fix the issue about some h264 streams which have a wrong way to calculate frame_num.
Issue: MDP-64211, MDP-48207
Signed-off-by: Wang Dylan<EMAIL_ADDRESS>

@dylanintel , thank you for the PR.
As far I understand this change is almost the same as #166 (except "Frame_type != B_PICTURE" additional condition) which later was removed by #585. Right ? So now we're reapplying it back. Okay. Why not.
But I'd like to propose a few things:

Please explain in code comment (please feel free to wrote as many line as needed) why now we have this "lastSlice->GetSeqParam()->gaps_in_frame_num_value_allowed_flag != 1 && Frame_type != B_PICTURE" condition . It's not clear to me right now. And I'm afraid even if you describe it in a github reply, later if we come back to this topic again, no one will remember the reasons.
Let's run h264d validation with all types of conformance test cases and corrupted streams previously collected. I'll help with to arrange it. Plus, please also manually test that this change doesn't cause a regression with the bitstream from MDP-48189/MDP-46557. Asking because PR #585 was for these MDP-48189/MDP-46557.

@dmitryermilov Yes, this change is almost same except (except "Frame_type != B_PICTURE" additional condition).

In the #166, the patch is to fix the corrupted stream which has a frame number gap. The frame number gap caused a reference frame to always stay in DPB buffer. The #166 patch unmarks the reference frame in DPB buffer when the future frame with the same frame number is coming.
But in the another corrupted stream, the frame number is wrong. In the correct mode, in the encoding sequence, the B frame's frame_num should be previous reference frame's frame_num + 1; but the corrupted stream's B frame's frame_num is same as the previous reference frame's frame_num.  When the patch #166 handle this case, when the B frame arrived, the previous reference frame is always unmarked because of the same frame_num.

Normal frame number:
I     P     B     P     B     P     B     P
0    1      2     2     3     3     4     4
Corrupted stream 0:
I     P     B     P     B     P     B     P
0    1      2     2     3     3     5     5
I
I
This frame always stays in the DPB buffer. Patch #166 will unmark it when the next frame which frame_num is 2 coming.
Corrupted stream1 :
I     P     B     P     B     P     B     P
0    1     1      2     2     3     3     4
I
I
With the patch #166, this B frame will unmark the previous reference frame in the DPB buffer. In fact, it should not do it. So we add the condition (Frame_type != B_PICTURE) to deal with this case.

Thank

@dylanintel , thank you for the PR.
As far I understand this change is almost the same as #166 (except "Frame_type != B_PICTURE" additional condition) which later was removed by #585. Right ? So now we're reapplying it back. Okay. Why not.
But I'd like to propose a few things:

Please explain in code comment (please feel free to wrote as many line as needed) why now we have this "lastSlice->GetSeqParam()->gaps_in_frame_num_value_allowed_flag != 1 && Frame_type != B_PICTURE" condition . It's not clear to me right now. And I'm afraid even if you describe it in a github reply, later if we come back to this topic again, no one will remember the reasons.
Let's run h264d validation with all types of conformance test cases and corrupted streams previously collected. I'll help with to arrange it. Plus, please also manually test that this change doesn't cause a regression with the bitstream from MDP-48189/MDP-46557. Asking because PR #585 was for these MDP-48189/MDP-46557.

@dmitryermilov Yes, this change is almost same except (except "Frame_type != B_PICTURE" additional condition).

In the #166, the patch is to fix the corrupted stream which has a frame number gap. The frame number gap caused a reference frame to always stay in DPB buffer. The #166 patch unmarks the reference frame in DPB buffer when the future frame with the same frame number is coming.
But in the another corrupted stream, the frame number is wrong. In the correct mode, in the encoding sequence, the B frame's frame_num should be previous reference frame's frame_num + 1; but the corrupted stream's B frame's frame_num is same as the previous reference frame's frame_num.  When the patch #166 handle this case, when the B frame arrived, the previous reference frame is always unmarked because of the same frame_num.

Normal frame number:
I P1 B2 P2 B3 P3 B4 P4
0 1 2 2 3 3 4 4
Corrupted stream 0:
I P1 B1 P2 B2 P3 B3 P4
0 1 2 2 3 3 5 5
This frame P2 always stays in the DPB buffer. Patch #166 will unmark it when the next frame with frame_num =2 is coming.
Corrupted stream1 :
I P1 B1 P2 B2 P3 B3 P4
0 1 1 2 2 3 3 4
With the patch #166, this B1 frame will unmark the previous reference frame P1 in the DPB buffer. In fact, it should not do it. So we add the condition (Frame_type != B_PICTURE) to deal with this case.

Thank you. Also it seems internal validations results are fine.
Let's merge the PR but at first let's make sure CI "test" failed not sue to this PR . @dylanintel , can you please rebase the PR to trigger CI again?  If it doesn't help, probably need to look into the issue manually. There is the wiki page: https://github.com/Intel-Media-SDK/MediaSDK/wiki/Run-CI-smoke-tests

@dylanintel , the same CI issue is seen with other PRs, e.g. https://github.com/Intel-Media-SDK/MediaSDK/pull/2531. We're trying to address it. JFYI


[CT-1544] [Bug] Should get_catalog() respect an overriden source() builtin?

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
If we have an overriden source() function - should the get_catalog() macros (Snowflake example) respect it? Currently it does not.
Expected Behavior
Catalog introspection should respect an overriden source() function.
Steps To Reproduce
Setup our project:
# ~/.dbt/profiles.yml
snowflake:
  target: dev
  outputs:
    dev:
      database: development_jyeo
      ...

# dbt_project.yml
name: my_dbt_project
profile: snowflake
config-version: 2
version: 1.0

# models/sources.yml
version: 2
sources:
  - name: my_sources
    database: jyeo  # Note that this doesn't exist - we will fix it in our source() override.
    tables:
      - name: source_bar

-- models/foo.sql
select * from {{ source('my_sources', 'source_bar') }}

-- macros/override.sql
{% macro source(source_name, table_name) %}
    {% set rel = builtins.source(source_name, table_name) %}
    {% if not rel.database.startswith("raw_") %}
        {% set new_db = "raw_" ~ rel.database %}
        {% set rel = rel.replace_path(database = new_db) %}
    {% endif %}
    {% do return(rel) %}
{% endmacro %}

Run and inspect generated queries:
$ dbt --debug run
...
07:40:17.218401 [debug] [Thread-1  ]: On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.3.0", "profile_name": "snowflake", "target_name": "dev", "node_id": "model.my_dbt_project.foo"} */
create or replace  view development_jyeo.dbt_jyeo.foo

   as (
    select * from raw_jyeo.my_sources.source_bar
  );
07:40:17.219246 [debug] [Thread-1  ]: Opening a new connection, currently in state closed
07:40:19.362508 [debug] [Thread-1  ]: SQL status: SUCCESS 1 in 2.14 seconds
...

Now let's try a docs generate:
$ dbt --debug docs generate
...
07:41:21.484776 [debug] [ThreadPool]: On jyeo.information_schema: /* {"app": "dbt", "dbt_version": "1.3.0", "profile_name": "snowflake", "target_name": "dev", "connection_name": "jyeo.information_schema"} */
with tables as (

          select
              table_catalog as "table_database",
              table_schema as "table_schema",
              table_name as "table_name",
              table_type as "table_type",
              comment as "table_comment",

              -- note: this is the _role_ that owns the table
              table_owner as "table_owner",

              'Clustering Key' as "stats:clustering_key:label",
              clustering_key as "stats:clustering_key:value",
              'The key used to cluster this table' as "stats:clustering_key:description",
              (clustering_key is not null) as "stats:clustering_key:include",

              'Row Count' as "stats:row_count:label",
              row_count as "stats:row_count:value",
              'An approximate count of rows in this table' as "stats:row_count:description",
              (row_count is not null) as "stats:row_count:include",

              'Approximate Size' as "stats:bytes:label",
              bytes as "stats:bytes:value",
              'Approximate size of the table as reported by Snowflake' as "stats:bytes:description",
              (bytes is not null) as "stats:bytes:include",

              'Last Modified' as "stats:last_modified:label",
              to_varchar(convert_timezone('UTC', last_altered), 'yyyy-mm-dd HH24:MI'||'UTC') as "stats:last_modified:value",
              'The timestamp for last update/change' as "stats:last_modified:description",
              (last_altered is not null and table_type='BASE TABLE') as "stats:last_modified:include"

          from jyeo.INFORMATION_SCHEMA.tables

      ),

      columns as (

          select
              table_catalog as "table_database",
              table_schema as "table_schema",
              table_name as "table_name",

              column_name as "column_name",
              ordinal_position as "column_index",
              data_type as "column_type",
              comment as "column_comment"

          from jyeo.INFORMATION_SCHEMA.columns
      )

      select *
      from tables
      join columns using ("table_database", "table_schema", "table_name")
      where (upper("table_schema") = upper('my_sources'))
      order by "column_index"
07:41:21.487834 [debug] [ThreadPool]: Opening a new connection, currently in state init
07:41:23.980505 [debug] [ThreadPool]: Snowflake adapter: Snowflake query id: 01a87f2c-0502-3448-000d-37830a9859a2
07:41:23.981238 [debug] [ThreadPool]: Snowflake adapter: Snowflake error: 002003 (02000): SQL compilation error:
Database 'JYEO' does not exist or not authorized.
...

Docs generate tries to look up the jyeo database instead of our business logic specified in the overriden source() macro. Since the jyeo database does not exists - we error.
Relevant log output
No response
Environment
- OS: macOS
- Python: 3.8.7
- dbt: 1.3

Which database adapter are you using with dbt?
snowflake
Additional Context
I did a full walkthrough in this loom https://www.loom.com/share/c87391ba33f14304b23ff012efb71f0c on this issue but I think some users are convinced that the catalog queries should respect the business logic we put into the source() macro.

If the docs are going to call information_schema to get database stats, it needs to respect the overridden source() function in order to access the correct database.

@jeremyyeo Thanks for opening, and providing the thorough write-up / easy repro case!
I do get where this expectation is coming from; it also seems like it would be a tricky thing for us to implement.
The {{ source() }} macro doesn't actually change the relational information (database.schema.identifier) configured for the underlying source — it just changes the code rendered in downstream models trying to access that source.
When dbt goes to generate docs, it looks at the sources' configs in the manifest to determine which schemas need cataloguing (in _get_catalog_schemas. The {{ source() }} macro isn't involved in the process at all entirely.
I'm guessing this use of the custom source() macro is a workaround for the lack of programmatic configurability of source configs, e.g. to set a source property based on environment, a la generate_schema_name for models. We've had other issues like that in the past; https://github.com/dbt-labs/dbt-core/issues/4753 has the most thorough discussion about the potential paths we could take, and links to several other issues.
I'm going to close this issue for now, but happy to continue discussing it further in this thread.

Much longer-term thought: I could see this working differently in a future where catalog information is gathered differently. Rather than being pulled in big batches all at once from information_schema tables during a standalone docs generate, each table's cataloguing would happen right after its model is materialized, during the run and within the same thread. (Some on that here: https://github.com/dbt-labs/dbt-core/issues/5325#issuecomment-1144040785.)
It would be more feasible to respect that custom ref/source... though still not guaranteed, since other relation identifiers, such as {{ this }}, would still just be templating relations based on the node's actual config. I think that discrepancy is going to run into rough edges whichever way we slice it.
Also, in that future, when would sources be catalogued? I'm not totally sure! It's a ways off yet.


Implement RFC 014, adding a syncop opcode and using it to force-linearize exec and fetch

This also fixes execop which apparently had broken semantics in the AVM versus the js transpile.


dbus: multithreading fixes

The patchset fixes a number of multithreading issues with current dbus handling in sparts.tasks.dbus module. The man issue is that dbus-python bindings are not really thread safe, but DBusMainLoopTask and DBusServiceTask are effectively run in separate threads (i.e. main loop task is started within a thread, but the DBusServiceTask methods are called from the main thread when starting up).
In typical applications the usage pattern is as follows:

import dbus
enable threading
setup bus/proxies & own names
run main loop

In sparts the sequence is like this:

import dbus
enable threading
start main loop
setup dbus proxies/own names etc

The problem was noticed only after merging pull request https://github.com/facebook/sparts/pull/97 as a couple of test cases was added. The stress tests can be run like this:
while nosetests tests.tasks.test_dbus -sv --logging-level=DEBUG --nologcapture; do ; done
With current master, running this will either fail, segfault, abort (glibc reporting double free()) or just block when quitting.
The patchset resolves these problems by moving dbus related calls to the thread running the main loop. Setup calls (i.e. task's start() and stop() mthods) are run through a helper method DBusTask.asyncRun(), that can also be used to run arbitrary callback within the main loop's context. The helper code schedules and idle callback within the loop using a thread-safe glib.idle_add().

Looks like SelectTask has an unrelated race condition in the future handling logic on Popen failures.  I just opened #99 to address this.


Create Side Filters

@eddiesarevalo commented on Tue Mar 28 2023
Create the filters that go on the left side of the screen.
Design:

Full Page:

This ticket is almost done except for a few styles.

Pull request at https://github.com/NASA-PDS/wds-react/pull/90


Recommendations: connecting frontend & backend

Recommendations page is functional, just needs a few minor updates to be aesthetically pleasing
@kimcharlene I left a few comments ("@ charlene TO DO") where I thought the updates could go!
thanks! :)

this looks great! is it possible to reduce the # of subjects displayed to somewhere between 5-10?
i'll also work on the TODO's and fix styling!! thanks kaylee!

limited subjects to be 10 per book! will merge now @kimcharlene


Good that I found you / discuss about LV-redis toolkits

Hi,
I'm currently working out my way in what I thought were the only two public toolboxes for Redis, till I had the intuition of checking also github, and found yours. Since I see that you just began committing to it, I thought it may be interesting to exchange views.
I myself was aware of:

the old set on NI forum, wrapped around redis-in-labview of Martjin Jasperse, from where you started as well. I forked it in https://github.com/EastEriq/redis-in-labview, merging it with Carlo Sandroni example of pub-sub.
Nick Folse's  https://github.com/tauterra/Redis-Client-for-LabVIEW, which I forked in https://github.com/EastEriq/Redis-Client-for-LabVIEW

Unfortunately for my use case I find both of them flawed, and I was considering where to plug in in order to adapt to my needs.
My immediate goal would be a pipelined query of multiple HVALS from multiple servers, and both implementations fall short of it. This is for the moment my only yardstick, and I wonder how much I would be interested myself in planning ahead and expand a solution to a viable toolbox; I might end up putting together a snippet of code which just does what I need, and leave it there. On the other hand, if there is common interest we could also cooperate.
As for my critics:

opens and closes the TCP connection for every transaction, and this is a complete no-brainer for pipelining, at least with the version of redis-server (7.4.0) which I'm using. A cursive look at your code convinced me that this is also your case. I was considering to take Iwac's code, remove all Open/Close TCP from his core Send_Command_Revf.vi and replace his session reference (merely a reference to a Host-Port cluster) with a reference to the current TCP session, opening and closing that session only at the beginning/end of the chain.

is a bit unfinished, and left at the state of three years ago. Its author also confirmed that he is no more working on it. His toolbox carries around a class which accounts for # of responses pending when in pipeline mode, but: a) the mechanism does not work as it is for commands like HVALS which return an a priori unknown number of lines, b) it doesn't work for it's alternative HGETALL which returns a MAP response, which is not decoded. My least effort with this may be therefore to implement the treatment of the MAP case. Besides that, there were a couple of other flaws in his example (see  https://github.com/tauterra/Redis-Client-for-LabVIEW/issues/1), but they could easily be fixed.

See also this LAVA thread: https://lavag.org/topic/23160-does-it-make-sense-to-use-redis-instead-of-shared-variables/#comment-150638.
What do you think about?
Enrico

Hi,
I've been pretty busy the past few weeks and forgot I got a message on github. I started this project because I already needed to create a better version with authentication and continued to implement the rest of the API starting with the Lists and continuing with the Keys part.
I'm pretty new to REDIS but i think that providing a VIPM published package for redis and Valkey is giving the community easier access to these platforms. With that said, I have not been playing with the pipelining and could be a nice feature. And this would be the perfect time to implement that. unfortunately i've been pretty swamped with work and don't have the time to read on this topic and test code for this but if you have some ideas how pipelining could be implemented in my code I would like to hear about that.


Abort controller combinated with comosdb query not properlly alowing timeout more than 1sec

Package Name: @azure/abort-controller
Package Version: 1.0.4
Operating system: windows 10
[ ✔] nodejs

version: 12.18.3

Describe the bug
The abort controller is not properly throwing error when its specified with time out value of more than 1000ms
To Reproduce
Steps to reproduce the behavior:

use this below code to reporduce the issue
await containerconn.items
.query({query:"select * from c" , parameters:[{ name: "@poId", value: "" }]}, { abortSignal: AbortController.timeout(1000) })
.fetchAll();

Expected behavior
It should throw an abort error when the specified timeout is breached by the query to execute.
Additional context

Actual Error(Behaviour is observed with timeout more than 1000ms):

TypeError: userSignal.addEventListener is not a function
    at C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\cosmos\dist\index.js:7837:28
    at Generator.next (<anonymous>)
    at C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\tslib\tslib.js:117:75
    at new Promise (<anonymous>)
    at Object.__awaiter (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\tslib\tslib.js:113:16)
    at httpRequest (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\cosmos\dist\index.js:7827:18)
    at C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\cosmos\dist\index.js:7229:20
    at Generator.next (<anonymous>)
    at C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\tslib\tslib.js:117:75
    at new Promise (<anonymous>) {
  headers: { 'x-ms-request-charge': 0, 'x-ms-documentdb-query-metrics': {} }
}

2.Expected Error:
PS ~dbTimeoutAnalysisPoc> node index
Error [AbortError]: The operation was aborted.
    at new AbortError (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\abort-controller\dist\index.js:152:28)
    at AbortSignal.<anonymous> (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\core-rest-pipeline\dist\index.js:1469:32)
    at C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\abort-controller\dist\index.js:124:22
    at Array.forEach (<anonymous>)
    at abortSignal (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\abort-controller\dist\index.js:123:27)
    at AbortController.abort (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\abort-controller\dist\index.js:238:9)
    at EventEmitter.abortListener (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\@azure\core-rest-pipeline\dist\index.js:1405:43)
    at EventEmitter.emit (events.js:315:20)
    at AbortSignal.dispatchEvent (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\node-abort-controller\index.js:28:23)
    at AbortController.abort (C:\Users\MSeyed\Desktop\date changes task\dbTimeoutAnalysisPoc\node_modules\node-abort-controller\index.js:40:17) {
  headers: {
    'x-ms-throttle-retry-count': 0,
    'x-ms-throttle-retry-wait-time-ms': 0
  }
}

Thanks for reporting @MuhamedSalihSeyedIbrahim
@zfoster, Can you take a preliminary look here to see if the problem is in how cosmos uses abort controller or in abort controller itself?
cc @chradek in case it turns out that this indeed is a problem with the abort controller

@zfoster comosDB version used when the issue is version: "3.11.0"

Sorry for the wrong operation(closing and reopeinging).
@zfoster - cosmosdb version used is 3.11.0


Presto Connector

It would be great to have a presto connector for elasticsearch that implements filter push downs properly.

I am not sure what would be required to enable Presto to search HIVE tables that are stored by EsStorageHandler.  Does anyone have an idea of what might be needed to enable this to work?

My opinion is that ES should have presto connector instead of making this work through HIVE. This ways, presto connector will be able to take advantage of filter push downs and translate them into ES queries.

As we know that JOIN operation is not possible in ElasticSearch among indices, Can it be achieved, i.e. can we do a JOIN operation using Presto Connector for Elastic Search ?

Is there anybody working on this? I think it's interesting.
Here's my thoughts on the implementation:

generate table definitions according to elasticsearch mappings
execute query through es api with filter and push downs and transform the json response from es to presto data for further processing

Oh, somebody is already working on it: https://github.com/facebook/presto/issues/3057
code submitted but no further response from the author.....

@haitaoyao @aniketbhatnagar Do you know if anyone is still working on this? Any prototype/leads would be helpful!

I'm going to take this one - will probably work best as an Elasticsearch connector for Presto and then es-hadoop to support that. I'll start working this week and report as soon as I have something viable to show.

It's unlikely that we will be supporting a Presto integration any time soon. I fear that leaving this open will give a false sense of hope that we are working on it; We are not, and don't really have it on our plan for the project right now. Writing and supporting new integrations is a costly endeavor. We are happy to work with anyone who might have something put together, but it would be a long process to have a whole integration accepted via PR (good testing and full documentation are a requirement). That said, there seems to be a healthy desire for this to be made, so if there's a large enough push from the community for this kind of feature, we can reopen this and reconsider our priorities. Please put your +1's on the first post in this topic so that it is easier to follow.


Fix #109

Fixes #109 by ensuring that the check for an existing attribute handler registration is performed correctly.

Tests added 👍


Animal masks

About the PR
Seven new animal masks. Let the masquerade be more diverse.
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

:cl: Nimfar

add: Adds 7 new animal masks.

Hotline Miami 3 confirmed

can you add these to maint fluff spawner maybe

all what is left are the fursuits and we will have furries in ss14 ( make the animal masks flammable for science )

can you add these to maint fluff spawner maybe

done


Fix typetest equality check in TypeChecker

Purpose

Fix typetest in typechecker for typedefs.

Fixes #21225
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, related PRs, TODO items, or any other notes related to the PR.

Check List

[ ] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #21278 into ballerina-1.1.x will not change coverage.
The diff coverage is n/a.

@@               Coverage Diff                @@
##           ballerina-1.1.x   #21278   +/-   ##
================================================
  Coverage            15.21%   15.21%
================================================
  Files                   50       50
  Lines                 1341     1341
  Branches               208      208
================================================
  Hits                   204      204
  Misses                1121     1121
  Partials                16       16

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 a57b55e...417fc6b. Read the comment docs.

Please revert package-lock.json files.


Ability to delete multiple buckets in a single command

Add multiple buckets
Use wildcards to delete multiple buckets

We can then give multiple values to the project’s command’s excluded directories, as needed:

cargo run -- projects -e ./dir1 ./dir2
["./dir1", "./dir2"] # value of exclude vector
We can also set a custom separator, in case we don’t want the values to be separated by space, but by a custom character:

#[clap(short, long, multiple_values = true, value_delimiter = ':')]
/// paths to exclude when searching
exclude: Vec,
Now we can use : to separate values:

cargo run -- projects -e ./dir1:./dir2
["./dir1", "./dir2"]