[CI(private)] Reproduce CI failure

Recently we found we couldn't reproduce some CI failures. After worked with Synopsys AE, we found the root cause is probably due to tool version of Python, which causes some orders of generated codes are different.
There are 2 kinds of difference

parameter order in generated design, but this is probably not an issue as long as we use it by name rather than by position.

the order of creating register block in RAL package. This matters as UVM sets a base random number for the object while creating it.

I created a small example here. Swapping these 2 lines will see different result of the random variable.

    obj1 o1 = obj1::type_id::create("o1");
    obj2 o2 = obj2::type_id::create("o2");

Not sure how we can have an extra Python version or improve our Python coding style to avoid this issue? @imphil @rswarbrick @sriyerg any thoughts?
This is the version we use

$ python3 --version
Python 3.8.7

In case we may need to debug CI reproducing issue again. Here are something we can try.

Sync up the database to the extra same one as CI using. Below is the rationale and how to do (thanks @imphil for providing this)
all CI runs against an auto-generated merge commit, which
effectively is the PR merge into master. This "merge" branch gets
updated automatically by GitHub whenever you push to the PR branch, or
when you close/re-open the PR.
You can get it locally by doing the following (assuming "upstream" is
the name of your lowrisc/opentitan repository):

$ git fetch upstream pull/5741/merge:your_branch
$ git checkout your_branch
(If you would replace "merge" with "head" you'd get the pull request
branch itself.)

download the simulation artifacts from CI and diff the default/src directories, which contain all the source codes we use. Or use VCS compile option -Xrawtokens to generate an all-in-one file to compare with.

FYI
@tjaychen
@cindychip

wow good find Weicai.
It looks like the parameter port list at least is just the output of a
regular expression search.. and then the whole thing is plastered on the
wrapper file.
Does it make sense for us to parse this a bit and maybe sort them? That way
it'll always be the same.
I'm guessing the same thing could happen to ports as well?
On Wed, Mar 24, 2021 at 3:16 PM weicaiyang @.***> wrote:

Recently we found we couldn't reproduce some CI failures. After worked
with Synopsys AE, we found the root cause is probably due to tool version
of Python, which causes some orders of generated codes are different.
There are 2 kinds of difference

parameter order in generated design, but this is probably not an issue
as long as we use it by name rather than by position.
[image: Screen Shot 2021-03-24 at 2 45 03 PM]
https://user-images.githubusercontent.com/49293026/112388239-19ce1100-8cb0-11eb-9951-59c65d9b94fa.png
2.
the order of creating register block in RAL package. This matters as
UVM sets a base random number for the object while creating it.
[image: Screen Shot 2021-03-24 at 2 48 01 PM]
https://user-images.githubusercontent.com/49293026/112388250-1dfa2e80-8cb0-11eb-812f-d9e245983d84.png
I created a small example here https://www.edaplayground.com/x/3WmX.
Swapping these 2 lines will see different result of the random variable.
obj1 o1 = obj1::type_id::create("o1");
obj2 o2 = obj2::type_id::create("o2");

Not sure how we can have an extra Python version or improve our Python
coding style to avoid this issue? @imphil https://github.com/imphil
@rswarbrick https://github.com/rswarbrick @sriyerg
https://github.com/sriyerg any thoughts?
This is the version we use
$ python3 --version
Python 3.8.7

In case we may need to debug CI reproducing issue again. Here are
something we can try.

Sync up the database to the extra same one as CI using. Below is
the rationale and how to do (thanks @imphil https://github.com/imphil
for providing this)
all CI runs against an auto-generated merge commit, which
effectively is the PR merge into master. This "merge" branch gets
updated automatically by GitHub whenever you push to the PR branch, or
when you close/re-open the PR.
You can get it locally by doing the following (assuming "upstream" is
the name of your lowrisc/opentitan repository):

$ git fetch upstream pull/5741/merge:your_branch
$ git checkout your_branch
(If you would replace "merge" with "head" you'd get the pull request
branch itself.)

download the simulation artifacts from CI and diff the default/src
directories, which contain all the source codes we use. Or use VCS compile
option -Xrawtokens to generate an all-in-one file to compare with.

FYI
@tjaychen https://github.com/tjaychen
@cindychip https://github.com/cindychip
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lowRISC/opentitan/issues/5786, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAH2RSTROD6MV2Y7A5JHXY3TFJQC5ANCNFSM4ZYFMJCA
.

