Add platform support for ARMv5TE

Hi, since Home Assistant switched to uv the installation on my NAS box can't be upgraded anymore. It is an armel platform with an armv5tel cpu (32bit, tier 2.5 in rust speak). I use Debian bookworm (stable) on it which supports it just fine, providing python 3.11 via system packages but I am using python 3.12 via manual build. For rust wheels, I cross compile them on a x64 VM and install them using pip into my venv since bookworm only provides rust v1.63 and there is no rustup support being a tier 2.5 platform.
$ curl -LsSf https://astral.sh/uv/install.sh | sh
ERROR: unknown CPU type: armv5tel

I noticed there is no support for this architecture in uv platform.rs:
https://github.com/astral-sh/uv/blob/3cb723220e516edae57930206cf3faffaa1b8e5b/crates/uv-python/src/platform.rs#L243
Would it be possible to add it to the platform matrix?
Some additional info that might be useful:
python -m sysconfig

sysconfig.txt
$ uname -m
armv5tel

$ pip debug --verbose
pip version: pip 24.0 from /srv/homeassistant/lib/python3.12/site-packages/pip (python 3.12)
sys.version: 3.12.3 (main, Dec 11 2024, 09:13:12) [GCC 12.2.0]
sys.executable: /srv/homeassistant/bin/python3.12
sys.getdefaultencoding: utf-8
sys.getfilesystemencoding: utf-8
locale.getpreferredencoding: utf-8
sys.platform: linux
sys.implementation:
name: cpython
'cert' config value: Not specified
REQUESTS_CA_BUNDLE: None
CURL_CA_BUNDLE: None
pip._vendor.certifi.where(): /srv/homeassistant/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem
pip._vendor.DEBUNDLED: False
vendored library versions:
CacheControl==0.13.1
colorama==0.4.6
distlib==0.3.8
distro==1.8.0
msgpack==1.0.5
packaging==21.3
platformdirs==3.8.1
pyparsing==3.1.0
pyproject-hooks==1.0.0
requests==2.31.0
certifi==2023.07.22
chardet==5.1.0
idna==3.4
urllib3==1.26.17
rich==13.4.2 (Unable to locate actual module version, using vendor.txt specified version)
pygments==2.15.1
typing_extensions==4.7.1 (Unable to locate actual module version, using vendor.txt specified version)
resolvelib==1.0.1
setuptools==68.0.0 (Unable to locate actual module version, using vendor.txt specified version)
six==1.16.0
tenacity==8.2.2 (Unable to locate actual module version, using vendor.txt specified version)
tomli==2.0.1
truststore==0.8.0
webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
Compatible tags: 42
cp312-cp312-linux_armv5tel
cp312-abi3-linux_armv5tel
cp312-none-linux_armv5tel
cp311-abi3-linux_armv5tel
cp310-abi3-linux_armv5tel
cp39-abi3-linux_armv5tel
cp38-abi3-linux_armv5tel
cp37-abi3-linux_armv5tel
cp36-abi3-linux_armv5tel
cp35-abi3-linux_armv5tel
cp34-abi3-linux_armv5tel
cp33-abi3-linux_armv5tel
cp32-abi3-linux_armv5tel
py312-none-linux_armv5tel
py3-none-linux_armv5tel
py311-none-linux_armv5tel
py310-none-linux_armv5tel
py39-none-linux_armv5tel
py38-none-linux_armv5tel
py37-none-linux_armv5tel
py36-none-linux_armv5tel
py35-none-linux_armv5tel
py34-none-linux_armv5tel
py33-none-linux_armv5tel
py32-none-linux_armv5tel
py31-none-linux_armv5tel
py30-none-linux_armv5tel
cp312-none-any
py312-none-any
py3-none-any
py311-none-any
py310-none-any
py39-none-any
py38-none-any
py37-none-any
py36-none-any
py35-none-any
py34-none-any
py33-none-any
py32-none-any
py31-none-any
py30-none-any

We might need to first see if cargo-dist can support it, since that generates our installers (and so is the error you're hitting in CURL).

uv is not building on my machine:
cargo rustc --message-format json-render-diagnostics --manifest-path .\crates\uv\Cargo.toml --release --bin uv -- -C strip=symbols

Failed to build a native library through cargo

Relevant system information:
OS Name:                       Microsoft Windows 11 Home
OS Version:                    10.0.26100 N/A Build 26100
System Type:                   ARM64-based PC
Processor(s):                  1 Processor(s) Installed.
                               [01]: ARMv8 (64-bit) Family 8 Model 1 Revision 201 Qualcomm Technologies Inc ~2188 Mhz

For my use case I don't think the installer would be essential - I actually need to build uv from sources anyway due to the cross compilation requirement (Debian stable only offers rust 1.70, can't really work around that). I build the uv wheel on a Ubuntu VM, then install it via pip. I just need the resulting binary to work on the end machine.

Why oh why does it ignore a valid python setup? Can I force to use it somehow?
$ uv python list --verbose
DEBUG uv 0.5.4 (c62c83c37 2024-11-20)
DEBUG Searching for any Python interpreter in managed installations or search path
DEBUG Searching for managed installations at `/home/homeassistant/.local/share/uv/python`
DEBUG Failed to inspect Python interpreter from search path at `bin/python`
DEBUG Skipping bad interpreter at /srv/homeassistant/bin/python from search path: Querying Python at `/srv/homeassistant/bin/python` did not return the expected data
unknown variant `armv5tel`, expected one of `aarch64`, `arm64`, `armv6l`, `armv7l`, `armv8l`, `powerpc64le`, `ppc64le`, `powerpc64`, `ppc64`, `i386`, `i686`, `x86`, `amd64`, `x86_64`, `s390x`, `riscv64`
--- stdout:
{
    "gil_disabled": false,
    "manylinux_compatible": true,
    "markers": {
        "implementation_name": "cpython",
        "implementation_version": "3.13.1",
        "os_name": "posix",
        "platform_machine": "armv5tel",
        "platform_python_implementation": "CPython",
        "platform_release": "5.15.5-kirkwood-tld-1",
        "platform_system": "Linux",
        "platform_version": "#1.0 PREEMPT Sun Nov 28 23:08:13 PST 2021",
        "python_full_version": "3.13.1",
        "python_version": "3.13",
        "sys_platform": "linux"
    },
    "platform": {
        "arch": "armv5tel",
        "os": {
            "major": 2,
            "minor": 36,
            "name": "manylinux"
        }
    },
    "pointer_size": "32",
    "result": "success",
    "scheme": {
        "data": "/srv/homeassistant",
        "include": "/srv/homeassistant/include/site/python3.13",
        "platlib": "/srv/homeassistant/lib/python3.13/site-packages",
        "purelib": "/srv/homeassistant/lib/python3.13/site-packages",
        "scripts": "/srv/homeassistant/bin"
    },
    "stdlib": "/home/homeassistant/.pyenv/versions/3.13.1/lib/python3.13",
    "sys_base_exec_prefix": "/home/homeassistant/.pyenv/versions/3.13.1",
    "sys_base_executable": "/home/homeassistant/.pyenv/versions/3.13.1/bin/python3.13",
    "sys_base_prefix": "/home/homeassistant/.pyenv/versions/3.13.1",
    "sys_executable": "/srv/homeassistant/bin/python",
    "sys_path": [
        "/home/homeassistant/.cache/uv/.tmpMXmdd3",
        "/home/homeassistant/.pyenv/versions/3.13.1/lib/python313.zip",
        "/home/homeassistant/.pyenv/versions/3.13.1/lib/python3.13",
        "/home/homeassistant/.pyenv/versions/3.13.1/lib/python3.13/lib-dynload",
        "/srv/homeassistant/lib/python3.13/site-packages"
    ],
    "sys_prefix": "/srv/homeassistant",
    "sysconfig_prefix": "/home/homeassistant/.pyenv/versions/3.13.1",
    "virtualenv": {
        "data": "",
        "include": "include/site/python3.13",
        "platlib": "lib/python3.13/site-packages",
        "purelib": "lib/python3.13/site-packages",
        "scripts": "bin"
    }
}
--- stderr:

---

@lscorcia that error is from
https://github.com/astral-sh/uv/blob/d70160a57b74ed0f5a8b011ef146fdc841f2b463/crates/uv-python/src/interpreter.rs#L682-L687
when deserializing
https://github.com/astral-sh/uv/blob/d70160a57b74ed0f5a8b011ef146fdc841f2b463/crates/uv-python/src/interpreter.rs#L609-L626
specifically
https://github.com/astral-sh/uv/blob/91c3ebc6f7bf07c4a5b9c9bd22f9d65e31c38c75/crates/uv-platform-tags/src/platform.rs#L75-L93
it seems fine to add a new variant there, if that works for you?

Thanks for your suggestion! I was able to create a patched version of uv and now it recognizes my Python environment. I sent a PR with the changes, but since I'm no expert it will probably require some additional work. Any review will be welcome!


⚠ Jenkins Plugins Artifactory has degraded performance

In 771dad5, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1276 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 9b07c1e after 40 minutes.


less fractions for the billing rate in contracts page

maybe 3 digits is enough like the hourly one.

Should use normalizeBalance from here

Work completed:
Used toFixed(3) to limit decimals.

can we check if it's 0 to not do that rounding? as it will look like that

environment used: devnet
verfied now 3 decimals are only viewed

testlodge:
https://app.testlodge.com/a/26076/projects/40893/suites/234374

Verified:

Devnet
000eea2
zeros working fine too


Subcommand metrics should support --metric=  to configure what metrics to compute

Even though we only support one metric for now, it is good to specify --metric=gpsnr in the example to be more explicit.

PCC Arena relies on mpeg-pcc-dmetric which has access control for users. My account is pending approval from your GitLab administrator and hence blocked.

Update:
I am still waiting for the approval from mpeg git lab admin

acd_rt,0.28488
acd_tr,0.14853
cd,0.21670
cd_psnr,66.34506
hd,11.11106
lc_psnr,46.94806
psnr_drms(fix resolution 1024),70.42217
vqoe,0.14426

these metrics are implemented


drivers: spi: spi_rpi_pico_pio: Byte order is incorrect

Describe the bug
The PIO-based SPI driver for the Raspberry Pi Pico (and the RP2040 in general) sends data out the SPI bus in the wrong byte order when SPI_WORD_SET() is 16 or 32 bits, and reverses the byte order of the input data.  Data is passed to the SPI driver (tx buffer) in the byte order intended for transmission.  However, the little-endian PIO SPI driver treats the data as 16- or 32-bit integers, loading the data into the transmit FIFO in the reverse of the correct order and not correcting the reversed data in the receive FIFO.

Target platform:  Raspberry Pi Pico, Pico W  (Probably affects other RP2040 platforms as well.)
Work-around:  Modify calling code to re-order data (generally impractical, in my opinion).
Not a regression, bug in original code.

To Reproduce
Steps to reproduce the behavior:

The only readily available device that supports SPI_WORD_SET(32) in Zephyr is the TI TMAG5170 sensor.
Wire the TMAG5170 to the Raspberry Pi Pico (see "Additional context" for configuration).
Build samples/sensor/magn_polling, adding the boards/rpi_pico.overlay provided below, with the command west build -p auto -b rpi_pico
While monitoring the SPI bus, run the generated sample.

