circle: Check for file changes using git diff

This uses a better, more natural method of checking for changes in
git.

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 14s)
+ pull_id=15
+ pull_title='circle: Check for file changes using git diff'
+ vars=('--env=fork=git@github.com:AbdealiJK/pycolorname.git' '--env=fork_branch=ajk/wip' '--env=head=git@github.com:AbdealiJK/pycolorname.git' '--env=head_branch=master' '--env=pull_id=15' '--env=pull_title=circle: Check for file changes using git diff')
+ image=coala/rultor-python
+ directory=
+ scripts=('if ! pip3 -V ; then wget -O - https://bootstrap.pypa.io/get-pip.py | python3; fi' ';' 'python3 .ci/adjust_version_number.py pycolorname/VERSION -b `date --utc +%Y%m%d%H%M%S`' ';' 'bash .misc/deploy.pypi.sh' ';')
+ squash=false
+ ff=only
+ rebase=false
+ container=abdealijk_pycolorname_15
+ as_root=true
+ mkdir -p /home/rultor/.ssh
+ echo -e 'Host github.com\n\tStrictHostKeyChecking no\n'
+ chmod 600 /home/rultor/.ssh/config
+ git clone git@github.com:AbdealiJK/pycolorname.git repo
Cloning into 'repo'...
+ cd repo
+ git config user.email<EMAIL_ADDRESS>+ git config user.name rultor
+ '[' -z 'if ! pip3 -V ; then wget -O - https://bootstrap.pypa.io/get-pip.py | python3; fi' ']'
+ cd ..
+ cat
+ '[' true = true ']'
+ cat
+ chmod a+x entry.sh
+ cat
+ echo 'if ! pip3 -V ; then wget -O - https://bootstrap.pypa.io/get-pip.py | python3; fi' ';' 'python3 .ci/adjust_version_number.py pycolorname/VERSION -b `date --utc +%Y%m%d%H%M%S`' ';' 'bash .misc/deploy.pypi.sh' ';'
+ gpgconf --reload gpg-agent
+ gpg --keyserver hkp://pool.sks-keyservers.net --verbose --recv-keys 9AF0FA4C
gpg: requesting key 9AF0FA4C from hkp server pool.sks-keyservers.net
Version: SKS 1.1.5+
gpg: armor header:
Comment: Hostname: pgp.archreactor.org
gpg: armor header:
gpg: pub  2048R/9AF0FA4C 2014-08-17  Rultor.com<EMAIL_ADDRESS>gpg: key 9AF0FA4C: "Rultor.com<EMAIL_ADDRESS>not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
+ gpg --version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
++ pwd
++ pwd
+ gpg --verbose --keyring=/tmp/rultor-45ds/.gpg/pubring.gpg --secret-keyring=/tmp/rultor-45ds/.gpg/secring.gpg --decrypt repo/.misc/rultor_secrets.sh.asc
gpg: can't open `repo/.misc/rultor_secrets.sh.asc': No such file or directory
gpg: decrypt_message failed: No such file or directory
'cid' file is absent, container wasn't started correctly

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 13s)
+ chmod 600 /home/rultor/.ssh/config
+ git clone git@github.com:AbdealiJK/pycolorname.git repo
Cloning into 'repo'...
+ cd repo
+ git config user.email<EMAIL_ADDRESS>+ git config user.name rultor
+ '[' -z 'if ! pip3 -V ; then wget -O - https://bootstrap.pypa.io/get-pip.py | python3; fi' ']'
+ cd ..
+ cat
+ '[' true = true ']'
+ cat
+ chmod a+x entry.sh
+ cat
+ echo 'if ! pip3 -V ; then wget -O - https://bootstrap.pypa.io/get-pip.py | python3; fi' ';' 'python3 .ci/adjust_version_number.py pycolorname/VERSION -b `date --utc +%Y%m%d%H%M%S`' ';' 'bash .ci/deploy.pypi.sh' ';'
+ gpgconf --reload gpg-agent
+ gpg --keyserver hkp://pool.sks-keyservers.net --verbose --recv-keys 9AF0FA4C
gpg: requesting key 9AF0FA4C from hkp server pool.sks-keyservers.net
Version: SKS 1.1.5
gpg: armor header:
Comment: Hostname: keyserver.codinginfinity.com
gpg: armor header:
gpg: pub  2048R/9AF0FA4C 2014-08-17  Rultor.com<EMAIL_ADDRESS>gpg: key 9AF0FA4C: "Rultor.com<EMAIL_ADDRESS>not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
+ gpg --version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
++ pwd
++ pwd
+ gpg --verbose --keyring=/tmp/rultor-8UBS/.gpg/pubring.gpg --secret-keyring=/tmp/rultor-8UBS/.gpg/secring.gpg --decrypt repo/.ci/rultor_secrets.sh.asc
Version: GnuPG v1
gpg: armor header:
gpg: public key is 9A839C3A
gpg: using subkey 9A839C3A instead of primary key 9AF0FA4C
gpg: using subkey 9A839C3A instead of primary key 9AF0FA4C
gpg: encrypted with 2048-bit RSA key, ID 9A839C3A, created 2014-08-17
      "Rultor.com<EMAIL_ADDRESS>gpg: AES256 encrypted data
gpg: original file name='tmp.Aga2JRwkOq'
+ gpg --no-tty --batch --verbose --decrypt --passphrase rultor-key:AbdealiJK/pycolorname rultor_secrets.sh.enc
Version: GnuPG v1
gpg: armor header:
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: decryption failed: Bad session key
'cid' file is absent, container wasn't started correctly

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 12s)
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: original file name='rultor_secrets.sh'
gpg: WARNING: message was not integrity protected
+ rm -rf rultor_secrets.sh.enc
+ rm -rf .gpg
+ cd repo
+ git remote add fork git@github.com:AbdealiJK/pycolorname.git
+ git remote update
Fetching origin
Fetching fork
From github.com:AbdealiJK/pycolorname
 * [new branch]      ajk/pyflakes -> fork/ajk/pyflakes
 * [new branch]      ajk/rultor -> fork/ajk/rultor
 * [new branch]      ajk/wip    -> fork/ajk/wip
 * [new branch]      master     -> fork/master
+ args=
+ '[' only == default ']'
+ '[' only == no ']'
+ '[' only == only ']'
+ args=' --ff-only'
+ export BRANCH=__rultor
+ BRANCH=__rultor
++ git show-branch __rultor
++ wc -l
+ '[' 0 -gt 0 ']'
+ git checkout -B __rultor fork/ajk/wip
Switched to a new branch '__rultor'
Branch __rultor set up to track remote branch ajk/wip from fork.
+ git checkout -B master origin/master
Switched to and reset branch 'master'
Branch master set up to track remote branch master from origin.
+ '[' false == true ']'
+ '[' false == true ']'
+ git merge --ff-only __rultor
Updating 38bedbc..4d43768
Fast-forward
 circle.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
+ docker_when_possible
+ true
++ uptime
++ sed 's/ /\n/g'
++ tail -n 1
+ load=0.98
++ echo 0.98 '>' 30
++ bc
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.98, low enough to run a new Docker container'
load average is 0.98, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=coala/rultor-python
+ docker pull coala/rultor-python
Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
'cid' file is absent, container wasn't started correctly

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 12s)
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: original file name='rultor_secrets.sh'
gpg: WARNING: message was not integrity protected
+ rm -rf rultor_secrets.sh.enc
+ rm -rf .gpg
+ cd repo
+ git remote add fork git@github.com:AbdealiJK/pycolorname.git
+ git remote update
Fetching origin
Fetching fork
From github.com:AbdealiJK/pycolorname
 * [new branch]      ajk/pyflakes -> fork/ajk/pyflakes
 * [new branch]      ajk/rultor -> fork/ajk/rultor
 * [new branch]      ajk/wip    -> fork/ajk/wip
 * [new branch]      master     -> fork/master
+ args=
+ '[' only == default ']'
+ '[' only == no ']'
+ '[' only == only ']'
+ args=' --ff-only'
+ export BRANCH=__rultor
+ BRANCH=__rultor
++ git show-branch __rultor
++ wc -l
+ '[' 0 -gt 0 ']'
+ git checkout -B __rultor fork/ajk/wip
Switched to a new branch '__rultor'
Branch __rultor set up to track remote branch ajk/wip from fork.
+ git checkout -B master origin/master
Switched to and reset branch 'master'
Branch master set up to track remote branch master from origin.
+ '[' false == true ']'
+ '[' false == true ']'
+ git merge --ff-only __rultor
Updating 38bedbc..4d43768
Fast-forward
 circle.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
+ docker_when_possible
+ true
++ uptime
++ sed 's/ /\n/g'
++ tail -n 1
+ load=0.84
++ echo 0.84 '>' 30
++ bc
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.84, low enough to run a new Docker container'
load average is 0.84, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=coala/rultor-python
+ docker pull coala/rultor-python
Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
'cid' file is absent, container wasn't started correctly

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 12s)
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: original file name='rultor_secrets.sh'
gpg: WARNING: message was not integrity protected
+ rm -rf rultor_secrets.sh.enc
+ rm -rf .gpg
+ cd repo
+ git remote add fork git@github.com:AbdealiJK/pycolorname.git
+ git remote update
Fetching origin
Fetching fork
From github.com:AbdealiJK/pycolorname
 * [new branch]      ajk/pyflakes -> fork/ajk/pyflakes
 * [new branch]      ajk/rultor -> fork/ajk/rultor
 * [new branch]      ajk/wip    -> fork/ajk/wip
 * [new branch]      master     -> fork/master
+ args=
+ '[' only == default ']'
+ '[' only == no ']'
+ '[' only == only ']'
+ args=' --ff-only'
+ export BRANCH=__rultor
+ BRANCH=__rultor
++ git show-branch __rultor
++ wc -l
+ '[' 0 -gt 0 ']'
+ git checkout -B __rultor fork/ajk/wip
Switched to a new branch '__rultor'
Branch __rultor set up to track remote branch ajk/wip from fork.
+ git checkout -B master origin/master
Switched to and reset branch 'master'
Branch master set up to track remote branch master from origin.
+ '[' false == true ']'
+ '[' false == true ']'
+ git merge --ff-only __rultor
Updating 38bedbc..4d43768
Fast-forward
 circle.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