I'm a fan of explicitly sorting anything where the order matters. As you say, (1) shouldn't really matter. But (2) does!
The thing is, I looked at the code and it should get the ordering right (essentially because Python's dict has respected insertion order since version 3.6). So I tried to reproduce this using Vagrant.
I checked out the current tip of master (da490e7b1) and then ran mkdir OLD; util/topgen.py -t hw/top_earlgrey/data/top_earlgrey.hjson -r -o OLD from a Ubuntu 18.04 box (Python3 version 3.6.9). On my local machine (Debian unstable, Python3 version 3.9.2), I ran mkdir NEW; util/topgen.py -t hw/top_earlgrey/data/top_earlgrey.hjson -r -o NEW. There was no difference between the OLD and NEW directories.
I got the following md5sums:
vagrant@ubuntu1804:/vagrant/opentitan$ find OLD -type f | xargs md5sum
15e7c493cfa7db2e516012e3916f3243  OLD/ip/clkmgr/rtl/autogen/clkmgr.sv
f6ebdeafcea0bd40ba4dc6864fcf82ee  OLD/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
6bfd9420c8e63957f6ef9dc778e5b12d  OLD/ip/clkmgr/rtl/autogen/clkmgr_reg_pkg.sv
b31635f95b342a2e282d67a1cb812b77  OLD/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
a70899f3625877053b0b9e8c099ae383  OLD/ip/clkmgr/data/autogen/clkmgr.hjson
79420854bbe250b9db8728cfa3476289  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl.sv
16bcbd383259660479045aa5afc46341  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl_pkg.sv
56a170172ffc0e37e0ea6c721c9be768  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_pkg.sv
bf65f95dbd00fe4e63a3fc2108887b28  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_top.sv
c3f66d85b8cae1204edfbd2b36b7f2ce  OLD/ip/flash_ctrl/data/autogen/flash_ctrl.hjson
fbaf56b08f1903697f884c6a4c058b5a  OLD/ip/rv_plic/rtl/autogen/rv_plic_reg_pkg.sv
028b3a3c3f78cf724588d2b13ea420c3  OLD/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
4ba1f6f3dd18579fc157a8d92384b880  OLD/ip/rv_plic/rtl/autogen/rv_plic.sv
476dc58b1fa348b20de1daa5c0bac37c  OLD/ip/rv_plic/data/autogen/rv_plic.hjson
a6adbb653786d14ce65f1271ac81fdb7  OLD/ip/alert_handler/rtl/autogen/alert_handler_reg_pkg.sv
9e2b72cd212c06704be6e03cab48bd09  OLD/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
5b7757d0ed9bb3b7d366ba686a28a388  OLD/ip/alert_handler/data/autogen/alert_handler.hjson
a9539e6bbe6519a7f6514aa00fe6d331  OLD/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv
6aef9cf7def1dcd5cabc26c5897c444f  OLD/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
04ee52cc82a7f527152c9a5ba65ace31  OLD/ip/pinmux/data/autogen/pinmux.hjson
50e374713aa63fcd470e0e83c673c09e  OLD/ip/pwrmgr/rtl/autogen/pwrmgr_reg_pkg.sv
bdcabdc65f6dc182e4625b8905436c96  OLD/ip/pwrmgr/rtl/autogen/pwrmgr_reg_top.sv
9758fcbda66f1c724cb32c929940f81c  OLD/ip/pwrmgr/data/autogen/pwrmgr.hjson
cb1808a848dba009eb84d1ba1ada1fc9  OLD/ip/rstmgr/rtl/autogen/rstmgr.sv
af205b5d13c1a617a1cf228faf145edc  OLD/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
6479b76ecd0ddf15a913cd1e6c663968  OLD/ip/rstmgr/rtl/autogen/rstmgr_reg_pkg.sv
c9ae4fc03a898aed01ff33f2304f0b72  OLD/ip/rstmgr/rtl/autogen/rstmgr_reg_top.sv
a3c8d322b56871e48590e12096aa19c8  OLD/ip/rstmgr/data/autogen/rstmgr.hjson
933070bec287b0e1f872ca01b11dd60d  OLD/ip/ast/rtl/ast_reg_pkg.sv
e8f9d441260e991ab1e3c33cef1e84a9  OLD/ip/ast/rtl/ast_reg_top.sv
f11af9174891712b9787e185d3cd27db  OLD/ip/sensor_ctrl/rtl/sensor_ctrl_reg_pkg.sv
7d3bef51de4229e86c4e090aa5abdb22  OLD/ip/sensor_ctrl/rtl/sensor_ctrl_reg_top.sv
7834a249f0835d3a244ba86e9a8c3dd4  OLD/chip_ral_pkg.sv
a04441e39fe7f69fac2fd9427966691d  OLD/chip_ral_pkg.core

Do you get the same thing?

+1 for always keeping things sorted rather than rely on insertion order when generating RTL / DV sources.

@rswarbrick
I checked out the same master.

da490e7b1 N - (HEAD) [otbn] Document the idle_o signal (4 days ago)

But I got a different result for find OLD -type f | xargs md5sum
a2347c206084a019df7b0489d90abc5b  OLD/chip_ral_pkg.sv
e8f9d441260e991ab1e3c33cef1e84a9  OLD/ip/ast/rtl/ast_reg_top.sv
933070bec287b0e1f872ca01b11dd60d  OLD/ip/ast/rtl/ast_reg_pkg.sv
c9ae4fc03a898aed01ff33f2304f0b72  OLD/ip/rstmgr/rtl/autogen/rstmgr_reg_top.sv
cb1808a848dba009eb84d1ba1ada1fc9  OLD/ip/rstmgr/rtl/autogen/rstmgr.sv
6479b76ecd0ddf15a913cd1e6c663968  OLD/ip/rstmgr/rtl/autogen/rstmgr_reg_pkg.sv
af205b5d13c1a617a1cf228faf145edc  OLD/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
a3c8d322b56871e48590e12096aa19c8  OLD/ip/rstmgr/data/autogen/rstmgr.hjson
bdcabdc65f6dc182e4625b8905436c96  OLD/ip/pwrmgr/rtl/autogen/pwrmgr_reg_top.sv
50e374713aa63fcd470e0e83c673c09e  OLD/ip/pwrmgr/rtl/autogen/pwrmgr_reg_pkg.sv
9758fcbda66f1c724cb32c929940f81c  OLD/ip/pwrmgr/data/autogen/pwrmgr.hjson
15e7c493cfa7db2e516012e3916f3243  OLD/ip/clkmgr/rtl/autogen/clkmgr.sv
b31635f95b342a2e282d67a1cb812b77  OLD/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
f6ebdeafcea0bd40ba4dc6864fcf82ee  OLD/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
6bfd9420c8e63957f6ef9dc778e5b12d  OLD/ip/clkmgr/rtl/autogen/clkmgr_reg_pkg.sv
a70899f3625877053b0b9e8c099ae383  OLD/ip/clkmgr/data/autogen/clkmgr.hjson
79420854bbe250b9db8728cfa3476289  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl.sv
56a170172ffc0e37e0ea6c721c9be768  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_pkg.sv
16bcbd383259660479045aa5afc46341  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl_pkg.sv
bf65f95dbd00fe4e63a3fc2108887b28  OLD/ip/flash_ctrl/rtl/autogen/flash_ctrl_reg_top.sv
c3f66d85b8cae1204edfbd2b36b7f2ce  OLD/ip/flash_ctrl/data/autogen/flash_ctrl.hjson
6aef9cf7def1dcd5cabc26c5897c444f  OLD/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
a9539e6bbe6519a7f6514aa00fe6d331  OLD/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv
04ee52cc82a7f527152c9a5ba65ace31  OLD/ip/pinmux/data/autogen/pinmux.hjson
7d3bef51de4229e86c4e090aa5abdb22  OLD/ip/sensor_ctrl/rtl/sensor_ctrl_reg_top.sv
f11af9174891712b9787e185d3cd27db  OLD/ip/sensor_ctrl/rtl/sensor_ctrl_reg_pkg.sv
9e2b72cd212c06704be6e03cab48bd09  OLD/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
a6adbb653786d14ce65f1271ac81fdb7  OLD/ip/alert_handler/rtl/autogen/alert_handler_reg_pkg.sv
5b7757d0ed9bb3b7d366ba686a28a388  OLD/ip/alert_handler/data/autogen/alert_handler.hjson
4ba1f6f3dd18579fc157a8d92384b880  OLD/ip/rv_plic/rtl/autogen/rv_plic.sv
fbaf56b08f1903697f884c6a4c058b5a  OLD/ip/rv_plic/rtl/autogen/rv_plic_reg_pkg.sv
028b3a3c3f78cf724588d2b13ea420c3  OLD/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
476dc58b1fa348b20de1daa5c0bac37c  OLD/ip/rv_plic/data/autogen/rv_plic.hjson
a04441e39fe7f69fac2fd9427966691d  OLD/chip_ral_pkg.core

My local machine is Debian and python version is as below

Python 3.8.7

Maybe we should use OrderDict to avoid this problem?

I don't think that using OrderedDict will make any difference to this if you are using Python >= 3.6. As Sri said above, the "big guns" solution is just to sort alphabetically when we emit things. However, I think we should probably figure out what's going on here.
Given that this doesn't seem to be caused by Python versions in exactly the way you suggested, I think you're going to have to do some debugging to figure out what's going on, I'm afraid. Maybe stick some print statements into topgen.py to show what order it's loading ip_objs? My best guess is that it's the returned order from search_ips since https://docs.python.org/3/library/pathlib.html#pathlib.Path.glob doesn't document an ordering on the returned results.

I tried this print
def search_ips(ip_path):  # return list of config files
    # list the every Hjson file
    p = ip_path.glob('*/data/*.hjson')

    # filter only ip_name/data/ip_name{_reg|''}.hjson
    ips = [x for x in p if is_ipcfg(x)]
    print("Filtered-in IP files: %s" % repr(ips))

I gave me this. Don't know how they order it.

Filtered-in IP files: [PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/adc_ctrl/data/adc_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/aon_timer/data/aon_timer.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/rstmgr/data/rstmgr.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/sram_ctrl/data/sram_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/spi_host/data/spi_host.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/otbn/data/otbn.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/usbdev/data/usbdev.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/pwrmgr/data/pwrmgr.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/clkmgr/data/clkmgr.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/i2c/data/i2c.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/nmi_gen/data/nmi_gen.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/edn/data/edn.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/pwm/data/pwm.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/flash_ctrl/data/flash_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/csrng/data/csrng.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/sysrst_ctrl/data/sysrst_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/trial1/data/trial1.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/uart/data/uart.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/otp_ctrl/data/otp_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/hmac/data/hmac.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/entropy_src/data/entropy_src.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/spi_device/data/spi_device.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/rv_timer/data/rv_timer.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/rom_ctrl/data/rom_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/kmac/data/kmac.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/pattgen/data/pattgen.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/pinmux/data/pinmux.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/gpio/data/gpio.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/lc_ctrl/data/lc_ctrl.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/keymgr/data/keymgr.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/alert_handler/data/alert_handler.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/rv_plic/data/rv_plic.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/aes/data/aes.hjson'), PosixPath('/usr/local/google/home/weicai/ot/uart/hw/ip/usbuart/data/usbuart.hjson')]

I looked at the top.py.  Here is how we add item to the blocks.
        for base_addr, item in sorted(merged, key=lambda pr: pr[0]):
            ...
            reg_block = block.reg_blocks[if_name]

And it generates the block in this order. Let's sync up offline to check where we have a different result. Thanks

import uvm_pkg::;
import dv_base_reg_pkg::;
import adc_ctrl_ral_pkg::;
import sram_ctrl_ral_pkg::;
import spi_host_ral_pkg::;
import otbn_ral_pkg::;
import usbdev_ral_pkg::;
import i2c_ral_pkg::;
import edn_ral_pkg::;
import csrng_ral_pkg::;
import uart_ral_pkg::;
import otp_ctrl_ral_pkg::;
import hmac_ral_pkg::;
import entropy_src_ral_pkg::;
import spi_device_ral_pkg::;
import rv_timer_ral_pkg::;
import rom_ctrl_regs_ral_pkg::;
import rom_ctrl_rom_ral_pkg::;
import kmac_ral_pkg::;
import pattgen_ral_pkg::;
import gpio_ral_pkg::;
import lc_ctrl_ral_pkg::;
import keymgr_ral_pkg::;
import aes_ral_pkg::;
import alert_handler_ral_pkg::;
import pwrmgr_ral_pkg::;
import rstmgr_ral_pkg::;
import clkmgr_ral_pkg::;
import pinmux_ral_pkg::;
import aon_timer_ral_pkg::;
import flash_ctrl_ral_pkg::;
import rv_plic_ral_pkg::;
import ast_ral_pkg::;
import sensor_ctrl_ral_pkg::;

Ah, right, so that's the problem: there's no well-defined ordering from the glob expression. I don't think you're looking at the right place in top.py (that's sorting things by base address, so won't depend on the input order). Thank you very much for looking into things.
I'll push up a commit in a minute that adds a canonical order.

@rswarbrick thanks for fixing this.
But we may need to add sorted for creating reg and field as well. These orders also matter in term of randomization. maybe we should always use for ... in sorted(...) in tpl file, especially for RAL. WDYT?

if we sort the original creation of the list of modules ..would that
property hold throughout..?
On Wed, Mar 31, 2021 at 5:20 PM weicaiyang @.***> wrote:

@rswarbrick https://github.com/rswarbrick thanks for fixing this.
But we may need to add sorted for creating reg and field as well. These
orders also matter in term of randomization. maybe we should always use for
... in sorted(...) in tpl file, especially for RAL. WDYT?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/lowRISC/opentitan/issues/5786#issuecomment-811550436,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAH2RSVLMOKUUWBKJIDD26LTGO34FANCNFSM4ZYFMJCA
.

Yes, that should be sorted already (as I said in my previous comment).


Numeric Comparison filters

Description
Adds support for numeric comparison filters to ecs-service-logs, e.g.,
ecs-service-logs show -s app -e staging url=* url!=/health* "headers>12" | jq .

Reviewer Notes
Is there anything you would like reviewers to give additional scrutiny?
Setup
make build_tools

Code Review Verification Steps

[ ] Code follows the guidelines for Logging
[ ] The requirements listed in
Querying the Database Safely
have been satisfied.
Any new migrations/schema changes:

[ ] Follow our guidelines for zero-downtime deploys (see Zero-Downtime Deploys)
[ ] Have been communicated to #dp3-engineering
[ ] Secure migrations have been tested using scripts/run-prod-migrations

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] User facing changes have been reviewed by design.
[ ] Request review from a member of a different team.
[ ] Have the Pivotal acceptance criteria been met for this change?

References
None
Screenshots
N.A.

Yeah, in a new PR, but will need to make changes in a few places to properly do that.


pin2.6.4 w. Python 3.7 fails to import

Dear pinocchio team,
since today (last time it worked as expected was 2 days ago, so not sure when exactly), using pin2.6.4 with Python 3.7 fails for me. Checked it again in a docker container, seems to be related to a problem with libeigenpy. Here's a dockerfile to reproduce:
FROM python:3.7

RUN pip install --no-cache-dir pin==2.6.4

CMD [ "python", "-c", "from pinocchio import *" ]

raises:
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.7/site-packages/pinocchio/__init__.py", line 6, in <module>
    from .pinocchio_pywrap import *
ImportError: libeigenpy.so: cannot open shared object file: No such file or directory

It's not a random configuration insofar as pin 2.6.4 is the latest one that is accessible on pypi for Python 3.7 - as long as Python >=3.7  is listed as the py-version requirement on PyPI, I think it is appropriate that a pip install <package> would work on the specified version.
(Dockerfile above fails without the version specification as well)
Running in a Python 3.7 environment:
pip install 'pin>2.6.4'
Looking in indexes: https://pypi.org/simple, https://packagecloud.io/github/git-lfs/pypi/simple
ERROR: Could not find a version that satisfies the requirement pin>2.6.4 (from versions: 2.6.0, 2.6.1, 2.6.3, 2.6.4)
ERROR: No matching distribution found for pin>2.6.4

Ok, thanks for the notice, I don't see why we don't have a newer version of pin for python 3.7. I'll check this.

@JonathanKuelz Why to not use conda?

because conda wouldn't allow timor to be distributed on PyPI I guess :)

What is it?

It is @JonathanKuelz 's project: https://pypi.org/project/timor-python/

@nim65s exactly, :) Builds on pinocchio, and so do other tools we build or use internally - as some of them do not have other conda dependencies, it would be unfortunate if we had to either give up PyPI distributions or move to another library than pinocchio if we want to support Python 3.7

Yes, so it turns out support for Python 3.7 was just forgotten at some point in cmake-wheel. I'm adding it back and re-uploading the packages. It is going to take some hours I guess.

Great! On that occasion, thanks a lot for the open source tools (pin, hppfcl, ...) and the great support you are offering for all of them!

I will close this issue as it seems to be solved, it is just needed to wait a bit.
@JonathanKuelz Feel free to reopen it if needed.