Observed behavior
The command to read the TEST_CONFIG register should be 0x8F000008, but is sent on the bus as 0x08 0x00 0x00 0x8F.  The input line receives 0xE0 0x00 0x00 0x8B, but the status message delivered to the application is 0x8B0000E0.  The TMAG5170 driver repeats the attempt to read the TEST_CONFIG register, never leaving the driver's init function.
Expected behavior
The data should be transmitted in the order provided, regardless of the CPU byte order:  0x8F 0x00 0x00 0x08, and the received data should be placed in the rx buffer in the order expected:  0xE0 0x00 0x00 0x8B.
Impact
The PIO SPI driver cannot operate correctly in either SPI_WORD_SET(16) or SPI_WORD_SET(32) configurations.
Logs and console output
Data as exchanged on the SPI bus (first two 32-bit exchanges):
Time [s],Packet ID,MOSI,MISO
0.0000392500,0,0x08,0xE0
0.0000472500,0,0x00,0x00
0.0000552500,0,0x00,0x00
0.0000632500,0,0x8F,0x8B
0.0000892500,0,0x08,0xE0
0.0000972500,0,0x00,0x00
0.0001052500,0,0x00,0x00
0.0001132500,0,0x8F,0x8B

Environment (please complete the following information):

OS:  Linux (Ubuntu 22.04.4 LTS)
Toolchain:  Zephyr SDK
Commit SHA:  5409c7c13041f4ed4fed0f212c4125f1e52aeca8

Additional context
boards/rpi_pico.overlay used to build sample:
/ {
	aliases {
		magn0 = &tmag5170;
	};
};

&pinctrl {
	pio0_spi0_default: pio0_spi0_default {
		/* gpio 9 is used for chip select, not assigned to the PIO */
		group1 {
			pinmux = <PIO0_P10>, <PIO0_P11>;
		};
		group2 {
			pinmux = <PIO0_P8>;
			input-enable;
		};
	};

};

&pio0 {
 	status = "okay";

	pio0_spi0: pio0_spi0 {
		pinctrl-0 = <&pio0_spi0_default>;
		pinctrl-names = "default";

		compatible = "raspberrypi,pico-spi-pio";
		status = "okay";
		#address-cells = <1>;
		#size-cells = <0>;
		clocks = <&clocks RPI_PICO_CLKID_CLK_SYS>;
		miso-gpios = <&gpio0 8 0>;
		cs-gpios = <&gpio0 9 GPIO_ACTIVE_LOW>;
		clk-gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
		mosi-gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
		tmag5170: tmag5170@0 {
			compatible = "ti,tmag5170";
			reg = <0>;
			operating-mode = <3>;
			spi-max-frequency = <1000000>; /* conservatively set to 1MHz */
		};
	};
};

TMAG5170 connections to RPI Pico:

CS to GPIO 9
CLK to GPIO 10
MOSI to GPIO 11
MISO to GPIO 8

@morsisko - Feel free to comment on this issue.

Hello, sorry for late response. When I was designing the driver I was using mainly ESP32 SPI driver. I also encountered bugs described here: https://github.com/zephyrproject-rtos/zephyr/issues/54746
ESP32 driver send bytes as they are in the buffer (so that byte[0] will be send first on the SPI, then byte[1] and so on). I don't know if it is correct behavior or not, however definitely there needs to be some kind of agreement about the byte order between different SPI drivers.

@morsisko - Thanks.  I think I have the Pico PIO SPI driver working that way, too.  It seems like a sensible convention:  Send the bytes in the order in the buffer, whether sending 8, 16, or 32 bytes in a transaction.  Once I have a pull request ready we should be able to close this issue.

@yonsch - Can you remove the "stale" label?  The fix for this was supposed to be in 3.7, but didn't get reviewed in time.

dismiss stale


No records under "Events"

On my 2 YiHome1080p I have installed the version V0.1.7 and V0.1.8.
All was running. Since 2 days when I open a directory under "Motion Events" there are no videos in the folder (both cameras).
I see only "No events in this folder".
BUT when I look through the camera APP, I can see the recording. And on the SD card I have also the recording folder with videos.
How can i fix this "problem"?

Which suffix?

Both cameras are "Yi 1080p Home IFUS" with sw V9.0.36 and I use the "y211ga". Ore what do you mean with suffix?

Login with ssh and print the content of the folder /tmp/sd/record

in the folder I have:
Factory.done
newbackup
System Volume Infomation
record
log
yi-hack
lower_half_ini.sh
and if I open "record" I can see recorded files like "2021Y07M04D16H"

In the folder /tmp/sd/record I have this here:
2021Y07M04D16H  2021Y07M04D20H  2021Y07M05D00H  2021Y07M05D04H  2021Y07M05D08H
2021Y07M04D17H  2021Y07M04D21H  2021Y07M05D01H  2021Y07M05D05H  2021Y07M05D09H
2021Y07M04D18H  2021Y07M04D22H  2021Y07M05D02H  2021Y07M05D06H  tmp.mp4.tmp
2021Y07M04D19H  2021Y07M04D23H  2021Y07M05D03H  2021Y07M05D07H

Ok, this is ok.
Try to run the cgi:
http://IP-CAM:8080/cgi-bin/eventsdir.sh

then I got this:
{"records":[
{
"datetime":"Date: 2021-07-05 Time: 15:00",
"dirname":"2021Y07M05D15H"
},
{
"datetime":"Date: 2021-07-05 Time: 14:00",
"dirname":"2021Y07M05D14H"
},
.
.
.
.
.
{
"datetime":"Date: 2021-07-05 Time: 03:00",
"dirname":"2021Y07M05D03H"
},
{
"datetime":"Date: 2021-07-05 Time: 02:00",
"dirname":"2021Y07M05D02H"
}
]}

And this is ok.
Please try to update the cache of your browser.

I have update the cache and also I have try a other PC and mobil phone to test it.
But still the same, no records in the web page. I have also 2 other YiHome 1080p (9FUS) cameras with the MStar hack. here I can see the recordings.
Only my two "IFUS" cameras worked perfectly for days and then suddenly no more recordings were visible.

Please open the console of the browser and check if there are errors.

the console of my internet browser? Maybe you can tell me what exactly I have to do to give you the right informations :-)

I can't understand...

I do not understand that, too. If I run "http://IP-CAM:8080/cgi-bin/eventsdir.sh" I can see the single directory names also in the wep page. But if I open the directory I see only "No events in this folder" ... but there are videos in the folder :-(

Wait...
Maybe there is a misunderstanding.
What's your scenario?
1 - When you click "Motion events" page you see directories but when you click the dir you can't see the files.
2 - When you click "Motion events" page you don't see directories.

1

Ok.
Login with ssh and print the content of the folder /tmp/sd/record/2021Y07M05D02H
And run this:
http://<IP_ADDRESS>:8080/cgi-bin/eventsfile.sh?dirname=2021Y07M05D02H

SSH =>  /tmp/sd/record/2021Y07M06D10H :
E200M00S60.mp4  E213M00S60.mp4  E225M00S60.mp4  E237M00S60.mp4  E249M00S60.mp4
E201M00S60.mp4  E214M00S60.mp4  E226M00S60.mp4  E238M00S60.mp4  E250M00S60.mp4
.
.
.
E210M00S60.mp4  E222M00S60.mp4  E234M00S60.mp4  E246M00S60.mp4  E258M00S60.mp4
E211M49S11.mp4  E223M00S60.mp4  E235M00S60.mp4  E247M00S60.mp4  E259M00S60.mp4
E212M00S60.mp4  E224M00S60.mp4  E236M00S60.mp4  E248M00S60.mp4

And the result of "http://<IP_ADDRESS>:8080/cgi-bin/eventsfile.sh?dirname=2021Y07M06D10H" :
{"date":"2021-07-06",
"records":[
]}

I already fixed this problem here:
https://github.com/roleoroleo/yi-hack-Allwinner-v2/commit/8a6f48bb69396f7334ee1c70e70b37ab724f31ca
Are you sure you are using 0.1.8?

Yes, I have installed it twice from here:
https://github.com/roleoroleo/yi-hack-Allwinner-v2/releases

Show me the file eventsfile.sh
cat /tmp/sd/yi-hack/www/cgi-bin/eventsfile.sh

hee the eventsfile.sh :
#!/bin/sh
printf "Content-type: application/json\r\n\r\n"
case $QUERY_STRING in
['!"@#$%^()_+.,:;]* ) exit;;
esac
CONF="$(echo $QUERY_STRING | cut -d'=' -f1)"
VAL="$(echo $QUERY_STRING | cut -d'=' -f2)"
MODEL_SUFFIX=$(cat /tmp/sd/yi-hack/model_suffix)
if [ "$MODEL_SUFFIX" == "r40ga" ]; then
NUMCHAR=14
else
NUMCHAR=12
fi
if [ "$CONF" == "dirname" ]; then
DIR=$VAL
fi
printf "{"date":"${DIR:0:4}-${DIR:5:2}-${DIR:8:2}",\n"
printf ""records":[\n"
COUNT=ls -r /tmp/sd/record/$DIR | grep mp4 -c
IDX=1
for f in ls -r /tmp/sd/record/$DIR | grep mp4; do
if [ ${#f} == $NUMCHAR ]; then
printf "{\n"
if [ $NUMCHAR == 14 ]; then
printf ""%s":"%s",\n" "time" "Time: ${DIR:11:2}:${f:2:2}"
else
printf ""%s":"%s",\n" "time" "Time: ${DIR:11:2}:${f:0:2}"
fi
printf ""%s":"%s"\n" "filename" "$f"
if [ "$IDX" == "$COUNT" ]; then
printf "}\n"
else
printf "},\n"
fi
IDX=$(($IDX+1))
fi
done
printf "]}\n"

And did you find the fault?

Tested on my cam, it works perfectly.
I don't know.
Try this command:
cat /tmp/sd/yi-hack/model_suffix

result: y211ga

result: y211ga

On my "Yi 1080p Home IFUS" I have the SW version <IP_ADDRESS>_202105081647
I use the kami APP and I don't know exactly, but there was an upgrade via this APP and I think it has not worked since then.
But I'm not sure.

... and your mp4 recording (the structure) is just like mine? => E257M00S60.mp4

I manually created an identical structure.
But try this change on line 12.
From
if [ "$MODEL_SUFFIX" == "r40ga" ]; then
to
if [ "$MODEL_SUFFIX" == "r40ga" ] || [ "$MODEL_SUFFIX" == "y211ga" ]; then

Perfect this is working :-)
So 14 was the magic number. Now all entries are back. Thank you so much :-)

I had exactly the same issue and this solved my problem too.
Thank you very much

Read your model:
cat /tmp/sd/yi-hack/model_suffix
Edit your eventsfile:
vi /tmp/sd/yi-hack/www/cgi-bin/eventsfile.sh
Enter ":w" and ":q" and you're saved. ;)
And you are happy, me too.
Thanks for this great info!

This worked for me too,
Outdoor 1080p IFUS (H30GA)
Thanksssss


Unable to read typings for "angular2-beta-to-rc-alias"

I'm submitting a ...
[ x ] bug report
[ ] feature request
[ ] question about the decisions made in the repository

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

Report a bug

What is the current behavior?

npm install fails because of an error during the typings install process

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar.

Clone the repo.
Run npm install

What is the expected behavior?

Install should complete successfully

What is the motivation / use case for changing the behavior?

n/a

Please tell us about your environment:

OSX v10.11.5
npm v3.5.3
node v.5.6.0
typings v1.3.1

Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc)

Error message:
typings ERR! message Unable to read typings for "angular2-beta-to-rc-alias". You should check the entry paths in "typings.d.ts" are up to date
typings ERR! caused by ENOENT: no such file or directory, open<EMAIL_ADDRESS>

typings.json currently looks like this:
{
  "globalDependencies": {
    "angular-protractor": "registry:dt/angular-protractor#1.5.0+20160425143459",
    "core-js": "registry:dt/core-js#0.0.0+20160317120654",
    "hammerjs": "registry:dt/hammerjs#2.0.4+20160417130828",
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
    "node": "registry:dt/node#6.0.0+20160514165920",
    "selenium-webdriver": "registry:dt/selenium-webdriver#2.44.0+20160317120654",
    "source-map": "registry:dt/source-map#0.0.0+20160317120654",
    "uglify-js": "registry:dt/uglify-js#2.6.1+20160316155526",
    "webpack": "registry:dt/webpack#1.12.9+20160321060707",
    "angular2-beta-to-rc-alias"<EMAIL_ADDRESS>  }
}

Is it trying to find a local file for angular2-beta-to-rc-alias?

I made a mess when played with different libraries. Now everything is fixed and tested locally.
Thank you.

Perfect, that's fixed it - thank you


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-yml-archive-non-versioning-archive/pull/190 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-yml-archive-non-versioning-archive.git

Docs Build status updates of commit 99f0805:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

docs/TOC.yml
:white_check_mark:Succeeded
View

docs/index.yml
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-1.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-2.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/article3-1-3.yml
:white_check_mark:Succeeded
View

docs/to-be-archive/level1/sql-database-engine.png
:white_check_mark:Succeeded

docs/to-be-archive/level2/article3-2-1.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-2.md
:white_check_mark:Succeeded
View

docs/to-be-archive/level2/article3-2-3.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Failed precondition error when trying to compile hlo

Hello,
I am currently trying to run a jax function from c++ similiar to https://github.com/google/jax/issues/5337 and https://github.com/google/jax/issues/2766. However, when trying to compile the hlo file produced by jax_to_hlo.py, I get the following error:
2021-01-28 17:14:23.168398: I tensorflow/core/platform/profile_utils/cpu_utils.cc:112] CPU Frequency:<PHONE_NUMBER> Hz
2021-01-28 17:14:23.171305: I tensorflow/compiler/xla/service/service.cc:169] XLA service 0x5642643a24f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-01-28 17:14:23.171340: I tensorflow/compiler/xla/service/service.cc:177]   StreamExecutor device (0): Host, Default Version
2021-01-28 17:14:23.176602: F tensorflow/stream_executor/lib/statusor.cc:34] Attempting to fetch value instead of handling error Failed precondition: Expected comparison type SIGNED.
actual: UNSIGNED
operand: s64[]