+ docker_when_possible
+ true
++ uptime
++ sed 's/ /\n/g'
++ tail -n 1
+ load=0.65
++ echo 0.65 '>' 30
++ bc
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.65, low enough to run a new Docker container'
load average is 0.65, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=coala/rultor-python
+ docker pull coala/rultor-python
Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
'cid' file is absent, container wasn't started correctly

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 11s)
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: original file name='rultor_secrets.sh'
gpg: WARNING: message was not integrity protected
+ rm -rf rultor_secrets.sh.enc
+ rm -rf .gpg
+ cd repo
+ git remote add fork git@github.com:AbdealiJK/pycolorname.git
+ git remote update
Fetching origin
Fetching fork
From github.com:AbdealiJK/pycolorname
 * [new branch]      ajk/pyflakes -> fork/ajk/pyflakes
 * [new branch]      ajk/rultor -> fork/ajk/rultor
 * [new branch]      ajk/wip    -> fork/ajk/wip
 * [new branch]      master     -> fork/master
+ args=
+ '[' only == default ']'
+ '[' only == no ']'
+ '[' only == only ']'
+ args=' --ff-only'
+ export BRANCH=__rultor
+ BRANCH=__rultor
++ git show-branch __rultor
++ wc -l
+ '[' 0 -gt 0 ']'
+ git checkout -B __rultor fork/ajk/wip
Switched to a new branch '__rultor'
Branch __rultor set up to track remote branch ajk/wip from fork.
+ git checkout -B master origin/master
Switched to and reset branch 'master'
Branch master set up to track remote branch master from origin.
+ '[' false == true ']'
+ '[' false == true ']'
+ git merge --ff-only __rultor
Updating 38bedbc..4d43768
Fast-forward
 circle.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
+ docker_when_possible
+ true
++ uptime
++ sed 's/ /\n/g'
++ tail -n 1
+ load=0.41
++ echo 0.41 '>' 30
++ bc
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.41, low enough to run a new Docker container'
load average is 0.41, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=coala/rultor-python
+ docker pull coala/rultor-python
Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon. Is the docker daemon running on this host?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
'cid' file is absent, container wasn't started correctly

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@abdealijk Oops, I failed. You can see the full log here (spent 1min)
     #include <Python.h>
                        ^
    compilation terminated.
    failure.
    removing: _configtest.c _configtest.o
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-vgvcufnc/numpy/setup.py", line 386, in <module>
        setup_package()
      File "/tmp/pip-build-vgvcufnc/numpy/setup.py", line 378, in setup_package
        setup(**metadata)
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/core.py", line 169, in setup
        return old_setup(**new_attr)
      File "/usr/lib/python3.4/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.4/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.4/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/install.py", line 62, in run
        r = self.setuptools_run()
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/install.py", line 36, in setuptools_run
        return distutils_install.run(self)
      File "/usr/lib/python3.4/distutils/command/install.py", line 583, in run
        self.run_command('build')
      File "/usr/lib/python3.4/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.4/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/build.py", line 47, in run
        old_build.run(self)
      File "/usr/lib/python3.4/distutils/command/build.py", line 126, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.4/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.4/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/build_src.py", line 147, in run
        self.build_sources()
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/build_src.py", line 164, in build_sources
        self.build_extension_sources(ext)
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/build_src.py", line 323, in build_extension_sources
        sources = self.generate_sources(sources, ext)
      File "/tmp/pip-build-vgvcufnc/numpy/numpy/distutils/command/build_src.py", line 376, in generate_sources
        source = func(extension, build_dir)
      File "numpy/core/setup.py", line 408, in generate_config_h
        moredefs, ignored = cocache.check_types(config_cmd, ext, build_dir)
      File "numpy/core/setup.py", line 40, in check_types
        out = check_types(*a, **kw)
      File "numpy/core/setup.py", line 269, in check_types
        "Cannot compile 'Python.h'. Perhaps you need to "
    SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.

    ----------------------------------------