feat(#2587): Add data zoom option

Purpose

Allow better zooming in time series charts.

Remarks

PR introduces (a) breaking change(s): no
PR introduces (a) deprecation(s): no

Hi @dominikriemer,
why is the configuration in the appearance tab?
Is this option also available for other widgets?

@tenthe I put this into the appearance tab so that settings which don't affect the visualization itself can be found here.
E.g., things like:

Tooltips
Legends
Data Zoom controls
Toolbox
probably also axis label settings (but not axis scaling, which changes the actual visualization)

Does it make sense?
Currently, the data zoom is only available in the time series chart, but the configuration is handled by its own component so it shouldn't be hard to add it to other charts as well


Missing symbol occurrences when enabling synthetics

There are missing symbol occurrences when I use an custom sbt plugin to generate semanticdb  (the code is based on @olafurpg code - just minor changes from my side). When using metac all is good. Happens with both 4.0.0-M8 and M9.
For example, the semanticdb for the following file (a simplified version of commons.scala where I hit the problem first):
import java.io.File

sealed trait T1 extends Ordered[T1] {
  def file: File
  def text: String
  def from: Int
  def to: Int

  import scala.math.Ordered.orderingToOrdered

  def compare(that: T1): Int =
    (file, from, this.to, this.text)
      .compare((that.file, that.from, that.to, that.text))
}

will be missing all symbol occurrences from the line 11 (0-based numbering) (file, from, this.to, this.text):
Occurrences:
[0:7..0:11): java => java/
[0:12..0:14): io => java/io/
[0:15..0:19): File => java/io/File#
[2:13..2:15): T1 <= _empty_/T1#
[2:24..2:31): Ordered => scala/package.Ordered#
[2:32..2:34): T1 => _empty_/T1#
[3:6..3:10): file <= _empty_/T1#file().
[3:12..3:16): File => java/io/File#
[4:6..4:10): text <= _empty_/T1#text().
[4:12..4:18): String => scala/Predef.String#
[5:6..5:10): from <= _empty_/T1#from().
[5:12..5:15): Int => scala/Int#
[6:6..6:8): to <= _empty_/T1#to().
[6:10..6:13): Int => scala/Int#
[8:9..8:14): scala => scala/
[8:15..8:19): math => scala/math/
[8:20..8:27): Ordered => scala/math/Ordered.
[8:28..8:45): orderingToOrdered => scala/math/Ordered.orderingToOrdered().
[10:6..10:13): compare <= _empty_/T1#compare().
[10:14..10:18): that <= _empty_/T1#compare().(that)
[10:20..10:22): T1 => _empty_/T1#
[10:25..10:28): Int => scala/Int#
[12:7..12:14): compare => scala/math/Ordered#compare().
[12:16..12:20): that => _empty_/T1#compare().(that)
[12:21..12:25): file => _empty_/T1#file().
[12:27..12:31): that => _empty_/T1#compare().(that)
[12:32..12:36): from => _empty_/T1#from().
[12:38..12:42): that => _empty_/T1#compare().(that)
[12:43..12:45): to => _empty_/T1#to().
[12:47..12:51): that => _empty_/T1#compare().(that)
[12:52..12:56): text => _empty_/T1#text().

The plugin is here.
It updates project scala version for the one supported by scalameta and then adds a semanticdb command:
commands += Command.command("semanticdb") { s =>
      println(">> SEMANTICDB OPTIONS: "+SemanticdbScalacOptions)
      val extracted = Project.extract(s)
      val toCompile = List.newBuilder[TaskKey[Analysis]]
      val refs = List.newBuilder[ProjectRef]
      val settings: Seq[Setting[_]] = for {
        (p, fullVersion) <- relevantProjects(s)
        setting <- List(
          scalaVersion.in(p) := fullVersion,
          scalacOptions.in(p) ++= Seq(
            "-Yrangepos",
            "-P:semanticdb:text:on",
            "-P:semanticdb:symbols:all",
            "-P:semanticdb:synthetics:on",
            "-P:semanticdb:diagnostics:off",
            "-P:semanticdb:failures:warning"
           ),
          libraryDependencies.in(p) += compilerPlugin(
            "org.scalameta" % "semanticdb-scalac" % ScalametaVersion cross CrossVersion.full)
        )
      } yield setting
      val installed = extracted.append(settings, s)
      "compileAll" ::
        installed
    }

It turned out that it has nothing to do with running it from sbt. The problem is enabling semanticdb (-P:semanticdb:synthetics:on). The attached archive contains a sample sbt project that shows the reproduces the problem.
bug1749.tar.gz

Thanks for tracking this down @fikovnik! Would you be tempted to submit a PR?
First step would be to create a file in semanticdb/integration that reproduces the problem, run save-expect in the sbt shell to save the bug and write a commit message. Next, implement the fix and re-run save-expect to see that it fixes the bug and doesn't introduce regressions.

Sure, I think I see where the problem is:
In TextDocumentOps:463 there is isVisited += gview and perhaps should be isVisited += gview.fun because by marking the whole g.Apply, the tryFindMtree won't see the args. I'll look dig into it tomorrow.

Sounds plausible @fikovnik !


Sign In button still showing after Signing In

Describe the bug
After a user has logged through a pop up, the sign-in button is still displayed as the application is fetching user data.
To Reproduce
Steps to reproduce the behavior:

Click on Sign In
Sign In through the pop up
See that it takes a while before signed in user information is displayed.

Expected behavior
I expected that a spinner or something that indicates there a network request in progress to be shown.
Screenshots
N/A
Desktop (please complete the following information):

OS: [Windows]
Browser [Chrome]
Version [78.0.3904.70]

Additional context
N/A

The solution to this is adding a spinner


Bump snapshot default request timeout value

In order to accomodate changes made on the agent (related to https://github.com/portainer/portainer/issues/2949), the default timeout value for snapshot requests should be updated accordingly to the value set in the agent.

Agent timeout bumped to 60s
See https://github.com/portainer/agent/issues/58


Sending an empty file hangs

When sending an empty file using the CLI or the client library, the transfer hangs after the transfer has started.

Solved with downstreaming.


Question on FastText baseline in the experiment

Hello! I have a question about the detail of FastText baseline in the Table 2 ~ 4.
For this baseline, as handling OOV words, we have two choices:

Representing OOV words using null vectors
Computing vectors for OOV words by summing the n-gram vectors.

In the context of Bojanowski et al. (2017)[1], the first option corresponds to the "sisg-" setting, while the second aligns with the "sisg" setting.
Could you please specify which option was utilized in your experiments?
My conjecture leans towards the option 1) because the option 2) doesn't seem to follow a mimick-like model.
Nonetheless, I would greatly appreciate your guidance on this matter.
Thank you in advance for your help!
[1] Bojanowski et al., Enriching Word Vectors with Subword Information, TACL 2017.

Thanks for assistance. It is really helpful.


[SPARK-27157][DOCS] Add Executor level metrics to monitoring docs

What changes were proposed in this pull request?
A sub-task of SPARK-23206
Add Executor level metrics to monitoring docs
How was this patch tested?
jekyll

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

This is probably OK, but are these metrics things that Spark generates or that are generated automatically by Ganglia et al? that is, do we need to document them or point at existing external docs?

Test build #4620 has started for PR 24090 at commit 4049689.

Test build #4620 has finished for PR 24090 at commit 4049689.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

This looks to me a useful addition to the monitoring documentation.
An additional comment is that ProcessTree executor metrics are collected only under certain conditions. I was thinking that maybe this fact can be documented in this PR?
As far as I can see the conditions are the logical AND of the folloving: /proc filesystem exists, spark.eventLog.logStageExecutorProcessTreeMetrics.enabled=true, spark.eventLog.logStageExecutorMetrics.enabled=true

This is probably OK, but are these metrics things that Spark generates or that are generated automatically by Ganglia et al? that is, do we need to document them or point at existing external docs?

@srowen They are generated by Spark, see ExecutorMetricType

Thank you @LucaCanali, I've added this metrics collection condition.

Test build #4630 has started for PR 24090 at commit 4779f7f.

Test build #4630 has finished for PR 24090 at commit 4779f7f.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.


Update ahash package as current version was yanked

This solves nightly failures that check crate dependencies: https://github.com/parallaxsecond/parsec/actions/runs/8012744522/job/21888607772

Already tackled at https://github.com/parallaxsecond/parsec/pull/748


Integrating logging with password store

Problem:
sensitive data in logging store in crd now
Solution:
integrate with password store
Issue:
https://github.com/rancher/rancher/issues/19053
Depending pr:
https://github.com/rancher/rancher/pull/19983

LGTM

LGTM


Feat  add rpc calls

I have implemented RPC contract reads into the site using the Viem Ethereum library. There are 2 features currently working.
1. Verifying Contract Addresses
All the V3 contract addresses shown on the V3 addresses page are now pulled directly from the registry smart contracts.
There is a single constants file with ENS names and fallback addresses where addresses should be kept updated.
On initial page load:

Protocol Address Provider and Role Manager are resolved from their ENS names and checked against the constants file.
Protocol Periphery Addresses are queried from the Protocol Address Provider that was just resolved. They are checked against the constants file and their ENS names (if they have them).
Release Registry Addresses are queried from the Release Registry that is retrieved from the Protocol Address Provider. They are checked against the constants file and their ENS names (if they have them).
The most recent Vault Original is queried from the Vault Factory that was just pulled from the Release Registry. It is checked against the constants file.
Yearn Specific Contract addresses are pulled from the RoleManager. They are checked against the constants file and their ENS names (if they have them).

These contracts are then served as context to the app, and consumed by a <ContractAddress> component that presents a link with the Address as the text and the hyperlink to the etherscan page. It takes the following argument:

contractName which reads from the data object served by the context provider.

The component is used like this:
<ContractAddress contractName = 'topLevel.v3ProtocolAddressProvider' />

The shape of the data object is:
type ContractAddresses = {
  topLevel: TopLevelAddresses
  protocolPeriphery: ProtocolPeripheryAddresses
  releaseRegistry: ReleaseRegistryAddresses
  yearnV3: YearnAddresses
}

type TopLevelAddresses = {
  v3ProtocolAddressProvider: `0x${string}`
  v3RoleManager: `0x${string}`
}

type ProtocolPeripheryAddresses = {
  router: `0x${string}`
  aprOracle: `0x${string}`
  releaseRegistry: `0x${string}`
  commonReportTrigger: `0x${string}`
  roleManagerFactory: `0x${string}`
}

type ReleaseRegistryAddresses = {
  latestRelease: string
  latestTokenizedStrategy: `0x${string}`
  latestFactory: `0x${string}`
  vaultOriginal?: `0x${string}`
}

type YearnAddresses = {
  yearnBrain: `0x${string}`
  yearnDaddy: `0x${string}`
  yearnAccountant: `0x${string}`
  yearnDebtAllocator: `0x${string}`
  yearnRegistry: `0x${string}`
}

2. Make arbitrary contract call reads in docs
You can make RPC calls to read contract data from on-chain sources from within the docs.  You can add the information for all the read calls you want within the front-matter of a markdown document. Front-matter is metadata that docusaurus reads when serving pages.
To make a blockchain call you need to structure your data in the following format at the top of the markdown file:
---
rpcCalls:

  - name: 'dYFI Redemption' <-- descriptive name of contract to be called for use in component
    chain: '1' <--chainID
    address: '0x7dC3A74F0684fc026f9163C6D5c3C99fda2cf60a' <--the contract address
    abiName: 'dyfiRedemptionABI' <--name of exported ABI object from src/ethereum/ABIs
    methods:
      - 'discount' <-- name of call (if no arguments needed)
      - 'get_latest_price'
      - name: 'eth_required' <-- name of call (if arguments are needed)
        args: ['1000000000000000000'] <--comma separated arguments of call as an array (square brackets)

  - name: 'YFI token'
    chain: '1'
    address: '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e'
    abiName: 'yfiTokenABI'
    methods:
      - totalSupply
      - symbol
---

Each element in rpcCalls creates an object that is exported from the front-matter.
Each object can contain calls to different functions in the same contract if you add them into the methods field.

If the method doesn't require args (the function doesn't require any input) then you only need to list the name. This is the name you see on etherscan, without the number.
If the method does require an argument then you need to add it with a name parameter and an args parameter, with the values for the arguments separated by commas and in square brackets.