I tried to run the HloModule with PJRT and with LocalClient/LocalExecutable and got the same error.
The function im trying to run in c++ is a function to update the neihgborlist and return the updated indices. The example is mostly taken from this notebook from jax-md: https://colab.research.google.com/github/google/jax-md/blob/master/notebooks/nve_neighbor_list.ipynb
@jit
def neighbor_update(R, nbrs):
    nbrs = neighbor_fn(R, nbrs)
    return nbrs.idx

I have attached the python file and the produced hlo.txt file. I used R as input and nbrs as constant when exporting the hlo (I tried both as constants and both as global parameters inside the function, but got the same results)
The code to compile the hlo is mostly taken from https://github.com/google/jax/issues/2766.
I run the c++ file with bazel.
#include <memory>
#include <string>
#include <vector>
#include "tensorflow/compiler/xla/tools/hlo_module_loader.h"
#include "tensorflow/core/platform/init_main.h"
#include "tensorflow/compiler/xla/service/platform_util.h"
#include "tensorflow/compiler/xla/client/client_library.h"

int main(int argc, char** argv) {
    tensorflow::port::InitMain("", &argc, &argv);
    using namespace xla;

    std::string pathToModel = "/tmp/nbrs_hlo.txt";
    se::Platform* platform =
            xla::PlatformUtil::GetPlatform("cpu").ValueOrDie();

    std::unique_ptr<xla::HloModule> module = xla::LoadModuleFromFile(pathToModel).ValueOrDie();
    xla::LocalClient* client = xla::ClientLibrary::GetOrCreateLocalClient(platform).ValueOrDie();
    xla::Shape state_shape = xla::ShapeUtil::MakeShape(xla::F64, {6400,2});

    std::vector<std::unique_ptr<xla::LocalExecutable>>linearizeExecutable = client->Compile(xla::XlaComputation(module->ToProto()),
                                                         {&state_shape},
                                                         xla::ExecutableBuildOptions()).ValueOrDie();

    return 0;
}

When manually changing the type=UNSIGNED to SIGNED or FLOATS inside the hlo.txt file, the file compiles, but gives (as expected) the wrong result.
Is this a bug in the HLO pipeline? Any help is appreciated!
Thanks in advance!
HLOerror.zip

Can you provide the jax_to_hlo.py command you're using to generate the HLO?

Can you provide the jax_to_hlo.py command you're using to generate the HLO?

Of course!
I started with R as input and nbrs as global parameter inside the function and used jax_to_hlo.py from the commandline:
python3 jax_to_hlo.py --fn neighborlist_test.neighbor_update --input_shapes '[("R", "f64[6400,2]")]' --hlo_text_dest /path_to_hlo/nbrs_hlo.txt
Then i tried to insert the nbrs as a constant and called jax_to_hlo.py from inside a python file:
import os
from ast import literal_eval
from jax.lib import xla_client
import jax.numpy as jnp
from jax.tools.jax_to_hlo import jax_to_hlo
from neighborlist_test import neighbor_update, nbrs

hlo_text_dest = '/path_to_hlo/nbrs_hlo.txt'
hlo_proto_dest = '/path_to_hlo/nbrs_hlo.pb'

fn = neighbor_update

manual_input = '[("R", "f64[6400,2]")]'

constants = {"nbrs": nbrs} #nbrs as constant

input_shapes = [(name, xla_client.Shape(shape_str))
                  for name, shape_str in literal_eval(manual_input)]

hlo_proto, hlo_text = jax_to_hlo(fn, input_shapes, constants)

with open(hlo_text_dest, 'w') as f:
  f.write(hlo_text)

with open(hlo_proto_dest, 'wb') as f:
  f.write(hlo_proto)

Of course!
I started with R as input and nbrs as global parameter inside the function and used jax_to_hlo.py from the commandline:
python3 jax_to_hlo.py --fn neighborlist_test.neighbor_update --input_shapes '[("R", "f64[6400,2]")]' --hlo_text_dest /path_to_hlo/nbrs_hlo.txt
Then i tried to insert the nbrs as a constant and called jax_to_hlo.py from inside a python file:
import os
from ast import literal_eval
from jax.lib import xla_client
import jax.numpy as jnp
from jax.tools.jax_to_hlo import jax_to_hlo
from neighborlist_test import neighbor_update, nbrs

hlo_text_dest = '/path_to_hlo/nbrs_hlo.txt'
hlo_proto_dest = '/path_to_hlo/nbrs_hlo.pb'

fn = neighbor_update

manual_input = '[("R", "f64[6400,2]")]'

constants = {"nbrs": nbrs} #nbrs as constant

input_shapes = [(name, xla_client.Shape(shape_str))
                  for name, shape_str in literal_eval(manual_input)]

hlo_proto, hlo_text = jax_to_hlo(fn, input_shapes, constants)

with open(hlo_text_dest, 'w') as f:
  f.write(hlo_text)

with open(hlo_proto_dest, 'wb') as f:
  f.write(hlo_proto)

Hm, when I run your Python code above for calling jax_to_hlo, the resulting HLO doesn't have the error-causing unsigned comparisons. Can you confirm that you're running the latest jax and jaxlib versions, or try upgrading if not?
I also noticed the HLO file you provided uses Windows-style newlines, do you happen to be running on Windows? I wouldn't think that would make a difference here, but maybe worth checking.

Hm, when I run your Python code above for calling jax_to_hlo, the resulting HLO doesn't have the error-causing unsigned comparisons. Can you confirm that you're running the latest jax and jaxlib versions, or try upgrading if not?
I also noticed the HLO file you provided uses Windows-style newlines, do you happen to be running on Windows? I wouldn't think that would make a difference here, but maybe worth checking.

Apparently it was caused by an older version. After updating jax (0.2.6->0.2.9), jax-md (0.1.8 -> 0.1.10) and jaxlib (0.1.56->0.1.59) I was able to compile it without the type=unsigned!
I tried to compile a simple function and check the output similiar to the Example in https://github.com/google/jax/issues/5337. I used R and nbrs as constants and just returned the mean of the index:
@jit
def neighbor_update(R, nbrs):
    nbrs = neighbor_fn(R, nbrs)
    return onp.mean(nbrs.idx)