\u001b[31mCommand "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-vgvcufnc/numpy/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-yy8xtci1-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-vgvcufnc/numpy\u001b[0m
\u001b[33mYou are using pip version 8.0.2, however version 8.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.\u001b[0m
\u001b[?25hcontainer 03eb73b154e42e631e7c736d1f7ad037200316cdee96145d9fb5d79dd593fe40 is dead
Sat Mar  5 12:47:49 UTC 2016

@rultor merge

@rultor merge

@abdealijk OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@rultor stop

@rultor abort

@rultor die

@rultor merge

@abdealijk Oops, I failed.  Done

Building dependency tree... 0%

Building dependency tree... 0%

Building dependency tree... 0%

Building dependency tree... 50%

Building dependency tree... 50%

Building dependency tree

Reading state information... 0%

Reading state information... 0%

Reading state information... Done

The following extra packages will be installed:
  libexpat1-dev libpython3-dev libpython3.4 libpython3.4-dev python3.4-dev
The following NEW packages will be installed:
  libexpat1-dev libpython3-dev libpython3.4 libpython3.4-dev python3-dev
  python3.4-dev
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 19.6 MB of archives.
After this operation, 36.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] 5a2223c7d253462acf2fcc00642f1b1fbb376b3d5ef8b1181fdcd54ee7c7232a
'pid' file is absent, something was broken

@rultor merge

@abdealijk The pull request is closed already, so I can't merge it

@rultor merge

@abdealijk I'm sorry, I don't understand you :( Check this page and try again please

@rultor stop

@abdealijk OK, I'll try to stop current task.

@rultor stop

@abdealijk Oops, I failed. You can see the full log here (spent 16s)
+ set -e
+ set -o pipefail
++ dirname ./run.sh
+ cd .
+ echo 19947
+ echo '1.61.8 b552866'
1.61.8 b552866
+ date
Sat Mar  5 14:56:06 UTC 2016
+ uptime
 14:56:06 up 22 days, 18:58,  0 users,  load average: 0.06, 0.09, 0.06
+ vars=()
+ image=coala/rultor-python
+ directory=
+ scripts=('if ! pip3 -V ; then wget -O - https://bootstrap.pypa.io/get-pip.py | python3; fi' ';')
+ squash=false
+ ff=only
+ rebase=false
+ container=abdealijk_pycolorname_15
+ as_root=true
+ mkdir -p /home/rultor/.ssh
+ echo -e 'Host github.com\n\tStrictHostKeyChecking no\n'
+ chmod 600 /home/rultor/.ssh/config
+ git clone '' repo
fatal: repository '' does not exist
'cid' file is absent, Docker container is not running
'cid' file is absent, container wasn't started correctly


crd: Expose agent{Https,No}Proxy

Depending on the environment where we deploy Confidential Containers, setting up the proxy is required for the agent to be able to connect with the external world.
With that in mind, mainly considering this is needed for the basic TDX CI, let's ensure we expose to the users a way to set it up.

I've taken @mythi's suggestion and instead of exposing it, we're just leaving a hint to the user, in the default kustomization, of what they can uncomment in order to have proxies working as expected.


Markdown not parsed on 'Add and manage dashboards'

On the Add and manage dashboards page the markdown is not properly parsed at the start of the article:

It seems to be this md file, which does render correctly on GitHub. The rest of the page does render properly.
Tested in IE, Edge and Chrome

@simondel - Thank you for the correction. I've updated the topic and the changes should appear later today.


Seems to work for Sublime Text 3

Hey I know it says this package is for Sublime Text 2, but seems to work fine for Sublime Text 3 too. Just a heads up.

Indeed it's designed to work with sublime 3 as well. Glad to see you trying it out!
@Benvie Can you change the summary text?


Add Reef Finance Token (REEF)

Reef Finance
The gateway to DeFi through Liquidity and Protocol Aggregation, Proprietary Analytics, and Multi-Chain Accessibility
WEB: https://reef.finance
ETHERSCAN: https://etherscan.io/token/0xfe3e6a25e6b192a42a44ecddcd13796471735acf
GITHUB: http://github.com/reef-defi
MEDIUM: https://reefdefi.medium.com/
TWITTER: https://twitter.com/reefdefi
TELEGRAM: https://t.me/reefdefi
COINMARKETCAP: https://coinmarketcap.com/currencies/reef/
BINANCE RESEARCH: https://research.binance.com/en/projects/reef-finance

Sry for the OCD space fix after ELT, had to do it :)

Sry for the OCD space fix after ELT, had to do it :)


Doesn't allow auth and hostname variables to be saved in config file and to environment variables

Must add testing and implementation for this

WIP: #11


Sonoff DW2 not change state after some times must reboot Home Assistant

From last update sonoff dw2 door sensor cannot change state if Home Assistant is up and running from some times. For recognize the state i have to reboot Home Assistant

HI, did you manage to solve this issue? I have the same - have to restart HA every day for my automations to work...

I have a similar issue since upgrading HA to 2021.12.9 yesterday, I only have one Sonoff WiFi device (TH16 switch/temperature probe) that connects through SonoffLAN and for the past 4 months since installing its been rock solid, but the past two nights around the same time each night the device stopped reporting in to HA even though it's still visible in the ewelink app, and both time a reboot of HA bought it back online

I have a similar issue since upgrading HA to 2021.12.9 yesterday, I only have one Sonoff WiFi device (TH16 switch/temperature probe) that connects through SonoffLAN and for the past 4 months since installing its been rock solid, but the past two nights around the same time each night the device stopped reporting in to HA even though it's still visible in the ewelink app, and both time a reboot of HA bought it back online

Past two night ewelink server had problems doesnt depend by HA

Ah OK thanks so maybe just a coincidence then although I always assumed using SonofLAN meant HA's connection to the device was local and didn't rely on the eWeLink cloud, is that not how it works?

TH may have some problems with Temp/Hum update via LAN in latest release. But this problems should be fixed in latest master version

I believe the DW2s rely on the Cloud ( see notes)
Tested (only Cloud)
These devices only work through the cloud!
Sonoff L1 (color, brightness, effects) fw 2.7.0
Sonoff B1 (color, brightness, color temp) fw 2.6.0
Sonoff SC (five sensors) fw 2.7.0
Sonoff DW2
King Art - King Q4 Cover (pause, position) fw 2.7.0
KING-M4 (brightness) fw 2.7.0
Eachen WiFi Door/Window Sensor
Essential Oils Diffuser (fan and color light) fw 2.9.0
Smart USB Mosquito Killer
Smart Bulb RGB+CCT

I believe the DW2s rely on the Cloud ( see notes)
Tested (only Cloud)
These devices only work through the cloud!
Sonoff L1 (color, brightness, effects) fw 2.7.0 Sonoff B1 (color, brightness, color temp) fw 2.6.0 Sonoff SC (five sensors) fw 2.7.0 Sonoff DW2 King Art - King Q4 Cover (pause, position) fw 2.7.0 KING-M4 (brightness) fw 2.7.0 Eachen WiFi Door/Window Sensor Essential Oils Diffuser (fan and color light) fw 2.9.0 Smart USB Mosquito Killer Smart Bulb RGB+CCT

Yes but rebooting HA the state is updated

@antoweb show your config

@antoweb show your config

No particular config. Just connected with this integration and trigger the state

Have you set mode in config?

Fixed in latest master-version

Hi everybody,
I have the same problem.
How do you solve this problem?

Can report the same problem for DW2. After a while the state becomes unresponsive and reloading integration is required to get it working again.
@AlexxIT perhaps this ticket should be reopened for further investigation?

@lazmo88 do you have problem only with this sensor or with all cloud sensors?

@lazmo88 do you have problem only with this sensor or with all cloud sensors?

I have problem only with this sensor. Other sensors work well

I have the exact same problem with DW2. Reloading the integration solves it for now.
How can the root cause be fixed? Any idea?


Search cards UI

Update search cards UI

Add description to search card and change colours

Update search bar UI

Add border radius and padding

@kalashshah please suggest a good icon for unfollowing

Fixed with commit 63612b9


The span distort & wrap to newline in Grid layout display

When I try to create a grid layout by "container>row>spanX", I found the span div cannot be kept the shape & position.
For example, when I narrow the browser window size from full screen to a half size, I found the span wrap to another new line. I suppose they should still in one row, but they wrapped.
Even the official demo in "http://twitter.github.com/bootstrap/scaffolding.html#grid-system", has the same problem.
BTW, I use chrome  & version is "16.0.916.23m".


⚠ Bofrost.lu has degraded performance

In 3c4fd81, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 988 ms

Resolved: Bofrost.lu performance has improved in c763008 after 13 minutes.


H7100: add Fan Entity

Govee Device SKU
H7100
Govee2MQTT Version
2024.01.18-4475eb63
Describe the issue
Fan has many options however no fan Entity with speed control
Startup Diagnostics
successfully started
GOVEE_API_KEY=REDACTED
GOVEE_LAN_BROADCAST_GLOBAL=true
GOVEE_MQTT_HOST=core-mosquitto
GOVEE_TEMPERATURE_SCALE=F
GOVEE_EMAIL=REDACTED
GOVEE_PASSWORD=REDACTED
GOVEE_MQTT_PASSWORD=REDACTED
GOVEE_LAN_BROADCAST_ALL=true
GOVEE_MQTT_USER=govee
GOVEE_MQTT_PORT=1883
++ cd /app
++ exec /app/govee serve
[2024-01-18T21:48:03 INFO  govee::commands::serve] Starting service. version 2024.01.18-4475eb63
[2024-01-18T21:48:03 INFO  govee::commands::serve] Querying platform API for device list
[2024-01-18T21:48:03 INFO  govee::commands::serve] Querying undocumented API for device + room list
[2024-01-18T21:48:04 INFO  govee::service::iot] Connected to IoT: CONNACK code 0: Connection Accepted.
[2024-01-18T21:48:04 INFO  govee::commands::serve] Starting LAN discovery
[2024-01-18T21:48:04 INFO  govee::service::iot] IoT (re)connected with status CONNACK code 0: Connection Accepted.
[2024-01-18T21:48:04 INFO  govee::commands::serve] Waiting 10 seconds for LAN API discovery
Additional Logs
No response
Home Assistant Logs
No response
Anything else?
No response

Please share the metadata for your device:

go to the device entry in for your device
Find the entity id of the Status entity that is listed under your space heater and get its entity name. The default is probably something like sensor.device_name_status.

Then evaluate the following home assistant template by visiting Developer Tools | Template, replacing the entity name with what yours actually is:
{{
    {
      "meta": state_attr('sensor.device_name_status', 'platform_metadata'),
      "state": state_attr('sensor.device_name_status', 'platform_state'),
    }
}}

It should output a large-ish json blob, please share that here.

{
"meta": {
"capabilities": [
{
"alarmType": null,
"eventState": null,
"instance": "powerSwitch",
"parameters": {
"dataType": "ENUM",
"options": [
{
"name": "on",
"value": 1
},
{
"name": "off",
"value": 0
}
]
},
"type": "devices.capabilities.on_off"
},
{
"alarmType": null,
"eventState": null,
"instance": "oscillationToggle",
"parameters": {
"dataType": "ENUM",
"options": [
{
"name": "on",
"value": 1
},
{
"name": "off",
"value": 0
}
]
},
"type": "devices.capabilities.toggle"
},
{
"alarmType": null,
"eventState": null,
"instance": "workMode",
"parameters": {
"dataType": "STRUCT",
"fields": [
{
"dataType": "ENUM",
"defaultValue": null,
"fieldName": "workMode",
"options": [
{
"name": "FanSpeed",
"value": 1
},
{
"name": "Custom",
"value": 2
},
{
"name": "Auto",
"value": 3
},
{
"name": "Sleep",
"value": 5
},
{
"name": "Nature",
"value": 6
}
],
"required": true
},
{
"dataType": "ENUM",
"defaultValue": null,
"fieldName": "modeValue",
"options": [
{
"name": "FanSpeed",
"options": [
{
"value": 1
},
{
"value": 2
},
{
"value": 3
},
{
"value": 4
},
{
"value": 5
},
{
"value": 6
},
{
"value": 7
},
{
"value": 8
}
],
"value": null
},
{
"defaultValue": 0,
"name": "Custom",
"value": null
},
{
"defaultValue": 0,
"name": "Auto",
"value": null
},
{
"defaultValue": 0,
"name": "Sleep",
"value": null
},
{
"defaultValue": 0,
"name": "Nature",
"value": null
}
],
"required": true
}
]
},
"type": "devices.capabilities.work_mode"
}
],
"device": "12:AB:60:74:F4:19:D0:FC",
"deviceName": "Bedroom Tower Fan",
"sku": "H7100",
"type": "devices.types.fan"
},
"state": {
"capabilities": [
{
"instance": "online",
"state": {
"value": true
},
"type": "devices.capabilities.online"
},
{
"instance": "powerSwitch",
"state": {
"value": 0
},
"type": "devices.capabilities.on_off"
},
{
"instance": "oscillationToggle",
"state": {
"value": 1
},
"type": "devices.capabilities.toggle"
},
{
"instance": "workMode",
"state": {
"value": {
"modeValue": 7,
"workMode": 1
}
},
"type": "devices.capabilities.work_mode"
}
],
"device": "12:AB:60:74:F4:19:D0:FC",
"sku": "H7100"
}
}


Fix Linux build

again here for the actions, don't close it yet :)

yay!

It's actually getting close now, what needs to be done is:

[ ] Check if "set" message works correctly now (I think it does)

[ ] Add "click to open file browser" behaviour like original play.file~

[ ] Update helpfile:

Document file format support
Document "seek" and "speed" messages

I think that's all! Could you take a look at these last things?

I don't think we need a "click to open file browser" behaviour like original play.file~ since this is a compiled object, not an abstraction


XCM. Problem with transferMultiasset

Description
Can't create an XCM for Polkadot Asset Hub
Steps to Reproduce

Go to assets tab
Create XCM transfer from Polkadot to Polkadot Asset Hub

Actual Behavior
Can't calculate fee
nova-spektr.2024-05-08T12:58:39.738Z.log
Environment

Operating system: macos
Version: PROD v1.7.1

Also getting error
2024/05/08 12:32:40.789 [production#1.7.1]-renderer [info]  > Error getting fee -  Error: createType(Call):: Call: failed decoding xcmPallet.limitedTeleportAssets:: Struct: failed on args: {"dest":"{\"_enum\":{\"__Unused0\":\"Null\",\"V2\":\"XcmV2MultiLocation\",\"__Unused2\":\"Null\",\"V3\":\"StagingXcmV3MultiLocation\",\"V4\":\"StagingXcmV4Location\"}}","beneficiary":"{\"_enum\":{\"__Unused0\":\"Null\",\"V2\":\"XcmV2MultiLocation\",\"__Unused2\":\"Null\",\"V3\":\"StagingXcmV3MultiLocation\",\"V4\":\"StagingXcmV4Location\"}}","assets":"{\"_enum\":{\"__Unused0\":\"Null\",\"V2\":\"XcmV2MultiassetMultiAssets\",\"__Unused2\":\"Null\",\"V3\":\"XcmV3MultiassetMultiAssets\",\"V4\":\"StagingXcmV4AssetAssets\"}}","fee_asset_item":"u32","weight_limit":"{\"_enum\":{\"Unlimited\":\"Null\",\"Limited\":\"SpWeightsWeightV2Weight\"}}"}:: Struct: failed on dest: {"_enum":{"__Unused0":"Null","V2":"XcmV2MultiLocation","__Unused2":"Null","V3":"StagingXcmV3MultiLocation","V4":"StagingXcmV4Location"}}:: Enum(V4):: Struct: failed on interior: {"_enum":{"Here":"Null","X1":"[Lookup79;1]","X2":"[Lookup79;2]","X3":"[Lookup79;3]","X4":"[Lookup79;4]","X5":"[Lookup79;5]","X6":"[Lookup79;6]","X7":"[Lookup79;7]","X8":"[Lookup79;8]"}}:: Enum(X1):: decodeU8aVec: failed at 0x5b6f626a656374204f626a6563745d… (index 1/1): {"_enum":{"Parachain":"Compact<u32>","AccountId32":"{\"network\":\"Option<StagingXcmV4JunctionNetworkId>\",\"id\":\"[u8;32]\"}","AccountIndex64":"{\"network\":\"Option<StagingXcmV4JunctionNetworkId>\",\"index\":\"Compact<u64>\"}","AccountKey20":"{\"network\":\"Option<StagingXcmV4JunctionNetworkId>\",\"key\":\"[u8;20]\"}","PalletInstance":"u8","GeneralIndex":"Compact<u128>","GeneralKey":"{\"length\":\"u8\",\"data\":\"[u8;32]\"}","OnlyChild":"Null","Plurality":"{\"id\":\"XcmV3JunctionBodyId\",\"part\":\"XcmV3JunctionBodyPart\"}","GlobalConsensus":"StagingXcmV4JunctionNetworkId"}}:: Unable to create Enum via index 91, in Parachain, AccountId32, AccountIndex64, AccountKey20, PalletInstance, GeneralIndex, GeneralKey, OnlyChild, Plurality, GlobalConsensus

After research I figured out that AccountId is empty when building extrinsic. It doesn't matter if Myself button or manual input is being used for transfer.


[HOLD for payment 2023-05-23] [$1000] Copying the messages and marking a message in between as unread generates 'new' in the text

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to web chrome
Go to any chat
Send multiple messages
Select a message in between and mark it as unread (Make sure a green line appears after marking as unread, else try to refresh the page and mark as unread again)
Copy the whole message from the beginning
Paste it in the chat
Notice that it generates a text 'new' for unread messages

Expected Result:
Copying the messages and marking a message in between as unread should not generate 'new' in the text
Actual Result:
Copying the messages and marking a message in between as unread generates 'new' in the text
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.3.4
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/43996225/233812260-7d6062e9-dc1a-4a59-a547-0df641aa53fa.mp4
https://user-images.githubusercontent.com/43996225/233812264-74d211ea-7f23-4273-a791-92921d2e6267.mp4
Expensify/Expensify Issue URL:
Issue reported by: @priya-zha
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1682146268767809
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01f2436084d8626b3d
Upwork Job ID:<PHONE_NUMBER>541297664
Last Price Increase: 2023-04-24

Triggered auto assignment to @JmillsExpensify (Bug), see https://stackoverflow.com/c/expensify/questions/14418 for more details.

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

This got created over the weekend and I'm just getting to it. Jumping in to test now.

I'm able to reproduce this one on any desktop environment, so checking both of those off in the OP.

Job added to Upwork: https://www.upwork.com/jobs/~01f2436084d8626b3d

Triggered auto assignment to Contributor-plus team member for initial proposal review - @fedirjh (External)

Triggered auto assignment to @Beamanator (External), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Copying the messages and marking a message in between as unread generates 'new' in the text
What is the root cause of that problem?
I'm not sure if the steps to reproduce are as follow video, if so, then it is because New Flag is also selected, so it can be copied

Reporduce Video
https://user-images.githubusercontent.com/20135674/234169901-8853c892-7ba5-4b1d-8053-862a09061a9a.mov

What changes do you think we should make in order to solve the problem?
We can disable the selection of New Flag, We can add styles.userSelectNone in UnreadActionIndicator.Text.style

Proposal
Please re-state the problem that we are trying to solve in this issue.
Copying messages with the New message indicator line in between the messages includes the "New" text in the value copied to the clipboard.
What is the root cause of that problem?
The "New" text from the element that defines the new message indicator line is always included in the text selection that is copied to the clipboard. This is due to the fact that the selection range textContent includes all text from the current document selection.
https://github.com/Expensify/App/blob/3bc9d8b5acb608a66bc4ec62b5750628fa3aafc4/src/libs/SelectionScraper/index.js#L42-L45
What changes do you think we should make in order to solve the problem?
There are two steps to fix this.
First step is to add the styles.userSelectNone to the UnreadActionIndicator component. Adding this style will prevent the "New" text itself from being selected, but this is not enough as the text will still be included in the clipboard after copying.
Next, the SelectionScraper helper lib needs to be modified. The unread action indicator element needs to be identified and located within the DOM so that it can be excluded from the selection. Two methods will be added to achieve this:

getInlineStyle: to check that  the value of the user-select inline style matches none which identifies the indicator element itself).
findNewMessageLineIndicator: to find the indicator itself and build a DOM tree so that the indicator can be removed from its parent within the selection.

With these two methods, we can modify the getHTMLOfSelection to remove the new message indicator from the selection range.
https://github.com/Expensify/App/blob/3bc9d8b5acb608a66bc4ec62b5750628fa3aafc4/src/libs/SelectionScraper/index.js#L42
const tmpContainer = document.createElement('div');
tmpContainer.appendChild(range.cloneContents());

let indicatorTree = [];
findNewMessageLineIndicator(tmpContainer, indicatorTree);
if (indicatorTree.length > 1) {
    indicatorTree[1].removeChild(indicatorTree[0]);
}

const selectionRange = new Range();
selectionRange.selectNodeContents(tmpContainer);
const clonedSelection = selectionRange.extractContents();

What alternative solutions did you explore? (Optional)
None.

@fedirjh yeah great point, if it's selectable I would actually expect it to get copied, so let's confirm exactly what we want.
@JmillsExpensify do you think it ever makes sense that we'd want the user to be able to "select" the "New" text marker so that it can be copied? Think we should move this discussion into slack or ask Shawn? Or can we answer this ourselves? 😅

Proposal
Please re-state the problem that we are trying to solve in this issue.
Copying the messages and marking a message in between as unread generates 'new' in the text
What is the root cause of that problem?
The text inside  UnreadActionIndicator is copied along with everything else inside SelectionScraper's  getHTMLOfSelection() method.
https://github.com/Expensify/App/blob/f3fae403759b07cd364b4cee07efded980f3620d/src/libs/SelectionScraper/index.js#L42-L47
What changes do you think we should make in order to solve the problem?

We'll first need to style the UnreadActionIndicator so the user is visually aware it won't get copied to the clipboard by adding styles.userSelectNone to the style prop of the main View wrapping it.

<View accessibilityLabel={props.translate('accessibilityHints.newMessageLineIndicator')} data-action-id={props.reportActionID} style={[styles.unreadIndicatorContainer, styles.userSelectNone]}>
    //... other code here
</View>

We'll then need to add the following code below this line after we've verified the clonedSelection has textContent, and the child variable is set equal to clonedSelection. This will grab all the divs with the user-select: none style applied and remove them from the copied HTML.

//... Previous code goes here

if (clonedSelection.textContent) {
    let parent;
    let child = clonedSelection;

    [...child.children].forEach(item => {
        const itemsNotToCopy = item.querySelectorAll(`div[style*="user-select: ${styles.userSelectNone.WebkitUserSelect}"]`);

        if (itemsNotToCopy.length > 0) {
            itemsNotToCopy.forEach(item => item.remove());
        }
    })

//... Remaining code goes here
}

This also helps in future if we ever decide to exclude something from being copied.
A short demo of this working on all the affected platforms.

Mac Chrome
https://user-images.githubusercontent.com/79470910/234608871-c8bf236b-b644-4738-9847-731f699be510.mov

Mac Safari
https://user-images.githubusercontent.com/79470910/234609182-f64153b2-e9be-4d47-9f19-bb6a02ce0cfa.mov

Mac Desktop
https://user-images.githubusercontent.com/79470910/234609261-4e70fd1e-d389-41b1-a7f0-7ebaa9736275.mov

What alternative solutions did you explore?
I initially thought about excluding just the UnreadActionIndicator by grabbing it from one of the copied nodes and removing it i.e.  something like this (below) since from my searches using VS Code's search feature, it's only used in ReportActionItem.
[...child.children].forEach(item => {
    const unreadActionIndicator = item.querySelector(`div[aria-label=${translate('accessibilityHints.newMessageLineIndicator')}]`)
})

if (unreadActionIndicator) {
    unreadActionIndicator.remove();
}

This worked, but I felt like a better way would be to think about other items later on that we may not want copied and come up with a solution that takes care of them as well.

I can't think of a valid reason that we'd want to copy the new marker, though we can take this discussion to Slack to get more voices. @fedirjh You want head that up? Let's all get on the same page.

@akinwale, @Victor-Nyagudi Thank you for the proposals. While both proposals are quite similar, I prefer to remove all elements from selection that have the user-select: none, which provides a global solution.
Therefore I think we should go with @Victor-Nyagudi proposal. I would suggest an improvement, we should apply the changes before this line as below :
// Remove any element that isn’t selectable
div.querySelectorAll('div[style*="user-select: none"]').forEach(item => item.remove());
return div.innerHTML;

cc @Beamanator All yours.
🎀👀🎀 C+ reviewed

Based on the expected result of the bug report as shown below, there were no requirements prior to the proposed solutions to remove every single item that has the user-select: none inline style applied.

Copying the messages and marking a message in between as unread should not generate 'new' in the text

My proposal was the first to introduce this approach, and addresses the root cause which is that the "New" text from the new message line indicator was being copied. If the bug report required removing multiple items from the copied text, then surely I would've written a proposal to address this.

@akinwale Thank you for bringing that up. The second proposal appears to be simpler and has a global scope. You mentioned that you will implement two methods to achieve the same thing, whereas second proposal accomplished it with fewer lines of code and can be simplified to one line as I suggested . Finally we are still awaiting @Beamanator to make the final decision.

Thank you for your response. I was up at 3am coming up with my proposal, while learning on the fly how the Range interface worked because I wasn't very familiar with it. The code can be further optimised, and I would hope that we don't have to come up with production-level code for proposals, especially when a code review will be carried out after implementation.
Either way, we'll see how it goes.

Ok so I just reviewed the proposals - I agree with @fedirjh that @Victor-Nyagudi 's proposal is nice that it's future-proof and I find it much easier to understand.

📣 @Victor-Nyagudi You have been assigned to this job by @Beamanator!
Please apply to this job in Upwork and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑💻
Keep in mind: Code of Conduct | Contributing 📖

Thank you.
I've applied on Upwork.

Pull request is ready for review.
Ready when you are, gentlemen.

⚠ Looks like this issue was linked to a Deploy Blocker here
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

Removed hold for payment b/c the PR was merged into staging only, and a regression was found so the PR got reverted.
@Victor-Nyagudi and @fedirjh and I agreed on a resolution / next steps here: https://github.com/Expensify/App/pull/18228#issuecomment-1540163003

Re-applying the bug label as I'm OOO the rest of the week.

@Victor-Nyagudi @fedirjh @priya-zha please apply to the upwork job if you haven't already in preparation for tomorrow's payment date: https://www.upwork.com/ab/applicants/1650641034541297664/job-details

Hi @greg-schroeder I tried applying but it gives me permission error though I'm logged in with the right account.

Hi @priya-zha. Hmm. Can you link me your Upwork details? I can send you a manual offer

@greg-schroeder Here's my upwork details. https://www.upwork.com/freelancers/~011e32317dbbd489e0
Thanks

Job added to Upwork: https://www.upwork.com/jobs/~01f2436084d8626b3d

@greg-schroeder I applied to the Upwork job from the link shared above by @MelvinBot a couple of weeks ago.
I also got the permission error when I clicked on the link you've just shared.
I hope the two links lead to the same place, but if not, I may need a manual offer too.

Sorry, I'm realizing now that I may have shared the internal link - but it's fine, I see your application @Victor-Nyagudi

Sent payments/offers - there was a regression so the appropriate changes were made to offers.

@greg-schroeder I accepted.

Payments complete. Bump @fedirjh for the checklist: https://github.com/Expensify/App/issues/17838#issuecomment-1550464525

Seems good to me. Thoughts @Beamanator on the above? If you approve I can create the regression issue and close this out.

That regression test looks pretty good, but maybe in point 5 we can clarify that "the whole message" means clicking and dragging from a message or two before the unread one, down to below the unread one by a few messages - so we have a few messages selected before & after the new indicator

Filed


fails()'s convertResponseErrors() doesn't allow for using error 'meta' property or returning exact response passed

I see convertResponseErrors() is converting errors to JSONAPI error format.
But I have the exact JSONAPI response expected from the server - which is an error object that uses the 'meta' property.  Right now, I can't mock a fail with the expected response, because it doesn't support converting 'meta', and I can't just pass it the array of JSONAPI error objects I want it to return because it tries to convert them.
(Also, it's a bit of a hassle to convert my known JSONAPI response into the expected format so that it can convert it back to JSONAPI again.)
I can make a pull request, but not sure how you'd want to handle this. Or if there's a valid reason it's not allowing for passing the raw response you want it to come back with.
convertResponseErrors() could allow for not converting if an array is received like so. All the current tests still pass doing this:
  convertResponseErrors(object) {
    let errors = object.errors;
    if (Ember.isArray(errors)) {
        return errors;
    } else {
      let jsonAPIErrrors = [];
      Ember.assert('Your error REST Adapter style response must have an errors key. The errors hash format is: {errors: {description: ["bad"]}}', object.errors);
      for (let key in errors) {
        let description = Ember.typeOf(errors[key]) === "array" ? errors[key][0] : errors[key];
        let source = { pointer: "data/attributes/key" + key };
        let newError = { detail: description, title: "invalid " + key, source: source };
        jsonAPIErrrors.push(newError);
      }
      return { errors: jsonAPIErrrors };
    }
  }

But it might be a better to explicitly let someone disable convertResponseErrors() than trying to guess at when to do it vs not thereby allowing the option for fails() to return exactly what you sent it no matter what the format.
Such as changing fails() to do this and including 'convertResponse' (or some other name) as an option:
  fails(options = {}) {
    if (options.status) {
      Ember.assert(`[ember-data-factory-guy] 'fails' method status code must be 3XX, 4XX or 5XX,
        you are using: ${options.status}`, options.status.toString().match(/^([345]\d{2})/));
    }
    this.status = options.status || 500;
    if (options.response) {
      let errors;
      if (false !== options.convertResponse) {
        errors  = FactoryGuy.fixtureBuilder.convertResponseErrors(options.response, this.status);
      } else {
        errors = options.response;
      }
      this.errorResponse = errors;
    }
    return this;
  }

Thoughts?

This has been a thorn in my side for months. EmberData has gotten better at smoothing out the error response lately, and that convertReponseErrors method was meant to do that.
For the tests to work in multi adapter mode, I think was the main idea behind this conversion.
But overall you are right, there is no reason why you should not be able to pass in your own errors.
Let me play around with those errors again, and get more clarity on this one.

@cristinawithout , can you give me example of an error response you want to send
and how you expect to consume it ( when it returns )
I want to make some tests and will use some real examples

Here ya go.
{
    "errors": [
        {
            "status": "422",
            "code": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
            "title": "Unprocessable Entity",
            "detail": "Failed Validation",
            "meta": {
                "validation_messages": {
                    "name": {
                        "regexNotMatch": "The input can only contain letters",
                        "stringLengthTooShort": "The input is less than 2 characters long"
                    }
                }
            }
        }
    ]
}

During .catch() after model.save(), 'meta.validation_messages' is converted into an object with an array of errors by property name, which will be used in the template to show beneath the form input that corresponds to that property. So from the above response, a formErrors property on the component or controller ends up as:
{
  name: ['The input can only contain letters', 'The input is less than 2 characters long']
}

In some cases, 'meta.validation_messages' comes back with nested objects and arrays also. I can give example of that too if you need. But if it's working for the above and the 'meta.validation' messages is being returned exactly as it's given, all the variations should work.

yikers, never heard of meta in errors object before .. but there it is in the json api spec.
this is great info .. thanks.
I am going to dig into error handling this weekend and see if I can get that spiffed up and polished.

I wonder, do you think there is even a valid use case for factory guy formatting the errors at all.
I recall thinking it would be nice to be able to use simpler format=> {errors: [{name: 'too silly'}]} and then convert that to the json api style errors or rest style ( which this almost is ) .. and make the response setup easier, but it is perhaps better to either have that as separate function => makeMyErrorsHashForMe([{name: 'silly'}] ..
which is what I am doing now but not telling you  ( this would make it more explicit )
and / or ..keep doing what I am doing and use the option that you suggested ( dontSetupMyErrorsPlease )

I was wondering myself if there was a good reason for automatically formatting the errors. Until this week, all my apps' tests have been using old versions. I wasn't expecting that behavior, so it took me a minute to figure out what was happening to my error response.
I suppose if you have a simple fail error, it could be more convenient. Personally, I'd rather just give it the error object tho so the error being received is obvious when reading the test.
I like having the conversion as a separate function. Tho that'll mean people will have to change their existing tests - the option to disable it keeps the default behavior for people's existing tests.
But I would prefer a separate function and no conversion by default and think that's more intuitive.

I agree.
I may have to keep it the way it is and add the option, but as I ponder, I think the number of tests that return error responses is pretty small so breaking that one will probably not hurt too many people's feelings.
I guess I will ponder some more.

I reckon v 2.7.0-beta.9 will solve your problem @cristinawithout because I am formatting automatically and giving the option to skip that formatting with convertErrors flag

might be nice to have a global setting to never format the errors ? let me know if this is needed because using that convertErrors flag gets tedious

Thanks. convertErrors  param works great. I don't' have too many fail tests that need a specific response. So the param is fine.


segstats FreeSurfer legacy

Deactivate the freesurfer legacy implementation by default and add a flag to enable it.
Still needs to be properly tested before merge.

Documentation and default behavior changes

Testing confirmed segstats.py was not broken, but norm.mgz and orig_nu.mgz are different in that one is masked by the brainmask, which effects the mixing coefficient of mixing between background and regions bordering the background, because the average intensity of the background changes (masked background voxels).


Not adding cards, but able to create deck

VS Code: 1.59.0
Anki 2.1.44 (b2b3275f) Python 3.8.6 Qt 5.14.2 PyQt 5.14.2
Platform: Windows 10
Flags: frz=True ao=True sv=2
Add-ons, last update check: 2021-08-18 10:33:56

===Add-ons (active)===
(add-on provided name [Add-on folder, installed at, version, is config changed])
AnkiConnect ['2055492159', 2021-07-13T19:59, 'None', '']

I've create a markdown file that looks like it should work:

Doesn't look like cards are created

But I can run some python to do ankiconnect and they will create.

What am I doing wrong here?

Does it still happen after running the “force reinstall” command?

Hey @benjamin-weller thanks for raising.
In Anki could you go to "browse", then "note types" on the left and take a screenshot?
Something like this (except I want to see the whole list):

Here's the requested output

This is the first time I'm trying this, so I would say hasn't worked in the past.

Finally: Can you set logging level to info and run again with the output and tell me if anything came out

Can you be more specific? Are you talking about this?

I just retried to run the command and I got no output.

I had previously tried Anki: Force Re-install, but I still got the same results, I'm going to try more today and see if I need to restart anki inbetween, or my computer?

Thanks so I can see what the problem is.
When you install the extension is it supposed to add a new note type called “VSCodeBasicWithHighlighting”, but I see it’s not there. This is why it can create a deck, but cards with a type that isn’t there won’t work.
I’m going to put more logging in the extension and put out a new version. I don’t know why this keeps happening, sadly I can’t reproduce it on my end

@benjamin-weller could you try version https://github.com/jasonwilliams/anki/releases/tag/v1.2.1 with logging switched on and paste everything you get here.
It may fix the problem but i would be interested to see the output anyway.
Thanks

Ok I checked and there's no VSCodeBasicWithHighlighting type even with reinstalling both add on and extension.
I'm now getting a new error from this new version:

Additionally can you be more clear what you mean by logging (info) is this one of the dropdowns in the log output window below?

Do I have to change something in my settings to get the info we need here?

In that dropdown you need to select “Anki for VSCode” you also need “anki.log” set to info in your settings

Same deal:

I just uninstalled and reinstalled the extension here's the info output I got:
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Anki Extension v1.2.1 activated",
  "time": "2021-08-20T12:51:03.277Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Anki is running, checking for note type..",
  "time": "2021-08-20T12:51:03.308Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Status of note type on Anki: false",
  "time": "2021-08-20T12:51:03.338Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Updating BasicWithHighlightVSCode in Anki",
  "time": "2021-08-20T12:51:03.338Z"
}

Thank you thats super useful, sorry you've become a beta tester in all of this.
So according to your logs, it looks as though it dropped off here:
https://github.com/jasonwilliams/anki/blob/701dd6c31a2d4f2c20187a06ae17e019b4eae34d/src/manageTemplate.ts#L23
The fact that it doesn't log anything after that it seems like it falls over somewhere around there.
My guess is https://github.com/jasonwilliams/anki/blob/701dd6c31a2d4f2c20187a06ae17e019b4eae34d/src/manageTemplate.ts#L24 is failing silently.
Do your commands work?
Can you set your log level to trace and run again?

This bit of software you wrote is awesome, I'm happy to help.
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Anki Extension v1.2.1 activated",
  "time": "2021-08-20T13:15:20.383Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"modelNames\",\"version\":6,\"params\":{}}",
  "time": "2021-08-20T13:15:20.384Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Anki is running, checking for note type..",
  "time": "2021-08-20T13:15:20.424Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"modelNames\",\"version\":6,\"params\":{}}",
  "time": "2021-08-20T13:15:20.425Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Status of note type on Anki: false",
  "time": "2021-08-20T13:15:20.462Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Updating BasicWithHighlightVSCode in Anki",
  "time": "2021-08-20T13:15:20.463Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"updateModelTemplates\",\"version\":6,\"params\":{\"model\":{\"name\":\"BasicWithHighlightVSCode\",\"templates\":{\"Card 1\":{\"Front\":\"<link rel=\\\"stylesheet\\\" href=\\\"_vscodeAnkiPlugin.css\\\" />{{Front}}\",\"Back\":\"{{FrontSide}}\\n\\n
\\n\\n{{Back}}\"}}}}}",
  "time": "2021-08-20T13:15:20.463Z"
}

And yeah I still get the error when trying to send to own deck:

Same with the send to deck command:

Sync anki is in a similar state:

That last log is the request being sent to Anki to create a new template. Everything after that stops so its crashing around there. It explains why the commands don't work because it doesn't get far enough to register them
https://github.com/jasonwilliams/anki/releases/tag/v1.2.2 adds more logging around the updating of the model templates

Here's what we get:
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Anki Extension v1.2.2 activated",
  "time": "2021-08-20T14:05:15.211Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"modelNames\",\"version\":6,\"params\":{}}",
  "time": "2021-08-20T14:05:15.213Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Anki is running, checking for note type..",
  "time": "2021-08-20T14:05:15.242Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"modelNames\",\"version\":6,\"params\":{}}",
  "time": "2021-08-20T14:05:15.242Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Status of note type on Anki: false",
  "time": "2021-08-20T14:05:15.254Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Updating BasicWithHighlightVSCode in Anki",
  "time": "2021-08-20T14:05:15.255Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"updateModelTemplates\",\"version\":6,\"params\":{\"model\":{\"name\":\"BasicWithHighlightVSCode\",\"templates\":{\"Card 1\":{\"Front\":\"<link rel=\\\"stylesheet\\\" href=\\\"_vscodeAnkiPlugin.css\\\" />{{Front}}\",\"Back\":\"{{FrontSide}}\\n\\n
\\n\\n{{Back}}\"}}}}}",
  "time": "2021-08-20T14:05:15.255Z"
}
{
  "label": "Anki for VSCode",
  "level": "error",
  "message": "updating the template has failed: Error: model was not found: BasicWithHighlightVSCode",
  "time": "2021-08-20T14:05:15.294Z"
}
{
  "label": "Anki for VSCode",
  "level": "error",
  "message": {},
  "time": "2021-08-20T14:05:15.294Z"
}
{
  "label": "Anki for VSCode",
  "level": "error",
  "message": "Updating BasicWithHighlightVSCode failed: false",
  "time": "2021-08-20T14:05:15.295Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Checking extension version against cache: Extension: 1.2.2, Cache: 1.2.0",
  "time": "2021-08-20T14:05:15.295Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "new version detected (1.2.2), setting up...",
  "time": "2021-08-20T14:05:15.299Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Running Setup",
  "time": "2021-08-20T14:05:15.300Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "Checking if BasicWithHighlightVSCode exists as a model in Anki",
  "time": "2021-08-20T14:05:15.302Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"modelNames\",\"version\":6,\"params\":{}}",
  "time": "2021-08-20T14:05:15.302Z"
}
{
  "label": "Anki for VSCode",
  "level": "info",
  "message": "BasicWithHighlightVSCode was not found in Anki. Will attempt to upload..",
  "time": "2021-08-20T14:05:15.329Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"createModel\",\"version\":6,\"params\":{\"modelName\":\"BasicWithHighlightVSCode\",\"inOrderFields\":[\"Front\",\"Back\"],\"css\":\".card{font-family:arial;font-size:20px;text-align:center;color:#000;background-color:#fff}pre{text-align:left}\",\"cardTemplates\":[{\"Name\":\"Card 1\",\"Front\":\"<link rel=\\\"stylesheet\\\" href=\\\"_vscodeAnkiPlugin.css\\\" />{{Front}}\",\"Back\":\"{{FrontSide}}\\n\\n
\\n\\n{{Back}}\"}]}}",
  "time": "2021-08-20T14:05:15.330Z"
}
{
  "label": "Anki for VSCode",
  "level": "trace",
  "message": "{\"action\":\"multi\",\"version\":6,\"params\":{\"actions\":[{\"action\":\"storeMediaFile\",\"params\":{\"filename\":\"_vscodeAnkiPlugin.css\",\"data\":\"[encoded data, 7016 characters]\"}}]}}",
  "time": "2021-08-20T14:05:15.371Z"
}

Looks like the import appears to work!?

Is it working now? Do you see the updateModelTemplates note type?

I don't see that exact note type, but I do have BasicWithHighlightVSCode.
I believe that it works, I'll close now, if there's no further issues on your end. Thank you for your help!

So I've found the issue and hopefully prevented it from happening again in future.
Before it would fail to install (mainly because Anki wasn't running), but mark itself as installed. So then future uses would cause the template to not be there. (What you was seeing).
v1.2.4 will now fail the installation if Anki is not running (or there is some other error), and it should try again on the next activation.
If you can confirm https://github.com/jasonwilliams/anki/releases/tag/v1.2.4 still works (after maybe removing the template also) that would be great and I can close this issue

@benjamin-weller are you still having issues?

No it works now (thanks for the reminder)


5C-ZipLocation

set IssuesContainerViewController as EditLocationViewControllerDelegate & implemented methods
dismiss VC on cancel
set zipcode in UserDefaults on validated zip code entry & post notification
set locationButton title
add notification observation in IssuesViewController and post fetch with zipcode

Do we care about 9-digit zip codes?

Eventually we will probably need to support the +4 on zip codes, I figured this was easier to get out the door for now.  Also, most people will likely use the GPS to locate them anyway, so they don't end up with a split district response.

👍


Compatibility check doesn't upgrade version number

After checking and upgrading the data file during the compatibility checkzthe version number of the application is not upgraded.

Resolved in 38413e9


Removed MissingSwitchDefault Checkstyle from TODO

Please check the discussion on: https://github.com/apache/fineract/pull/1006

Take this code for example:
https://github.com/apache/fineract/blob/2323450e71d1508e6ff218d48b856aefa04542d0/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryRunningBalanceUpdateServiceImpl.java#L243-L269
here, it wants us to add a default statement and from what I have understood from https://github.com/apache/fineract/pull/1006#issuecomment-641687223 by @ptuomola  that

If we are adding new value to the enum, error-prone directly asks us to cover that in the switch case.
If there is no common way to handle things there is no need for a default statement.

In other words, in all of these cases all the values that are covered by the enum are always included thanks to error-prone, and also we don't have any common way of handling things, that means we would end up adding an incorrect/blank default statement that brings no benefit.
would you agree on this? @vorburger  @ptuomola @percyashu ?

@thesmallstar that makes sense to me. Either we have a default case to cover all the cases not covered, or we require all cases to be covered explicitly. As far as I can see, they are mutually exclusive...

@vorburger would you be OK if we merge this?

No objection from @vorburger so far - I will merge this so that it makes the 1.4.0 release.
If there's any concern from anyone, we can easily add this back to the todos.

Yes I agree, that makes perfect sense; Thank You for the detailed explanation about this check.


dev branch?

[ ] This only affects the JavaScript OpenTelemetry library
[x] This may affect other libraries, but I would like to get opinions here first

As an end user I find myself confused about what features are available today as everything is being pushed to the master branch.

If we want to do something like this, I would propose that we do the following:

dev branch takes over the role that master currently takes - the default branch that all changes are made against
master branch is the latest release at all times
continue adding x.x.x tags

a merge to master from dev coincides with a tagged release, is that it?

As an end user I find myself confused about what features are available  today

I think it's clear with this https://github.com/open-telemetry/opentelemetry-js/releases

This will be heavily mitigated when we finally get gh-pages working. I'm not sure what is taking so long.

Is this still relevant?

I don't think it is!


Provide text description for tempLibrary

For issue #237
Changes
Description of change here.
Checklist

[ ] have tested my change
[ ] updated relevant documentation
[ ] Remove any/all console.logs I added
[ ] eslint is not complaining
[ ] have added myself to the contributors' list in the README
[x] for feature PRs: PR only includes one feature enhancement.

A simple and great change. Thank you @alanseiden!


Added support for Tamil language

Added support for Tamil language  As similar to Bengali language fix - PDFBOX-4189

As far as I know the PDFBox team does not monitor pull request. So I suggest you comment on the Jira issue or write to the mailing list to get their attention,

We will be working on multiple indian languages.  Post that I will put a single pull reqeuest


Standardized empty data approach

Summary
Standardizes the shape of empty data that's fed into the templates.
New behavior
A helper function has been introduced to ResourceGenerator.js which iterates through object properties and converts all undefined and empty string values to null.
Code changes

A cleanEmptyData() method has been added to ResourceGenerator.js.
Unit tests for this method have been added to resourceGenerator.test.js.
Manual empty data setting within each of the extractors has been removed, as they're no longer needed (unless the property in question is being formatted by a separate function such as formatDateTime().

Testing guidance
Ensure all tests pass, I also suggest manually setting a property to undefined or an empty string within one the formatData() method of one of the extractors, and then ensuring that the same property comes in to the corresponding template as a null value. Happy testing!

This looks really good! I like this approach! Besides Dylan's one comment, the only other thought I had was about using this approach in the template tests. I'm not entirely sure if this is an approach we want to take, but I wanted to throw it out there to see what you and others think. Do you think it makes sense to set up the "minimal" data objects we create with the empty string/null/undefined values and use the cleanEmptyData function on those objects? I do think that your tests for the cleanEmptyData function test out the functionality appropriately, so I don't really know that this is necessary at all.

Okay after thinking about my comment again and talking to @julianxcarter a bit about it, I don't think we'll need to actually use the cleanEmptyData function in the template tests. But maybe we should set up the data that we pass into the templates in the tests in a way that assumes it's gone through the cleanEmptyData function already. I think the majority of the template tests already do this, but I at least noticed that the care plan template just leaves off the non-required data in the minimal data objects. I think we'd maybe want to have all the non-required data have a null value now, right? Git blame seems to be blaming me on this one, so if it helps, I can help out with this.

I feel pretty good about this!


Request: An option to just set fonts, don't do anything with colours

Does it make sense to have an option to control on a fine-grained level which CSS features the plugin should be overriding?
For instance, I just use the plugin to set custom UI and editor fonts and don't really use the plugin for anything else. It would be nice if I was still able to use both the plugin while also using other themes.

Same. There's always that weird grey hue whenever I enable the plugin. I just want to change the font only.


Changing instance types in an existing node group causes an error

Changing instance types in an existing node group causes a full recreate which then fails because the node group already exists..
Needs some more investigation and unfortunately it's probably tied to the behaviour of the third-party EKS module we're using. Hopefully it's something they have fixed but maybe at least there's an issue in their github.

Fixed as part of https://github.com/commitdev/zero-aws-eks-stack/pull/206


Warning: File has unbalanced q/Q operators (too many q's)

Hi,
I'm using PDFKit to create a PDF with several pages then print using CUPS. It prints up to the last page, then gives the following message:
D [19/Nov/2015:16:01:47 +0000] [Job 95] Set job-printer-state-message to "Processing page 7...", current level=INFO
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** Warning: File has unbalanced q/Q operators (too many q's)
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** This file had errors that were repaired or ignored.
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** The file was produced by:
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** >>>> PDFKit <<<<
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** Please notify the author of the software that produced this
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** file that it does not conform to Adobe's published PDF
D [19/Nov/2015:16:01:47 +0000] [Job 95] **** specification.
Any ideas?

q corresponds to doc.save() and Q corresponds to doc.restore(). Make sure you're calling doc.restore() for every doc.save().

Thanks for your quick reply. I had the following:
....
doc.save();
doc.end();
....
Removing the doc.save(), solved my issues.


KAFKA-7192: Wipe out state store if EOS is turned on and checkpoint file does not exist

Unified backport of PRs #5421 and #5430
Also compare backport to 0.11.0 #5641
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Updated this. Also compare my comments on the discussion with Guozhang.

failure unrelated
retest this please

LGTM!


add corrosion_add_target_generated_headers function for code generators

This sets the GENERATED_HEADER_DIR environment variable when calling cargo and adds that path to the target's include paths. Cargo build scripts can read this to determine where to output generated C/C++ headers.
Depends on https://github.com/dtolnay/cxx/pull/1120 for cxx-build
Fixes https://github.com/corrosion-rs/corrosion/issues/204

Please note that corrosion_import_crate() despite its name does not import one crate, but potentially a whole workspace, consisting of multiple packages, each potentially with multiple crates.
Therefore, I think this should not be an option that affects all crates, but should instead be a target specific property.
Taking your proposal and putting it into a function:
function(corrosion_build_script_generates_bindings target_name)
        set(generated_header_dir "${CMAKE_CURRENT_BINARY_DIR}/${target_name}/generated-code")
        target_include_directories("${target_name}" INTERFACE "${generated_header_dir}")
        corrosion_set_env_vars("${target_name}" "GENERATED_HEADER_DIR=${generated_header_dir}")
endfunction()

That is indeed very simple, but it does put the onus on the build script to be compatible. I think the most important thing here would be documenting what the build script needs to do.

I was thinking users could do multiple corrosion_import_crate calls with/without the new option, but I think you're right that making a separate function for this would be better.

I've called the new function corrosion_add_target_generated_headers to fit in with the naming patterns of existing Corrosion functions.

So https://github.com/corrosion-rs/corrosion/pull/247 is still relevant.

Lets's please discuss this here in this PR and not the other one then to keep things on topic.
From my point of view Corrosion already provides everything you would need to support the build.rs approach. This PR is basically just a small helper function. Since the upstream PR has been denied, you would have to add some code that guesses the path of the generated header files. That is certainly possible, but relies on cxx internals and internals of the build script, so I'd rather not have that as part of corrosion, since it sounds very fragile. Is there something I'm missing?

Is there something I'm missing?

Yes, you're missing that CXX-Qt doesn't use cxx-build. CXX-Qt has its own cxx-qt-build crate (as well as cxx-qt proc_macro crate) which adds additional Qt-specific code generation on top of CXX. For CXX-Qt's purposes, the point of getting cxx-build to output generated headers to a location specified by an environment variable was to make it possible for Corrosion to handle both CXX and CXX-Qt with the same function. But alas, CXX upstream is refusing to cooperate, so here we are.
There are two additional ideas I have for this PR. If you're open to the idea, it would be convenient for CXX-Qt to pass the Qt::qmake target into this helper function so it could take care of setting the QMAKE environment variable. Otherwise the downstream user has to do this:
get_target_property(QMAKE Qt::qmake IMPORTED_LOCATION)
corrosion_set_env_vars("QMAKE=${QMAKE}")

This is required to ensure that cxx-qt-build finds the same installation of Qt that CMake is using (via qt_build_utils::QtBuild).
The other idea is to reach out to the cbindgen maintainers and get their thoughts on sharing an environment variable for the generated header directory so this helper function could also be used for cbindgen. I haven't reached out to them yet.

The other idea is to reach out to the cbindgen maintainers and get their thoughts on sharing an environment variable for the generated header directory so this helper function could also be used for cbindgen. I haven't reached out to them yet.

cbindgen already offers a write_to_file()  method which can be used in the build-script to write to a specific location. I think less magic is better, so I think the build script author should call this function instead of cbindgen magically behaving different if an environment variable is set.

There are two additional ideas I have for this PR. If you're open to the idea, it would be convenient for CXX-Qt to pass the Qt::qmake target into this helper function so it could take care of setting the QMAKE environment variable. Otherwise the downstream user has to do this:

As is the function proposed here is very generic and could also apply to cbindgen. Since the downstream user also has to write the build script (If I'm not mistaken), asking them to add these two lines doesn't seem too large of an inconvenience.

IMHO, this helper function is not worth it.
It is simple enough to call corrosion_set_env_vars and target_include_directories manually
Also, I think each build.rs should use its own different environment variable, (whose name should be prefixed by the project name), rather than coming up with a name for an env variable that can work with every generator/project.

Also, I think each build.rs should use its own different environment variable, (whose name should be prefixed by the project name), rather than coming up with a name for an env variable that can work with every generator/project.

If the crate name is included in the environment variable, that would remove the need for each project to come up with its own ad hoc solution.


chore(deps): update tonic to v0.9

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
This PR updates tonic to 0.9 and updates related-dependencies:

madsim-etcd-client to 0.3 (-> etcd-client 0.11 -> tonic 0.9)
madsim-tonic to 0.3 (-> tonic 0.9)
madsim-tonic-build to 0.3 (-> tonic-build 0.9)
tokio-stream to 0.1.14
arrow-* to 43 (icelake requires arrow <44)
google-cloud-pubsub to 0.17 close #11075
google-cloud-googleapis to 0.10 close #11077
console-subscriber to 0.1.10

There are still 2 crates depending on tonic 0.8:

opentelemetry-otlp
opentelemetry-proto

Checklist

[ ] I have written necessary rustdoc comments
[ ] I have added necessary unit tests and integration tests
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[x] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR contains user-facing changes.

https://github.com/icelake-io/icelake/blob/db3959a175dab7d4f14b649f004e7b98bfa66266/Cargo.toml#L19C1-L20C58
Not sure if icelake compatible with arrow-* 44?🥵 Can we update to 43 first?

https://github.com/icelake-io/icelake/blob/db3959a175dab7d4f14b649f004e7b98bfa66266/Cargo.toml#L19C1-L20C58
Not sure if icelake compatible with arrow-* 44?🥵 Can we update to 43 first?

Sure. I'm wondering why icelake requires arrow <44. 🥵

Sure. I'm wondering why icelake requires arrow <44. 🥵

I guess it just didn't update yet. I can update it now.

Not sure if icelake compatible with arrow-* 44?🥵 Can we update to 43 first?

Now it update. Both 43,44 can work.🥵

The changelog looks harmless, mainly API changes 🤔
https://github.com/hyperium/tonic/blob/master/CHANGELOG.md

But the error types might be worth looking at 🤔

ERROR:  QueryError: internal error: internal error: Error, message length too large: found 6716314 bytes, the limit is: 4194304 bytes

https://github.com/risingwavelabs/risingwave/issues/11094 I thought it's a random issue, but it seems not. It's https://github.com/hyperium/tonic/pull/1274 and

In gRPC specs, by default there is a limit for the length of messages(4MB). Actually, Tonic Codec doesn't set a limit which could cause security concerns. If an attacker decides to send us heavy messages, It'll be decoded and could fill all available RAM.

Is the message size of the java binding reasonable?

I think it's not expected to exceed 4M for the involved rpc.
But it seems that when inserting mock data, we use a single insert statement with multiple rows to generate 30k+ rows. Is this a potential cause?

https://github.com/risingwavelabs/risingwave/pull/11126

However, if users write SQL in the same way, they may get the same error.

I think bulk INSERT might be common. Maybe we should have a larger limit 🥵

https://risingwave-labs.slack.com/archives/C034U0NH5ND/p1689957442298949

@xxchan shall we increase the limit to get it merged first? icelake is blocking by this. 🥵

I unlimited the max message size for task service on compute nodes.


Update ants.jl

Fix the spelling of pheromone (from "pheremone") in many places
Fix miscellaneous spelling and grammar issues
Move the turn_around function to a section it belongs better in
Remove using InteractiveDynamics since it leads to WARNING: both InteractiveDynamics and Agents export "abmplot" followed by LoadError: UndefVarError: abmplot not defined when running the code
Add \ at the end of some lines where Markdown joins lines that seem intended to be separate (step-by-step descriptions, etc.)

Thanks. The whole examples library needs to be updated. But we will do this once Agents.jl v6+ is out.


Class name clash with 'browser' gem

The new dependency on random_user_agent gem has added a nasty classname clash with widely used browser gem. Both gems define a Browser class without any namespacing.
I am afraid I am not the only one who was hit by this - it seems to me the browser gem is widely used.

Yes, Seems like I need to included the 'random_user_agent' code in the gem with proper namespace, will fix it by tomorrow

Great, latest update fixes the problem. Thanks!


install:docker: build ARCH

export ARCH=$(uname -m) &&  ./install.sh $ARCH

works as a one liner

NACK, the script works on windows, but made a bunch of invalid containers, none of it works beyond that mkdocs container now

It did work correctly on Ubuntu dev box.


Error "Broken pipe" while scraping

Describe the bug
After scraping a profile, the error "Broken pipe" appears and subsequent profiles do not get scraped as the error gets thrown after every action. Files seem to be downloaded correctly, but something after the scraping fails and the script will not continue correctly.
This started 1-2 weeks ago. Weirdly, this is not reflected in the logs.
To Reproduce
Scrape any profile or run the scraper with "--username ALL" with multiple subscriptions.
Expected behavior
Normal processing of profiles.
Screenshots/Logs
Traceback (most recent call last):
File "/usr/local/lib/python3.11/logging/handlers.py", line 1496, in emit
self.enqueue(self.prepare(record))
File "/usr/local/lib/python3.11/logging/handlers.py", line 1454, in enqueue
self.queue.put_nowait(record)
File "", line 2, in put_nowait
File "/venv/lib/python3.11/site-packages/multiprocess/managers.py", line 821, in _callmethod
conn.send((self._id, methodname, args, kwds))
File "/venv/lib/python3.11/site-packages/multiprocess/connection.py", line 209, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "/venv/lib/python3.11/site-packages/multiprocess/connection.py", line 430, in _send_bytes
self._send(header + buf)
File "/venv/lib/python3.11/site-packages/multiprocess/connection.py", line 387, in _send
n = write(self._handle, buf)
^^^^^^^^^^^^^^^^^^^^^^^^
BrokenPipeError: [Errno 32] Broken pipe
Call stack:
File "/venv/bin/ofscraper", line 8, in
sys.exit(main())
File "/venv/lib/python3.11/site-packages/ofscraper/main.py", line 10, in main
load.main()
File "/venv/lib/python3.11/site-packages/ofscraper/runner/load.py", line 23, in main
run.main()
File "/venv/lib/python3.11/site-packages/ofscraper/runner/run.py", line 17, in main
main_helper()
File "/venv/lib/python3.11/site-packages/ofscraper/runner/run.py", line 47, in main_helper
picker.pick()
File "/venv/lib/python3.11/site-packages/ofscraper/commands/picker.py", line 20, in pick
scraper.main()
File "/venv/lib/python3.11/site-packages/ofscraper/commands/scraper.py", line 88, in main
scrapper()
File "/venv/lib/python3.11/site-packages/ofscraper/commands/scraper.py", line 123, in scrapper
process_selected_areas()
File "/venv/lib/python3.11/site-packages/ofscraper/commands/scraper.py", line 41, in process_selected_areas
run.run_helper(*functs)
File "/venv/lib/python3.11/site-packages/ofscraper/utils/run.py", line 109, in run_helper
job_func()
File "/venv/lib/python3.11/site-packages/ofscraper/utils/context/exit.py", line 85, in inner
func(*args, **kwargs)
File "/venv/lib/python3.11/site-packages/ofscraper/actions/process.py", line 71, in process_post
normal_post_process()
File "/venv/lib/python3.11/site-packages/ofscraper/utils/context/exit.py", line 85, in inner
func(*args, **kwargs)
File "/venv/lib/python3.11/site-packages/ofscraper/actions/process.py", line 164, in normal_post_process
combined_urls = OF.process_areas(ele, model_id)
File "/venv/lib/python3.11/site-packages/ofscraper/actions/scraper.py", line 476, in process_areas
profile_dicts = process_profile(username)
File "/venv/lib/python3.11/site-packages/ofscraper/utils/system/free.py", line 16, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.11/site-packages/ofscraper/actions/scraper.py", line 323, in process_profile
user_profile = profile.scrape_profile(username)
File "/venv/lib/python3.11/site-packages/ofscraper/api/profile.py", line 43, in scrape_profile
return scrape_profile_helper(c, username)
File "/venv/lib/python3.11/site-packages/ofscraper/api/profile.py", line 64, in scrape_profile_helper
log.info(
Hint: Please make sure that the log formatting is readable, use a paste site
like https://paste.passtheheadphones.me/
Desktop (please complete the following information):

OS: Docker / Unraid
Version 3.7.1
python

I'm running the latest stable version ofscraper 3.8.16 and facing the same issue, unfortunately:
you can find the terminal response here:
https://paste.passtheheadphones.me/?8f9cbff8bf891fce#2N3VnvKUuJ5q8kz1oFNvvBfUoaNXK7rYbhC9TCkWiq6q

does this still happen on 3.10dev

I upgraded to 3.10.2 and it still happens:
Traceback (most recent call last):
File "/venv/lib/python3.11/site-packages/ofscraper/utils/logs/stdout.py", line 37, in logger_process
messages = funct(timeout=constants.getattr("LOGGER_TIMEOUT"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 2, in get
File "/venv/lib/python3.11/site-packages/multiprocess/managers.py", line 821, in _callmethod
conn.send((self._id, methodname, args, kwds))
File "/venv/lib/python3.11/site-packages/multiprocess/connection.py", line 209, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "/venv/lib/python3.11/site-packages/multiprocess/connection.py", line 430, in _send_bytes
self._send(header + buf)
File "/venv/lib/python3.11/site-packages/multiprocess/connection.py", line 387, in _send
n = write(self._handle, buf)
^^^^^^^^^^^^^^^^^^^^^^^^
BrokenPipeError: [Errno 32] Broken pipe
Any idea why? Environment is still the same as mentioned above.

Are you using the official docker images?

Yes, just upgraded to 3.11 with this image:
datawhores/of-scraper:3.11
and the error persists, although now only seems to happen after downloading content from several models in succession.
Doesn't seem to happen when downloading from a single model. Maybe that helps with finding the error.

Problem seems to be solved with version 3.12.9, thanks for the awesome work ;)


Correct SP 2848, NAME detected as NA

FAIL: <IP_ADDRESS>.a - SPN 2848(ECU Name) was received as NOT AVAILABLE from Engine #1 (0)
SPN 2848 configured appropriately for Data Stream support.
Valid response received for SPN 2848 from Source Address 0(ECU)

Data forwarded to J1939-84 as pictures don’t paste well.

This issue should have been resolved with #1015 which was included in release 3.0.11. Can you re-test with the latest version and see if this issues remains?

J1939-84 Tool version 3.0.13 - 2021/09/19 10:53
Generated: 2022/04/11 17:22:10.5883
Log File Name: C:\referenceInfo\test\Eldebrink_2022_04_11\PVE-L1\pve-L1Try2.j1939-84
16:34:17.9578 DS Request for PGN 60928 to Engine #1 (0) for SPNs 2848
16:34:17.9606 18EA00F9 [3] 00 EE 00 (TX)
16:34:17.9733 18EEFF00 [8] 08 7C 64 05 00 00 00 00
Engine #1 (0) reported as: {
Industry Group: Global
Vehicle System: Non-specific System, System Instance: 0
Function: Engine, Functional Instance: 0, ECU Instance: 0
Manufactured by: International Truck and Engine Corporation - Vehicle Electronics, Identity Number: 293896
Is not arbitrary address capable.
}
16:36:13.2090 DS Request for PGN 60928 to Engine #1 (0) for SPNs 2848
16:36:13.2129 18EA00F9 [3] 00 EE 00 (TX)
16:36:13.2197 18EEFF00 [8] 08 7C 64 05 00 00 00 00
Engine #1 (0) reported as: {
Industry Group: Global
Vehicle System: Non-specific System, System Instance: 0
Function: Engine, Functional Instance: 0, ECU Instance: 0
Manufactured by: International Truck and Engine Corporation - Vehicle Electronics, Identity Number: 293896
Is not arbitrary address capable.
}

Failure not observed in 3.0.13

6.1.26 rewritten.


Send conversation state updates to Slack conversation thread

Problem
We don't send any notification to our Slack integration when a conversation is closed, prioritized, archived, etc.
This makes it hard to know the state of a conversation if you're only looking at it in Slack.
Solution
Let's send the following messages to the Slack conversation thread when necessary:

Conversation is closed: This conversation has been closed.
Conversation is reopened: This conversation has been reopened.
Conversation is archived: This conversation has been archived.
Conversation is deleted: This conversation has been deleted.
Conversation is marked a priority: This conversation has been prioritized.
Conversation is marked a non-priority: This conversation has been de-prioritized.

Note that the messages should be formatted in italics (or some other different styling) in the markdown sent to Slack in order to make it clear that it ISN'T a message from a user.
Additional context
Eventually we'll want to make it possible to close/reopen/prioritize/etc a conversation from Slack, but that's not within the scope of this ticket.
Testing
You'll need to set up our Slack integration in order to test this. But please also add some unit/integration tests as well if you can!
Questions, or need help getting started?
Feel free to ask below, or ping us on Slack :)
(You can also check out our CONTRIBUTING.md)

Mind if I take a stab at this?

Sure @jalford14! It might be slightly annoying because setting up Slack locally is kind of a pain, so let me know if you need any help :)
Here are the docs for Slack btw: https://github.com/papercups-io/papercups/wiki/Setting-up-Slack


[feature request] Support Dead Letter Topic

The C++ client has already implemented the dead letter topic since https://github.com/apache/pulsar-client-cpp/pull/139, which is included in the 3.2.0 release. We should support dead letter topic for Python client.

This is a duplicate of https://github.com/apache/pulsar-client-python/issues/98


INA226 internal register configuration, overriden by param?

https://github.com/PX4/Firmware/blob/c1936dab1fb511a34b5bb0c6b51abd537c96cc84/src/drivers/power_monitor/ina226/ina226.cpp#L70-L76
I had to debug very thoroughly until I realised that all my configuration written in the .h file, all along, was being overwritten by a parameter. Not sure if it's the best idea to have a parameter for internal register configuration? Maybe for debugging is ok, but for stable code?

At a minimum I would suggest breaking it apart into separate parameters for each piece of INA226_CONFIG that actually needs to be user configurable.
#define INA226_CONFIG (INA226_MODE_SHUNT_BUS_CONT | INA226_VSHCT_588US | INA226_VBUSCT_588US | INA226_AVERAGES_64)

At a minimum I would suggest breaking it apart into separate parameters for each piece of INA226_CONFIG that actually needs to be user configurable.
#define INA226_CONFIG (INA226_MODE_SHUNT_BUS_CONT | INA226_VSHCT_588US | INA226_VBUSCT_588US | INA226_AVERAGES_64)

Yeah, true as well. However, personally here I would just remove all params, it's not like people change a shunt resistor every week, and I think we are used to configuring this driver stuff in the header file. I didn't even think about params for these until I realised


skip consistent hash ttl test cases (#48501)

Cherrypicking the following commit : https://github.com/istio/istio/commit/db18352c179eafec8feb4f1943123df9b1f21062

Hi @riya16. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/ok-to-test

@riya16: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio_release-1.20
6967d2ccdfc4d668a923ac41586d8b967bc1f2f5
link
true
/test release-notes

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

/release-notes-none