When adding a new contract to call, you need to add the ABI to "src/ethereum/ABIs". Create a new typescript file with the name of your ABI. The convention is to name it in camelCase and end it with ABI (i.e. yfiTokenABI.ts). Then paste the ABI into the file (you can copy it from etherscan. It is in the contract->code section.). You need to export it and add as const at the end.
// src/ethereum/ABIs/yourContractABI.ts
export const yourContractABI = [
    {
    // abi data here
    }
] as const

You then need to export this element from the index.ts file in the same directory. Add a line exporting your ABI as shown below.
export * from './yourContractABI'

To display the data from the calls, use the <ContractData> component. It takes the following arguments:

contractName which reads the name field in the rpcCall defined in the front-matter
methodName which reads from the methods in the rpcCall defined in the front-matter
decimals which is an optional argument to format your output to display with human readable decimals. It should be wrapped in curly brackets {}.

The current redemption discount is: <ContractData contractName='dYFI Redemption' methodName='discount' decimals={18} />

We need to add an RPC key to the repo secrets for this to work


Background geolocation is not working in redmi 8.1 android mobile when app is in background

Your Environment

Plugin version: ionic 4
Platform:  Android
OS version: 8.1
Device manufacturer and model: redmi

Running in Simulator:
Cordova version (cordova -v):
Cordova platform version (cordova platform ls):
Plugin configuration options:
Link to your project:

Context

Expected Behavior

I want to get user location even when the app is in background.
Actual Behavior

It is working in android mobile which has a version 8.0 or less than that.  In 8.0 , I can get the user location in the foreground as well as in background and update it to the server. In 8.1 background tracking notification is shown, but I can't get the location.
Possible Fix

Steps to Reproduce

Context

let config: BackgroundGeolocationConfig = {
desiredAccuracy: 10,
stationaryRadius: 0,
distanceFilter: 0,
notificationTitle: 'Background Tracking',
notificationText: 'Enabled',
debug: false,
interval: 10000,
stopOnTerminate: false,
url: 'http://<IP_ADDRESS>:3000/location',,
httpHeaders: {
'Content-Type': 'application/json'
},
postTemplate: {
lat: '@latitude',
lng: '@longitude',
time: '@time',
},
}
this.backgroundGeolocation.configure(config).then((location: BackgroundGeolocationResponse) => {
     this.backgroundGeolocation.on(BackgroundGeolocationEvents.location).subscribe((location: BackgroundGeolocationResponse) => {
    console.log(location);

this.locationUpdate("Background");
this.zone.run(() => {
this.lat = location.latitude;
this.lng = location.longitude;
this.time = location.time;
});
    // IMPORTANT:  You must execute the finish method here to inform the native plugin that you're finished,
    // and the background-task may be completed.  You must do this regardless if your operations are successful or not.
  // IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.
  this.backgroundGeolocation.finish(); // FOR IOS ONLY
});

}, (err) => {
console.log("configure err"+err);
});
Debug logs

Your Environment

Plugin version: ionic 4

Platform:  Android

OS version: 8.1

Device manufacturer and model: redmi

Running in Simulator:

Cordova version (cordova -v):

Cordova platform version (cordova platform ls):

Plugin configuration options:

Link to your project:

Context
Expected Behavior
I want to get user location even when the app is in background.
Actual Behavior
It is working in android mobile which has a version 8.0 or less than that. In 8.0 , I can get the user location in the foreground as well as in background and update it to the server. In 8.1 background tracking notification is shown, but I can't get the location.
Possible Fix
Steps to Reproduce
Context
let config: BackgroundGeolocationConfig = {
desiredAccuracy: 10,
stationaryRadius: 0,
distanceFilter: 0,
notificationTitle: 'Background Tracking',
notificationText: 'Enabled',
debug: false,
interval: 10000,
stopOnTerminate: false,
url: 'http://<IP_ADDRESS>:3000/location',,
httpHeaders: {
'Content-Type': 'application/json'
},
postTemplate: {
lat: '@latitude',
lng: '@longitude',
time: '@time',
},
}
this.backgroundGeolocation.configure(config).then((location: BackgroundGeolocationResponse) => {
     this.backgroundGeolocation.on(BackgroundGeolocationEvents.location).subscribe((location: BackgroundGeolocationResponse) => {
    console.log(location);

this.locationUpdate("Background");
this.zone.run(() => {
this.lat = location.latitude;
this.lng = location.longitude;
this.time = location.time;
});
    // IMPORTANT:  You must execute the finish method here to inform the native plugin that you're finished,
    // and the background-task may be completed.  You must do this regardless if your operations are successful or not.
  // IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.
  this.backgroundGeolocation.finish(); // FOR IOS ONLY
});

}, (err) => {
console.log("configure err"+err);
});
Debug logs

Hi SathyaNagaraj,
I am also used this plugin. For every 3 seconds background API calling working fine. But, getting empty location array response for every api calling in background mode. Please help me with this issue.

In Android 9.0, adding line
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
to AndroidManifest.xml solve my issue with background tracking.
Hope this helps with Android 8.1 too


New main

Could you check if you can still run the backend in this new directory structure? I wanted to make room for the front end by putting the flask server in a folder. The React files will go into the web directory next to the server directory.

Also, make sure that .gitignore is in the root folder of the project.


Update claimsschema.md

update the duration description example reference.

typo correction of seconds value.

@kengaderdus
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team


Stop hardcoding default branch name in the workflow

Oh well.
The workflow is not valid. .github/workflows/ci.yml (Line: 6, Col: 9): Unrecognized named-value: 'github'. Located at position 1 within expression: github.event.repository.default_branch


Upgrade the minimun support iOS version and hide privacy data in Logger

Temporary solution to FirebaseLogger

FYI, spm / spm-package-resolved should now be fixed on main after #24's merging.


Could not connect with Airco

Hi there, very new HA user here, trying to integrate my Mitsubishi A/C (controlled via Wi-Fi Control app) into HA. Got HACS working and download this repo, when trying to add integration I get following error message
Could not connect with the Airco: HTTPConnectionPool(host='<IP_ADDRESS>', port=51443): Max retries exceeded with url: /beaver/command/getDeviceInfo (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f8a976150>, 'Connection to <IP_ADDRESS> timed out. (connect timeout=30)'))
Please help this would be a fantastic addition to my HA, as these AC cant be controlled via sensibo

I am having the same issue here, but i am not able to find a sllution...

I think the "Wi-Fi Control" is for controlling Mitsubishi Electric air conditioning devices.
This integration is only for Mitsubishi Heavy Industries equipment, completely separate companies confusingly.

Yeah indeed, I think it is a different communication protocol the Wifi app uses.
This integration works with the WF-RAC wifi module that work with the "Smart M-Air" app.


use iterative/py-template to update

Codecov Report
Base: 84.23% // Head: 83.17% // Decreases project coverage by -1.05% :warning:

Coverage data is based on head (5b42d6a) compared to base (18b9f2e).
Patch has no changes to coverable lines.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #132      +/-   ##
==========================================
- Coverage   84.23%   83.17%   -1.06%
==========================================
  Files          23       23
  Lines        3222     3222
  Branches      583      374     -209
==========================================
- Hits         2714     2680      -34
- Misses        432      454      +22
- Partials       76       88      +12

Impacted Files
Coverage Δ

src/scmrepo/utils.py
67.74% <0.00%> (-19.36%)
:arrow_down:

tests/conftest.py
84.00% <0.00%> (-9.00%)
:arrow_down:

src/scmrepo/asyn.py
96.55% <0.00%> (-3.45%)
:arrow_down:

src/scmrepo/git/backend/pygit2.py
77.31% <0.00%> (-2.07%)
:arrow_down:

src/scmrepo/git/backend/gitpython.py
63.07% <0.00%> (-1.35%)
:arrow_down:

src/scmrepo/git/backend/dulwich/__init__.py
80.28% <0.00%> (-0.97%)
:arrow_down:

src/scmrepo/git/__init__.py
83.16% <0.00%> (-0.35%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add usdPrice field to Pair objects on pairs subgraph

Since not all pairs are with a stablecoin, would be easier for querying if there is a precomputed USD price for each asset

Hmm I actually thing the Pair entity may already be quoting prices in USD... https://github.com/KlimaDAO/klima-subgraph/blob/main/pairs/src/Pair.ts#L67


Use structured selector for HomePage data

✨

Coverage increased (+0.1%) to 98.433% when pulling 9492f4b648a36439ec2166a740dac5da45d272b7 on justingreenberg:feature/structured-selector into 56eb5a0ec4aa691169ef427f3a0122fde5a5aa24 on mxstbr:master.

That's a lot nicer! :+1:


Text always null(Russian validator)

Condition 'text == null' is always 'false' when reached
That is why throw exception

Condition 'text == null' is always 'false' when reached That is why throw exception
An exception is created when 'text == null' is true or text.isEmpty() , so if 'text == null' is false, it does not always create an exception, it depends of text.isEmpty(). Therefore it doesn't matter if "text == null" condition is present.


RaisedButton elevation changes aren't being animated any more

Steps to reproduce:

Gallery.
Turn on slow mode.
Go to the Buttons demo.
Press and hold on the RAISED BUTTON.

The shadow should slowly grow as it raises. Right now it just snaps to.

@Hixie believes this may be fixed by turning off the PhysicalModelLayer, but @sethladd we should relate this to the re-enable-physical-model-layer bug.  FYI @jason-simmons


Pass custom fetch function

Describe the feature
Hello,
It would be nice to be able to pass a specific fetch function to wrap with ofetch, so that it could be used in peculiar environments such as SvelteKit's SSR load function.
Thanks
Additional information

[ ] Would you be willing to help implement this feature?

Hi. It is possible with createFetch. This is how we pass Nitro Local Fetch as well: https://github.com/unjs/nitro/blob/ce5d22340c26ae428f062d43f54d1b8aa7344ecd/src/runtime/app.ts#L105
Let me know if you have any questions about doing this 👍🏼

PR welcome to improve docs!
Headers is to provide headers polyfill. Normally ofetch does this automatically

PR welcome to improve docs!

Alright, I'll consider it once I'll have some experience using ofetch in production.

Headers is to provide headers polyfill. Normally ofetch does this automatically

What does it do ?

It is a constructor for headers. Read more: https://developer.mozilla.org/en-US/docs/Web/API/Headers

So, if I don't import Headers from ofetch and pass it to createFetch then the lib won't support sending and/or receiving headers in requests ?

Latest versions of Node.js, already have global Headers. you should be fine! (the nitro code example is for legacy reasons that is explicitly passing it)

Alright. However, my IDE says the object is invalid when not passing it.

I see. Do you mind to open a new issue so i don't forget to put a fix? 🙏🏼

(in the meantime you can simply use Headers: globalThis.Headers or ignore type issue)

Do you mind to open a new issue so i don't forget to put a fix? 🙏🏼

Done.

@KaKi87, @pi0
Hello, I had no problem with SvelteKit SSR load function and using ofetch in it.
ofetch usage in sveltekit SSR load function
Look at lib/ofetch.ts on how to create instance of ofetch with global Headers obj.
import {createFetch, Headers} from "ofetch";

export const $fetch = createFetch({
    fetch: fetch,
    Headers,
})

And use it as always in src/routes/+page.ts
import {$fetch} from "$lib/ofetch";

// since there's no dynamic data here, we can prerender
// it so that it gets served as a static asset in production
export const prerender = true;

/** @type {import('./$types').PageLoad} **/
export async function load() {

    const res = await $fetch("https://petstore.swagger.io/v2/store/inventory");
    const item = res;

    console.log(item)

    return { item };
}

here's example:
codesanbox

I never said I had a problem, pi0's initial answer worked already, thanks anyway.


Tamagui ^1.74.9 Button does not accept any props declared in textProps

Current Behavior
When I updated tamagui from version 1.72.3 to ^1.74.9. All props used in textProps: {} do not work.
Expected Behavior
No response
Tamagui Version
^1.74.9

Platform (Web, iOS, Android)
Android and iOS

Reproduction
import {Button} from "tamagui";

<Button
     ref={ref as any}
     pressStyle={pressStyle}
     disabled={disabled}
     ai="center"
     jc="center"
     textProps={{ // ===> not working
       textTransform: "uppercase",
       textDecorationLine: "underline"
        }},
        >
{"Text"}
</Button>

System Info
No response

I'm seeing the same. I'm unable to set fontWeight using any of:

default props fontWeight
prop fontWeight
textProps.fontWeight

Maybe we need to wait for tamagui to update the new version for this. I had to use version 1.72.3 to fix it.

oh interesting, sorry about that we have very few usages of textProps and no tests yet. i'll get a patch release out somewhat soon.

Fixed in latest version


Is there any way to judge the light intensity through the camera? (IDFGH-10852)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
Is there any way to judge the light intensity through the camera?In this way, you can judge when to turn on the infrared fill light.

Easier to use a light sensor such as CDS.


Use editor's tab length setting

It would be great if the indent size is taken from the editor's current setting when none is defined at package/global level.

Actually this should already be the case. For example, JavaScript: https://github.com/Glavin001/atom-beautify/blob/master/src/languages/javascript.coffee#L3
I would recommend reading over https://github.com/Glavin001/atom-beautify/blob/master/CONTRIBUTING.md#new-issues-bugs-questions-etc and running the Atom Beautify: Help Debug Editor command. It will show you the different options that are combined to generate your final options that are used for beautification. Looking at it should show you if it is properly reading from your editor's settings, and also what else may be overwriting those settings later on in processing.

I am having the same issue. I thought it was because I was using the default option (2) and so it wasn't explicitly set but even setting to 8 didn't seem to work.

Closing as a duplicate of https://github.com/Glavin001/atom-beautify/issues/894

I've merged https://github.com/Glavin001/atom-beautify/pull/1598 which should resolve these issues.
Published to v0.29.21.


0.8.11

Codecov Report

Merging #239 (6278897) into master (237123c) will decrease coverage by 2.69%.
The diff coverage is 94.17%.

:exclamation: Current head 6278897 differs from pull request most recent head 13487d9. Consider uploading reports for the commit 13487d9 to get more accurate results

@@            Coverage Diff             @@
##           master     #239      +/-   ##
==========================================
- Coverage   93.62%   90.92%   -2.70%
==========================================
  Files         452      454       +2
  Lines       16156    16251      +95
==========================================
- Hits        15126    14777     -349
- Misses       1030     1474     +444

Impacted Files
Coverage Δ

...ipt_sdk/src/sdk/std/fs/gitignore_path_array/mod.rs
60.00% <0.00%> (-6.67%)
:arrow_down:

duckscript_sdk/src/sdk/std/fs/get_file_size/mod.rs
96.15% <96.15%> (ø)

duckscript/src/expansion.rs
93.15% <100.00%> (+1.36%)
:arrow_up:

duckscript/src/expansion_test.rs
95.03% <100.00%> (-3.03%)
:arrow_down:

duckscript/src/parser_test.rs
100.00% <100.00%> (+1.92%)
:arrow_up:

duckscript/src/runner_test.rs
98.63% <100.00%> (+0.61%)
:arrow_up:

...cript_sdk/src/sdk/std/fs/get_file_size/mod_test.rs
100.00% <100.00%> (ø)

duckscript_sdk/src/sdk/std/fs/mod.rs
100.00% <100.00%> (ø)

duckscript_sdk/src/utils/io.rs
97.61% <100.00%> (+0.56%)
:arrow_up:

duckscript_sdk/src/utils/io_test.rs
100.00% <100.00%> (ø)

... and 97 more

Continue to review full report at Codecov.

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


Webpack 4 breaks file-loading'ing wasm file

Do you want to request a feature or report a bug?
bug

What is the current behavior?
wasm files which are loaded using file-loader throw an error about a parse fail.
Module parse failed: WasmCompile: Wasm decoding failed: expected magic word 00 61 73 6d, found 6d 6f 64 75 @+0

I believe the error is occurring because webpack is trying to parse the output from file-loader.
If the current behavior is a bug, please provide the steps to reproduce.
const urlToFile = require('!!file-loader!../../some/file.wasm');

What is the expected behavior?
If a wasm file already has a loader, webpack should not try to parse it.
If this is a feature request, what is motivation or use case for changing the behavior?
I do not want to include the wasm file in my bundle.
Please mention other relevant information such as the browser version, Node.js version, webpack version, and Operating System.
webpack version: 4.1.1

I was able to resolve the issue by omitting the wasm rule from module.defaultRules. So my config.module.defaultRules looks like
[
      {
        type: "javascript/auto",
        resolve: {}
      },
      {
        test: /\.json$/i,
        type: "json"
      },
]

I don't think this issue should have been closed. Imho, there should be an easier way to do this, especially directly in the import query.
For example, people using the Angular CLI, Create-react-app or similar tools should not have to eject to achieve this, especially since it works very well with webpack 3.

Webpack is currently working on an experimental support for WebAssembly:
see https://github.com/webpack/webpack/blob/master/examples/wasm-simple/webpack.config.js#L10-L11.
Also it seems that the binary you're trying to load is a text file. You can try by opening it in https://webassembly.js.org/share.html.

@jfizz what's defaultRules?  Is it documented anywhere?  Why does this work?
I updated a dependency that now loads a wasm at runtime, and thought, when I got the error about needing a loader for wasm, oh that's easy, I'll just set it up with a rule for file-loader and copy it over verbatim.  I was confounded when I kept getting errors about "magic header not detected" with a stack trace that clearly showed that Webpack wanted to use a wasm-specific loader even though I told it not to.
Your fix got the build working, but damn it Webpack, every time this kind of mysterious "helpful" behavior kills half a day for me I feel more inclined to just go back to writing my whole build toolchain with shell scripts.  WTF?

@xtuc It appears to be a text file because it was previously loaded by file-loader, which is the issue. I am suggesting: If a wasm file already has a loader, webpack should not try to parse it.
@thw0rted I discovered it by looking at the source: https://github.com/webpack/webpack/blob/677eaba1586bfc68adf883161e6d7cca4e0129a9/lib/WebpackOptionsDefaulter.js#L52

For the record, I'm still pissed that Webpack hasn't documented this, but I think you can actually get rid of the error by just adding type: "javascript/auto" to the rule for /\.wasm$/, without touching defaultRules.

No need to be pissed.  Webpack is free and provides a ton of functionality.  Not every feature is documented, and historically webpack has lacked documentation but they've gotten a ton better.  They always welcome PRs

Sorry @olsonpm , you are of course correct -- I hate when people show up to an open-source project and make demands, and I was out of line to sound like the volunteer maintainers aren't doing enough.
What bothers me is when docs are incomplete or out of date, and I don't know enough about the project to fix them myself.  If it's something I have a decent grasp of I don't mind reading the source to figure out the rest, but a lot of Webpack has always seemed a bit black-magic to me. Delving into the internals feels kind of daunting, and the source @jfizz linked to is nearly comment-free, which doesn't help.

@jfizz I'm trying your fix but somehow this results in empty build directory. Dev server works fine, but production build outputs nothing. Removing modules that import WASM fixes it.

Hello ! Could this be re-opened, since it still seems to be an issue for a lot of people ?
Why does webpack still try to parse the wasm file when instructed to load it with file-loader ?
Is there a solution for those using create-react-app ?

Hello ! Could this be re-opened, since it still seems to be an issue for a lot of people ? Why does webpack still try to parse the wasm file when instructed to load it with file-loader ? Is there a solution for those using create-react-app ?

Speaking for CRA, I moved to craco, so you don"t have to eject from CRA. Adding a craco.config.js at root, with the following content
// Webpack 4
module.exports = {
    webpack: {
        configure: {
            // See https://github.com/webpack/webpack/issues/6725
            module: {
                rules: [
                    {
                        test: /\.wasm$/,
                        type: 'javascript/auto',
                    },
                ]
            },
        }
    },
};

// Webpack 5
module.exports = {
    webpack: {
        configure: {
            // See https://github.com/webpack/webpack/issues/6725
            module: {
                rules: [
                    {
                        test: /\.wasm$/,
                        type: 'javascript/auto',
                        use: [
                            { loader: 'file-loader' }
                        ]
                    },
                ]
            },
        }
    },
};

So i can import like this in React
import wasm from "!!file-loader?name=sql-wasm-hash.wasm!sql.js/dist/sql-wasm.wasm";


骨干网的输出应该是1313，您的是1414，请问是什么原因呢？

i have the same confusion

it is a point. But it is not a problem. I guess


 Screenshot is in the PR description. It will also not display member counts on mobile because I'm not sure there's enough space.

Looking good on mobile 👍


"Active Request" graph not working

Version: 2.4.0-RC1
It seems that the graph mentioned is not working in this version.

Thank you for your reporting.
I fixed this problem right away.


Refactor LoginForm validation

Refactor LoginForm to use JSON schema for validation instead of WTForms

Refactor should maintain similar level of datetime string validation that WTForms offers.


Frontend: Indicate when generator buttons were already used

The goal is to update the buttons of the generator part to indicate to the user if the action was already called.
To do :

Refactor the "init" part in a new component such as VueGenerator, SpringBootGenerator etc .. (see https://github.com/jhipster/jhipster-lite/issues/1288)
Create a new button component in springboot context (that use DefaultButton) This new button will take in parameter the service name linked to the button and will ask the HistoryStore if it was already used
Implement this new buttons in every XxxxxGenerator.component
Update project history on project path update (delay on input change)

@Franceq34 : don't forget your bounty here

$200 bounty claimed => https://opencollective.com/generator-jhipster/expenses/76379

@Franceq34 : approved


run test.sh  error

@XingangPan When I run sh ./experiments/test.sh, I met following error, what should I do?

hello, how did you find the "out0_normal" etc... output.txt files ?
When i run , i get an error as ------ Run.sh: 31: Run.sh: ./evaluate: not found

@chenyiman It seems that the input image is not successfully loaded.
Please make sure the dataset is downloaded at the right path as described in README.
You may print the image path in line 31 of 'datasets/lane.lua', and see if it match with the real image location.

@XingangPan Thanks for your replying! I checked that the dataset's path is right as following(Here we only need testing datasets as in './list/text.txt'):

And I tried to print the image path as you said, but there is nothing to be printed after running(the error is unchanged). I think the function "LaneDataset:_loadImage(...)"  in './datasets/lane.lua' has not been run yet :

the same error:

@chenyiman Ok, I know the problem.
You should rename the 'driver_23_30frame_part1' to 'driver_23_30_frame'.
Since BaiduYun do not accept file larger than 20G. I have to split the 'driver_23_30_frame' into two parts. Which caused this name change. My fault.
In a word. The images in 'driver_23_30frame_part1' and 'driver_23_30frame_part2' should be merged in one folder 'driver_23_30frame'. This should solve this issue.

@XingangPan Well, I think it is not the problem. Because I did not use "driver_23_30frame_part1" here, the dataset is for traning. Now I just want to test, using your pretrained model which I download in './experiments/pretrained/'. So, for testing, I just use 'driver_100_30frame'、'driver_193_90frame'、‘driver_37_30frame‘（just as in  './data/CULane/list/text.txt'）

@chenyiman Try this.

@XingangPan Nothing is printed.

@chenyiman My mistake, we should modify 'laneTest.lua'

@XingangPan

the path is wrong,but I did not change anything in ./experiments/test.sh

@chenyiman This is odd. Your image path has an extra '/data/CULane'. Try to remove it either in data list test.txt or in script test.sh.
In my case the path is correct:

@chenyiman Also, if you have changed your data list, you should remove the files in folder 'gen' before run experiments.

@XingangPan It works! Could you tell me the reason ?
I tried to understand your codes , unfortunately, only find that the run sequence is maybe:
step1.' laneTest-gen.lua'
step2. 'dataloader.lua'
step3.' testlane.lua' or 'laneTest.lua'  (??)
I wonder where to change the paths of testing image (Or where call the function--'LaneDataset: loadImage(path,channel,ttype)', which is defined in 'laneTest.lua')
Thanks!

@XingangPan @chenyiman
I have met the same problem when run test.sh, I printed the image path and it's correct, but loaded image failed.


Underscores and leading zeros

Currently we are using this library to parse a large (~100k) number of versions from a public database. To simplify things, we ignore any version number that is parsed as Complex as they are not reliable enough for our use case. However, we've encountered some problems.
Underscores
>>> rs_versions.parse_version('2.4.2-r1')
Ideal(SemVer { major: 2, minor: 4, patch: 2, pre_rel: Some(Chunks([Chunk([Letters("r"), Digits(1)])])), meta: None })
>>> rs_versions.parse_version('2.4.2_r1')
Complex(Mess { chunks: [Digits(2, "2"), Digits(4, "4"), Digits(2, "2")], next: Some((Underscore, Mess { chunks: [Plain("r1")], next: None })) })
>>> rs_versions.parse_version('2.4.2r1')
General(Version { epoch: None, chunks: Chunks([Chunk([Digits(2)]), Chunk([Digits(4)]), Chunk([Digits(2), Letters("r"), Digits(1)])]), meta: None, release: None })

Should 2.4.2_r1 be treated the same as 2.4.2r1? I don't expect them to be Ideal, but should at least be General. For now we are simply replacing any _ to - to avoid this.
Leading zeros
We encountered version numbers like 11.1.07, 3.5.0082, and 15.08.00, which are perfectly normal.
The documentation says that 000.007-1 is parsed as Complex, is there any consideration behind that?
All the version numbers being parsed as Complex are attached, some of them are totally malformed, others looks parseable.
complex.zip

Hi there, I'm glad to hear that versions is useful for you.

Should 2.4.2_r1 be treated the same as 2.4.2r1?

I'm going to say that the former should still be a Mess, given the definitions of Version and Mess. The definitions are as they are specifically to make Ord-based comparisons sane. However if you know such versions to be safe/harmless, then replacing the underscores with - as you're doing is a decent workaround.

The documentation says that 000.007-1 is parsed as Complex, is there any consideration behind that?

Yes, these are similarly considered Messes both for parsing and for comparison reasons. In theory a function that converted 000.007-1 into 0.7-1 could be easily written, if that still matches your use case. In the meantime, consider the Mess::nth function to do this. You could even construct a SemVer in this way (and throw out any Mess that couldn't be nth'd).

Hi there, any thoughts?

I still think that some of the examples here should be parsed as at least Version, a single _ probably should not cause such difference when it comes to parsing.

I'm going to keep _ as a criteria for Mess parsing. Versions are things very close to SemVer and this allows us to compare them sanely, while with Messes it can be hard to know what the meaning of any of the version sections are when they're separated by strange punctuation.


index.d.ts for videoCompressorType is missing maxSize field in 1.0.3

I'm adding the maxSize parameter to the options field for Video.compress, but looking at the Typescript declarations for that type in the 1.0.3 release on npm, maxSize is missing:
declare type videoCompresssionType = {
    bitrate?: number;
    compressionMethod?: compressionMethod;
};

Possible the declarations are stale from the last release?

@GrandPoohBear you are right, I forgot to add this. I will add this typo in the next release. thanks for indication

@GrandPoohBear i have added https://github.com/Shobbak/react-native-compressor/commit/6f6192856a0a06b0dd3c44a19a6fece79b4ce41c will be added in next release

Excellent, thanks so much!


 code action, I get this:
pub struct Foo {
    pub value: u32,
}

impl std::fmt::Debug for Foo {
    $0fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("Foo").field("value", &self.value).finish()
    }
}

impl Clone for Foo {
    $0fn clone(&self) -> Self {
        Self { value: self.value.clone() }
    }
}

That $0 in front of fn seems strange and I don't know where it came from.

This happens because of this https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/lsp-extensions.md#snippet-textedit. And i initally enabled this feature because without it we weren't getting the proper Convert to manual... code action working. I'll revert it for now because it seems to be leaking into other things, but i'll open an issue on rust analyzer regarding the Convert to manual... code action without snippet text edit

Ok this is properly fixed now


Add YUM repository fails

I guess something has changed here, the Add YUM repository task is failing:
TASK [DotNetCoreSDK-Linux : .NET | Add YUM repository] ***************************************************************** FAILED - RETRYING: .NET | Add YUM repository (3 retries left).
FAILED - RETRYING: .NET | Add YUM repository (3 retries left).
FAILED - RETRYING: .NET | Add YUM repository (2 retries left).
FAILED - RETRYING: .NET | Add YUM repository (2 retries left).
FAILED - RETRYING: .NET | Add YUM repository (1 retries left).
FAILED - RETRYING: .NET | Add YUM repository (1 retries left).
fatal: [<IP_ADDRESS>]: FAILED! => {"attempts": 3, "changed": false, "failed": true, "repo": "packages-microsoft-com-prod", "state": "present"}
fatal: [<IP_ADDRESS>]: FAILED! => {"attempts": 3, "changed": false, "failed": true, "repo": "packages-microsoft-com-prod", "state": "present"}

Running against CentOS 7 machines.

Thanks @andmos. Bug was reproduced on CI and it is fixed in release v2.0.1. Please update your role and try again

Great 👍


Added toast instance to onShow onHide callbacks

Coverage remained the same at 100.0% when pulling f73d18b317a9bcc4b6accb228d5f7e8428e2ac80 on Stabzs:master into db7a39c97ede0f86d6033de432f2f38e9a0498ce on jirikavi:master.


[BUG] Invalid out options for grlx cmd run

Please describe the issue.
When running grlx cmd run --help it is listed that the option to output as YAML is available. However, this does not work and prints nothing.
Version Information

Commit cd802e4
Systems

Farmer OS Distribution: Rocky Linux 9
Sprout(s) OS Distribution(s): Rocky Linux 9

Does this bug exist on the tip of master?
[ x] Yes
[ ] No
Please note that bugfixes will only be ported to previous major versions at the request of a Sponsor, and only when applicable and possible.
It is recommended all grlx users run the lastest stable release to take advantage of the newest features and bug fixes.
Configuration
n/a
Options Listed

Bug

This was already fixed in 24b764e723d73f169e3236165ceeb67add45dd73
There just hasn't been a new release since.


Map waypoints

This is probably the last update I will do for this plugin. It does everything I wanted it to now.

@iipom Awesome plugin!!! Can you please make the yellow arrow more aesthetically pleasing and can the blue focus waypoint on the world map be a different shape so we can easily differentiate from our current location


Get rid of ‘txt not found’

Switch syntax highlighting to yaml

What kind of changes does this PR include?

Minor content fixes (broken links, typos, etc.)

Description
Changes the syntax highlighting for sitemap docs to yaml instead of none.

Nice catch!

Er… sorry @ElianCodes, this file actually lives in a README over in the main astro repo, which gets pulled into docs automatically each night, so we just killed your fix 😅
Would you like a cheap and easy PR making this same change over in that repo?

Ah, I didn't know that! Ofcourse I'll do that!

@delucis : https://github.com/withastro/astro/pull/6486


Adding BlueStacks Manifest

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

Microsoft Reviewers: Open in CodeFlow

closed

closed


[Obsidian] Append Task... to the Daily Note!

Extension
https://www.raycast.com/KevinBatdorf/obsidian
Description
Right now the note to which I can append to is fixed. I would like to be able to append to the current daily note which makes more sense to me. Meanwhile the possibility to have fixed "Inbox" note should be preserved.
Who will benefit from this feature?
People who work mostly with their daily notes as a mean of organization.
Anything else?
No response

Hey, can you explain what you mean by fixed? Can you tell me more about your workflow and the command you use?

@KevinBatdorf Here's "Append Task" command configuration panel:

"Path of the note you wish to append the task to" <-- this is what I understand as fixed.
I would like to have a checkbox/flag that says "Append to a periodic TODAY daily note" rather than specifying fixed note to append to.

Great, that'll do.


Support for PlayStation 4/5?

Hi folks, hope all is well!
Sorry if this has been mentioned elsewhere, but I noticed that the Project Acoustics Overview page doesn't currently list PS4/5 under Runtime Platforms. Just wondering if someone could please confirm that PA is not supported on PlayStation at this time - and, if so, are there plans to port it over sometime within e.g. the next year?
Thanks in advance, and best wishes :)