For this example this should ouput: 3938.076923076923 but the output I get from compiling it with the pjrt client is:
2021-01-31 16:27:00.691322: I tensorflow/compiler/xla/service/service.cc:177]   StreamExecutor device (0): Host, Default Version
result = (
f64[] 108799.5

Did I make a mistake here?
I used the following file to compile the hlo:
#include <memory>
#include <string>
#include <vector>
#include "tensorflow/compiler/xla/literal.h"
#include "tensorflow/compiler/xla/literal_util.h"
#include "tensorflow/compiler/xla/pjrt/cpu_device.h"
#include "tensorflow/compiler/xla/pjrt/pjrt_client.h"
#include "tensorflow/compiler/xla/status.h"
#include "tensorflow/compiler/xla/statusor.h"
#include "tensorflow/compiler/xla/tools/hlo_module_loader.h"
#include "tensorflow/core/platform/init_main.h"
#include "tensorflow/core/platform/logging.h"

int main(int argc, char** argv) {
  tensorflow::port::InitMain("", &argc, &argv);

  // Load HloModule from file.
  std::string hlo_filename = "/path_to_hlo/nbrs_hlo.txt";
  std::function<void(xla::HloModuleConfig*)> config_modifier_hook =
      [](xla::HloModuleConfig* config) { config->set_seed(42); };
  std::unique_ptr<xla::HloModule> test_module =
      LoadModuleFromFile(hlo_filename, xla::hlo_module_loader_details::Config(),
                         "txt", config_modifier_hook)
          .ValueOrDie();
  const xla::HloModuleProto test_module_proto = test_module->ToProto();

  // Run it using JAX C++ Runtime (PJRT).

  // Get a CPU client.
  std::unique_ptr<xla::PjRtClient> client =
      xla::GetCpuClient(/*asynchronous=*/true).ValueOrDie();

  // Compile XlaComputation to PjRtExecutable.
  xla::XlaComputation xla_computation(test_module_proto);

  xla::CompileOptions compile_options;

  std::unique_ptr<xla::PjRtExecutable> executable =
      client->Compile(xla_computation, compile_options).ValueOrDie();

  // Execute on CPU.
  xla::ExecuteOptions execute_options;
  // One vector<buffer> for each device.
  std::vector<std::vector<std::unique_ptr<xla::PjRtBuffer>>> results =
      executable->Execute({{}}, execute_options)
          .ValueOrDie();

  // Get result.
  std::shared_ptr<xla::Literal> result_literal =
      results[0][0]->ToLiteral().ValueOrDie();
  LOG(INFO) << "result = " << *result_literal;

  return 0;
}

Thank you for your help!

Apparently it was caused by an older version. After updating jax (0.2.6->0.2.9), jax-md (0.1.8 -> 0.1.10) and jaxlib (0.1.56->0.1.59) I was able to compile it without the type=unsigned!
I tried to compile a simple function and check the output similiar to the Example in https://github.com/google/jax/issues/5337. I used R and nbrs as constants and just returned the mean of the index:
@jit
def neighbor_update(R, nbrs):
    nbrs = neighbor_fn(R, nbrs)
    return onp.mean(nbrs.idx)

For this example this should ouput: 3938.076923076923 but the output I get from compiling it with the pjrt client is:
2021-01-31 16:27:00.691322: I tensorflow/compiler/xla/service/service.cc:177]   StreamExecutor device (0): Host, Default Version
result = (
f64[] 108799.5

Did I make a mistake here?
I used the following file to compile the hlo:
#include <memory>
#include <string>
#include <vector>
#include "tensorflow/compiler/xla/literal.h"
#include "tensorflow/compiler/xla/literal_util.h"
#include "tensorflow/compiler/xla/pjrt/cpu_device.h"
#include "tensorflow/compiler/xla/pjrt/pjrt_client.h"
#include "tensorflow/compiler/xla/status.h"
#include "tensorflow/compiler/xla/statusor.h"
#include "tensorflow/compiler/xla/tools/hlo_module_loader.h"
#include "tensorflow/core/platform/init_main.h"
#include "tensorflow/core/platform/logging.h"

int main(int argc, char** argv) {
  tensorflow::port::InitMain("", &argc, &argv);

  // Load HloModule from file.
  std::string hlo_filename = "/path_to_hlo/nbrs_hlo.txt";
  std::function<void(xla::HloModuleConfig*)> config_modifier_hook =
      [](xla::HloModuleConfig* config) { config->set_seed(42); };
  std::unique_ptr<xla::HloModule> test_module =
      LoadModuleFromFile(hlo_filename, xla::hlo_module_loader_details::Config(),
                         "txt", config_modifier_hook)
          .ValueOrDie();
  const xla::HloModuleProto test_module_proto = test_module->ToProto();

  // Run it using JAX C++ Runtime (PJRT).

  // Get a CPU client.
  std::unique_ptr<xla::PjRtClient> client =
      xla::GetCpuClient(/*asynchronous=*/true).ValueOrDie();

  // Compile XlaComputation to PjRtExecutable.
  xla::XlaComputation xla_computation(test_module_proto);

  xla::CompileOptions compile_options;

  std::unique_ptr<xla::PjRtExecutable> executable =
      client->Compile(xla_computation, compile_options).ValueOrDie();

  // Execute on CPU.
  xla::ExecuteOptions execute_options;
  // One vector<buffer> for each device.
  std::vector<std::vector<std::unique_ptr<xla::PjRtBuffer>>> results =
      executable->Execute({{}}, execute_options)
          .ValueOrDie();

  // Get result.
  std::shared_ptr<xla::Literal> result_literal =
      results[0][0]->ToLiteral().ValueOrDie();
  LOG(INFO) << "result = " << *result_literal;

  return 0;
}

Thank you for your help!

Are you sure that's your up-to-date C++ code? It's not passing any arguments into executable->Execute, so I get an error from that when I try to run it.

Hello skye,
sorry for the delayed answer. In the example above I did not use an input_shape, I used only constants and extraded the hlo with the python file. I made a better  example this time:
I tried using global parameters inside the function (like the position array or nbrs array), but, when using jax numpy arrays, the output value was wrong (probably because the value of the array is not available during compile).
I made a really small reproducable python example with 3 functions. One uses a globally defined jax np array, one a original np array and  one uses an array as input. Then I just shift an index by a scalar and return it.
array_test.zip
I extracted the hlo with the following commands:
python3 jax_to_hlo.py --fn array_test.onp_array --input_shapes '[("scalar", "f32[1]")]' --hlo_text_dest /file_to_hlo/onp_array_hlo.txt

python3 jax_to_hlo.py --fn array_test.jnp_array --input_shapes '[("scalar", "f32[1]")]' --hlo_text_dest /file_to_hlo/jnp_array_hlo.txt

python3 jax_to_hlo.py --fn array_test.input_array --input_shapes '[("ar", "f32[7,2]")]' --constants '{"scalar": 3.0}' --hlo_text_dest /file_to_hlo/input_array_hlo.txt

Then I compiled it with the pjrt client:
#include <memory>
#include <string>
#include <vector>
#include "tensorflow/compiler/xla/literal.h"
#include "tensorflow/compiler/xla/literal_util.h"
#include "tensorflow/compiler/xla/pjrt/cpu_device.h"
#include "tensorflow/compiler/xla/pjrt/pjrt_client.h"
#include "tensorflow/compiler/xla/status.h"
#include "tensorflow/compiler/xla/statusor.h"
#include "tensorflow/compiler/xla/tools/hlo_module_loader.h"
#include "tensorflow/core/platform/init_main.h"
#include "tensorflow/core/platform/logging.h"

int main(int argc, char** argv) {
  tensorflow::port::InitMain("", &argc, &argv);

  // Load HloModule from file.
  std::string hlo_filename = "/path_to_hlo/input_array_hlo.txt";
  std::function<void(xla::HloModuleConfig*)> config_modifier_hook =
      [](xla::HloModuleConfig* config) { config->set_seed(42); };
  std::unique_ptr<xla::HloModule> test_module =
      LoadModuleFromFile(hlo_filename, xla::hlo_module_loader_details::Config(),
                         "txt", config_modifier_hook)
          .ValueOrDie();
  const xla::HloModuleProto test_module_proto = test_module->ToProto();

  // Run it using JAX C++ Runtime (PJRT).

  // Get a CPU client.
  std::unique_ptr<xla::PjRtClient> client =
      xla::GetCpuClient(/*asynchronous=*/true).ValueOrDie();

  // Compile XlaComputation to PjRtExecutable.
  xla::XlaComputation xla_computation(test_module_proto);

  xla::CompileOptions compile_options;

  std::unique_ptr<xla::PjRtExecutable> executable =
      client->Compile(xla_computation, compile_options).ValueOrDie();

  // Prepare inputs.
  xla::Literal literal_x =
      xla::LiteralUtil::CreateR2<float>({{0.0f, 0.0f}, {0.0f, 1.25f}, {0.0f, 2.5f}, {0.0f, 3.75f}, {0.0f, 5.0f}, {0.0f, 6.25f}, {0.0f, 7.5f}}); //for input_array function
      //xla::LiteralUtil::CreateR1<float>({3.0f}); //for the first 2 functions

  std::unique_ptr<xla::PjRtBuffer> param_x =
      client->BufferFromHostLiteral(literal_x, client->local_devices()[0])
        .ValueOrDie();

  // Execute on CPU.
  xla::ExecuteOptions execute_options;
  // One vector<buffer> for each device.
  std::vector<std::vector<std::unique_ptr<xla::PjRtBuffer>>> results =
      executable->Execute({{param_x.get()}}, execute_options)
          .ValueOrDie();

  // Get result.
  std::shared_ptr<xla::Literal> result_literal =
      results[0][0]->ToLiteral().ValueOrDie(); //what does this mean?
  //LOG(INFO) << "result = " << *result_literal;
  std::cout << "result = " << *result_literal;

  return 0;
}

I got the following outputs:
For original numpy array:
2021-02-04 12:24:20.563541: I tensorflow/compiler/xla/service/service.cc:177]   StreamExecutor device (0): Host, Default Version
result = (
f64[1] {4.25}
)

For jax numpy array:
2021-02-04 12:23:47.327335: I tensorflow/compiler/xla/service/service.cc:177]   StreamExecutor device (0): Host, Default Version
result = (
f64[1] {3}
)

For input array:
2021-02-04 12:24:58.751672: I tensorflow/compiler/xla/service/service.cc:177]   StreamExecutor device (0): Host, Default Version
result = (
f32[] 4.25
)

I guess this is indeed expected behaviour? The concrete values are not available for the jax numpy array.
Thank you for your help!

Hey sorry for not following up on this! Did you manage to resolve your issue?

Hello,
I was not able to use a nbrs list as a constant, but I found a workaround. Now I use the idx, reference position and max occupancy of the neigborlist as input parameter and create a new NeigborList object. Then i just update the idx and reference. This seems to work very well for my applications!

Great, glad to hear you found a workaround, and thanks for sharing!


fix failing coverage upload

Recently, every "Upload Coverage" step fails for me. This should fix it.
Example of failed "Upload Coverage" step: https://github.com/ddalcino/aqtinstall/runs/4122878621?check_suite_focus=true#step:8:31

Thank you!


M-2-M Adding existing object to child collection

Can someone remind me how to add existing objects to a TrackableEntities Collection ?
var entity = await _unitOfWork.QuestionSetRepository.FindAsync(postModel.Id);
if (entity != null)
{
entity.Title = postModel.Title;
entity.Description = postModel.Description;
entity.UpdatedBy = User.Identity.Name;
entity.UpdatedDateTime = DateTime.UtcNow;
entity.TrackingState = TrackingState.Modified;
var userList = new List<User>();

foreach (var selectedUser in postModel.SelectedUsers)
{
  var user = await _unitOfWork.UserRepository.GetUser(selectedUser.Id);

  if (user != null)
  {
    userList.Add(user);
   }
 }

 entity.Users = userList;

}
_unitOfWork.QuestionSetRepository.Update(entity);
I get the usual Primary Key violation and I've forgotten how to do the equivalent of an attach. I've tried adding the child objects directly but that produces the same result.

Make sure you update your Trackable Entities NuGet packages to the latest version (currently 2.5.1), which includes a fix for this issue #43, as well as related issue #46.
Assuming your entity has a child collection of Users, which is of type ChangeTrackingCollection, then all you have to do is add the user to the property: entity.Users.Add(user).
For more info, download TrackableEntities-Samples.zip from the v2.5 release, where you'll find a Relations sample with code to add, remove and update M2M relations.  You'll also find the sample code online.

Thanks Tony; ChangeTrackingCollection lives in the client namespace doesn't it, if I change my Model to this will it screw up my Code First EF Model ?
The code I published earlier is server side, not client side.

Should be fine, depending on your scenario.
What I recommend is upgrading to v2.5 of the VS extension, then adding a new Entities project to your solution, selecting Shared entities for .NET 4.5. You can then generate your entities the way you did before, with either the CF Model wizard in VS, or the EF Power Tools. Don't forget to update the NuGet packages for TE to v2.5.1.
This will give you support for both inheritance and server-side change tracking.
Are you using WCF or Web API?

Well it was originally using Web API but the client changed the spec so we've been still using TE but only server side.

Yeah so I would suggest using Shared entities on the server, even without a client, because the server is where you are updating entities and therefore is also acting as a client.
If you are still using Web API on the service, you'll want to have a look at configuring Json and Xml for matters to handle cycles. You can check out the Web API sample to see how that's done.

Nah the Web API is gone, it was too complicated apparently :-) Thanks for the tips, I'll upgrade the solution and move the existing code base to the new version. Thanks Tony!

