add php_codesniffer

Coverage remained the same at 87.949% when pulling 809b9413c64027b214498d209b4fcbaa2a23bd6f on php-cs into f092edb9693aaa17f935ddf142c59d4dcde5edea on master.


DOPE network is not detecting training objects with real world images

Hello everyone,
I am trying to develop a real world application utilizing the DOPE network. From my understanding, each of the 40 models can only detect one type of object each.
I am using a RealSense D435 as a camera and remapped the color/image_raw topic to /image so the DOPE network could access it and the image resolution was set to 640x480 at 30 fps.
The objects are laid on a white background with the camera 60.5 cm above, looking straight down.
I have 5 objects from the training data set (Heinz ketchup bottle, French mustard bottle, Campbells' tomato soup can and Cheez'in box) and none of their corresponding networks were detecting the objects. I got 1 or 2 "hits", but those seemed to be hallucinations has they appeared for a single frame and were nowhere near the object.
What could be the cause of those really poor performances? Inadequate lighting? Not having the exact object? (I tried to get as close as possible, but I live in Quebec, so the writing is usually in french and there are slight design variation)
Thank you for your help, I've been pulling my hair for almost 2 weeks now.

Hello, could you please provide the rosbag recording and configuration files to reproduce this issue.

Hi @Maxime-Syc ,
We recently merged #23 which fixes some inconsistencies between the Python DOPE Training and Isaac ROS DOPE implementations.
Could you please take a look and see if the latest version of Isaac ROS DOPE corrects the issue you've observed?


Feature: Added the possibility to blind data points

if the sensitivity (S/sqrt(S + B) of MC processes) is above a threshold in a bin, the data point are set to 0.
The threshold can be given in the CLI or alternatively can be set to a default in the config via: self.config_inst.x.default_blinding_threshold
Also needed is to define the signal processes in the config via:
a dict entry called signals in the cfg.x.process_groups

Feedback is implemented however naf is currently down, so I couldn't test it :eyes:
Will do this tomorrow in the morning


Rethink how we handle the integrations with multiple metrics libraries

To date, we've abstracted away the differences between the underlying metrics libraries in the tracker module. We implement the TrackMetrics trait for each metrics library and then export the specific implementation as autometrics::__private::AutometricsTracker (renaming it from its library-specific struct name), depending on which feature flag(s) you have enabled. The autometrics macro generates code that uses the AutometricsTracker struct.
This works okay as long as every library has a close enough API that we don't need to expose library-specific things. However, that changes a bit with the prometheus-client support (#25 and #88), because we need to expose a handle to the Registry. We can simply expose that as a top-level export from the crate, but it seems somewhat likely that the list of things in this category will grow.
The other thing that's a bit odd with how we're currently handling things is the precedence order for the feature flags related to the metrics libraries. We currently allow multiple to be set and then use an arbitrary order for which should take precedence. It seems like this can cause somewhat unexpected behavior, because it's not obvious from the outside which library would take precedence.
Some options we have for resolving these issues:

Expose metrics library-specific functionality from submodules such as integrations::prometheus, integrations::prometheus_client, etc
Make the metrics library feature flags mutually exclusive so you can only choose one and it's clear which one you're getting

This would probably mean we would want to remove opentelemetry as the default and make it clear in the docs that you need to pick which underlying library it's going to use. We can have examples in the docs that use one so that would serve as an informal default

Alternatively, we could make it so that if you have multiple metrics libraries enabled, autometrics would track the metrics with all of them. This would be the least strict option, but it seems somewhat likely that people would end up collecting duplicate metrics

Thoughts?

I think the choice is really between the first and second, as I really can't think of any use case where one would want to collect metrics for multiple libraries.
I think the first option is good for applications which are meant to be self-hosted/used by a end-user, not the developers themselves. That would give power to the application developers to give end users the ability to switch between the metrics library used and configuring it without writing whacky code.
The second option sounds also good though. In the Rust ecosystem there are a lot of crates which have mutually-exclusively feature flags, most notably sqlx. If we document this behavior correctly, we should be fine, something along the lines of:
#[cfg(not(any(feature = "abc", feature = "xyz")))]
compile_error!("select either feature abc or xyz");

However, we must take care of maintaining a somehow similar API interface between the clients, else our docs will end up being really, really confusing.
Option one gives us the best flexibility, but option two gives us the best API interface and thus developer usage (with the risk of having confusing documentation).
Considering the prospect that Autometrics will continue to grow, I would go with the first option, as this gives us separation already early in the project (and is easier to maintain).

Good points.
Maybe we can use both the first and second ideas in the following way:

For each metrics library we support, have a submodule inside a module such as integrations (though I don't really like that name)
Each one will export a struct that implements a common TrackMetrics trait, just like we have it now
Maybe instead of being exported from autometrics::__private, we'll make them public?
Alongside that struct that implements the tracking functionality, we can have each module include whatever library-specific stuff is needed/available
The root integrations module (or whatever we end up calling it) can export a single AutometricsTracker (name TBD) like it does now, and we'll use feature flags to determine which one it uses
We'll use compiler errors like you propose to make the metrics libraries' feature flags mutually exclusive (except when the docs are being built so you can build them with --all-features)

I think all of this would work. The only thing I'm doubting now is whether we want the library-specific tracker thing to be part of the crate's public API. We may have reasons to change that and we have more flexibility if we consider it part of the private API that's only meant to be used by the macro. 🤔

I'm always afraid of building packages that have mutually exclusive features because of feature unification but I suppose autometrics is only targetting end applications so there's probably going to be a single instance of it in the dependency tree.
I don't really have an opinion on the integrations part, for the Go implementation I decided to focus all the implementation-specific bits within the init function call, so that all the rest can still use the exact same API. This way I know there's a single location to look for for differences, and all the rest of the implementation can stay hidden/private for breaking changes. As long as there's a compilation error when switching metric implementation without fixing the init call, all the differences can just be exposed through this single entry point

That's a good point about feature unification. I guess it would still be okay as long as any libraries that include autometrics don't pick one of the metrics libraries (and we made it so it would still compile even if you don't)


 I was going to use switch statements but I am quite sure they don't work with strings.

Unfortunately, switch statements don't work with strings in C++, but it sure is cleaner-looking.


get_visible_pages in menu.py doesn't scale

I've imported some 1000 pages into django-cms and got a "Too many SQL variables" exception from sqlite. The problem is get_visible_pages in menu.py. It adds  all page ids in the cms as a complicated condition to the where clause. Of course, this doesn't scale at all! I'm going to think about a better solution but for the time being: woldn't it be a good idea to omit permissions checking if CMS_PERMISSION is set to False? i.e.:
if not settings.CMS_PERMISSION or (request.user.is_staff and settings.CMS_PUBLIC_FOR in ('staff', 'all')):
    return [page.pk for page in pages]

Now problem is in load_view_restrictions. It make query with __in lookup, which fail for large amount of pages in sql.
Trying to fix it will lead to increasing number of queries for other databases or creating special cases for sqlite.
As far as i've tested get_visible_pages works fast for large data (miliseconds for about 500 pages). I've simplified that method in #5115 but it doesn't solve sqlite problem.
What's more in lookup is used in more places so sqlit will probably fail in other place when using with large data.

Closing this as a won't fix.
We've made several performance improvements in 3.4 in regards to the page tree loading time on the admin.
That said, I know for a fact we're still adding the page ids as look ups in the SQL query and as such this is not fully fixed but as pointed out above, changing this would slow things down for other databases.
Feel free to create a new ticket if this is causing problems outside of SQLite.


lv_micropython: importing lvesp32 causes subsequent soft reboot to crash

First off, I want to say that I discovered this project a few days ago, and I think it is pretty awesome. I've been playing with it in the Arduino environment and it has worked well. However, I really like micropython, so I was thrilled to see that there were bindings.

I believe rshell uses soft reboots before many of its on-board filesystem operations, and I've noticed that whenever I use the REPL to import lvesp32 the subsequent soft reboot panics.
To Reproduce
$ python3 $HOME/.local/lib/python3.6/site-packages/rshell/main.py -p /dev/ttyUSB0 -b 115200 -e nano $@
Using buffer-size of 32
Connecting to /dev/ttyUSB0 (buffer-size 32)...
Trying to connect to REPL . connected
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /boot.py/
Setting time ... Dec 16, 2019 22:38:29
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 2000
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/home/build/lv_micropython> repl
Entering REPL. Use Control-X to exit.
>
MicroPython v1.9.4-2068-gbf7699eee on 2019-12-16; ESP32 module with ESP32
Type "help()" for more information.
>>>
>>> import lvgl as lv
>>> import lvesp32
>>>
MPY: soft reboot
MicroPython v1.9.4-2068-gbf7699eee on 2019-12-16; ESP32 module with ESP32
Type "help()" for more information.
>>> Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x401e5f54  PS      : 0x00060330  A0      : 0x80104a39  A1      : 0x3ffcd080
A2      : 0x3ffb388c  A3      : 0xc0006989  A4      : 0x3ffcd260  A5      : 0x00000001
A6      : 0x0000000a  A7      : 0x3ffcd1e0  A8      : 0x00000018  A9      : 0x3ffcd070
A10     : 0x3fffa599  A11     : 0x3f414018  A12     : 0x00000014  A13     : 0x3f4488ad
A14     : 0x00000002  A15     : 0x3ffcd1c0  SAR     : 0x00000020  EXCCAUSE: 0x0000001c
EXCVADDR: 0xc0006989  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xffffffff

ELF file SHA256:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000000

Backtrace: 0x401e5f54:0x3ffcd080 0x40104a36:0x3ffcd0b0 0x4014268f:0x3ffcd0d0 0x400e343a:0x3ffcd0f0 0x400df439:0x3ffcd110 0x400df47d:0x3ffcd130 0x400e035c:0x3ffcd160 0x400e0429:0x3ffcd1e0 0x400e0477:0x3ffcd200 0x400f4505:0x3ffcd220 0x40141d45:0x3ffcd240 0x401423cc:0x3ffcd260 0x400f43b0:0x3ffcd2a0 0x40090cc9:0x3ffcd2d0

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4808
load:0x40078000,len:9652
load:0x40080400,len:6200
entry 0x400806f0
W (312) cpu_start: Chip revision is higher than the one configured in menuconfig. Suggest to upgrade it.
MicroPython v1.9.4-2068-gbf7699eee on 2019-12-16; ESP32 module with ESP32
Type "help()" for more information.
>>>

Expected behavior
Soft reboots should not cause crashes, no matter what libraries are imported.
Additional context
The example lvgl scripts that I have tested so far have worked as expected. The buttons and labels come up exactly the way they are shown in the accompanying screen shots. But they appear to leave the board in a fragile state that would probably not be stable in production.

@amirgon Can you look at this?

My first thought was limited memory size on the DOIT, so I tried to build for my LOLIN D32 PRO. I got essentially the same result Here is the script I used to build/deploy on the PRO in case thatis helpful:
#!/bin/bash

export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin

git clone --recurse-submodules https://github.com/littlevgl/lv_micropython.git
UPY_SOURCE=$HOME/lv_micropython

cd $UPY_SOURCE
ESP_IDF_HASH=`make -C ports/esp32/ | grep v3.3 | cut -d' ' -f5`

cd $HOME/esp-idf
git checkout $ESP_IDF_HASH
git submodule update --init --recursive

cd $UPY_SOURCE
cat <<EOF >ports/esp32/partitions-16MiB.csv
# Name,   Type, SubType, Offset,  Size, Flags
# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild
nvs,      data, nvs,     0x9000,  0x6000,
phy_init, data, phy,     0xf000,  0x1000,
factory,  app,  factory, 0x10000, 0x200000,
vfs,      data, fat,     0x210000, 0xdf0000,
EOF

make PYTHON=python3 ESPIDF=$HOME/esp-idf LV_CFLAGS="-DLV_COLOR_DEPTH=16 -DLV_COLOR_16_SWAP=1" BOARD=GENERIC_SPIRAM PART_SRC=partitions-16MiB.csv -C mpy-cross
make PYTHON=python3 ESPIDF=$HOME/esp-idf LV_CFLAGS="-DLV_COLOR_DEPTH=16 -DLV_COLOR_16_SWAP=1" BOARD=GENERIC_SPIRAM PART_SRC=partitions-16MiB.csv -C ports/esp32 erase
make PYTHON=python3 ESPIDF=$HOME/esp-idf LV_CFLAGS="-DLV_COLOR_DEPTH=16 -DLV_COLOR_16_SWAP=1" BOARD=GENERIC_SPIRAM PART_SRC=partitions-16MiB.csv -C ports/esp32 deploy

Thanks for reporting this @spierepf.
When micropython soft-resets, it deallocates all the ram that was allocated by gc.
lvgl is taking advantage of micropython's gc but today it is not aware of the soft reset, therefore after soft reset lvgl holds invalid pointers.
I can use a callback to trigger something upon soft reset (MICROPY_PORT_DEINIT_FUNC). After soft reset lvgl needs to be "de-initialized" in order to set lv_initialized to false.
This way, when calling lv_init again after soft reset, lvgl would allocate all memories again.
@kisvegabor - Do you agree to add such de-init function? I think it's important to do it on v6 to fix this bug, and it does not break backward compatibility.

@amirgon The fix doesn't sound too complicated. Assuming that @kisvegabor  considers this an appropriate fix, would you mind if I take a crack at it and submttted a PR? I'd like to contribute, even in a small way.

Assuming that @kisvegabor considers this an appropriate fix, would you mind if I take a crack at it and submttted a PR? I'd like to contribute, even in a small way.

Sure, go for it!
This is not enough, though.
The following would need to be handled as well upon soft reset (a call to MICROPY_PORT_DEINIT_FUNC):

lvesp32 module has a FreeRTOS timer that needs to be deleted
ili9341 driver needs to free the SPI bus

This is not enough, though.

Looking at this again - it's a bit more complicated.
It's not enough to set lv_initialized to false, we also need to reset all gc root variables.
In order to state all gc roots only once, it would require some preprocessor trickery.

Can't the processor just be restarted fully, like any other device? That's how most other applications would handle this. It also solves the problem of resetting LittlevGL cleanly.

Can't the processor just be restarted fully, like any other device? That's how most other applications would handle this. It also solves the problem of resetting LittlevGL cleanly.

Of course - that is called "hard reset". It works well and this is what I usually do when I want to "restart".
However, this issue was opened on soft reset. Apparently there are some applications that require this instead of a hard reset (it's probably quicker)

Implemented on:

https://github.com/littlevgl/lvgl/pull/1319
https://github.com/amirgon/lv_bindings/commit/461fcf42a135c7d4142527e1e0ff805225197cc7
https://github.com/amirgon/lv_mpy/commit/25763e707e88f65d3b2d0da110e7075203e29f62

(After lvgl pull is accepted I'll push the others)
This adds support for soft reset on lvgl, lvesp32, ili9341 and xpt2046 (micropython drivers) .
Every driver needs to take soft reset into account in order to free resources (such as DMA memory, SPI bus etc).
There is one open issue, however.
When using ili9341 with double buffer, there is a heap corruption when trying to free the DMA memory. This only happens with double buffer, only when lvgl is actually using the buffer, so I suspect  there's some code in lvgl that corrupts the heap somewhere around the display buffer when using double buffer.
In the meanwhile, for cases where soft reset is important, a workaround is to use a single buffer (I've added double_buffer named argument to ili9341 so this could be controlled by the user).

This only happens with double buffer, only when lvgl is actually using the buffer, so I suspect there's some code in lvgl that corrupts the heap somewhere around the display buffer when using double buffer.

Do you know if this happens without MicroPython (i.e. with a C driver)?

Do you know if this happens without MicroPython (i.e. with a C driver)?

No, actually I'm only working with Micropython and a micropython driver.
On C (without micropython) there is no way to remove a driver and no point deallocating the buffer, so I wouldn't be surprised that no one ever tried this.
btw, I've noticed someone requested a deinit function on the forum, so that might be useful for C as well. At least as a way to reduce RAM consumption, since power/performance can be reduced in other ways.

(After lvgl PR is accepted I'll push the others)

Pushed to lv_binding_micropython and lv_micropython.
Please let me know if you see further problems.
Otherwise, I think this can be closed.
Maybe a new issue could be opened on the heap corruption, but for now I haven't proved yet this is an lvgl problem (really hard to debug that one).

I really appreciate the effort. This is a very cool project. Unfortunately I cannot check out the code any longer:
$ git clone --recurse-submodules https://github.com/littlevgl/lv_micropython.git
Cloning into 'lv_micropython'...
remote: Enumerating objects: 76715, done.
remote: Total 76715 (delta 0), reused 0 (delta 0), pack-reused 76715
Receiving objects: 100% (76715/76715), 53.04 MiB | 6.06 MiB/s, done.
Resolving deltas: 100% (55415/55415), done.
Submodule 'lib/asf4' (https://github.com/adafruit/asf4) registered for path 'lib/asf4'
Submodule 'lib/axtls' (https://github.com/pfalcon/axtls) registered for path 'lib/axtls'
Submodule 'lib/berkeley-db-1.xx' (https://github.com/pfalcon/berkeley-db-1.xx) registered for path 'lib/berkeley-db-1.xx'
Submodule 'lib/libffi' (https://github.com/atgreen/libffi) registered for path 'lib/libffi'
Submodule 'lib/lv_bindings' (https://github.com/littlevgl/lv_bindings.git) registered for path 'lib/lv_bindings'
Submodule 'lib/lwip' (https://git.savannah.gnu.org/r/lwip.git) registered for path 'lib/lwip'
Submodule 'lib/mbedtls' (https://github.com/ARMmbed/mbedtls.git) registered for path 'lib/mbedtls'
Submodule 'lib/mynewt-nimble' (https://github.com/apache/mynewt-nimble.git) registered for path 'lib/mynewt-nimble'
Submodule 'lib/nrfx' (https://github.com/NordicSemiconductor/nrfx.git) registered for path 'lib/nrfx'
Submodule 'lib/stm32lib' (https://github.com/micropython/stm32lib) registered for path 'lib/stm32lib'
Submodule 'lib/tinyusb' (https://github.com/hathach/tinyusb) registered for path 'lib/tinyusb'
Cloning into '/home/build/lv_micropython/lib/asf4'...
remote: Enumerating objects: 1520, done.
remote: Total 1520 (delta 0), reused 0 (delta 0), pack-reused 1520
Receiving objects: 100% (1520/1520), 1.75 MiB | 4.86 MiB/s, done.
Resolving deltas: 100% (928/928), done.
Cloning into '/home/build/lv_micropython/lib/axtls'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 3191 (delta 0), reused 1 (delta 0), pack-reused 3190
Receiving objects: 100% (3191/3191), 3.81 MiB | 5.76 MiB/s, done.
Resolving deltas: 100% (2342/2342), done.
Cloning into '/home/build/lv_micropython/lib/berkeley-db-1.xx'...
remote: Enumerating objects: 270, done.
remote: Total 270 (delta 0), reused 0 (delta 0), pack-reused 270
Receiving objects: 100% (270/270), 332.23 KiB | 1.94 MiB/s, done.
Resolving deltas: 100% (127/127), done.
Cloning into '/home/build/lv_micropython/lib/libffi'...
remote: Enumerating objects: 12491, done.
remote: Total 12491 (delta 0), reused 0 (delta 0), pack-reused 12491
Receiving objects: 100% (12491/12491), 7.37 MiB | 6.04 MiB/s, done.
Resolving deltas: 100% (7833/7833), done.
Cloning into '/home/build/lv_micropython/lib/lv_bindings'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 1100 (delta 19), reused 26 (delta 10), pack-reused 1059
Receiving objects: 100% (1100/1100), 1.14 MiB | 5.28 MiB/s, done.
Resolving deltas: 100% (649/649), done.
Cloning into '/home/build/lv_micropython/lib/lwip'...
remote: Counting objects: 53114, done.
remote: Compressing objects: 100% (12606/12606), done.
remote: Total 53114 (delta 40017), reused 52862 (delta 39850)
Receiving objects: 100% (53114/53114), 10.17 MiB | 5.86 MiB/s, done.
Resolving deltas: 100% (40017/40017), done.
Cloning into '/home/build/lv_micropython/lib/mbedtls'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 95218 (delta 2), reused 3 (delta 0), pack-reused 95207
Receiving objects: 100% (95218/95218), 41.92 MiB | 6.25 MiB/s, done.
Resolving deltas: 100% (73631/73631), done.
Cloning into '/home/build/lv_micropython/lib/mynewt-nimble'...
remote: Enumerating objects: 124, done.
remote: Counting objects: 100% (124/124), done.
remote: Compressing objects: 100% (111/111), done.
remote: Total 37081 (delta 70), reused 17 (delta 5), pack-reused 36957
Receiving objects: 100% (37081/37081), 10.80 MiB | 6.25 MiB/s, done.
Resolving deltas: 100% (22269/22269), done.
Cloning into '/home/build/lv_micropython/lib/nrfx'...
remote: Enumerating objects: 1882, done.
remote: Total 1882 (delta 0), reused 0 (delta 0), pack-reused 1882
Receiving objects: 100% (1882/1882), 3.16 MiB | 5.38 MiB/s, done.
Resolving deltas: 100% (1478/1478), done.
Cloning into '/home/build/lv_micropython/lib/stm32lib'...
remote: Enumerating objects: 3191, done.
remote: Total 3191 (delta 0), reused 0 (delta 0), pack-reused 3191
Receiving objects: 100% (3191/3191), 10.42 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (2449/2449), done.
Cloning into '/home/build/lv_micropython/lib/tinyusb'...
remote: Enumerating objects: 385, done.
remote: Counting objects: 100% (385/385), done.
remote: Compressing objects: 100% (214/214), done.
remote: Total 39260 (delta 208), reused 265 (delta 142), pack-reused 38875
Receiving objects: 100% (39260/39260), 27.33 MiB | 5.97 MiB/s, done.
Resolving deltas: 100% (27312/27312), done.
Submodule path 'lib/asf4': checked out 'd270f79aa16dd8fd4ae3b6c14544283dcb992e9c'
Submodule path 'lib/axtls': checked out '43a6e6bd3bbc03dc501e16b89fba0ef042ed3ea0'
Submodule path 'lib/berkeley-db-1.xx': checked out '35aaec4418ad78628a3b935885dd189d41ce779b'
Submodule path 'lib/libffi': checked out 'e9de7e35f2339598b16cbb375f9992643ed81209'
Submodule path 'lib/lv_bindings': checked out 'edf14fde6986a3cf943d25beeb06f211e94ed32e'
Submodule 'driver/png/lodepng' (https://github.com/lvandeve/lodepng.git) registered for path 'lib/lv_bindings/driver/png/lodepng'
Submodule 'lvgl' (https://github.com/littlevgl/lvgl.git) registered for path 'lib/lv_bindings/lvgl'
Submodule 'micropython/pycparser' (https://github.com/eliben/pycparser.git) registered for path 'lib/lv_bindings/pycparser'
Cloning into '/home/build/lv_micropython/lib/lv_bindings/driver/png/lodepng'...
remote: Enumerating objects: 85, done.
remote: Counting objects: 100% (85/85), done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 722 (delta 50), reused 49 (delta 27), pack-reused 637
Receiving objects: 100% (722/722), 1.04 MiB | 5.00 MiB/s, done.
Resolving deltas: 100% (479/479), done.
Cloning into '/home/build/lv_micropython/lib/lv_bindings/lvgl'...
remote: Enumerating objects: 24645, done.
remote: Total 24645 (delta 0), reused 0 (delta 0), pack-reused 24645
Receiving objects: 100% (24645/24645), 16.91 MiB | 6.01 MiB/s, done.
Resolving deltas: 100% (19692/19692), done.
Cloning into '/home/build/lv_micropython/lib/lv_bindings/pycparser'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 2412 (delta 0), reused 1 (delta 0), pack-reused 2407
Receiving objects: 100% (2412/2412), 1.07 MiB | 4.46 MiB/s, done.
Resolving deltas: 100% (1623/1623), done.
Submodule path 'lib/lv_bindings/driver/png/lodepng': checked out '2e541f53ebedf6ebae375a381ca2fd6d82b460bc'
error: Server does not allow request for unadvertised object bac66172ea89e3ed101548f893277b987afe58f5
Fetched in submodule path 'lib/lv_bindings/lvgl', but it did not contain bac66172ea89e3ed101548f893277b987afe58f5. Direct fetching of that commit failed.
Submodule path 'lib/lwip': checked out '159e31b689577dbf69cf0683bbaffbd71fa5ee10'
Submodule path 'lib/mbedtls': checked out '3f8d78411a26e833db18d9fbde0e2f0baeda87f0'
Submodule 'crypto' (https://github.com/ARMmbed/mbed-crypto) registered for path 'lib/mbedtls/crypto'
Cloning into '/home/build/lv_micropython/lib/mbedtls/crypto'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 80514 (delta 3), reused 2 (delta 0), pack-reused 80504
Receiving objects: 100% (80514/80514), 22.99 MiB | 6.22 MiB/s, done.
Resolving deltas: 100% (65106/65106), done.
Submodule path 'lib/mbedtls/crypto': checked out 'a78c958b17d75ddf63d8dd17255b6379dcbf259f'
Submodule path 'lib/mynewt-nimble': checked out '223714cb16c255cfa701929c0de6d7579bfd2cdd'
Submodule path 'lib/nrfx': checked out '7513fc9d5c10dc28b25bf2bb6ff0ba66cb2a3c3d'
Submodule path 'lib/stm32lib': checked out '668d7a9e54aea98f8fe8a858eac1d3daa80fa824'
Submodule path 'lib/tinyusb': checked out '393492823ce037a2e46d367d61fad1235859af2e'
Submodule 'hw/mcu/microchip/samd/asf4' (https://github.com/adafruit/asf4.git) registered for path 'lib/tinyusb/hw/mcu/microchip/samd/asf4'
Submodule 'hw/mcu/nordic/nrfx' (https://github.com/NordicSemiconductor/nrfx.git) registered for path 'lib/tinyusb/hw/mcu/nordic/nrfx'
Submodule 'hw/mcu/nxp/lpcopen' (https://github.com/hathach/lpcopen.git) registered for path 'lib/tinyusb/hw/mcu/nxp/lpcopen'
Submodule 'hw/mcu/st/stm32lib' (https://github.com/hathach/stm32lib.git) registered for path 'lib/tinyusb/hw/mcu/st/stm32lib'
Submodule 'tools/uf2' (https://github.com/microsoft/uf2.git) registered for path 'lib/tinyusb/tools/uf2'
Cloning into '/home/build/lv_micropython/lib/tinyusb/hw/mcu/microchip/samd/asf4'...
remote: Enumerating objects: 1520, done.
remote: Total 1520 (delta 0), reused 0 (delta 0), pack-reused 1520
Receiving objects: 100% (1520/1520), 1.75 MiB | 5.53 MiB/s, done.
Resolving deltas: 100% (928/928), done.
Cloning into '/home/build/lv_micropython/lib/tinyusb/hw/mcu/nordic/nrfx'...
remote: Enumerating objects: 1882, done.
remote: Total 1882 (delta 0), reused 0 (delta 0), pack-reused 1882
Receiving objects: 100% (1882/1882), 3.16 MiB | 5.99 MiB/s, done.
Resolving deltas: 100% (1478/1478), done.
Cloning into '/home/build/lv_micropython/lib/tinyusb/hw/mcu/nxp/lpcopen'...
remote: Enumerating objects: 1286, done.
remote: Total 1286 (delta 0), reused 0 (delta 0), pack-reused 1286
Receiving objects: 100% (1286/1286), 5.35 MiB | 5.83 MiB/s, done.
Resolving deltas: 100% (724/724), done.
Cloning into '/home/build/lv_micropython/lib/tinyusb/hw/mcu/st/stm32lib'...
remote: Enumerating objects: 2362, done.
remote: Total 2362 (delta 0), reused 0 (delta 0), pack-reused 2362
Receiving objects: 100% (2362/2362), 8.53 MiB | 6.06 MiB/s, done.
Resolving deltas: 100% (1853/1853), done.
Cloning into '/home/build/lv_micropython/lib/tinyusb/tools/uf2'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 380 (delta 2), reused 9 (delta 0), pack-reused 368
Receiving objects: 100% (380/380), 110.91 KiB | 1.56 MiB/s, done.
Resolving deltas: 100% (193/193), done.
Submodule path 'lib/tinyusb/hw/mcu/microchip/samd/asf4': checked out '82fe3aa05bc3b9f4956ee775c748a3885443f66b'
Submodule path 'lib/tinyusb/hw/mcu/nordic/nrfx': checked out '9d68726e41c321f1772c187bd12d82f5b13104f1'
Submodule path 'lib/tinyusb/hw/mcu/nxp/lpcopen': checked out '06b4c2e509147924b66ace90f6be5ebe599af45c'
Submodule path 'lib/tinyusb/hw/mcu/st/stm32lib': checked out '1dabc2df8ed1acaf0c483b58d757ba72e8b42090'
Submodule path 'lib/tinyusb/tools/uf2': checked out '19615407727073e36d81bf239c52108ba92e7660'
Submodule 'hidapi' (https://github.com/signal11/hidapi) registered for path 'lib/tinyusb/tools/uf2/hidapi'
Cloning into '/home/build/lv_micropython/lib/tinyusb/tools/uf2/hidapi'...
remote: Enumerating objects: 2006, done.
remote: Total 2006 (delta 0), reused 0 (delta 0), pack-reused 2006
Receiving objects: 100% (2006/2006), 2.73 MiB | 5.26 MiB/s, done.
Resolving deltas: 100% (1172/1172), done.
Submodule path 'lib/tinyusb/tools/uf2/hidapi': checked out 'a6a622ffb680c55da0de787ff93b80280498330f'
Failed to recurse into submodule path 'lib/lv_bindings'

Unfortunately I cannot check out the code any longer

@spierepf
Fixed. Please try again.

It works great now! I'd love

@amirgon The issue with ILI9341 and double buffering was reported again, just so you know: https://forum.littlevgl.com/t/double-buffer-heap-corruption/2123

@amirgon The issue with ILI9341 and double buffering was reported again, just so you know: https://forum.littlevgl.com/t/double-buffer-heap-corruption/2123

@embeddedt Thanks for letting me know. I spent some time debugging this in the past, it looks like a nasty memory corruption.
At the moment I'm a bit busy, hopefully I'll get back to this some time in the future.


[In-Game] The last screen line displays a "hall of mirrors" effect when the screen res = renderer res

No clue what's going on here, but it may have to do with DWM and the no tearing support I toggle on in-game

Screenshot of this happening (for now)

Fixed by always flushing the render target


use wss

Not meant to be merged: simply a quick and dirty workaround for me to get going.
However, it would be nice to make this configurable!
Thank you @kjbreil

v0.2.3 update with ssl config option

v0.2.3 update with ssl config option

Awesome! Thank you :)
https://github.com/kjbreil/hass-ws/commit/30fe27ed738bb84a05a19a4c0310f2f4b6146e5a is exactly what I wanted :tada:


Investigate stability of quicksort_palette shader

My Intel GPU driver under Windows gives a different image for this shader compared with Swiftshader, and I have seen a fair bit of variation for this one over some fuzzing runs.
Interestingly the colors are fairly stable, but where the blocks of colors end up going varies.
This may just be due to shader compiler bugs, but it would be good to investigate by.
Image produced by Swiftshader:

Image produced by Intel Windows:

The puzzelize() causes a slight difference between float and double. I'll look closer..

Well, this is a fun one.
Puzzelize calls randomize where the actual fun happens. This does the following operations:
dot
sin
mul
fract
add
floor

By tracking the result of each operation in both float and double, we can see where the problem happens (for a random failing case):
dot   -><PHONE_NUMBER>0<PHONE_NUMBER>0
sin   ->    1.00000000    1.00000000
mul   -> 4250.00000000 4249.99999952
fract ->    0.00000000    0.99999952
add   ->    0.50000000    1.49999952
floor ->    0.00000000    1.00000000

By adding a magic constant after the mul, things get more stable. I reduced the float mantissa by masking bottom bits and got to 20 bit mantissa with the value 0.01; at 19 bits I couldn't find a single value that would fix all cases, but 0.02 had the least failing cases.
So suggested change would be:
return float(floor(fract(sin(dot(co.xy ,vec2(12.5, 3.))) * 4250.) + 0.5));
->
return float(floor(fract(sin(dot(co.xy ,vec2(12.5, 3.))) * 4250. + 0.02) + 0.5));

Even after this we're slightly mathematically iffy, but having around 3 bits of error should be more than enough, even with the undefined rounding mode of the spec. Making the grid smaller produced more errors in the masked-mantissa modes, but not with the full float vs double when the constant was added.

https://github.com/google/graphicsfuzz/pull/758

Closed via #758.


Xamarin.Forms Android SignIn Activity .NET Standard problem?

I've got a problem just initiating activity object from SignInActivity.cs on a Android Xamarin.Forms app.
Here's the log:
07-09 09:10:40.919 I/MonoDroid(15138): UNHANDLED EXCEPTION:
07-09 09:10:41.009 I/MonoDroid(15138): System.ArgumentNullException: Value cannot be null.
07-09 09:10:41.009 I/MonoDroid(15138): Parameter name: value
07-09 09:10:41.009 I/MonoDroid(15138):   at System.String.IndexOf (System.String value, System.Int32 startIndex, System.Int32 count, System.StringComparison comparisonType) [0x00003] in <3fd174ff54b146228c505f23cf75ce71>:0
07-09 09:10:41.009 I/MonoDroid(15138):   at System.String.IndexOf (System.String value, System.StringComparison comparisonType) [0x00009] in <3fd174ff54b146228c505f23cf75ce71>:0
07-09 09:10:41.009 I/MonoDroid(15138):   at System.String.Contains (System.String value) [0x00000] in <3fd174ff54b146228c505f23cf75ce71>:0
07-09 09:10:41.009 I/MonoDroid(15138):   at Microsoft.HealthVault.Client.Platform.Android.SignInActivity+SignInWebViewClient.OnPageFinished (Android.Webkit.WebView view, System.String url) [0x00008] in C:\agent-onesdk-1\_work\11\s\Microsoft.HealthVault.Client.Android\SignInActivity.cs:97
07-09 09:10:41.009 I/MonoDroid(15138):   at Android.Webkit.WebViewClient.n_OnPageFinished_Landroid_webkit_WebView_Ljava_lang_String_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_view, System.IntPtr native_url) [0x00017] in <9ab9faae1b4b4f0da28e7c4ac61e2c78>:0
07-09 09:10:41.009 I/MonoDroid(15138):   at (wrapper dynamic-method) System.Object:e17947bc-5ab0-484b-b7b1-a4b878b97cd7 (intptr,intptr,intptr,intptr)
07-09 09:10:41.059 I/dalvikvm(15138): Could not find method java.lang.Throwable.<init>, referenced from method android.runtime.JavaProxyThrowable.<init>
Guess you're not null checking when activity object gets used, but I'm unsure where do you set it, guess it's passed into a constructor that way...I'll check on iOS this week, but the same code works on UWP, and I can post it if needed...it's mostly the code from the Build'17 HealthVault presentation used in the core lib (I thought it might have been the lack of modernhttpclient in that core .net standard 1.4 lib, as I've had such trouble before on Anroid when doing http requests without it, but manual nuget add does the same)

We have Xamarin forms samples for the SDK here  The samples in that repo should run, can you verify your implementation ?

Sorry I wasn't checking this, but now I tried your sample, and it works after a 1.66.20706.2-preview nuget upgrade (I've submitted a pull request), so I'll be using that code in the future (the only thing seemingly different (beside the upgraded nuget now) is that your AuthenticateAsync() is called within a LoadAsync:
await LoadAsync(async () =>
            {
                await _connection.AuthenticateAsync();
            });

so I might take a look if that LoadAsync fixes my code's problems on Android (if that is the case this is/was a non-issue). Thank you all the same.

Hi Dimitri, the current version of ActionPlans APIs are supported the Plan data type, but there are some other related data types we recommend that you check. Please see this documentation for more info: https://docs.microsoft.com/en-us/healthvault/getting-started/configuring-new-app-acc.


Is this project still active?

Is this project still active, and new java versions will be added?

I'm afraid there is not much momentum on this repo anymore. This is probably due to the fact that modern Java JVMs play much nicer with containers than older Java 8 JVMs so there is probably no need for such a starter script anymore.
I would say this repo and the script are in maintenance mode (i.e. I don't have any spare cycles to keep care of it rigorously).
Happy if someone else wants to pick it up and also happy to aid in any transition.

ok, thanks for the answer.


Fix CI

The macOS runner labels needed updating. https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
Also for some reason GitHub's macOS runners don't come with the /Library/PrivilegedHelperTools directory. I was pretty sure this was in the base installation by default.

@dfrankland it looks like the main branch workflow has to pass as well before I can complete it, which isn't possible.

No worries, just rebase and merged it


LSClient._forward_update_message issue with JSON-formatted responses

Hello
Issue is with this bit:
tok = update_message.split(',')
 table, item = int(tok[0]), tok[1]
This works for prices where the format is:

1,1|00:06:28|1.08083|1.08089|0.00017|

in which case table is assigned 1, item is assigned '1|00:06:28|1.08083|1.08089|0.00017|' since the | character is unaffected by the split.
However it does not for TRADE, MARKET, etc where the output is instead JSON-like e.g.:

1,1|{"trailingStep":null,"trailingStopDistance":null,"stopLevel":null,"limitLevel":null,"guaranteedStop":false,"currency":"JPY","expiry":"-","dealIdOrigin":"DIAAAAA89UVURAX","direction":"SELL","epic":"","dealId":"","dealReference":"","dealStatus":"ACCEPTED","level":111.576,"status":"DELETED","size":0,"channel":"WEB","timestamp":"2017-03-21T23:44:27.177"}

As a consequence the split will turn the string into a list with multiple rows, and tok[1] will only hold (in this example) the following:
1|{"trailingStep":null
The rest of the information is lost.
Proposed fix: only split the first comma, leave rest of the string as is:
tok = update_message.split(',', 1)
This will not affect prices and resolve the issue. It is also compatible with Python 2 and 3.
Tested/reg-tested locally
Thanks

PR is welcome!

Pull Request? I never used git before. Will give it a try this evening

https://help.github.com/articles/about-pull-requests/
Fork this repository.
Clone your repository
git clone your_fork_repository

Create a branch to fix this issue
git checkout -b name_of_your_new_branch

Modify code to fix issue / add feature(s)
Add your changes to repository and commit changes
git add your_modified_files.py
git commit

Push your code in your GitHub fork repository
git push

Go to your fork repository on GitHub and create a PR
https://help.github.com/articles/creating-a-pull-request/

Thanks - seems to have worked

I haven't test it but if you say me that it fix this issue I accept this PR.
Thanks for your contribution @RRMXkun


No module named 'numpy._core.numeric'

I installed the development version to resolve the NaN as npNaN bug.
TA_LIB not installed
With the development version I encountered the following error:
An error occurred while loading the file: No module named 'numpy._core.numeric
Installing numpy==2.0.0 seemed to resolve this issue (is this safe?)
NB: Also I had to install  setuptools to get pandas_ta to work.

Hi Ewan, I got rid of that NaN as npNan bug.  thanks for posting how to get rid of it.  Hopefully, I dont have to do the rest that you did to get it to work.  lol

Hello @ewan777  and @Philip030601,

NB: Also I had to install setuptools to get pandas_ta to work.

Python 3.12 removed setuptools, hence it is required for installation. Furthermore, it is listed in the development requirements.txt.

With the development version I encountered the following error:
An error occurred while loading the file: No module named 'numpy._core.numeric
&
Installing numpy==2.0.0 seemed to resolve this issue (is this safe?)

Ok. But you also haven't provided the minimal necessary details requested from you in the Bug Report so somone can isolate and replicate and potentially fix (if possible). 🤷🏼♂
Furthermore, perhaps you should open a bug report with numpy and ask them about error and about safety.

Doh! 🤦🏼♂  (Accidently "closed" issue by mistake.)
Also if numpy 2.x is not working, then try the last 1.x. release. There are several numpy 2 issues here suggesting that if you absolutely do not need 2.x now. 😓
Kind Regards,
KJ


Update README.md

Dear @urania277, the proposed dates make sense to me. I guess in worst case scenario if students feel the Holidays break was too disrupting, they will let us know.

@mlund can you approve the pull request?


rust stable

Epic PaP(i)R, thanks!
Goooooooood they should finally stabilize drain_filter and split_once ^^'


Initial support for The 8-Bit Realm

The 8-bit Realm is a zone
2)The Fungus Plains, Hero's Field, Vanya's Castle, and Megalo-City are adventures
Three new monsters: Blader, Met, Tackle Fire
digital key (and key lime and key lime pie) are no longer concoctions
pixel bread and pixel whiskey are new pixel items which give ne status effects
New properties to track your "score"
8BitScore - your "score" for use in the treasure house
8BitColor - the color of the score in the charpane, which indicates which adventure area has double score and bonus

I considered making that the zone, but you still have to know which zone benefits from which modifier.
color -> zone -> modifier
vs.
color -> zone
color -> modifier
Whatever.
7) When you automate with the continuum transfunction equipped, get charpane.php, not api.php, so we can pick up the score.
Other things we could (maybe) do:

Update score from fight respone
Decorate the 8-bit map, somehow, to show needed color/modifier for double points
Something for the Treasure House? Log visit?

One other thing to remove is that UseLinkDecorator.java no longer needs to track the RGB pixels to make white pixels (keeping the white pixels in Exploathing is probably helpful)

Yeah. You can still make white pixels, but not worth reminding about that. We don't remind you for other pixel concoctions?

One other thing to remove is that UseLinkDecorator.java no longer needs to track the RGB pixels to make white pixels (keeping the white pixels in Exploathing is probably helpful)

Done.

One other piece: per cf40 Vanya's Castle is the only zone with a stat req. The rest have none so I had that wrong in my PR.

OK. And I may as well check out DiffLevels while I am here.

I assume 8-Bit Realm is no longer accessible on the autumn-aton screen, so there's no need to move it to obsolete instead of deleting it?

Good catch.
It IS on my Automaton's dropdown.
I'll move it to Obsolete.

Thanks for the quick support! One thing I noticed during testing now is that the score is being saved to the preference with commas:
Preference 8BitScore changed from 9,600 to 10,000

Thanks for the quick support! One thing I noticed during testing now is that the score is being saved to the preference with commas:

Preference 8BitScore changed from 9,600 to 10,000

That's OK because if your script converts it to an integer, it goes through a StringUtilities method which handles that fine.

Well, not when I tried to use parseInt in javascript to handle the setting value (since e.g. parseInt("12,200") === 12), which is how I noticed. But you're right that it's easy enough to handle on the script side.

Well, not when I tried to use parseInt in javascript to handle the setting value (since e.g. parseInt("12,200") === 12), which is how I noticed. But you're right that it's easy enough to handle on the script side.

OK.
I do ASH and Java.
ash to_int("12,200") -> 12000
StringUtilities.parseInt("12,200") -> 12000
I have no idea what JS "parseInt" calls.
Is this a Kolmafia JS bug?
Not my wheelhouse.

As V suggests, you should use toInt instead.
> js toInt("12,200")

Returned: 12200

> js parseInt("12,200")

Returned: 12.0

I don't like that - I had been under the impression that the "contract" exposed by Mafia was that integer preferences are not supposed to be stored with commas. That's why typical JS code (e.g. the libram library that lots of folks use in JS scripts) uses parseInt when reading out of a preference. I don't know of another preference that works this way. Maybe I am just uninformed.

Well, I don't do JS, so am unaware of coding conventions.
It's easy enough to do the integer parsing when we store the property.
No change in behavior for KoLmafia internal use and for ASH scripts, but, whatever.
I have an open PR which will do that for this property.


Operation queue, cancel

Hi, I've question.
How I can use this library with NSOperationQueue and is there any way to cancel FeedKit parse request.
is the XMLParser's abortParsing method appropriate for that?

Hi @vaderdan,
I've just exposed the XMLParser's abortParsing method in the FeedParser class here
It will be available on the next release. For now you can checkout the master, in order to get it.
As for the operation queue, I guess it would be vey similar to the example provided here with Swift 3's dispatch queue.
I haven't tried this myself, but it should go along the line of:
let queue = OperationQueue()

queue.addOperation() {
    // Run parsing in the background
    FeedParser(URL: feedURL)!.parse { (result) in
        OperationQueue.main.addOperation() {
            // Perform updates in the main queue when finished
        }
    }
}

Thanks for letting me to try the abortParsing method!! 😄
I tested it a bit here is what I found:
I had a little bit of hard time wondering about this:
From what I saw from the FeedKit Core, the FeedParser(URL: feedURL) initialization is calling
the XMLParser's public convenience init?(contentsOf url: URL) and it is downloading the xml document during the object initialization not the parse  method.
The problem is why is the heavy lifting (downloading the content) done during the initialization of the FeedParser object, but not in the parse method.
I've tested the operation queue and it works.
Here is some sample of the FeedKitOperation class
import Foundation
import FeedKit

public class FeedKitOperation: ConcurrentOperation {
    var parser:FeedParser?
    let url:URL
    let completionHandler: (Result) -> Void

    public init(url:URL, _ completion: @escaping (Result) -> Void) {
        self.url = url
        self.completionHandler = completion
        super.init()
    }

    override public func main() {
        self.parser = FeedParser(URL: url)
        self.parser?.parse({ result in
            var result = result
            self.state = .finished

            if self.isCancelled {
                result = .failure(NSError.init(domain: "Cancelled", code: -1, userInfo: nil))
            }

            self.completionHandler(result)
        })
    }

    override public func cancel() {
        super.cancel()
        parser?.abortParsing()
    }
}

I used this gist https://gist.github.com/calebd/93fa347397cec5f88233
as ConcurrentOperation class.

My tests are in this repository https://github.com/vaderdan/FeedKitTest

Can I close this issue?

Cool, thanks for sharing :)


PGRST102: Error in $: not enough input when inserting data using supabase-py

Trying to update a row using the supabase.table().update().eq().execute() pattern. Using postman to test my API it keeps returning the error "PGRST102: Error in $: not enough input"
Googling this error, I came across a similar issue that popped up with the JS version of supabase. (There error that time was it seems that this happened because an exception during the JWT decoding caused cloudflare workers to resend the request without a body(hence the error message)"

Did you ever figure out a way to fix this? Been stuck in the same problem this week.

Nope, no luck on my end.

Hey @goodmarvin @Tyfee ,
Thanks for filing a bug report - can I check if you're still facing the issue?
Let us know! Also going to transfer this to postgrest-py for tracking


WIP: Nh refactor

closes https://github.com/neighbourhoodie/Tangerine_pm/issues/39
Transform-Pouch includes documentation, a test suite, and two primary source files: index.js and test/test.js.
Other files such as pouch-utils.js and test/webrunner.js represent very outdated patterns and are eliminated.
This PR does:

[x] Refactors the codebase to use async/await syntax
[x] Update node version
[x] Clean up dependencies
[x] Update dependency versions

[x] Replace dependencies with native code (ex: 'lie', 'bluebird', 'argsarray', etc.)
[x] Use mochify instead of selenium, phantomjs, 'webrunner.js', etc.
[x] Use nyc to instrument test coverage
[x] Use standard instead of jshint

[x] Use rollup to populate dist/ with distributable versions of the library.
[x] Switch from TravisCI to GitHub Actions
[x] Add comments!
[x] Allows running tests against a CouchDB instance using the COUCH_URL environment variables.
[x] Add 100% test coverage

I've done my final quality pass on this. It looks good to me, but a lot of it is my code, so I'd appreciate a second opinion. @jcoglan ?
The only remaining issue is distribution artifacts. Although we have an npm run build command which generates bundles for browsers, we do not include these artifacts in the repo or in what we publish to NPM. Since we are out of time for fiddling I believe we should just drop support for such browser-ready bundle inclusion. I have updated the readme to mention that you can build these artifacts yourself. The alternative will be to instrument some kind of auto-publishing procedure which automatically generates these bundles whenever publishing a new version. I await group comment regarding this.

@garbados These changes to the code look good to my, some nice clarifications there.
I have removed bower.json because we no longer officially support this and as you say we don't publish browser builds in the repo or in the npm package (per the "files" field). I'm inclined to just publish Node.js modules and not browser builds -- most people consuming code from npm for the browser will be using a build tool like browserify, webpack or rollup that will understand how to import code, and it's only worth shipping distinct browser modules if you actually have a different implementation of modules in browsers vs Node.
The differences between ES modules and Node modules might cause some confusion, and it might be worth publishing builds for each system. But our docs say to use require() rather than import which is correct for our current build, and I'm inclined to leave things as-is unless we get significant complaints from users.
I think the main thing we need to get sorted before release is CI -- I've enabled it on all pushes and pull requests, and it is currently failing due to a handful of tests related to the http adapter. I've been trying to understand how we ensure a Couch DB is available for the tests to use and I'm not sure I understand some current changes.
Commit 0e75a426a9c3a514b75d792e4c5410269a800e54 migrates from Travis to GitHub Actions and I don't know if this configuration was verified in terms of how it sets up and accesses the CouchDB service.
Commit dda4e7b77de9c0c230b19024bd8241a992ca6c67 removes a fair bit of test support code for starting up a dev server and running browser tests in Saucelabs.
@garbados Are you able to shed light on how we get these failing tests passing. Should we be running CI in the browser like we used to, or is the test:browser task using mochify sufficient?
Once we're happy with this branch, I will merge it into pouchdb-community/master and cut a release.


Removed problematic parts of #575

Overview

Test Plan

My biggest question on this one is if the Snapchat SDK could be made optional? I'm not sure what this will do to app size for people that don't use Snapchat? I believe for instance facebook share works but without directly including the facebook SDK so I'm not sure why the Snapchat SDK has to be brought in as a direct dependency

We need the SDK because all other sharing has been done with deep linking, which you can grasp by seeing the implementations, however SnapChat needs it because it does not support sharing with deep linking.

Ah - I didn't realize you were picking up the baton from another PR, yeah, that is a thankless job :rofl: - I'm still not sure about the headers being tried in 3 ways - is that really needed? - but cool the SDK can be optional. Not sure if it will still compile correctly if it is optional, the whole implementation might need an IFDEF check for the Snapchat SDK header definition then - but still might be possible

@mikehardy, where to install modules specifically for the example app?
It seems that rn-fetch-blob is needed

that would be in example/package.json or example/ios/Podfile I think?

https://react-native-community.github.io/react-native-share/docs/contributing#where-is-the-packagejson-and-node_modules
and after taking a look at https://github.com/react-native-community/datetimepicker/blob/488bedac6a41ccb8c6b34d2a07824de6fd77f47a/package.json, I guess we should put it in devDependencies.

Unfortunately, I cannot get the example app worked: snapchat does not launch although I follow the doc.
Maybe the SDK is broken?
I hope somebody who is more familiar with native codes investigate this more:)

Snap Inc. says they have fixed the SDK so the code might work as expected after updating the SDK!

@NishidaRyu416 what is the version you are currently using ?


sync up with latest wasi-nn spec

@tonibofarull please take a look and leave your comments. Thanks ☕ 🍺


CREATE OR REPLACE TABLE doesn't replace table

Description
It errors
> create or replace table hello as select 1;
Table created
> create or replace table hello as select 1;
Error: Execution error: failed to create table in catalog: Failed Metastore request: Duplicate name: hello

adding "priority-high" label & moving this into the upcoming milestone as this seems like a highly used statement.


Feature Request: Set min playtime to count as "play"

First of all: Thank you very much for your effort and your time! I currently switched from Plex and Tautulli und Jellystat gives me a lot of statistics like Tautulli which is really nice.
I think it would be great to be able to specify a minimum playtime in % or minutes for an item to be counted as a "play".
I recently tested something out and started a movie like 20 times for just 1-2 minutes and now the dashboard says 20 plays. This could accumulate quite fast and distort the statistics page.
Would be great if we got a setting for this imho.

Hi @heeelga , so im actually working on this at present, its referenced in task #56 but to be fair its not the most aptly named issue. Il keep this task open and track changes on both.
So the current plan is follow the threshold system to count a watch, I'm not sure if I'm going to allow the threshold to be configurable, I guess with user testing and feedback that may change but generally I don't think it needs to be a configurable option, but will keep that in mind.

 Progressively Track Watch instance

Hi @CyferShepard, thank you so much for your immediate reply. This is great! I also think it doesn't have to be a configurable option but setting the threshold up in general would definitely help. I will patiently wait for an update :).


dep: unexport SafeWriter.Lock

Is your ultimate goal to make SafeWriter unexported?

Not sure yet. I'm just tiding up things as I read the code on the train.
On Wed, 17 May 2017, 09:39 Carolyn Van Slyck<EMAIL_ADDRESS>wrote:

Is your ultimate goal to make SafeWriter unexported?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/golang/dep/pull/590#issuecomment-301944621, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAAcA6b4kc0q_j64C2sC76M-wOagIWAbks5r6jOlgaJpZM4NdLRf
.


Be able to reorder columns in result grid

SQL Operations Studio Version: 0.27.3

Steps to Reproduce:

Run query with results
Click column header and attempt to drag left or right

Desired: Column is moved with mouse cursor (similar to SSMS).
Actual: Nothing happens.

This would be a very nice addon to ADS

I definitely upvote this feature


Better place name label hierarchy & placement

Believe labels for certain places are being sized based on population data, this should probably not be the sole factor for label prominence. Perhaps it would be helpful to pull scalerank from Natural Earth's populated places to be included with Aries and use that instead?
For example the Seattle area at z11, the label for Seattle doesn't render:

And the SF Bay Area at z11, the label for SF should probably be more prominent than Oakland, though it has a smaller population:

On the top map, Eastgate has population <5000 and is labeled. Seattle has population >500000 and is not labeled. The problem may not be correlated with population, so it might be more of a bug...

Yes it's likely to do with Seattle's label falling on or very close to a tile edge which may be why it's not being rendered.


Inconsistent naming of classes

This issue was discovered by @loicbourgois
The controllers are all lowercase. E.g. Chart.controllers.line:
https://github.com/chartjs/Chart.js/blob/master/src/controllers/controller.line.js#L33
The elements are all uppercase:
https://github.com/chartjs/Chart.js/blob/586b8c12fc546aabcac341b3a949b3891019bd36/src/elements/index.js#L5
@simonbrunel @etimberg what's our naming strategy? What should we do for new classes? E.g. if we're adding new elements and controllers in a plugin

Not sure if we want to change this during v3, Chart.elements.* still has a capital letter and Chart.controllers.* has no capital letter. I think this is less of a problem for ESM builds where we have LineController as a top level export

Closing since we aren't going to do this for v3


Type property validation

It would be awesome to support one level of nested type validation instead of having to create a new single use types and without having to cram all the validation rules at the top of the type.
type Chat {
  id: String;
  timestamp: Number;
  user: String {
    validate() = this == auth.uid;
  }
}

// Cramming all the validation rules for the type in a single rule
// can be hard to read after a while
type Chat {
  validate() = this.user == auth.uid && condition2 && condition3;
}

// Seems odd to have to new type that gets used only once
type ChatUser {
  validate() = this == auth.uid;
}

// This works ok, but then it removes "user" from the
// top level hasChildren validation on the Chat
// and separates it from the type definition
/chats/$chat/user is String {
  validate() = this == auth.uid;
}

See also Issue #53

Sorry — missed that one.


Fix build error when the theme changes component style

Types of changes

[ ] New feature
[x] Bug fix
[ ] Documentation change
[ ] Coding style change
[ ] Refactoring
[ ] Performance improvement
[ ] Test cases
[ ] Continuous integration
[ ] Typescript definition change
[ ] Breaking change

Background and context

It will cause error when building an Arco theme with custom component style.
Solution

The reason for the problem is that the token.less file is not imported by AppendLoader, so I import 'token.less' in each component style files.
How is the change tested?

Just add a example with a arco theme @arco-design/theme-christmas.
Changelog

Changelog(CN)
Changelog(EN)
Related issues

修复构建带有自定义组件样式的主题会出现报错的问题
Fix build error when the theme changes component style

Checklist:

[x] Provide changelog for relevant changes (e.g. bug fixes and new features) if applicable.
[x] Changes are submitted to the appropriate branch (e.g. features should be submitted to feature branch and others should be submitted to master branch)

Other information

The _addAppendLoader() property is a common util function used by somewhere. I perfer to move it to handleComponentStyle() and only inject tokens for limited files.
https://github.com/arco-design/arco-plugins/blob/80eb24a510217fc8c0f33376d1de83471bb4a470/packages/unplugin-react/src/plugins/theme.ts#L35-L50
But when I look back at the existing sourcecode, I recall what make this problem happen: The unplugin turn to inject independent module rules instead of modifing properties of normal modules (it caused really much issues). And so that we deprecated the modifyVars option field:
https://github.com/arco-design/arco-plugins/blob/80eb24a510217fc8c0f33376d1de83471bb4a470/packages/unplugin-react/README.md?plain=1#L62
It also mean that we doesn't support inject tokens from custom theme implicitly.
https://github.com/arco-design/arco-plugins/blob/80eb24a510217fc8c0f33376d1de83471bb4a470/packages/plugin-webpack-react/src/arco-design-plugin/plugin-for-theme.ts#L33-L75
However the automatic injection is not a required feature for every theme. I think that theme package should import token definitions by themself. This is also what the default theme of arco do. So that we didn't find the bug out before.
But there is a workaround way. I left a util here:
https://github.com/arco-design/arco-plugins/blob/80eb24a510217fc8c0f33376d1de83471bb4a470/packages/unplugin-react/src/utils/theme.ts#L33-L41
You can use it just like:
module.exports = {
  module: {
    rules: [
      {
        type: 'css',
        test: /\.less$/,
        use: [
          {
            loader: 'less-loader',
            options: {
              lessOptions: {
                javascriptEnabled: true,
              },
              modifyVars: {
                ...getThemeVars('@arco-design/theme-christmas'),
              }
            },
          },
        ],
      },
    ],
  },
};

You can try it can give some feedback.
Whatmore in my opinion just injecting the token file is a better way. I don't know why the legacy webpack plugin intend to parse the token source file into options of modifyVar. Maybe we need some further disscussion.
@yinkaihui cc~


On-demand download of S3-offloaded WAL

Recently we started offloading WAL from safekeepers to S3, and removing WAL segments from the disk after a successful upload. That means that send_wal (START REPLICATION [LSN]) is no longer able to stream WAL from the beginning of the timeline once we trimmed the WAL.
We can fix this by downloading WAL segment from S3 once we need to read WAL at some LSN, and we don't have a corresponding segment on the disk.
A good test for that will be:

create a fresh timeline on the pageserver
generate some WAL, verify it's offloaded to S3
reset pageserver to the fresh state, so it should receive (from safekeepers) and replay all WAL
verify queries return expected results once pageserver has caught up

I thought we only remove the WAL from the safekeeper, after the pageserver has uploaded the corresponding layer files to S3. In other words, the pageserver should never call START REPLICATION with an LSN that has already been removed from the safekeeper.

I thought we only remove the WAL from the safekeeper, after the pageserver has uploaded the corresponding layer files to S3

That's correct, but there are still some corner cases:

if pageserver is lagging and we've replaced one safekeeper, that safekeeper can miss required WAL locally
when we do pageserver migration, we have several consumers, and we need to track that carefully

We can fix these cases separately, but this S3-download patch is easy to do and should simplify things in general. Also if we just want to download WAL from the beginning (maybe not even for pageserver), requesting any safekeeper with START REPLICATION for that sounds like a nice feature.

if pageserver is lagging and we've replaced one safekeeper, that safekeeper can miss required WAL locally

But how is that possible? In my understanding of the current implementation, safekeeper cannot remove WAL that was not acknowledged by the pageserver. So S3 offloading duplicates local WAL and there is no mechanism to delete unacknowledged WAL if it overflows the local disk.
+1 for the feature. It can simplify things a bit
For pageserver migration I imagined a solution that will have a loop that will try to start replication and download latest data from pageserver's s3 part if wal was deleted on the safekeeper side


wrap function

Complements before/after and prepend/append

wrap
wrapInner
maybe wrapAll?

Fixed by #47


Android Dark Mode Login Prompt

https://its-pro.ucsd.edu/browse/MA-78
In dark mode, the login prompt from the onboarding screen has white text on white background for the username/password field.

merged into experimental-v2: 2fe01fee33f0dcc172a2745a2bde4ccb79c825e9

Verified and deployed


⚠ Bofrost.es has degraded performance

In b9b7afa, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1523 ms

Resolved: Bofrost.es performance has improved in abb5867 after 35 minutes.


French - Environment Canada - Issue with alert "Veille D'Orages Violents"

Describe the bug
There is an issue with the alert " Veille D'Orages Violents " from Environemment Canada. The card is looking for " Veille De " prefix but in that case the prefix is " Veille D' "
Integration state attributes
No response
Screenshots

Card version
v2.5.4
Installation type
Home Assistant Community Store (HACS)
Card Configuration

type: custom:meteoalarm-card
entities:

entity: sensor.laval_warnings
entity: sensor.laval_watches
entity: sensor.laval_statements
entity: sensor.laval_advisory

Integration type
Environnement Canada
Integration configuration
GUI
Integration Configuration
No response

The card is looking for " Veille De " prefix but in that case the prefix is " Veille D' "

is this permanent change or it's just specific wording to this type of alert?

TBH, I don’t know if the behaviour changed because I started uaing it today. Maube they fixed a typo or maybe none noticed it before.For the problem, the case of “de“ vs “d’” is the exact same rule than “a” and “an“ in English. If the first letter of the following word is a vowel it’s “d’” otherwise it’s “de”. So both cases are possible.Thank youÉtienne @.*** Sep 7, 2023, at 19:19, Bartosz Dokurno @.***> wrote:
The card is looking for " Veille De " prefix but in that case the prefix is " Veille D' "
is this permanent change or it's just specific wording to this type of alert?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>


firebase_core not found for flutter_web (Flutter 1.9)

I upgraded my flutter to 1.9, and trying out flutter-web for an existing project. Got stuck at "firebase_core" is not found error  anyone experiencing the same issue ? Here's error:
i$ flutter run -d Chrome
Launching lib/main.dart on Chrome in debug mode...
Skipping compiling flutter_widgets|lib/main_web_entrypoint.dart with ddc because some of its
transitive libraries have sdk dependencies that not supported on this platform:
firebase_core|lib/firebase_core.dart

@ptyagicodecamp
The issue at https://github.com/flutter/flutter/issues/40360 has been closed and moved here. Future collaboration on this issue will be done here.

Is this a dupe of https://github.com/FirebaseExtended/flutterfire/issues/40?

@johnpryan thank you, you are right, rather a more specific case. So I think it would be correct to close this one, please upvote and follow it in #40.


Show OS controls for the window

Hide the MenuBar but leave the OS controls

Addresses #21
@tumland could you test this? I don't have a windows or OSx machine to try this out on right now.

I've tried showing the frame but hiding the menu, I think it will give the desired effect.

Confirmed working on OSx


[flutter_conductor] update dev/tools with release tool

Description
This is a re-write of the roll_dev.dart script as a full CLI tool complete with integration tests. At this point, the behavior should be exactly the same as roll_dev.dart. I am putting out a PR at this point so that the actual tool behavior improvements can be reviewed independent of this code re-organization.

Superseded by https://github.com/flutter/flutter/pull/69791/files to get past CI failures related to flutter tool version.


How to have OmniSharp detect and use MSBuild?

dotnet 6.0 is the last version supports Windows 7. There is no MSBuild.exe but there is MSBuild.dll on sdk\6.0.408 directory. The problem is, OmniSharp is unable to detect and use it.

The .NET Core build of OmniSharp should detect and use a dotnet 6 SDK. Look for the -net6 build of OmniSharp that is right for your platform. https://github.com/OmniSharp/omnisharp-roslyn/releases/tag/v1.39.7


Need to be able to write to a logfile

Currently the log output is only sent to the terminal. We should add the ability for it to be written to a log file as well (or exclusively).

@morenod Can you take a look at add this option?


bootstrap theme

It would be good idea to have bootstrap style.

It will be nice to support Bootstrap !

Thanks for the suggestion. For now, I will use Tailwind until everything is stable.


Fix target must be a non-nil pointer

With an API server for which I'm not authentified with correctly, tanka would panic with target must be a non-nil pointer because of a call to errors.As. Since we are actually only checking the type of the error and not its content, errors.Is can be used here. The It could also be moved to a variable to avoid creating a new instance each time just to check if it's of the right type.
This was happening trying to show the diff because it seems I'm not configured correctly.
WARNING: version difference between client (1.23) and server (1.20) exceeds the supported minor version skew of +/-1
Error from server (Forbidden): namespaces "default" is forbidden: User "<email>" cannot get resource "namespaces" in API group "" in the namespace "default": requires one of ["container.namespaces.get"] permission(s).
panic: errors: target must be a non-nil pointer

panic: errors: target must be a non-nil pointer

goroutine 1 [running]:
errors.As({0x10130dae8, 0x140000b2000}, {0x1012c0800, 0x101794360})
	/usr/local/go/src/errors/wrap.go:85 +0x3e0
github.com/pkg/errors.As(...)
	/Users/maoueh/go/pkg/mod/github.com/pkg/errors@v0.9.1/go113.go:31
github.com/grafana/tanka/pkg/kubernetes.(*Kubernetes).Diff(0x140004961a0, {0x140003f39d0, 0x2, 0x2}, {0x0?, 0x0?, {0x0?, 0x0?}})
	/Users/maoueh/work/github/grafana_tanka/pkg/kubernetes/diff.go:31 +0x4b8
github.com/grafana/tanka/pkg/tanka.Diff({0x16effebc0?, 0x140001edc58?}, {{{0x0, 0x140003227b0, 0x140003227e0, {0x0, 0x0, 0x0}, {0x0, 0x0}, ...}, ...}, ...})
	/Users/maoueh/work/github/grafana_tanka/pkg/tanka/workflow.go:122 +0xdc
main.diffCmd.func1(0x140001c4800?, {0x140002f8390, 0x1, 0x1?})
	/Users/maoueh/work/github/grafana_tanka/cmd/tk/workflow.go:158 +0x19c
github.com/go-clix/cli.(*Command).execute(0x140002afea0, {0x140002f8370, 0x1, 0x1})
	/Users/maoueh/go/pkg/mod/github.com/go-clix/cli@v0.2.0/command.go:118 +0x2b4
github.com/go-clix/cli.(*Command).Execute(0x140002af0e0)
	/Users/maoueh/go/pkg/mod/github.com/go-clix/cli@v0.2.0/command.go:76 +0xd4
main.main()
	/Users/maoueh/work/github/grafana_tanka/cmd/tk/main.go:58 +0x5bc

@sh0rez You are right, it's a nuance I was not aware of the errors.Is, only works if the error checked is the same instance indeed, source code of errors.Is is clear there.
Changed my fix to keep errors.As must now using a pointer receiver.


Updates to README

Goal

Fix broken link to Bugsnag script
Fix links to this repo

Changeset

Tests

Discussion
Alternative Approaches

Outstanding Questions

Linked issues

Review

For the submitter, initial self-review:

[ ] Commented on code changes inline explain the reasoning behind the approach
[ ] Reviewed the test cases added for completeness and possible points for discussion
[ ] A changelog entry was added for the goal of this pull request
[ ] Check the scope of the changeset - is everything in the diff required for the pull request?
This pull request is ready for:

[ ] Initial review of the intended approach, not yet feature complete
[ ] Structural review of the classes, functions, and properties modified
[x] Final review

For the pull request reviewer(s), this changeset has been reviewed for:

[ ] Consistency across platforms for structures or concepts added or modified
[ ] Consistency between the changeset and the goal stated above
[ ] Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
[ ] Usage friction - is the proposed change in usage cumbersome or complicated?
[ ] Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
[ ] Concurrency concerns - if components are accessed asynchronously, what issues will arise
[ ] Thoroughness of added tests and any missing edge cases
[ ] Idiomatic use of the language

Thanks @sultano!


Getting errors when using custom tags

I am getting lint errors when using custom tags check the screenshot below, I have installed eslint and everything in my vimrcis as README says.

I see you have set your filetype option to "vue.html.javascript.css". This causes your linting plugin to see the buffer as an HTML file, which in turn runs tidy over the file as if it were an html file.
The part in the readme about vue.html.javascript.css is not something we actually support, it just serves as a quick way to help existing plugins recognize the file. However, the mileage across different plugins may vary, hence the warning underneath it in de readme.
I think we're better of removing this tip from the readme, because it seems to do more harm than good.


Drop support for Python 2.6

Python 2.6 went EOL back in 2013. All of the Python packaging tools have dropped support. Since this package is Windows specific and Windows doesn't ship Python we don't have to worry about users stuck on "system" Python versions. It's time to drop 2.6.

Things to change:

Remove the Python 2.6 specific testing dependency on unittest2
Remove the 2.6 trove classifier
Remove all uses of PyCObject (PyCapsule is available in Python 2.7)

Using PyCapsule everywhere means we can give the mechanism OIDs descriptive names all the time.

Partially resolved by #28. Still need to switch to PyCapsule for Python 2.7.

On second thought, I'll make a separate ticket for that.


Ensure origin/HEAD is pointing to the correct branch

On an existing checkout origin/HEAD is not necessarily up-to-date. We need to update it in order to ensure we are pointing to the correct default remote branch. The default remote branch is updated on every Drupal 8 minor release so atm it is 8.5.x which is the probably okay to calculate from. At least it will auto-update. That said it does mean that some commits will not be counted until the 8.6.0 is released.

Note that https://github.com/lauriii/drupalcores/pull/114 is probably a better approach that keeps us on the latest dev branch. This will only manage the latest stable branch.

I was about to open this, but you beat me to it.

This will only manage the latest stable branch.
Turns out the origin/HEAD ref is normally only set on during the initial clone.  A fresh clone today does set origin/HEAD to 8.6.x.
Drupalcores.com seems to be building from 8.2.x currently, going by my counts.

I guess that origin/HEAD follows whatever is set as the default branch in the drupal.org project settings?
Most of the time we'll have two branches in play, say 8.5.x is stable, and 8.6.x development branch is marked as origin/HEAD
But when we reach 8.6.x alpha release, we'll have three branches in play: 8.5.x stable, 8.6.x marked as origin/HEAD, and 8.7.x open.  So there'll be a month during each release cycle where where counts aren't fully up to date, but so many commits are cherry-picked backwards that the discrepancy will small.  I think we can live with that.

Looks good! I really like the fact that this removes the need to manually update the branch. Thank you all!

This doesn't seem to work. The script still shows credits from 8.6.x branch while we're now on 8.8.x.

It's because origin/HEAD points to origin/8.6.x.
This PR removed the need to update the branchname in drupalcores, but it assumes that the latest dev branch is set as origin/HEAD on drupal.org
That was the case up until the 8.7.x branch.
The trouble is, we're relying on someone to set the active branch somewhere (this repo, or the drupal core repo) and it looks like neither is reliable.
Other ideas:

read the list of available remote branches, to deduce the latest dev branch
build stats for every branch....

I've changed the default branch to 8.8.x - it should be the dev branch.


skiplist synchronization question

The comment in the skiplist.h says like following:
void SkipList<Key,Comparator>::Insert(const Key& key) {
  // TODO(opt): We can use a barrier-free variant of FindGreaterOrEqual()
  // here since Insert() is externally synchronized.

But when I following the source code, I found no external synchronization in db_impl.cc:DBImpl::Write.
        // extract sequence and kType to insert memtable
        status = WriteBatchInternal::InsertInto(updates, mem_);

Is this comment out of date or I missed something?

On Thu, Nov 17, 2016 at 2:59 AM, Tony Zeng<EMAIL_ADDRESS>wrote:

The comment in the skiplist.h says like following:
void SkipList<Key,Comparator>::Insert(const Key& key) {
// TODO(opt): We can use a barrier-free variant of FindGreaterOrEqual()
// here since Insert() is externally synchronized.
But when I following the source code, I found no external synchronization
in db_impl.cc:DBImpl::Write.
    // extract sequence and kType to insert memtable
    status = WriteBatchInternal::InsertInto(updates, mem_);

Is this comment out of date or I missed something?

See the other comment in Write:
// Add to log and apply to memtable.  We can release the lock
// during this phase since &w is currently responsible for logging
// and protects against concurrent loggers and concurrent writes
The earlier code has already ensured that this thread is the one
responsible for writing to log.

Yes, earlier code has ensured no other thread will interrupt this writer/logger, but without lock and memory barrier version of FindGreaterOrEqual(), will reader thread always read the newest value that writer thread add?

The comment this bug references is for a writer-writer race, which does not
exist as the comment and my message says.
W.r.t.. a reader always reading the newest value, that is guaranteed by the
SetNext() at the bottom of Insert which does a release store.  Insert's
call to FindGreaterOrEqual does not matter to a reader since
FindGreaterOrEqual does not make any changes.
On Mon, Nov 21, 2016 at 11:30 PM, Tony Zeng<EMAIL_ADDRESS>wrote:

Yes, earlier code has ensured no other thread will interrupt this
writer/logger, but without lock and memory barrier version of
FindGreaterOrEqual(), will reader thread always read the newest value
that writer thread add?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/google/leveldb/issues/428#issuecomment-262167442, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AHuM0f2Mpp3vPUVDXRGwC63q0umstdhxks5rApoSgaJpZM4K1KPA
.

Thank you. I understand now.
One more question: Why not just give up a giant mutex lock and use atomic variable to solve writer-writer race? shouldn't atomic operation be cheaper?


Laravel BadMethodCallException

Hello,
I keep getting
Call to undefined method Illuminate\Database\Query\Builder::isHidden()

after running
php artisan vendor:publish --provider="Monarkee\Bumble\Providers\BumbleServiceProvider" --tag="migrations"

and from log I can see it is called in vendor\monarkee\bumble\Repositories\ArrayConfigModelRepository.php(84): Illuminate\Database\Eloquent\Model->__call('isHidden', Array)

Okey, it should be called before configuring model in bumble config, so no problem here.


Fix typo in examples/README.md

In the process of running an example, a typo was found in examples/README.md

thanks!


[Unit tests] EXC_BAD_ACCESS while executing registerInternalLibrary:withName:withVersion

[REQUIRED] Step 1: Describe your environment

Xcode version: 13.0
Firebase SDK version: 7.6.0 and 8.8.0
Installation method: CocoaPods
Firebase Component: Core

[REQUIRED] Step 2: Describe the problem
App crashes when performing Unit Tests
Steps to reproduce:

Run Unit Tests
Thread 1: EXC_BAD_ACCESS (code=10, address=0x116a3a298) in
#0	0x0000000116a22469 in +[FIRApp registerInternalLibrary:withName:withVersion:] at /Users//Documents//Pods/FirebaseCore/FirebaseCore/Sources/FIRApp.m:521

Relevant Code:

Hi @andresguzmanl, can you share the full stack trace?

Hello @morganchen12 thanks for answering so quickly. My problem is there is no backtrace, I only get that crash with no additional data. The only thing I am sure of, is that Unit Testing on 12.4 is perfectly fine.
Please let me know what info should I provide so that it can give you a better idea of the problem.

Hi @morganchen12, sorry for taking so long with this (had other stuff to address). here is te full backtrace:
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=10, address=0x10d5da298)
  * frame #0: 0x000000010d5c2469 FirebaseCore`+[FIRApp registerInternalLibrary:withName:withVersion:](self=FIRApp, _cmd="registerInternalLibrary:withName:withVersion:", library=0x00000001077cc780, name=@"fire-analytics", <EMAIL_ADDRESS>at FIRApp.m:521:1
    frame #1: 0x000000010681b40a LuloBank`+[FIRAnalyticsConnector load] + 89
    frame #2: 0x00007fff2018cf26 libobjc.A.dylib`load_images + 1419
    frame #3: 0x000000010d2b69da dyld_sim`dyld4::RuntimeState::notifyObjCInit(dyld4::Loader const*) + 170
    frame #4: 0x000000010d2bb94d dyld_sim`dyld4::Loader::runInitializersBottomUp(dyld4::RuntimeState&, dyld3::Array<dyld4::Loader const*>&) const + 167
    frame #5: 0x000000010d2bb9f6 dyld_sim`dyld4::Loader::runInitializersBottomUpPlusUpwardLinks(dyld4::RuntimeState&) const + 102
    frame #6: 0x000000010d2ca2d8 dyld_sim`dyld4::APIs::runAllInitializersForMain() + 222
    frame #7: 0x000000010d2ae920 dyld_sim`dyld4::prepare(dyld4::APIs&, dyld3::MachOAnalyzer const*) + 2306
    frame #8: 0x000000010d2aed3f dyld_sim`_dyld_sim_prepare + 379
    frame #9: 0x00000001158abc27 dyld`dyld::useSimulatorDyld(int, macho_header const*, char const*, int, char const**, char const**, char const**, unsigned long*, unsigned long*) + 2093
    frame #10: 0x00000001158a915e dyld`dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 1191
    frame #11: 0x00000001158a3224 dyld`dyldbootstrap::start(dyld3::MachOLoaded const*, int, char const**, dyld3::MachOLoaded const*, unsigned long*) + 450
    frame #12: 0x00000001158a3025 dyld`_dyld_start + 37
  thread #2
    frame #0: 0x00007fff6bf9995e libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007fff6bfeb4c1 libsystem_pthread.dylib`_pthread_wqthread + 414
    frame #2: 0x00007fff6bfea42f libsystem_pthread.dylib`start_wqthread + 15
  thread #3
    frame #0: 0x00007fff6bfea420 libsystem_pthread.dylib`start_wqthread

I'm not sure about the crash, but the backtrace indicates version 7.5.0 of Firebase Analytics.
Does the same problem occur with Firebase 8.8.0?
If you're still stuck, please share the Podfile.lock that goes with the crash backtrace.

Hmm, based on https://opensource.apple.com/source/xnu/xnu-1228.0.2/osfmk/mach/kern_return.h and https://developer.apple.com/documentation/xcode/investigating-memory-access-crashes an EXC_BAD_ACCESS code 10 is a KERN_MEMORY_ERROR. The crashed thread tried to access memory that couldn’t return data at that moment, such as a memory-mapped file that became unavailable.
I'm not sure what could cause that at https://github.com/firebase/firebase-ios-sdk/blob/bb8965c3ce61634ad15ab82cb36e4ad3a9962d77/FirebaseCore/Sources/FIRApp.m#L525.
Does running with the Address Sanitizer or any of the other tools described at https://developer.apple.com/documentation/xcode/investigating-memory-access-crashes help?
Otherwise sharing a reproducible example would help us investigate more deeply.

The crash appears to be in -[FIRAnalyticsConnector componentsToRegister].

It looks like we are out of options, I haven't seen any known issues by apple on this matter. Should we wait to upgrade on a future XCode release?

@andresguzmanl If it's a Firebase issue, it should be feasible to create a shareable reproducible example.


Can i put it in a Widget that take the half of the screen ?

Hi,
I want to do something like that :

Is it possible with this library?

No, that is not possible currently.


Freeze the gradient expression tree

I have a Hybrid Monte Carlo simulation where we need to compute the gradient over and over. Our particular function works such that the structure of the derivative does not change, just the numbers that we plug in.
As I understand autograd it will evaluate the the function once with a wrapper around the data to see which expression tree comes out, then it builds the derivative from that. I know that for our case that this is not going to change, so if I could “freeze” this gradient expression tree it would save a lot of time for us.
In the profile I see that about 52 % of the time is spend building that tree and 47 % on evaluating it.

Is it possible to build the tree only once and then just plug in different numbers?

That profile was done with cPython and then visualized with Snakeviz, really easy to use.
I have tried the autograd.misc.const_graph function on the gradient that I got with autograd.grad and instantly got the amortized speed-up of about 2 that can be seen in the above profile. Now the same thing finishes in half the time:

This already is a great improvement, thank you very much for the pointer (and implementing/drafting it at some point)!
As I did not succeed with Numba and Autograd for certain functions not being implemented, I have then tried JAX. I needed to replace jax.numpy.random with plain numpy.random but as that is not part of the things that are differentiated, it makes no difference.
Though I got it working after several such fixes, there were a lot of outputs of this line:

warning: <unknown>:0:0: loop not vectorized: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering

The execution time of my program has increased greatly, taking 40 seconds for 3 iterations compared to the 15 seconds for 20 iterations. From testing 1, 2 and 3 iterations with the jax.grad function, I estimate that each iterations takes around 10 seconds and there is like 10 seconds setup time. I then added jax.jit around the gradient function, but that did not change anything.
I presume that I am doing something wrong, but that would rather be an issue over at JAX and not here.

Using const_graph will result in an error if you have a conditional in the function (or function called within that function) whose gradient you are evaluating.
from autograd import jacobian
from autograd.misc import const_graph

def myfunc(theta):
    if theta < 0:
        return theta**3
    return theta**2
grad_myfunc = grad(myfunc)

grad_myfunc(1.0)
# returns 2.0 as expected

# freeze the trace
grad_myfunc_accel = const_graph(grad_myfunc)

grad_myfunc_accel(1.0)
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/tracer.py in new_box(value, trace, node)
    117     try:
--> 118         return box_type_mappings[type(value)](value, trace, node)
    119     except KeyError:

KeyError: <class 'numpy.bool_'>

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-34-e650aece83e7> in <module>
      1 grad_myscalarfun_accel = const_graph(grad_myscalarfun)
----> 2 grad_myscalarfun_accel(1.0)

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/misc/tracers.py in _fun(*args)
     42     maybe_cached_unary_fun = const_graph_unary(unary_fun)
     43     @wraps(fun)
---> 44     def _fun(*args): return maybe_cached_unary_fun(args)
     45     return _fun
     46

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/misc/tracers.py in maybe_cached_fun(x)
     30         else:
     31             start_node = ConstGraphNode.new_root()
---> 32             end_value, end_node = trace(start_node, _fun.pop(), x)
     33             if end_node is None:
     34                 raise Exception("Output is independent of input")

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/tracer.py in trace(start_node, fun, x)
      8     with trace_stack.new_trace() as t:
      9         start_box = new_box(x, t, start_node)
---> 10         end_box = fun(start_box)
     11         if isbox(end_box) and end_box._trace == start_box._trace:
     12             return end_box._value, end_box._node

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/misc/tracers.py in <lambda>(args)
     39 def const_graph(fun, *args, **kwargs):
     40     partial_fun = partial(fun, *args, **kwargs)
---> 41     unary_fun = lambda args: partial_fun(*args)
     42     maybe_cached_unary_fun = const_graph_unary(unary_fun)
     43     @wraps(fun)

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/wrap_util.py in nary_f(*args, **kwargs)
     18             else:
     19                 x = tuple(args[i] for i in argnum)
---> 20             return unary_operator(unary_f, x, *nary_op_args, **nary_op_kwargs)
     21         return nary_f
     22     return nary_operator

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/differential_operators.py in grad(fun, x)
     23     arguments as `fun`, but returns the gradient instead. The function `fun`
     24     should be scalar-valued. The gradient has the same type as the argument."""
---> 25     vjp, ans = _make_vjp(fun, x)
     26     if not vspace(ans).size == 1:
     27         raise TypeError("Grad only applies to real scalar-output functions. "

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/core.py in make_vjp(fun, x)
      8 def make_vjp(fun, x):
      9     start_node = VJPNode.new_root()
---> 10     end_value, end_node =  trace(start_node, fun, x)
     11     if end_node is None:
     12         def vjp(g): return vspace(x).zeros()

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/tracer.py in trace(start_node, fun, x)
      8     with trace_stack.new_trace() as t:
      9         start_box = new_box(x, t, start_node)
---> 10         end_box = fun(start_box)
     11         if isbox(end_box) and end_box._trace == start_box._trace:
     12             return end_box._value, end_box._node

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/wrap_util.py in unary_f(x)
     13                 else:
     14                     subargs = subvals(args, zip(argnum, x))
---> 15                 return fun(*subargs, **kwargs)
     16             if isinstance(argnum, int):
     17                 x = args[argnum]

<ipython-input-32-e7090ac9b606> in myscalarfun(theta)
      1 def myscalarfun(theta):
----> 2     if theta < 0:
      3         return theta **3
      4     return theta**2

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/numpy/numpy_boxes.py in __lt__(self, other)
     43     def __gt__(self, other): return anp.greater(self, other)
     44     def __ge__(self, other): return anp.greater_equal(self, other)
---> 45     def __lt__(self, other): return anp.less(self, other)
     46     def __le__(self, other): return anp.less_equal(self, other)
     47     def __abs__(self): return anp.abs(self)

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/tracer.py in f_wrapped(*args, **kwargs)
     39             argvals = subvals(args, [(argnum, box._value) for argnum, box in boxed_args])
     40             if f_wrapped in notrace_primitives[node_constructor]:
---> 41                 return f_wrapped(*argvals, **kwargs)
     42             parents = tuple(box._node for _     , box in boxed_args)
     43             argnums = tuple(argnum    for argnum, _   in boxed_args)

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/tracer.py in f_wrapped(*args, **kwargs)
     44             ans = f_wrapped(*argvals, **kwargs)
     45             node = node_constructor(ans, f_wrapped, argvals, kwargs, argnums, parents)
---> 46             return new_box(ans, trace, node)
     47         else:
     48             return f_raw(*args, **kwargs)

~/anaconda3/envs/seldo-test/lib/python3.8/site-packages/autograd/tracer.py in new_box(value, trace, node)
    118         return box_type_mappings[type(value)](value, trace, node)
    119     except KeyError:
--> 120         raise TypeError("Can't differentiate w.r.t. type {}".format(type(value)))
    121
    122 box_types = Box.types

TypeError: Can't differentiate w.r.t. type <class 'numpy.bool_'>

Is there a workaround? I wonder if the reason this happens is related to the JAX sharp bit when using JIT and conditionals: https://jax.readthedocs.io/en/latest/notebooks/Common_Gotchas_in_JAX.html#python-control-flow-jit


chore(DDI-1306): updated padding for modal mobile view

Updated padding and margins of modal component for mobile view.

:tada: This PR is included in version 4.0.0-alpha.150 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0-alpha.189 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0-alpha.17 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.0.0-alpha.21 :tada:
The release is available on:

npm package (@alpha dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 4.11.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.11.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.3.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Fix the build.

Due to the issue reported in https://github.com/ember-cli/ember-cli/issues/6779 our CI was passing when tests were actually failing. This PR is addressing the underlying reason they were failing (as https://github.com/ember-cli/ember-cli/issues/6779 will be fixed upstream via changes in ember-cli itself).

Remove unneeded shimming around for modules/ paths (this was not needed in<EMAIL_ADDRESS>and actually results in no file matches in ember-cli@2.13+).
Fix test assertions that were confirming number of asset files loaded. The changes in https://github.com/ember-engines/ember-engines/pull/336 lead to us having an actual CSS file asset also, and the tests reported not ok but CI still passed (so we merged the PR). This fixes the assertions, and updates to have the tests actually pass for realz.

FYI - The node:ci build is failing (correctly) because the before and after diff is not the same.  Prior to these changes (when using ember-cli#master) the dist/engines-dist/ember-blog/engine.js file was completely empty, after these changes it properly has content.

Confirmed that ember test passes when using either<EMAIL_ADDRESS>or ember-cli#master.

This means that 0.5 will only be compatible with<EMAIL_ADDRESS>correct?

Yes, that is already the case though (as we assume things like this._addonPreprocessTree exist which are only present in 2.12).  It is likely possible to make compatible with 2.11 by adding some additional feature detect code, but I'm on the fence if we should. Happy to hash that out separately before releasing 0.5.0 stable though...