Jonathan,
We don't ship binaries for PlayStation at this time.  Partners who have signed the GDK source license agreement addendum have obtained access to the source code and have made minimal modifications to the build scripts to build PA using the Sony SDK.  If you are working with a studio and they have a Microsoft Gaming representative, you can request the addendum to get access to the code and build for your platform of choice.
Thanks,
Noel Cross
Microsoft Corporation

The GDK route is our only method for PS support at this time.


Problem accessing an IoT Hub device with multiple DeviceClient instances

OS and version used:  Ubuntu 16.04 LTS
Python runtime used:  Python 2.7
SDK version used:  Built from source on 10/07/2018

Description of the issue:
I am building gateways that maintain device client connections to IoT Hub devices and since these gateways can act as a mesh this means that it is possible for a device to move from one gateway to another.
Since the devices are only occasionally connected, the only way to know it has moved is via a twin update to say what the gateway mac address is.
I'm still working out the mechanics of that, but I've noticed that when two gateways connect a device to IoT Hub at the same time I get hundreds of executions of the Device Twin callback and lots of errors.
I am using a modified sample from the samples folder distributed in the GitHub repo to test(iothub_client_sample.py) that just sends messages and has the device twin callback implemented.
When using MQTT it keeps executing the twin callback and I get hundreds (or thousands) of error messages like:
Socketio_Failure: Receiving data from endpoint: errno=104
When changing to AMQP we get among others:
Func:on_amqp_messenger_subscription_changed_callback Line:1646 Unexpected AMQP messenger state
Using MQTT_WS we don't get the same device twin and error event storm but it does execute the twin callback each time it creates messages even when there is no twin change, and AMQP_WS gets the same problem as regular AMQP.
There is no Close option in the Python SDK so the only way to close the connection to IoT Hub is to destroy the object (currently using del) but that seems to be inconsistent.
I've tried this using the .NET Core SDK and it does not exhibit this behaviour. With that I should be able to detect a change, update the relevant gateway twin and tell it to close the connection for that device.
But I have other reasons for wanting to use Python for the solution so am keen to understand the behaviour.