Interesting!  How is the data access code being hosted?  Now you’ve got me curious. :)

So the TE services are just being called directly in the controllers, we didn't want to do it that way but the client knows best ;-)

I see, that explains it. Yes, shared entities will be the best option, and serialization is not a concern.


APIs that throw PathTooLongException may sometimes throw DirectoryNotFoundException

Not sure the best way to handle/track this. .NET Core doesn't preemptively check for path lengths anymore (as it is impossible to accurately predict). We throw PathTooLong when the OS reports it. In most cases that means behavior stays the same, but in some rare cases you can get DirectoryNotFound instead of PathTooLong.
I give a somewhat detailed description here: https://github.com/dotnet/corefx/issues/24567#issuecomment-335936074
It may be enough to just make sure that all APIs that have PathTooLong also have DirectoryNotFound. We may also want to consider mentioning that in exceptional cases long paths can return DirectoryNotFound.
If there is a better way to reflect this behavior I'm open to suggestions.

On current CoreFx Master this behavior still exists on NETFX x86 Release Build. All Unix builds work, some Windows system throw IO.DirectoryNotFoundException, others work with long paths.
If this is expected
       <Fact>
        Public Sub LongDirectoryPathTest()
            Using TestBase As New FileIOTests
                Dim PathLength As Integer = TestBase.TestDirectory().Length
                Assert.True(PathLength < 257) ' Need room for slash and new directory name
                Dim DirectoryName As String = New String("B"c, 30)

                Assert.True(DirectoryName.Length < 248, $"DirectoryBaseName.Length at {DirectoryName.Length} is not < 248")
                Assert.True(IO.Directory.Exists(TestBase.TestDirectory))
                Dim FullPathToTargetDirectory As String = IO.Path.Combine(TestBase.TestDirectory, DirectoryName)
                Assert.True(FullPathToTargetDirectory.Length < 260, $"FullPathToTargetDirectory.Length at {FullPathToTargetDirectory.Length} is not < 260")
                Try
                    Dim VeryLongFullPathToTargetDirectory As String = IO.Path.Combine(TestBase.TestDirectory, New String("E"c, 239))
                    IO.Directory.CreateDirectory(VeryLongFullPathToTargetDirectory)
                    Assert.True(IO.Directory.Exists(VeryLongFullPathToTargetDirectory), $"Directory {VeryLongFullPathToTargetDirectory} does not exist")
                Catch e As IO.PathTooLongException
                    Assert.True(RuntimeInformation.IsOSPlatform(OSPlatform.Windows), "Unexpected Failure on non-Windows Platform")
                Catch e As IO.DirectoryNotFoundException
                ' You should never get here
                Throw
                End Try
            End Using
        End Sub

If this is not going to be fixed, I need to know how to identify the failed system so I can look for a different error. I don't think this is a documentation bug. It fails on a specific configuration of Windows.


Termux

is there any problem you need help  with?

No description of the issue, I'm closing the issue


iss-5

ES module target is set to ES6, which is a safe default but rather old.
- Can we use newer versions like es2022 or are there any drawbacks?
- Target runtime is specified in package.json: node >=16.18.0


licensor: fix build and upgrade cargo fetcher

The build is currently failing on master in Hydra due to 1 bad integration test;
disabled, and upgraded the fetcher along the way for https://github.com/NixOS/nixpkgs/issues/79975.

Motivation for this change
Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[X] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[X] Ensured that relevant documentation is up to date
[X] Fits CONTRIBUTING.md.

Actually, someone else has opened a PR that actually fixes the test!  I'll re-open this after that one is merged and backported.


How to reuse same connection and get a result inside a for loop

Consider this code inside for loop:

let future = conn.query(&search_user_st, &[&prm.as_str()]).collect().and_then(|(rows, _)| {

Ok(match rows.iter().nth(0) {
	Some(row) => {
	    let id:i64 = row.get(0);
            Some(id)
	}
	None => None
        })
});

let user_id = core.run(future).unwrap();

And the error is:

error[E0507]: cannot move out of borrowed content
   --> user-etl\src\main.rs:172:18
    |
172 |                 let future = conn.query(&search_user_st, &[&prm.as_str()]).collect().and_then(|(rows, _)| {
    |                              ^^^^ cannot move out of borrowed content

Duplicate of https://github.com/steffengy/tiberius/issues/49
Let me know if you need further input.

Thx, found it too. I will reopen if something goes wrong.

So i manage to make things work with your example, works great, just for the sake of learning things, can these code be composed to a stream and then run with core (similar to your sample from https://github.com/steffengy/tiberius/issues/49):
let create_user_st = conn.prepare("");

	for user in new_users {

		let future = conn.exec(&create_user_st, &[]);

		let (_, q) = core.run(future).unwrap();

		conn = q;

	}

Thx, will check.


Error authenticating to Pivnet

Hi,
following the documentation and having set up everything, I am getting an error running deploy_pcf.sh
[jbhoffmann:...-to-cash/gcp-pcf-quickstart]$ ./deploy_pcf.sh                                                                                (master)
~/dev/demos/concept-to-cash/gcp-pcf-quickstart/src/omg-tf ~/dev/demos/concept-to-cash/gcp-pcf-quickstart
omg-cli: error: authorizing pivnet credentials: <nil>, try --help

This was fixed in #17 (with updated docs in 690b2d923de3b0602d4dc724173d8bc0e01d5e3a)


Fixes { "push\npop": env: {} } dumping case.

A multiline key as an object key generates invalid YAML. E.g.
yaml.safeDump({"push\npop": {env: {}}})

yields
|-
  push
  pop:
  env: {}

This patch corrects this case, but doesn't add tests, etc. I'm happy to do any work to get it mergeable.

Thanks! Could you add tests here https://github.com/nodeca/js-yaml/blob/master/test/units/dump-scalar-styles.js ?

@puzrin Added!


Add scipy for recent constraints work

Description
Constraints use scipy but we don't reference as an install dependency, adding to pyproject.toml
General Checklist

[ ] Tests added for this feature/bug
if it was a bug, test must cover it.
[ ] Conform by the style guides, by using formatter
[ ] Documentation updated
[ ] (optional) Please add a label to your PR

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 81.874%

Totals

Change from base Build<PHONE_NUMBER>:
0%

Covered Lines:
4309

Relevant Lines:
5134

💛  - Coveralls


Fix order of conditional tests in client.rb.erb template

Description
Checks handlers for nil then empty, in that order. Prevents a blow up when handlers are indeed nil as seen in #611.
Issues Resolved
Fixes #611
Check List

[x] All tests pass. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/TESTING.MD
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable
[x] All commits have been signed for the Developer Certificate of Origin. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD

This is fixed in #635


Typescript intellisense not include .d.ts files by default

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version: 1.72.0
OS Version: macOS 12.6 on M1 chip

Steps to Reproduce:
according to typescript config docs, .d.ts files are included by defaults when using glob in the includes field. However, we have to explicitly include the .d.ts in files field in order for TS intellisense to discover the .d.ts files.
Simple project with 3 files can demonstrate the issue:
// try.d.ts
declare type A = string;

// try.ts
let a: A = "";

// tsconfig.json
{
  // "files": ["try.d.ts"],
  "include": ["**/*"]
}

the following screenshot shows that the type declared in .d.ts file is unresolved, intellisense couldn't discover the .d.ts file by default.

However, if we explicitly include .d.ts in tsconfig files field, intellisense works fine, as shown below.

Given this configuration file, try.d.ts is the output of try.ts, so thus not included. If it were included, you'd see "duplicate definition" errors.

ic... so the .d.ts files better don't use the same name with other ts files. Intellisense works fine after renaming the .d.ts. Thanks for you prompt reply :)


Module *********_android: invalid item 'Flutter for Android' in the dependencies list

[✓] Flutter (Channel stable, 1.20.2, on Mac OS X 10.15.6 19G2021, locale
zh-Hans-CN)
• Flutter version 1.20.2 at /Users/mac/Library/Flutter/Flutter
• Framework revision bbfbf1770c (8 days ago), 2020-08-13 08:33:09 -0700
• Engine revision 9d5b21729f
• Dart version 2.9.1
• Pub download mirror https://pub.flutter-io.cn
• Flutter download mirror https://storage.flutter-io.cn
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /Users/mac/Library/Android/sdk
• Platform android-30, build-tools 30.0.2
• ANDROID_HOME = /Users/mac/Library/Android/sdk
• Java binary at: /Applications/Android
Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build
1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.6, Build version 11E708
• CocoaPods version 1.9.3
[✓] Android Studio (version 4.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 48.1.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build
1.8.0_242-release-1644-b3-6222593)
[!] VS Code (version 1.48.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
✗ Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)
• HLK AL10 (mobile) • DWVNW19730006016 • android-arm64 • Android 9 (API 28)
! Doctor found issues in 1 category.

Hi @guominfang
This platform is not meant for assistance on personal code. Please see https://flutter.dev/community for resources and asking questions like this,
you may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you

Reopen it man!! I have seen similar problem out there on stacl overflow and github too ,but no one is able to suggest a solution.
If it is problem with many people then this is no issue with only personal code

@Gautam-Goyal
If you think this is a bug please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v. Instead of link
All system setups can be slightly different, so it's always better to open new issues and reference related issues.

I had the same problem and had to downgrade my build gradle from:
classpath 'com.android.tools.build:gradle:4.0.1'
to:
classpath 'com.android.tools.build:gradle:3.4.2'
then everything worked fine.

bbbbb

@Gautam-Goyal
If you think this is a bug please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v. Instead of link
All system setups can be slightly different, so it's always better to open new issues and reference related issues.

you're just closing i have never seen u helped someone :) do help people or let others do so... instead of closing the issues


health.is_global_position_ok and health.is_home_position_ok with Ardupilot

this line of code does not work with Ardupilot. It never comes out from the for loop. MissionPlanner reports GPS is healthy, and Ardupilot acquired a home position.
if health.is_global_position_ok and health.is_home_position_ok:
telemetry.Health
Pi4B Ubuntu 22.04 64-bit
Arducopter v4.2.3
Name: mavsdk
Version: 2.1.0
Summary: Python wrapper for MAVSDK
Home-page: https://github.com/mavlink/MAVSDK-Python
Author:
Author-email:
License: UNKNOWN
Location: /home/pi/.local/lib/python3.10/site-packages
Requires: aiogrpc, grpcio, protobuf
Required-by:
$

Try printing what is the response of health from telemetry:
async for health in drone.telemetry.health():
print(health,'Drone Health')
if health.is_global_position_ok and health.is_home_position_ok:
print("-- Global position state is good enough for flying.")
It checks for your Home position is set or not with GPS health.

Try printing what is the response of health from telemetry:

If I don't break from the for loop, I don't see anything printing. I can only do once or I try to do a counter.

Actually you should be getting some response printing cuz everytime you ask for response telemetry it gives you something.. if condition only is for checking if it's ok or not.
you can put a break statement after and can only run it for once. Just for testing that only this statement is a problem or not.

If it hangs there, it may mean that it never receives the message it expects. Is there a different MAVLink message between PX4 and Ardupilot here?

From this doc, it expects a boolean, my guess is all are false always.

Is there a different MAVLink message between PX4 and Ardupilot here?

Not sure, Copter Mission Command List.

Try printing what is the response of health from telemetry:

is the is_global_position_ok that failed it. But is_home_position_ok is okay, interesting.
Main in
System server b4
System server done
Pi4B Waiting for drone to connect...
-- Connected to drone!
Version: [flight_sw_major: 4, flight_sw_minor: 2, flight_sw_patch: 3, flight_sw_vendor_major: 56, flight_sw_vendor_minor: 52, flight_sw_vendor_patch: 97, os_sw_major: 0, os_sw_minor: 0, os_sw_patch: 0, flight_sw_git_hash: 376130633 , os_sw_git_hash:<PHONE_NUMBER>30383 , flight_sw_version_type: RELEASE]
Waiting for drone to have a global position estimate...
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  0
-- Global position state NOT good for flying. i =  0
Battery: 9800.0
Battery_v: 15.52500057220459
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  1
-- Global position state NOT good for flying. i =  1
Battery: 9800.0
Battery_v: 15.528000831604004
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  2
-- Global position state NOT good for flying. i =  2
Battery: 9800.0
Battery_v: 15.481000900268555
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  3
-- Global position state NOT good for flying. i =  3
Battery: 9800.0
Battery_v: 15.533000946044922
Battery: 9800.0
Battery_v: 15.533000946044922
Battery: 9800.0
Battery_v: 15.533000946044922
print_status_text CancelledError
Battery: 9800.0
Battery_v: 15.527000427246094
Battery: 9800.0
Battery_v: 15.533000946044922
Battery: 9800.0
Battery_v: 15.53700065612793
print_battery CancelledError
-- run ended
Main out

Yeah !!
Your GPS needs to be fixed. check if you can arm it through MP or try doing GPS calibration.
' is_global_position_ok: False,'
This is the indicator that it doesn't get any GPS location. You can try getting your GPS info printed through telemetry through another example, 'examples/telemetry.py'.

Your GPS needs to be fixed. check if you can arm it through MP or try doing GPS calibration.

GPS already re-calibrated.
MP already reported 3D Fix.
I can arm with loiter flight mode and fly.

'examples/telemetry.py'

Okay, will take a look at the code.

You can try getting your GPS info printed through telemetry through another example, 'examples/telemetry.py'.

likely found the problem, not working.
I think something similar to this is missing.
await drone.telemetry.set_rate_battery(1)
print_position CancelledError
print_gps_info CancelledError
**** test code function ***
async def print_gps_info(drone):
try:
async for gps_info in drone.telemetry.gps_info():
print(f"GPS info: {gps_info}")
except asyncio.CancelledError:
print("print_gps_info CancelledError")
return  # pass
async def print_position(drone):
try:
async for position in drone.telemetry.position():
print(position)
except asyncio.CancelledError:
print("print_position CancelledError")
return  # pass
**** test code function ***
Main in
System server b4
System server done
Pi4B Waiting for drone to connect...
-- Connected to drone!
Version: [flight_sw_major: 4, flight_sw_minor: 2, flight_sw_patch: 3, flight_sw_vendor_major: 56, flight_sw_vendor_minor: 52, flight_sw_vendor_patch: 97, os_sw_major: 0, os_sw_minor: 0, os_sw_patch: 0, flight_sw_git_hash: 376130633 , os_sw_git_hash:<PHONE_NUMBER>30383 , flight_sw_version_type: RELEASE]
Waiting for drone to have a global position estimate...
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  0
-- Global position state NOT good for flying. i =  0
Battery: 9700.0
Battery_v: 15.399001121520996
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  1
-- Global position state NOT good for flying. i =  1
Battery: 9700.0
Battery_v: 15.399001121520996
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  2
-- Global position state NOT good for flying. i =  2
Battery: 9700.0
Battery_v: 15.396000862121582
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  3
-- Global position state NOT good for flying. i =  3
Battery: 9700.0
Battery_v: 15.396000862121582
Battery: 9700.0
Battery_v: 15.395000457763672
Battery: 9700.0
Battery_v: 15.390000343322754
print_position CancelledError
print_gps_info CancelledError
print_status_text CancelledError
Battery: 9700.0
Battery_v: 15.402000427246094
Battery: 9700.0
Battery_v: 15.374000549316406
Battery: 9700.0
Battery_v: 15.405000686645508
print_battery CancelledError
-- run ended
Main out

subscribe to these, now we have the info. the problem is clear.
telem_gps = asyncio.ensure_future(print_gps_info(drone))
await drone.telemetry.set_rate_gps_info(1)
telem_pos = asyncio.ensure_future(print_position(drone))
await drone.telemetry.set_rate_position(1)

Main in
System server b4
System server done
Pi4B Waiting for drone to connect...
-- Connected to drone!
Version: [flight_sw_major: 4, flight_sw_minor: 2, flight_sw_patch: 3, flight_sw_vendor_major: 56, flight_sw_vendor_minor: 52, flight_sw_vendor_patch: 97, os_sw_major: 0, os_sw_minor: 0, os_sw_patch: 0, flight_sw_git_hash: 376130633 , os_sw_git_hash:<PHONE_NUMBER>30383 , flight_sw_version_type: RELEASE]
Battery: 9700.0
Battery_v: 15.351000785827637
Waiting for drone to have a global position estimate...
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  0
-- Global position state NOT good for flying. i =  0
Battery: 9700.0
Battery_v: 15.357000350952148
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  1
-- Global position state NOT good for flying. i =  1
Position info: Position: [latitude_deg: 1.XXXXXX, longitude_deg: 103.YYYYYY, absolute_altitude_m: 21.830001831054688, relative_altitude_m: -0.010000000707805157]
GPS info: GpsInfo: [num_satellites: 15, fix_type: FIX_3D]
Battery: 9700.0
Battery_v: 15.358000755310059
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  2
-- Global position state NOT good for flying. i =  2
Position info: Position: [latitude_deg: 1.XXXX, longitude_deg: 103.YYYYY, absolute_altitude_m: 21.830001831054688, relative_altitude_m: -0.013000000268220901]
GPS info: GpsInfo: [num_satellites: 15, fix_type: FIX_3D]
Battery: 9700.0
Battery_v: 15.35400104522705
-- Health :  Health: [is_gyrometer_calibration_ok: True, is_accelerometer_calibration_ok: True, is_magnetometer_calibration_ok: True, is_local_position_ok: False, is_global_position_ok: False, is_home_position_ok: True, is_armable: False]  i =  3
-- Global position state NOT good for flying. i =  3
Position info: Position: [latitude_deg: 1.XXXXX, longitude_deg: 103.YYYYYY, absolute_altitude_m: 21.84000015258789, relative_altitude_m: -0.00800000037997961]
GPS info: GpsInfo: [num_satellites: 15, fix_type: FIX_3D]
Battery: 9700.0
Battery_v: 15.36500072479248
Position info: Position: [latitude_deg: 1.XXXXX, longitude_deg: 103.YYYYY, absolute_altitude_m: 21.850000381469727, relative_altitude_m: 0.004000000189989805]
GPS info: GpsInfo: [num_satellites: 15, fix_type: FIX_3D]
Battery: 9700.0
Battery_v: 15.368000984191895
Position info: Position: [latitude_deg: 1.XXXXX, longitude_deg: 103.YYYYYY, absolute_altitude_m: 21.84000015258789, relative_altitude_m: -0.0020000000949949026]
GPS info: GpsInfo: [num_satellites: 15, fix_type: FIX_3D]
Battery: 9700.0
Battery_v: 15.367000579833984
print_position CancelledError
print_gps_info CancelledError
print_status_text CancelledError
Battery: 9700.0
Battery_v: 15.358000755310059
Battery: 9700.0
Battery_v: 15.374000549316406
Battery: 9700.0
Battery_v: 15.342000961303711
print_battery CancelledError
-- run ended
Main out

You might wanna try downgrading your Ardupilot Firmware Stable Version. 4.1 or less.

downgrading your Ardupilot Firmware Stable Version. 4.1 or less.

the latest stable version is 4.4.4, and 4.5.0 is in the last stage of beta testing before release. There are many bug fixes and performance improvements.

No it doesn't mean that you're permanently shifting to 4.1. It helps us find out the bug and we might be able to fix it in further releases. Some version upgrades changes the parameters inside the firmware, If the code is running on older version and not new, we can update the code with newer parameters according to Firmware Version.

I am seeing the same issue on the following:
MAVSDK-python version: 2.3.0
Arducopter: 4.5.1
I always get
Health: [
is_gyrometer_calibration_ok: True,
is_accelerometer_calibration_ok: True,
is_magnetometer_calibration_ok: True,
**is_local_position_ok: False,**
**is_global_position_ok: False,**
is_home_position_ok: True,
is_armable: False
]

@ilamanov what's the setup where you test this? SITL, or real copter (outside) with GPS signal?

@julianoes It's a real copter outside with ~17 sats

Not sure if this is related but I do get a few telemetry methods hanging with ardupilot:

is_in_air
landed_state
status_text
mission_progress

Anytime I attempt to print them, it just hangs. Till I manually break out of the loop or shut the program down. Health works well for me though

Anytime I attempt to print them, it just hangs.

Try again with print("XXXX", flush=True)


text-size-adjust supported with prefix in Project Spartan

…at least according to the test.caniuse.com page.

Hmmm...technically this is supposed to be for mobile browsers only. Some desktop browsers (like Firefox) acknowledge the property but afaict don't actually do anything with it.

Yeah, I didn't test too much to see how it handles it as wasn't sure when it suppose to kick in. Gathered it would be used for tablets et al on Windows 10 as we have a touch browser by default.

Would you happen to have access to a tablet with Windows 10 on it? If so, could you try out http://tests.caniuse.com/tsa.html and see if clicking the button affects the font size?

I have a touch screen laptop at the office, Will run in tomorrow AM and let you know

Looks like it isn’t working on desktop, at least with a touch screen laptop, so this can be closed won't fix.

Cool, thanks for checking.


Fix resolving custom services from startup

Summary of the changes (Less than 80 chars)
Issue here https://github.com/aspnet/AspNetCore/issues/9294

Pass to HostServiceProvider built IServiceProvider from already registered services
HostServiceProvider.GetService tries to resolve that services

Should i write some tests for that?
Addresses #bugnumber (in this specific format)

This behavior change was intentional. Closing this per https://github.com/aspnet/AspNetCore/issues/9294#issuecomment-482277461. We'll add more details there.


Make toolchain registration optional

The moment you add the current rules_android_ndk to a workspace, the build breaks if ANDROID_NDK_HOME is not set, because native.register_toolchains is always called implicitly.
One solution is to allow users to opt-in into setting up the repository only (which is what you'd do with bzlmod) and either call register_toolchains themselves, or use --extra_toolchains=@androidndk//:all.
Downside: this breaks the current API and we can either use a different approach, or mention it in some release notes

Superseded by #51


Add required index for Event model

What this PR does / why we need it:
Index ProjectId: ASC CreatedAt:ASC is required by the current piped agent query.
Which issue(s) this PR fixes:
Follow PR #1908
Does this PR introduce a user-facing change?:

NONE

👍
/lgtm


password reset view respond ''success" when the email does not belong to a user

If I call the password reset api view with an email that does not belong to any user, the api still respond with {"success": "Password reset e-mail has been sent."}, and so no email will be sent and users will not know if they forget which email they used in registration.

Thanks for catching this issue. Fixed code will be included in the new 0.6.0 version.

I might be wrong but it seems this is still happening using the latest development version (commit 00415301d6)

Please reopen, this is still an issue with the newest release (0.9.0). When calling a password reset API endpoint with an e-mail that is not associated with a user,  200_OK is sent with a following message:
{ "detail": "Password reset e-mail has been sent." }

reopen this, same problem here

Same issue here...

I think that is better to response 200, always. A reset system never should tell you if that e-mail exists or not in the database. Otherwise, everyone could know if some third party email has been used in your website. And that's not a good idea.


fix(versions): update Activiti/example-runtime-bundle versions into master

UpdateBot pushed maven dependency: org.activiti.cloud.rb:activiti-cloud-runtime-bundle-dependencies to: 7.1.180

UpdateBot commands:
updatebot push-version --kind maven org.activiti.cloud.rb:activiti-cloud-runtime-bundle-dependencies 7.1.180


Changed Broadcast from sequential to parallel

Each message is now sent on its own goroutine, and the method aggregates the results
of the message sending and returns them to the caller
This improves the throughput of the system because it shortens the invocation time of Broadcast, since sending to different peers is done in parallel.
I tested it by simulating network latencies with the tc [1] command on 4 peers running in docker containers with pbft and it counted the transactions per second, and it increased throughput:
Delay | Speedup:
1ms | 80%
2ms | 85%
5ms | 130%
10ms | 140%
15ms | 150%
20ms | 160%
[1]
http://linux.die.net/man/8/tc

Signed-off-by: Yacov Manevich<EMAIL_ADDRESS>

@yacovm : thanks! This is a good change IMO...

there is no inherent dependency on serialization or ordering so parallel is logically equivalent to current serial
it is a local change and does not bleed over outside the Broadcast method
"Broadcast" suggests parallel sends

Not suggesting we do this in this PR... but wonder if it also makes sense to randomize the sends ?
Given the nature of this change will be good to get more eyes, especially @jeffgarratt @binhn

Do you mean randomizing the order of the sends? Why?

add bit more entropy ... more unpredictability than we'd have with just TCP. Again, just a thought for brainstorming. Not suggesting we do this for this PR.

hmm, but isn't the time it takes for all goroutines to reach the system call layer (a few hundred micro seconds) negligible in comparison to the time it takes for the network to transmit them (milliseconds)?

So basically randomization will get lost in the much larger network latency ? That's probably true.
Let's ignore the randomization for now ? It is here if we want to revisit.

OK, So we're waiting for @jeffgarratt  || @binhn  to approve the PR I guess?

yes.

@muralisrini @yacovm Looks good to me!!!

@muralisrini @yacovm  Looks good to me!!  NOTE:  Keep look out for future ramifications to consensus as this may alter sequencing wrt to consensus interactions and expose pre-existing but unidentified issues.

This is a nice contribution! Thanks @yacovm! LGTM and I confirmed all unit and behave tests are passing, including consensus tests.


SYSTEM: Add Microbundle

Add a "first draft implementation" of Microbundle doing its thing.
Potentially revise after more thorough use.

Added in 3.0.14.


Nested Cells

Is it possible to nest cells using gdspy? I've poured over the documentation/examples but haven't found any explicit reference to nesting or cell hierarchy.
I'm building a library of function components that return cells. I would like more complex cells to call simpler cell routines. The GDS format obviously works really well with this recursive framework.

@smartalecH Indeed hierarchical structures is one of the strong points of GDSII. You can nest cells in Gdspy using CellReference and CellArray.
The tutorial has examples of both.

The link to the tutorial is broken now. I believe this has the examples now.


My first branch

Created a new branch, created a file, and made a commit.

Merged pull request

Completed Merge


Fixes unit test issues with the core package.

Refactors and fixes the v1 functions to address the failing unit tests.
Fixes #281

Overall, it looks good to me.
If @farhan-pasha and @abhishek44sharma have resolved the comments in the convo, we can merge it.

Apologies for delaying this PR. Gave other issue a higher priority. Having a look now.


What's the status of boost proto in 2019?

Hi, Eric.  I'm interested in using boost proto for an EDSL.  This youtube video of you describing proto-0x mentions to not bother with declaring "result_type" and some other boilerplate because it's no longer needed in proto-0x.  The boost user guide for proto (copyright you 2008) still describes this "old" way of doing things without C++11 features.  Did the C++11 version of proto ever get released, and did it get a user guide teaching the new ways of using it?  Where's the right spot for me to study the most modern version of proto (or alternative)?  Thanks.
(Apologies for an errant issue submission.  I hit a wrong button on my keyboard and somehow submitted the issue mid-typing.)

I never finished developing proto-0x, but it was very close and is in fact very usable, albeit undocumented. I have no plans to finish it, having moved on to other things. Zack Laine developed a modern replacement for Boost.Proto, called YAP I think. I don't know the state of it, but I'm sure some Googling would reveal much.

Thank you, I will check it out as well as proto-0x.  Do you still recommend the released boost proto, or do you feel it is too encumbered by legacy C++ cruft?

Will do, thank you and take care.


No keypair found in wizard but it's being searched during command execution

# Add instances wizard
Select keypair to use for instances:
Skipping this step because no possible answers exist.
Executing command: add instances --project selenium_iva6 --name edge12-sg-e-$number --flavor ^m1.windows$ --image win10-edge-18.08.2015 --network ^SELENIUMGRIDNETS$ --keypair haze --range 3,4
At least 1 keypair with name = haze should exist

How to reproduce:

Create instance in region with present keypairs
Try to create instance in region without keypairs
Seems to be an issue in wizard answers map that doesn't get cleared during next wizard start.

In fact that's because individual step answers doesn't get cleared.


Update eslint-plugin-react to ^7.4

This issue was fixed in yannickcr/eslint-plugin-react/pull/1292 and released in 7.2.0.

Incorrect


Please provide a way to nil provider links

When attempting to deploy jobs that provide and consume links ambiguously, it can be challenging to get links to behave.  For example, when we tried to deploy mysql and the mysql-proxy from the v35 cf-mysql-release, since they both provided links of type database (also, by the way, with the same mysql-database name) and there are several jobs that consume links of type database, we ran into link ambiguity which caused deployment failures like this:
Preparing deployment: Preparing deployment (00:00:00)
            L Error: Unable to process links for deployment. Errors are:
   - Multiple instance groups provide links of type 'database'. Cannot decide which one to use for instance group 'uaa'.
        cf.mysql.mysql.mysql-database
        cf.mysql.proxy.mysql-database
   - Multiple instance groups provide links of type 'database'. Cannot decide which one to use for instance group 'api'.
        cf.mysql.mysql.mysql-database
        cf.mysql.proxy.mysql-database
   - Multiple instance groups provide links of type 'database'. Cannot decide which one to use for instance group 'cc-worker'.
        cf.mysql.mysql.mysql-database
        cf.mysql.proxy.mysql-database
   - Multiple instance groups provide links of type 'database'. Cannot decide which one to use for instance group 'cc-clock'.
        cf.mysql.mysql.mysql-database
        cf.mysql.proxy.mysql-database

We believe that this can be resolved by explicitly disambiguating the links by aliasing them (e.g. provides: {as: } and consumes: {from: }).  But, that is not ideal since the reason for using the same type is valid and we want to consume the link more freely (rather than explicitly tying e.g. the cloud controller to the proxy job) since we also want to allow overriding the database to another kind (like postgres).  Please allow us to nil out the provider link like this: provides: {mysql-database: nil} so we can more easily resolve this conflict.

We're having the reverse problem: a job with optional linking that's picking up an unwanted link through implicit linking.  We need to explicitly nil out a consumer link.

We're having the reverse problem: a job with optional linking that's picking up an unwanted link through implicit linking. We need to explicitly nil out a consumer link.

is there a concern about explicitly nilling it out?

I was just confused by the documentation and didn't realise it was possible.  (Taking another look, there are examples where a consumer link is set to nil, but the main text doesn't say anything about explicitly setting links to nil so it's easy to miss if you don't know the feature exists.)

🔗 Slack, cloudfoundry#bosh - similar use case where it would be easier to provides: nil a link, than to go through updating multiple consumers to use the correct link

story: https://www.pivotaltracker.com/story/show/151894692
On Mon, Apr 9, 2018 at 9:53 AM, Danny Berger<EMAIL_ADDRESS>wrote:

🔗 Slack, cloudfoundry#bosh
https://cloudfoundry.slack.com/archives/C02HPPYQ2/p1523055768000061 -
similar use case where it would be easier to provides: nil a link, than
to go through updating multiple consumers to use the correct link
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/cloudfoundry/bosh/issues/1675#issuecomment-379819937,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AALV95s947dED14JBo5tMaxjgHpuPPJrks5tm5H3gaJpZM4NSM-Z
.


Coinbase not working at all

Upon adding { walletName: "coinbase", preferred: true } per the setup docs, no Coinbase item shows up.

@jeffscottward Is your Onboard screen capture on desktop? Coinbase is only supported on mobile platforms.

@jeffscottward for clarity, we do have a walletlink branch here to support using Coinbase SDK to use their mobile wallet on desktop, similar to walletconnect. We are waiting on their resolution of an issue in their SDK.

Closing this as Coinbase wallet displays on mobile devices and not desktop devices as expected.


[Fix: #30322] Update populate_db.py

updated description to "Welcome to Zulip" by removing the organization description in the right sidebar
Issue: Remove the organization description from the right sidebar for logged-out users
Initial description: The Zulip development environment default organization." It's great for testing!
old code snippet:

Changed description: 'Welcome to Zulip'
new code snippet:

No other description was found in the codebase related to this issue

[Fix : #30322]

@Vivek-Cheva this issue already has an open PR that might resolve it. You can look at other issues to solve.
Also, https://zulip.readthedocs.io/en/latest/contributing/commit-discipline.html would help you to write better commit messages in the future, and if you are making UI changes in the PR, you should upload screenshots of those changes to show how that looks visually rather than the code snippets.

@Vivek-Cheva Moreover, I don't think the issue description says anything about changing the realm description.


Resource registered at Broker with different IDs depending on registration with DSC UI or DSC Swagger UI

A resource and its artifacts have different URIs at the Broker if registered using the DSC UI or the DSC Swagger UI.
At the Broker, the resource appears twice.
The one registered over the UI:
"http://www.w3.org/2002/07/owl#sameAs" : {
    "@id" : "https://connector:8080/api/offers/1f0d52d3-dd5d-4132-8271-b0ee1ee26b36"
  }

The other one registered with Swagger UI:
"http://www.w3.org/2002/07/owl#sameAs" : {
    "@id" : "https://dwd-connector.test.mobilitydataspace.io/api/offers/1f0d52d3-dd5d-4132-8271-b0ee1ee26b36"
  }

EDIT:
But none of them has the ID that the resource has at the Clearing House: https://ids.dwd-connector.test.mobilitydataspace.io/api/offers/1f0d52d3-dd5d-4132-8271-b0ee1ee26b36

I have two explanations:

Either the problem might be in the DSC UI. The backend seems to use the correct URL for the registration. The frontend seems to use the configured backend url which is used to control the local DSC instance. Thus, the frontend should be using the connector's id instead.
Or, this might be a result from a wrong reverse-proxy configuration, i.e. missing something like proxy_set_header Host $host;


[Feature] Allow multi-word search in the combo picker.

Hi @xmichelo
Could you please implement the use of multiple keywords in the combo picker? In the image above, for example, I'd like to use "sample japanese" to narrow down the search. It's a very useful feature when you have hundreds of snippets.
Thank you very much.
Originally posted by @dp1702 in https://github.com/xmichelo/Beeftext/issues/162#issuecomment-667557560

Thanks for considering the request. It would be nice to have partial word matching and incremental search as well. That way one could just type "samp jap" to find "sample japanese" in the example above. I also think that disregarding the order of the words in the combo name so "sample japanese" and "japanese sample" would return the same result is probably better to find the right combo faster.

Hi.
I've implemented the feature. Here is a test build.

Installer
Portable Edition

Instead of considering the search string as a whole, it is now split in words. To appear in the list every word must appear - even as a partial word - in the name, keyword or snippet.

I'm using the test build and the new search is working flawlessly. It's a game changer for my use of Beeftext.
I've already imported 180 combos that have from 05 to 10 words in the names and the new search makes it very easy to find the right one.
Thank you very much.
Just another question or feature request: is it possible to change the combo picker window size?
It's seems locked at 442 x 319 and some long combo names aren't fully displayed. A preference to change the window and the font sizes would be great.


How do i compile node modules into a seperate file?

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

What is the current behavior?
If the current behavior is a bug, please provide the steps to reproduce.

What is the expected behavior?
If this is a feature request, what is motivation or use case for changing the behavior?
Please mention other relevant information such as the browser version, Node.js version, webpack version, and Operating System.
var path = require('path');
var webpack = require('webpack');
const pkg = require('./package.json');
module.exports = function (env) {

env = env || {};
var isProd = env.NODE_ENV === 'production';

// Setup base config for all environments
var config = {
    mode: 'development',
    target: 'node',
    entry: {
        mapping: './wwwroot/js/mapping/index.js'
    },
    output: {
        path: path.resolve(__dirname, 'wwwroot/dist'),
        filename: '[name].js',
        chunkFilename: '[name].bundle.js',
    },
    devtool: 'eval-source-map',
    resolve: {
        extensions: ['.ts', '.tsx', '.js', '.jsx']
    },
    plugins: [
        new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' })

    ],
    module: {
        rules: [
            { test: /\.css?$/, use: ['style-loader', 'css-loader'] },
            { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' },
            { test: /\.(png|woff|woff2|eot|ttf|svg)(\?|$)/, use: 'url-loader?limit=100000' }
        ]
    }
}

// Alter config for prod environment
if (isProd) {
    config.devtool = 'source-map';
    config.plugins = config.plugins.concat([
        new webpack.optimize.UglifyJsPlugin({
            sourceMap: true
        })
    ]);
}

return config;
};

Please use stackoverflow for questions, thanks
Use `mode: 'production' or setup custom configuration, you can read about that https://webpack.js.org/plugins/split-chunks-plugin/ and https://webpack.js.org/guides/code-splitting/

i have already done that. the file isnt spilt. i know where the documentation is.

stack overflow is not helpful.

Use `mode: 'production'

i have done that. it does not produce a seperate file

Have you tried this example in the docs: https://webpack.js.org/plugins/split-chunks-plugin/#split-chunks-example-2

yes that worked thanks.
however i am getting the following error

This is the order i have loaded my file on

you need runtime code, look at dist directory

im new to webpack. not sure what you mean.
this is what i have

??


Add update flag for install package

@bfirsh
It will be able to run whalebrew install -u and whalebrew install --update.
This flag is force install package.
It is similar to 'go get -u'.

Is it same in homebrew? I think it would be great if whalebrew tried to mimic brew commands and flags as much as possible.

hmmm... :-(
Is it OK if you make something with the same function as brew upgrade?

This doesn't do quite what you expect, because it won't pull a new version of the image.
The readme documents how to upgrade a package: https://github.com/bfirsh/whalebrew#upgrade-packages
Perhaps "whalebrew upgrade" could be a shorthand for that.

@bfirsh
Thank you for your comment :-)
I understood that I was performing the wrong implementation.
Since I want to send a pull request after rewriting the code, I will close this pull request.


How to get the hocr output

how do i get the hocr as an output for a given image ?

See https://github.com/tleyden/open-ocr/issues/38


Simplify mediawiki authentication

This removes the seeming unnecessary overiding of request_phase
reducing the risk of diverging from the parent class version which
it was largely copied from.
It also removed the override of callback_url in favour of using
the default, which requests a callback to the correct omniauth
callback rather than requesting out-of-band callback which seems
wrong for a web authentication framework.
This has been tested - you need to make sure you specify the right
callback prefix and enable callback URLs when creating the consumer
at the mediawiki end but so long as you do that it works fine.

many thanks, will review this week

Awesome stuff. It may have been originally added via a reading of the extension code, or early client code: https://github.com/wikimedia/mediawiki-extensions-OAuth/blob/master/backend/MWOAuthServer.php#L60
But it seems as if they have improved the extension thankfully!


Update README and ensure node version

Update README since the diegesis-upload-client is now included.
Add package-lock.json to ensure working versions. See Discord discussion.
Add Ensure Node Version to README.

Nice little touch to make sure users are on node 18.
I've added a script "cleanInstall.sh" to install everything and build all the clients


Remove using spring-cloud-stream-binder-kafka/rabbit direclty

Use starters from spring-cloud-stream instead
This resolves #18

LGTM, merging.


disable next button in sending SWT

Location
/mywallet
Expected behavior
The next button on sending SWT is disabled if i enter more than 5 digits (longer than the shortcode) and less than the length of an address. When only entering 1, 2, 3, 4 digits I am able to proceed, and will get the error message.
Actual behavior
The next button is enabled all the time, i can enter a wrong shortcode or wrong address and can proceed, only when entering i get the error message.
Steps to reproduce the problem
my wallet > enter wrong shortcode > enter

Currently the input does check for shortcode and public key lenght. Any input of 5 digits or length of public key will be accepted.
Other lengths were ignored when I tested it.
I can not verify if shortcode/public key is correct

@xardass it's about disabling the next button. We are going to change the inputfield again, so we will only be able to use the shortcode, no longer the public key, so we will set the next button to disabled  as long as the user hasn't put in 5 digits or puts in more digits. We'll discuss this issue in daily

These are the steps we need to do for now:

[ ] enable the confirm button when the user types in the fifth figure

[ ] disable again when a sixt (and more) figure is typed in and give an error message (this is not a valid shortcode)

[ ] enable the confirm button when the length of a pubkey (40 characters) is reached.

[ ] after we have shortcode running again, we will disable the button for the public key length again

@kikipluche @xardass why is this issue open but the epic closed?

@BvL13 just edited the last comment made by me, and will add it to the epic of shortcode.

So if I understand this issue, it's not about functionality (button on-tap event is disabled), but we want it to be 'greyed-out'? It's visual issue? @faffydee

@kikipluche The shortcode no longer accepts an address, only the shortcode. This means we can simplify the validation of the fields: if the amount is lower than the balance, but higher than 0 or null, that field is valid. If the shortcode field has exactly 5 digits, that field is valid. When both are valid, we can enable the button, which removes class disabled and functionally enables the button.


Add i18n (internationalization) support

Initial support for internationalization using gettext combined with polib.
From now on as part of the installation process it's necessary to generate the localized files. Also, when changes in i18n/catalog.py are made it's necessary to re-generate these files too.
To generate the localized files just run:
$ make translate

In order to add support for more languages or translate any piece of text all that have to be done is make changes in i18n/catalog.py file. For more details see the comments in the file.
Solves issue #1

Codecov Report

Merging #148 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master   #148   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           6      8    +2
  Lines         319    347   +28
=====================================
+ Hits          319    347   +28

Impacted Files
Coverage Δ

plugins/behaviors.py
100% <100%> (ø)
:arrow_up:

plugins/commands.py
100% <100%> (ø)
:arrow_up:

i18n/catalog.py
100% <100%> (ø)

i18n/translate.py
100% <100%> (ø)

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 c29c9ee...0431fcd. Read the comment docs.


Document the proper way to concat arrays.

In 5to6 - it was not properly documented. Also spell "," as the comma.
This got me tripped when working on perl6-examples.

👍 Thanks!

Thanks for merging it, and - you're welcome.


Problem with multi filter

Hi.
I have a custom query and after show the data without filter i try to put any value in search field per column but the filter not showing information using the current data, empty response and JSON show the value in the search field.
{"draw":1,"recordsTotal":1586,"recordsFiltered":0,"data":[],"input":{"draw":"1","columns":[{"data":"id","name":"ID","searchable":"true","orderable":"true","search":{"value":"2","regex":"true"}},
2 it's the value to field ID to trying to search

Windows 10 PRO
PHP7
Laravel 5.2*
Laravel-Datatables 0.6.*

The problem it's when in javascript define columns, the name in data fields it's must be equals to field name
{data: 'name', name: 'name',searchable: true}
It's case sensitive


Enterprise Bot: Updates for Localization and Channel Support

Description

Added deployment folder for each supported language (en, de, fr, it, es, zh)
Added localized responses for all supported languages
Added support for speech responses in template manager files
Added Extension to check for starting message for primary channels (Emulator, Skype, Teams, Cortana, WebChat)
Updated to latest packages

Related Issue

Testing Steps

Once this is merged in, I will start a build so we can all test from the myget feed.

Resolves #280


drawTiles ignores color on HTML5 canvas/DOM renderers

Works in WebGL, but not DOM/canvas. Looking at CanvasGraphics.hx, it seems that the color values supplied are unused. (Not sure where the DOM drawTiles source actually is.)

I'm currently working around this by caching tinted versions of the BitmapData at the expense of some extra memory use. This works pretty well but has other issues due to https://github.com/openfl/openfl/issues/904


Update Icon & Formatting for Cancelled/Revoked Tasks

When CarePlans are closed/revoked together with it's associated Tasks, they are displayed as completed on profiles.
Update how cancelled tasks' font colour and icon to match the designs (pending).
Refer to the conversations in issue #2168 & PR #2192 for more details and context.

Based on @HenryRae comment here , I think we should close this ticket
CC @qiarie @HenryRae


override methods can not be mocked without inheritance

jomock makes the static and non-virtual method to be mocked.
BTW, the overriden function cannot be mocked directly.
For example:
class A
{
public:
    virtual int menthod1(int input) = 0;
}

class B : public A
{
public
    int method1(int input)
    {
      return input * 2;
    }
}

TEST(JoMock, OverrideFunction) {
    B b;
    EXPECT_CALL(JOMOCK(&B::method1), JOMOCK_FUNC(&b, _))
        .Times(Exactly(1))
        .WillOnce(Return(4));
    EXPECT_EQ(b.method1(1), 4);  // ---> fail
}

It fails because B:method1 is the pointer table for the virtual functions.

the original mock class inheritants the class B is the solution.


65b-model

Is there a plan to release the 65b-pandallm

65B is difficult to train so the exact date is not clear.
We plan to first release 13B models, which should come before next Mar 14. And then 30B models. According to my experience, training 30B models will require among 2 weeks so it is expected before Jun.
65B model currently cannot be fitted into single A100 so we need some tricks, for example, model parallel, but there is no efficient implementation of LLaMA. So we cannot determine a exact date.
Thanks.