@martinabbott
A couple of clarifying questions:

when you say "when two gateways connect a device" do you mean that the same deviceId is used to connect with 2 different gateways, therefore generating 2 connections with the same device id?
those gateways, what are they? Azure IoT Edge gateways? which version?

Yeah, two gateways using the same connection string to the same device id.
Not IoT Edge, just using the basic IoT Device Client sample in .\device\samples\iothub_client_sample.py with some modifications to remove extraneous code.

Could be completely the wrong thing to do, we're still developing, but it is an artifact of what we're trying to achieve with the mesh.
Short version of the story...a gateway maintains a list of device clients in a dictionary for sensors that are attached to it. That connection is unicast, if it's connected it stays connected via that gateway until there is a problem. At that point it broadcasts and connects to another gateway. At that point it's unicast again.
We need to control disconnection on the initial gateway. We currently do this using a twin property on the sensor...when the initial gateway tries sees the update to the sensor it knows to disconnect, although there are still problems with that.
However, even before that, when the second gateway establishes a connection to the same device id we get the behaviour described.
This large volume of events and errors does not occur with .NET Core, although we do have the issue of ensuring the right gateway receives an update and disconnection occurs, that's a work in progress!
However, .NET Core is not something we can use in this case, because reasons!

@martinabbott  Azure IoT Hub only allows one connection per device. I'm suspecting that what is happening is that the retry logic kicks in and leads to this race between those 2 devices. if you edit the twin for each reconnection with a unique field value, the etag gets updated, so you end up with a lot of notifications. this is just a theory though.
I'd be interested in knowing if it still happens if you introduce a reasonable delay between the first gateway disconnecting and the second one connecting, to make sure you have only one active connection at a time?

Yeah the problem is we have no way of introducing the delay directly because the gateway never knows that the disconnection has happened, although I wonder if we can do that through a gateway twin update.
NOTE: This behaviour happens without any twin updates happening I think, it just hits a race condition immediately after starting 2 connections.
Interestingly, .NET Core doesn't show this behaviour.

@martinabbott I believe .NET Core has a less aggressive retry policy - might be why. have you tried it with both protocols though? or just AMQP? might be that the multiplexing feature helps in this case?
Finetuning (or disabling) the retry policy might help, but it's not going to solve the problem. you may always run into a race condition at some point or in some circumstances. it feels like a distributed systems issue almost (I'm no specialist...)
would there be a way, while the sensor is in the "broadcast" phase, to disconnect its existing client? would there be a way for gateways to advertise who "owns" the sensor?
I also wonder if this is something Azure IoT Edge could help with.

Tried MQTT and AMQP, both exhibit similar behaviour, with MQTT definitely being worse!
IoT Edge is sadly out as there is a dependency on the sensors so we're probably too far down the line to pivot to a new architecture.
The sensors have configuration via a device twin that is maintained by the gateway and pushed to the sensor when it occasionally connects. The gateway also maintains a queue for sensors it believes it's associated with for store and forward situations as the gateway is not guaranteed to be permanently online.
I'll have a think and revert back about the disconnection process, might be that we can use a status on the gateway device twin and a backend service to update the twin of the old gateway to get it to drop the connection before accepting a new connection.

if you can detect connections/disconnections from the sensor to the gateway, could you sync it with connecting/disconnecting the device client?

Happy for the issue to be closed, it's an unsupported scenario as you say so I will find an alternative solution.
If I think it's interesting to the community when we solve it I'll come back here or blog.
Thanks for the help and direction.

@martinabbott, thank you for your contribution to our open-sourced project! Please help us improve by filling out this 2-minute customer satisfaction survey


Added Includes - Compiles on ARM

With these two includes, libcppa builds on ARM, although the assembler gives some warnings and the unit tests don't currently pass. I'll open issues that give the details.

Thank you for the fix.


Less loader options dont work (javascript)

🐛 Bug report
Current Behavior
When i use the less plugin, i can't enable Inline JavaScript option of less.
Expected behavior
Less working without problems.
Reproducible example

npm i razzle-plugin-less -D
add:

plugins: [
    {
      name: 'less',
      options: {
        less: {
          ...lessOptions,
          dev: {
            lessOptions: {...lessOptions}
          },
          prod: {
            lessOptions: {...lessOptions}
          }
        }
      }
    }
  ]

to razzle.config.js with lessOptions object being:
const lessOptions = {
  modifyVars: {
    "@base-color": "#30b874",
    "@ns": "da-"
  },
  javascriptEnabled: true
}

run npm start and it give me this error:

// It's hack way to make this function will be compiled preferentially by less
.tinyColorMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
      in /workspace/website/r/node_modules/rsuite/lib/styles/mixins/tiny-color.less (line 1183, column 0)

I'm using rsuite (https://rsuitejs.com/)
Suggested solution(s)
idk :c
Your environment

Software
Version(s)

Razzle
3.3.7

Razzle Plugins
less: 3.3.7

Node
12.18.3

Browser
x

npm/Yarn
6.14.7

TypeScript
x

React
16.14.0

plugins: [
    {
      name: 'less',
      options: {
        less: {
          dev: {
            lessOptions: lessOptions
          },
          prod: {
            lessOptions: lessOptions
          }
        }
      }
    }
  ]

plugins: [
    {
      name: 'less',
      options: {
        less: {
          dev: {
            lessOptions: lessOptions
          },
          prod: {
            lessOptions: lessOptions
          }
        }
      }
    }
  ]

@fivethreeo It also doesn't work that way :/

plugins: [
    {
      name: 'less',
      options: {
        less: {
          dev: lessOptions,
          prod: lessOptions
       }
      }
    }
  ]

https://www.npmjs.com/package/less-loader/v/5.0.0

plugins: [
    {
      name: 'less',
      options: {
        less: {
          dev: lessOptions,
          prod: lessOptions
       }
      }
    }
  ]

https://www.npmjs.com/package/less-loader/v/5.0.0

@fivethreeo now, the client is Compiled with some errors in 1.35m and the server say:
Module parse failed: Unexpected token (23:23)
File was processed with these loaders:
 * ./node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders

but it is for optional chaining:
|   React.useEffect(() => {
>     if (props.location?.match?.params.id && user.id === props.location?.match?.params.id) props.history.push("/perfil/");

You could try:
https://razzlejs.org/docs/experimental-features#enable-the-new-babel-loader

I will look at upgrading the loader in the canary branch. Chaining should work with new babel loader.

@fivethreeo how to fix less ?

function modifyLess(webpackConfig) {
  const less = webpackConfig.module.rules[webpackConfig.module.rules.length - 1];

  if (!less.test.test('.less')) {
    throw new Error('[modifyLess]: less not founded');
  }

  const lessLoader = less.use[less.use.length - 1];

  lessLoader.options.lessOptions = {
    ...lessLoader.options.lessOptions,
    ...lessOptions,
  };
}

👌


Can not play videos in GitHub Issues

Describe the bug
I'm trying to watch attached videos and they are unplayable in kiwi.
To Reproduce
Go to issue, e.g. #900 and try to play video.
Expected behavior
Video should be playable
Screenshots
https://github.com/kiwibrowser/src.next/assets/11527277/1c3798f3-026f-483a-b1bd-089d971775d5
Smartphone (please complete the following information):

Device: OnePlus 8T
Android Version : A13 QPR3
Kiwi Browser Version 116.0.5845.21

Can confirm, I tried with other browser (1DM+) and it played. But doesn't play with Kiwi.
Version: 116.0.5845.22

The translation of your previous message into English is as follows:
"Not only can't I play videos on GitHub, but also on my Huawei HarmonyOS system, I can only play YouTube videos. I can't play videos on other video websites such as 555dy3.com, v.qq.com, iqiyi.com, youku.com, etc. Can you please try these websites? Thank you."
Please note that machine translation may not be 100% accurate.

can you give me some specific videos to play and test?

I played this video and it's playing fine, but it does not play in mobile mode (it redirects me to play store to download the app), so I played it in desktop mode.

My device is HarmonyOS 3.0, and I don't know if it's the system. My device opens these websites, and the website videos can't be played, but youtube is fine. I don't know why. I reinstalled the software after updating it, but it didn't work out. Now it's returned to the April version.

Can you share a screenshot/screen recording? to better know what is the error.

可以，请等我一下。

就是这样

我不会上传视频

Uploading lv_0_20230721171631.mp4…

Can you try in desktop mode? Or using VPN?

https://github.com/kiwibrowser/src.next/assets/132458165/dbdec473-0c51-4274-b6fa-09c3fd59545a

https://github.com/kiwibrowser/src.next/assets/132458165/f7d1d7e5-df7b-4c10-a3fb-36eb56e3b8bd

By the way, can you play with other browsers?

edge浏览器,狐猴浏览器,Iceraven这三个正常

brave,yandex,vivaldi这三个有相同的问题。

Then it's not your OS or Network, it's the browser's fault. It's weird that it's working for me.
Do you have other devices you could test the sites on Kiwi browser?

暂时没有别的设备了，我在狐猴浏览器的交流群看到别人的设备都正常，同样有鸿蒙2.0的可以正常播放视频，我在用鸿蒙3.0的最新版本。我想这可能和鸿蒙系统有关系。

confirmed on Kiwi Browser 116.0.5845.24

正在上传 - lv_0_20230722164700.mp4

正在上传 lv_0_20230722164700.mp4…

https://github.com/kiwibrowser/src.next/assets/132458165/caf4684f-ad23-43cf-b7de-ceed97fe7821

What version are you using github or playstore?
Did you try the dev version? see if there's any difference,

Then we can definitely say it's the OS conflicting with Kiwi.
@zhch02

playstore版本，我再试试dev版本

PlayStore version, I'll try the dev version again

Try the github version too.

Some videos can be played, maybe fixed.


Updating patterns with document.asketch.json and page.asketch.json

[Question]
What is the proper workflow to iterate over patterns and have changes reflect on Sketch?
I'm using html-sketchapp-cli to generate my pattern lib and so far everything is working as expected. My problem is when I updated the code and generate new document.asketch.json and page.asketch.json files. As I import them, I lose all symbols references within Sketch app. I mean: all symbols been used in other pages turn into a red-striped-box and the Prototype side bar shows "Symbols is missing".
For now I can reconnect each symbols manually, but as the project grows big this will be unpractical. Especially as my intent is to share the JSON with other designers in my team.
I'm missing something here?

I just found this discussion on html-sketchapp-cli repo. It seems to be exactly what I'm looking for.
I'm closing this issue here and I'll follow the thread there.


Foundations -> Utilities Errors and questions

Under def predict_step,  z = F.softmax(z).cpu().numpy() is shown on webpage. Notebook correctly assigns to y_prob = F.softmax(z).cpu().numpy() though
Extra single quote after "k"  Syntax Error plt.scatter(X[:, 0], X[:, 1], c=[colors[_y] for _y in y], s=25, edgecolors="k"')  (happens 1x here, 2x in Data Quality page)
Why did the softmax get manually calculated in Numpy section of Neural Networks page, but here in def train_step,
the raw logits were passed directly at

z = self.model(inputs)  # Forward pass
J = self.loss_fn(z, targets)  # Define loss

without a apply_softmax = True

Why did train_step's Loss need J.detach().item() but eval_step used J directly without detach and item
In the collate_fn, batch = np.array(batch, dtype=object) was used but i didn't understand why convert to object. Adding a note on what happens without it VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. would be very helpful in preparing students for ragged tensors and padding in CNN/RNN later
I was wondering why stack X and y. It seems that X is necessary because without stacking, float casting in X = torch.FloatTensor(X.astype(np.float32) breaks with ValueError: setting an array element with a sequence. because batch[:,0] indexing creates nested numpy array objects that can't be casted, but this nested array thing will not occur for y during batch[:,1], because y begun as a 1d object already, so no nested array, so no problem casting, so there's no need to stack y? (same for CNN stacking y)
This question came about when going through CNN and thinking why was there no X stacking there. Then I realized int casting worked there because padded_sequences = np.zeros begun without nesting, and also numpy was able to implicitly flatten the sequence numpy array during padded_sequences[i][:len(sequence)] = sequence.

good catch. I was fixing notations and missed this one.
fixed them all.
I definitely need to go fix all of these. I'll be removing that apply_softmax flag all together and just using z and y_prob to differentiate between logits and probabilities (softmax applied to logits). I'll moved softmax outside of the forward pass. I started doing this in the MLOps lessons but haven't gone back and edited these yet or I replaced just a few of them. I'll at least update the webpage now since I'll be moving those directly into new notebooks this winter.
I'm using detach to break any gradient attachment since that cumulative loss doesn't need to be part of the computational graph for backprop. During eval, no gradient book keeping is done regardless.
I think this used to be required for a previous version of numpy that colab required. Basically using dtype object means your pointing to objects stored somewhere else instead of the objects directly. But for this version of numpy, you can remove it.
yup you got it. Necessary for X but I do it just for visual consistency but don't need it. I fixed this now in the webpage and will change notebooks this winter.


[FeatureRequest] Add non alias versions of the run.sh commands if possible.

https://github.com/lbryio/lbry-docker/tree/master/contrib contains a README that relies on a run.sh if we could have the vanilla commands somewhere available perhaps at the bottom or something it could be useful then just refer to the vanilla command guide reference next to the commands.

You can use run.sh without the alias, you just need to specify the full path to it.
Do you mean though that you would like a reference for the kubectl and helm commands that run.sh utilizes?

would like a reference for the kubectl and helm commands that run.sh utilizes?
Just want to kind of assume that in some cases we're teaching someone how to functionally do this from the ground up so that adoption can have a lower barrier to entry.

I agree. It may make sense to make ancillary .md files to break this up a bit. Then I could add additional info that is not necessarily pertinent to the regular install.
Also, this is why the run.sh exe function exists. It logs every raw command to the screen before running it, so it is fully transparent what is going on.


Help with EdDSA Key

Description of the problem
Hi,
I'm trying to get Sparkle to work on my Xamarin.Mac app through these bindings however I seem to be not understanding the updating process.
Currently what i understand to process is...

Add appcast.xml url path in SUFeedURL in info.plist
Generate EdDSA Key
Put EdDSA public key in Resource and add in info.plist under SUPublicDSAKeyFile : dsa_pub.pem
Publish the application as a .app file
Sign the .app file. Done with
codesign -f -vvvv --strict --deep -s "Developer ID Application:  ******" DemoApp.app
Put the .app file in a .dmg file
Sign the dmg with my EdDSA private key
./sign_update ~/Desktop/DemoApp.dmg dsa_priv.pem
Convert my dmg file to a read only
hdiutil convert ~/Desktop/DemoApp.dmg -format UDRO -o ~/Desktop/demoReadonly.dmg
Upload the dmg file to my website
Update my appcast.xml

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle">
  <channel>
    <title>For unit test only</title>
    <item>
        <title>Version 2.0</title>
        <description>desc</description>
        <pubDate>Sat, 26 Jul 2014 15:20:11 +0000</pubDate>
        <enclosure url="www.mywebsite.com/demoReadonly.dmg" sparkle:version="2.0" />
        <sparkle:tags> <sparkle:criticalUpdate /> </sparkle:tags>
    </item>
  </channel>
</rss>

After doing all this my app is able to detect there is an update available and pulls down the update but i end up with the Console.app output below
Do you use Sandboxing in your app?
I am not using Sandboxing
Version of Sparkle.framework in the latest version of your app
From what i understand the binding pulls the latest version of Sparkle and create bindings from that.
Version of Sparkle.framework in the old version of app that your users have (or N/A)
No
Sparkle's output from Console.app
2019-02-25 14:43:27.614 Demo App[36902:2325600] Sparkle: ===== Demo App =====
2019-02-25 14:43:27.615 Demo App[36902:2325600] Sparkle: Extracting /Users/dev1/Library/Caches/com.oganisation.demoapp.macos/org.sparkle-project.Sparkle/Demo App 3.0/DemoAppInstall.dmg as a DMG
2019-02-25 14:43:32.990 Demo App[36902:2325600] Sparkle: copyItemAtPath:/Volumes/EB5B127E-3871-439D-A742-932733464C6C/  toPath:/Users/dev1/Library/Caches/com.oganisation.demoapp.macos/org.sparkle-project.Sparkle/Demo App 3.0/
2019-02-25 14:43:32.992 Demo App[36902:2325600] Sparkle: copyItemAtPath:/Volumes/EB5B127E-3871-439D-A742-932733464C6C/.DS_Store toPath:/Users/dev1/Library/Caches/com.oganisation.demoapp.macos/org.sparkle-project.Sparkle/Demo App 3.0/.DS_Store
2019-02-25 14:43:32.993 Demo App[36902:2325600] Sparkle: copyItemAtPath:/Volumes/EB5B127E-3871-439D-A742-932733464C6C/.fseventsd toPath:/Users/dev1/Library/Caches/com.oganisation.demoapp.macos/org.sparkle-project.Sparkle/Demo App 3.0/.fseventsd
2019-02-25 14:43:33.000 Demo App[36902:2325600] Sparkle: copyItemAtPath:/Volumes/EB5B127E-3871-439D-A742-932733464C6C/2.app toPath:/Users/dev1/Library/Caches/com.oganisation.demoapp.macos/org.sparkle-project.Sparkle/Demo App 3.0/2.app
"disk3" ejected.
2019-02-25 14:43:42.873 Demo App[36902:2325583] Sparkle: There is no DSA signature to check
2019-02-25 14:43:42.874 Demo App[36902:2325583] Sparkle: DSA signature validation failed. The update has a public DSA key and is signed with a DSA key, but the public key doesn't match the signature. The update will be rejected.
2019-02-25 14:43:44.341 Demo App[36902:2325583] Sparkle: Error: An error occurred while extracting the archive. Please try again later. The update is improperly signed. (URL (null))

Steps to reproduce the behavior
Steps have been described above in Description of problem. If more information is required I will be able to provide more.

I solved my issue as there was a few problems with my implementation...
I was using updated documentation to do my updates as i made assumptions that the binding drew from the latest version of Sparkle but i was wrong and uses the commit bb299d075b7be7eb7dd1cbf8a5c5a82a77b90ad6
another mistake i did was to wrap the app file in a dmg which apparently needs to be wrapped again with a pkg from my understanding and instead i wrapped and signed the app with a zip
another oversight was that i didn't add the  dsaSignature in my appcast since it was not in the documentations in the new sparkle.


mslab 24.04 Hydration of DC fails after first reboot when Parent OS and VM OS is Windows Server 2025

The entire issue is described here
https://techcommunity.microsoft.com/t5/windows-server-insiders/b26085-windows-server-2025-domain-controller-fail-to-deploy-via/m-p/4119469
Scenario:
Host OS (Hyper-V): b26085 Windows Server 2025
Guest OS (DC): b26085 Windows Server 2025
Issue:
Application of DSC fails after the first reboot while hydrating the DC VM
Repro

Install WS 2025 as host OS
Enable Hyper-V
Deploy mslab 24.04
Use WS 2025 ISO during 2_createparentdisks.ps1

Workaround:
Do not use WS 2025 as a guest VM OS at the moment, for CreateParentDisks (DC) until solved.
Using WS 2025 for usual VMs, such as Management, WAC etc are not affected.

This issue is under Investigation by Microsoft

@jaromirk I put together a new 'NoDCHydrate' feature which enables one to work around this for now:
https://github.com/michbern-ms/MSLab/tree/user/michbern/dchydrate
Take a look and let me know if you want me to set up a PR.
The investigation on the OS side continues, but I wanted to offer the feature as a workaround.

Oh, that's sweet! @machv what do you think?

related #596 #589

Today, tested with Windows_InsiderPreview_Server_vNext_en-us_26296.iso. No change in behaviour. Waiting for fix.

@Karl-WE That's unexpected.  Version 26296 has the two fixes necessary to resolve this scenario.   I ran the full scenario this morning with 26296, downloaded from the Preview center:
https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewserver?msockid=1818fad5388d6a5b3e2ceef839376bbb
And it worked well.  I did not need to use the 'NoDehydrateDC' feature - it all just worked.
@jaromirk , @machv  - would it be possible for one of you to test with 26296 and see if you can reproduce what Karl is seeing?

Hi @michbern-ms
Thanks for sharing this information.
Hyper-V Host OS was the same build as the DC VM OS version.
I will try this again on Windows 11 24H2 as Hyper-V host OS.

Very strange.  @jaromirk @machv Would love more data points if you can spare the time.

It's killing me softly as I thought I could finally come back to a new lab and have fun.
I am eager to help Michael. As always.

This issue is resolved with b26311. See also #607, #588
I am closing this with a workaroud remark:

[!NOTE]
for mslab DC creation please consider using

mslab dev, as long there is no later mslab version than 26.04.1
use Windows Server ISO b26311 or later ISO for DC hydration in Step 2 (2_Createparentdisk.ps1) if you want to Test Windows Server 2025.
As we can hopefully expect a backport from all related code changes b26311 back to b26100.1 + LCU this issue will be fully resolved.

fyi: @michbern-ms
@jaromirk I would recommend linking this disclaimer to mslab and Dell GEOS to avoid "frustration" as people would not expect this and using b26100 instead. If you like I can write PRs for both areas.
Thank you everyone for their huge efforts!


Please publish on NPM

+1

@caseyWebb For the time being you can use this,
https://cdn.rawgit.com/judesfernando/initial.js/235e5b9c/dist/initial.min.js
(Created using RawGit)


Make the game easier

I hear people complain about this game being hard to complete, so I made it a bit easier

Wat fijn dat je na 6 jaar weer het project oppakt. Respect makker.

That's funny :)
Make a fork of the project and deploy your own version of ~2048~ 4. We cannot merge these changes in the original game.

ah, what a shame. I thought I truly implemented features to make the game better. Can we hit 50 likes? this is so sad.