Merge Switch and Button Drivers

Type of Change

[ ] WWST Certification Request

If this is your first time contributing code:

[ ] I have reviewed the README.md file
[ ] I have reviewed the CODE_OF_CONDUCT.md file
[ ] I have signed the CLA

[ ] I plan on entering a WWST Certification Request or have entered a request through the WWST Certification console at developer.smartthings.com

[ ] Bug fix
[ ] New feature
[X] Refactor

Checklist

[X] I have performed a self-review of my code
[X] I have commented my code in hard-to-understand areas
[X] I have verified my changes by testing with a device or have communicated a plan for testing
[x] I am adding new behavior, such as adding a sub-driver, and have added and run new unit tests to cover the new behavior

Description of Change
This PR addresses CHAD-13270 to integrate the functionality from matter-button into the matter-switch driver, so that we can deprecate the matter-button driver.
Note that these changes were originally located in PR 1423, but that PR was split into multiple PRs in order to simplify the amount of changes. This PR only includes support for pure-button and pure-switch devices. Once more discussion has been had on how combination button-switch devices should be configured, PR 1596 will be updated to include support for these combination devices.
Summary of Completed Tests
Testing was performed on several switch and button devices as documented here: https://smartthings.atlassian.net/wiki/spaces/CHIP/pages/3340304693/Matter-Switch+Matter-Button+Integration+Testing+Status

I left a few more small comments but this is my final review and I think it's ready. Has this also been regression tested with some of the switch/button devices on the VDA? For example, confirming a light, button, and composed bridged devices work would be a good test.

I tested several virtual switch devices as well as a composed bridge device with the VDA and everything is functioning as expected. The Generic Switch virtual device does not onboard properly so I tested the button functionality with an IKEA remote, which functioned as expected as well.


find free hosting solution

@bahmutov - repo is now public and owned by 350-mass-cambridge-somerville organization. We need find a free hosting + deployment solution.

Perfect, I am trying to connect Netlify to this repo - you should have gotten a request @ccpowers, could you approve it, please?

@bahmutov request approved! Are you planning to do it via github actions? Just curious

Yes, there are already GitHub actions running to run tests and reformat code if needed
Sent from my iPhone

On Feb 6, 2020, at 08:47, Caitlin Powers<EMAIL_ADDRESS>wrote:

@bahmutov request approved! Are you planning to do it via github actions? Just curious
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@bahmutov I've added tests in the feat/katy-master branch for the past action view and updated it to master, I think if we can merge that it'll be ready to host


The Getting Started referenced from the readme requires a precompiled binary locked behind a paywall

I'm not sure how this can be qualified as an open source project if additional binaries that have a monetary requirement are required as part of the installation.  Please update the Getting Started with at least very basic compiling instructions so this project continues to belong on this site.
A good example is how mcMMO handles it.  Since this also requires a lot of additional configuration beyond simply downloading the .jar you can be sure we will be able to follow even the most basic instruction such as on mcMMO that simply states the simplest possible command required, in this example being simply:
"The typical command used to build mcMMO is: mvn clean package install"
It's not much, and it still obfuscates the process and drives users to the paywall and also allows itself to continue to be called open source and free.

I know this is an older issue, so just as an update for anyone interested: GD’s core is no longer open source since 2.0.


add resource observed generation

go clean -testcache
make test-integration
CGO_ENABLED=1 GOEXPERIMENT=boringcrypto go install -ldflags="" ./cmd/maestro
OCM_ENV=testing gotestsum --format short-verbose -- -p 1 -ldflags -s -v -timeout 1h
./test/integration
I0102 11:14:56.472776   24241 framework.go:76] Initializing testing environment
I0102 11:14:56.631476   24241 framework.go:161] Using Mock OCM Authz Client
I0102 11:14:56.634282   24241 framework.go:199] Disabling Sentry error reporting
{"level":"info","ts":1704165296.6344671,"logger":"fallback","caller":"v2@v2.0.0-20231030012137-0836a524e995/protocol.go:124","msg":"subscribing to topics: map[sources/clusters/+/specresync:{1 0 false false} sources/maestro-integration/clusters/+/status:{1 0 false false}]"}
I0102 11:14:56.654563   24241 api_server.go:145] Serving without TLS at localhost:8000
I0102 11:14:56.654707   24241 healthcheck_server.go:56] Serving HealthCheck without TLS at localhost:8083
PASS test/integration.TestConsumerGet (0.17s)
PASS test/integration.TestConsumerPost (0.16s)
PASS test/integration.TestConsumerPaging (0.21s)
PASS test/integration.TestControllerRacing (1.66s)
PASS test/integration.TestResourceGet (0.21s)
PASS test/integration.TestResourcePost (2.20s)
PASS test/integration.TestResourcePatch (0.23s)
PASS test/integration.TestResourcePaging (0.29s)
PASS test/integration.TestResourceListSearch (0.28s)
PASS test/integration.TestUpdateResourceWithRacingRequests (0.33s)
I0102 11:15:02.407116   24241 api_server.go:151] Web server terminated
PASS test/integration
DONE 10 tests in 9.553s

/cc @qiujian16 @morvencao

go clean -testcache
make test-integration
CGO_ENABLED=1 GOEXPERIMENT=boringcrypto go install -ldflags="" ./cmd/maestro
OCM_ENV=testing gotestsum --format short-verbose -- -p 1 -ldflags -s -v -timeout 1h
./test/integration
I0103 13:50:58.399048   48603 framework.go:76] Initializing testing environment
I0103 13:50:58.688938   48603 framework.go:161] Using Mock OCM Authz Client
I0103 13:50:58.691476   48603 framework.go:199] Disabling Sentry error reporting
{"level":"info","ts":1704261058.69167,"logger":"fallback","caller":"v2@v2.0.0-20231030012137-0836a524e995/protocol.go:124","msg":"subscribing to topics: map[sources/clusters/+/specresync:{1 0 false false} sources/maestro-integration/clusters/+/status:{1 0 false false}]"}
I0103 13:50:58.711736   48603 api_server.go:145] Serving without TLS at localhost:8000
I0103 13:50:58.711869   48603 healthcheck_server.go:56] Serving HealthCheck without TLS at localhost:8083
PASS test/integration.TestConsumerGet (0.17s)
PASS test/integration.TestConsumerPost (0.17s)
PASS test/integration.TestConsumerPaging (0.20s)
PASS test/integration.TestControllerRacing (1.64s)
PASS test/integration.TestResourceGet (0.20s)
PASS test/integration.TestResourcePost (2.22s)
PASS test/integration.TestResourcePatch (0.22s)
PASS test/integration.TestResourcePaging (0.30s)
PASS test/integration.TestResourceListSearch (0.28s)
PASS test/integration.TestUpdateResourceWithRacingRequests (0.34s)
I0103 13:51:04.471380   48603 api_server.go:151] Web server terminated
PASS test/integration

this pr will cause  confusion, let's only rename the ObservedGeneration to ObservedVersion to avoid confusion


Refactor Nix code

This pins nixpkgs and also uses readDirectory for ease of testing changes
to dependencies

Is optparse-applicative.nix still needed ? I get the feeling it's not used anymore in the overrides.


Authentication protected links don't work if starting with empty database

If the application start with an empty database, we need to restart te application for access to authentication protected links to work, such as "extension1/admin" after seeding database with permissions, groups, etc...
We need to find a solution to update what's missing without having to restart the application.

Analysis: at application startup, the AddAuthorizationPolicies class calls AddAuthorization() on services collection. It also updates a set of known policy names. These items are not updated after creation of permissions in database. They should be updated by adding relevant code to call in seeding database code.

Work in progress: the injected services collection is empty in seed database controller. Try changing in Startup.cs:
replace:
services_.AddSingleton<IServiceCollection, ServiceCollection>();
by:
services_.AddSingleton<IServiceCollection, _services>();

I've found a totally different approach: instead of using AuthorizeAttribute and policies, the 4th answer of this SO post uses ClaimRequirementAttribute. This is way more easy to understand and use, because claims can be determined and set on current user at any time while the application runs.


Rename repository to just react-native-community/cli

Ask your Question
react-native-community/react-native-cli -> react-native-community/cli
There's unnecessary duplication of react-native in our repository name. I think we should be good with just cli instead react-native-cli.
Pros:

it would correspond directly with our main package name on npm @react-native-community/cli
renaming GitHub repos is fairly straight-forward and supports redirecting

Cons:

changing links to issue tracker (old ones will still be redirected)

cc @grabbou @cpojer

I'm fine with this.

Done.


Update dependencies

We probably don't want to merge this PR exactly as-is, due to the warnings we get for Grpc.Core 1.6.0 depending on System.Threading.ThreadPool 4.0.0 - but it can be reviewed apart from that, and we can find out what the plan is for Grpc.Core.

What about the Google.Apis. deps in apis.json? For storage, translate, bigquery, compute?

Yes, I'll do those as well, once we've got GAX 2.1.0 out. (Or I can do them in parallel, as it doesn't hurt for them to have a higher version number.)

Now updated to use:

xUnit 2.3.0-beta5
Grpc.Core 1.6.1
Google.Apis.* 1.29.1

PTAL, and this time it's ready to merge if you're happy.


chore: migrate to Docusaurus 3

This PR

migrate to Docusaurus 3
updated all dependencies
updated config to typescript only

Notes
Migrated to Docusaurus 3 using the official upgrade docs.
https://docusaurus.io/blog/releases/3.0
How to test
https://deploy-preview-292--openfeature.netlify.app/

It’s a pity that my update didn’t help, but we found out the bugs and fixed them


[Core] aaz: Make load_aaz_command_table case insensitive

Related command

Description

AAZ commands are not loaded when customer use capital letters in command names, like below.

This PR fixed the above issue, it will ignore the case of command names.
Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature

This checklist is used to make sure that common guidelines for a pull request are followed.

[ ] The PR title and description has followed the guideline in Submitting Pull Requests.

[ ] I adhere to the Command Guidelines.

[ ] I adhere to the Error Handling Guidelines.

Core


WIP: QW-2597: Initial quickwit init command implementation.

Description
This will add the initial quickwit init command, designed to make creating configs and setting up Quickwit as simple and as pain-free as possible.
The system reads a schema defined as a yaml which describes the various properties of the config (validation, nested objects, selects, etc...) and walks the user through populating the config with descriptions to match.
This initial PR focuses on the main configs and currently doesn't intend to implement the templating logic that we want further down the line.
Command Goals:

quickwit init - Sets up the base Quickwit config itself for when you're first setting up a node.
quickwit init index - Sets up an index config.
quickwit init source - Sets up a source config.

Checklist:

[x] Implement data source schema.
[ ] Implement index schema.
[ ] Implement Quickwit config schema.

Originally this was going to be written as a derived macro but it very quickly became apparent that it would be way too much time to implement and test vs going with the yaml approach, either way, they save writing hundreds of lines of rust code to prompt the user for each config.
Preview:

How was this PR tested?
Currently, there is not testing, I'm still trying to work out how best to go about unit testing something which takes input from stdin.

This is great, I tested it, and I liked the dev XP. And I also found the idea of defining this in a YAML nice.
A few remarks:

we should add the pulsar:// address validation in quickwit pulsar source params, I thought about it before but forgot to open an issue, can you open it? :)
I saw some null values in the output files
(minor) The help text of the file source is not up to date


See if we can autogenerate the bindings using mujoco's introspect module

[x] Make a script to clone the original mujoco repository
[x] Using PyCall to parse the introspect autogenerated files for the description
[x] Convert the python AST objects to Julia ones
[ ] Write functions to print the definitions for:

[x] Enums
[ ] Structs
[ ] Functions

[ ] Have the script copy the generated files into the directory
[ ] Add in the docs for the functions and structs
[ ] Write a basic test which loads a model and steps it using the autogenerated code
[ ] Create a binding wrapper for accessing via getproperty to directly access the underlying data
[ ] Create a binding wrapper that allows for writing to structs via pointers
[ ] Add a way to access the array properties via an UnsafeArray or equivalent
[ ] Find a way to automatically get the macros for the sizes from the library, currently this is hardcoded

Closing in favour of https://github.com/JamieMair/MuJoCo.jl/issues/4, but using a hybrid approach that uses the introspect content for documentation.


Issue creating mod song

Describe your bug here.
Hi - I was trying to set up a FnF mod following the steps on https://www.wikihow.com/Make-a-Friday-Night-Funkin'-Mod
However, when I get to the point of creating a chart for our mod game, I get the following error:
C:\HaxeToolkit\haxe\std/cpp/_std/sys/io/File.hx (line 30)
Song.hx (line 104)
FreeplayState.hx (line 371)
flixel/FlxState.hx (line 202)
flixel/FlxGame.hx (line 747)
flixel/FlxGame.hx (line 677)
flixel/FlxGame.hx (line 545)
openfl/events/EventDispatcher.hx (line 402)
openfl/display/DisplayObject.hx (line 1399)
Uncaught Error: [file_contents,assets/data/mod-song-2/mod-song-2-easy-normal-hard.json]
This is the same for any of the mod songs we've created, with the only difference being the json file location on the error.
I apologise in advance if there's a really simple solution to this, any help is appreciated.
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
From Source
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
Added new folders to mods/data, /mods/songs, /mods/characters

you're attempting to play a song on the "hard" difficulty, which is (presumably) not in the song's data directory.
try playing the song at normal difficulty or rename your song's json to have a "-hard" at the end.


Safari - last digit incorrect

Hi @hasan-ahani thanks for the great package!
I noticed strange error.  While using autocomplete from messages the last digit completed in six fields is always incorrect.
I receive text:

Then I use Safari to autocomplete and it completes last digit incorrectly:

Then ->afterStateUpdated dd()

Repeats for me 9 out of 10 tries.
I'm autocompleting on Safari on OSX and not on iOS

Hi! Thanks for bringing this up. Unfortunately, we don't have access to check this issue directly on Safari or OSX. However, you can override the view file and modify the Alpine.js code to better handle the autocomplete behavior. That should give you more control over how the input behaves in your specific setup.


Add beta opt in link in settings page

Fixes #431. Added beta link in settings page.

Have updated the title and summary.


Reset potentially inherited defaults (since the mode is not always sp…

Reset potentially inherited defaults (since the mode is not always specified in below items
For example "${elasticsearch::homedir}/lib" was stripped of 'other' permissions, so my Elasticsearch was unable to start

Thanks @alexfouche. My concern here is that "fixing" resource defaults that occur above the elasticsearch module essentially means that the module is now attempting to proactively fix what the user is setting as resource defaults, and that is essentially unbounded. I'm definitely willing to consider the change, but it feels like this is less of a change the module needs to make and more of a tweak to the Puppet manifest that is making very broad resource defaults that impact other modules (for example, this module only uses resource defaults within the scope of resources it manages).

Hi,
In fact, the fix is simply due to the fact that there is an item in this
file to manage "${elasticsearch::homedir}/lib", which specifies owner and
group to root, but does not specify a mode which is open to anyone,
especially the $elasticsearch::elasticsearch_group
Other ressources there may not specify the mode, but at least the user or
group is set for Elasticsearch, which can have after all keep access.
So an alternate fix could simply be sure that the mode is specified there,
but the recurse makes it not ideal
"${elasticsearch::homedir}/lib":
ensure  => 'directory',
group   => '0',
owner   => 'root',
recurse => true;

While I agree with you that the recurse parameter doesn't make it ideal, I think the module has to accept that since it decides to manage the lib dir in the first place. Because the file resource can accept custom modes that aren't simply hex codes, what if we added the following to the file resource for the lib directory?
recurse => true,
mode => 'o+Xr',

That should the directory is r-x and all the files beneath it are r--, thoughts?

Hi there,
Firstly, thank you for taking the time to contribute, and apologies for the radio silence from Elastic on this PR.
I'm going to be working on this module over the next few weeks, with an ultimate aim of updating the module to support the elasticsearch 7.x and simplifying the module to make it easier to use.
I'll be reviewing all the open issues and PRs over the next few days, and will merge or provide feedback where appropriate.
So please hang in there whilst we give this module some TLC.
Thanks again.

Since this is a community submitted pull request, a Jenkins build has not been kicked off automatically. Can an Elastic organization member please verify the contents of this patch and then kick off a build manually?


Image Processing Pipeline v3 - Tutorial

Write a tutorial around the sample

Tutorial is created in the README.md


Tesseract Empty Page

Environment

Tesseract Version: tesseract 4.1.1-rc2-21-gf4ef
leptonica-1.78.0
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.2) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
Found AVX2
Found AVX
Found FMA
Found SSE
Found libarchive 3.2.2 zlib/1.2.11 liblzma/5.2.2 bz2lib/1.0.6 liblz4/1.7.1
Platform: Ubuntu 18.04 LTS
Model Configs tested: frk, Fraktur (from tessdata_best), gt4hist_5000k (gt4hist-Model with 5000k Iterations)

Current Behavior:
When using rather large uncompressed TIF-Files (ca. 80 MB) from Project "Digitalisierung historischer deutscher Zeitschriften" for about 5 Pages (or even less) of 1000 Images we get ALTO-Files missing valid OCR-Date.
When run with tesseract 0046.tif 0046 -l frk alto it only alerts Empy Page!! and exits in < 20 seconds.
0046-alto.zip
0046-tif.zip
Generated ALTO-File and TIF-Image included.
Expected Behavior:
Produce ALTO-XML with contents.
Suggested Fix:
No idea.

The Link from send.firefox.com is active for 1 day. Afterwards it will disappear.

Did you tried to follow documentation?

@zdenop We're scanning from Microfilms using QuantumScan Software and do Preprocessing with QuantumProcess which does a good job with constrasts and deskewing. Therefore I wonder why 999 Images pass, but some few don't, like this one. Could you already take a closer look at the Image? What additional Preprocessing would you suggest if any?

@M3ssman, the link is already inactive. Please attach a sample image to the issue report here.

I just made quick test: When I removed black border and header. Then tesseract produced result (tested just with English, as I not have frk at the moment installed).
So pre-processing  of such images are must or you need to implement custom layout detection.
So sake of small size this thumbnail of my testing image:

@zdenop Yes, many thanks, this works!
But anyway, I wonder why all the other images went fine. They are all born the same way. Never cropped, just plain TIF-files with some tuning for contrast and rotation. Tesseract shouldn't bother with borders, as it is (almost) never does.

@stweil Guess what! The original Image works, too, if I scaled it down 1:4!
Sorry, I didn't recognize the link is also invalidated after a single download

@stweil Strange indeed.
I cropped only the header of the page and left left, right and bottom margins as they are and this version works fine.
0046-headless.zip

@zdenop Since the original image itself looks dark somehow, I called ImageMagick 6.9 to enhance contrast: convert 0046.tif -brightness-contrast 25x50 -compress none -colorspace Gray 0046-convert.tif
This version, without taking care for the borders, makes Tesseract producing not an empty page, but quite reasonable OCR-output.

I expect that size of 0046-convert.tif is lower.  Right?

@zdenop This is what exiftool outputs:
original: Megapixels 79.1, Image size 7477x10584, 79151624 Byte filesize
convert: Megapixels 79.1, Image size 7477x10584, 79151434 Byte filesize
So pure filesizes differs slightly.

@zdenop Did you run Tesseract also with the original file (without cropping or other types of preprocessing? What was the outcome?
0046-convert.zip

Original finished quickly with "empty page" message.

The original page triggers bugs which can be shown by adding -c textord_debug_bugs=1. Tesseract creates box files with a right margin which exceeds the image dimension (error message Made partition with bad right coord). Those box files are therefore disregarded. With the following hack the box files are processed, and text is recognized:
diff --git a/src/textord/colpartition.cpp b/src/textord/colpartition.cpp
index 74f1b1d9..465a1f57 100644
--- a/src/textord/colpartition.cpp
+++ b/src/textord/colpartition.cpp
@@ -353,7 +353,7 @@ bool ColPartition::IsLegal() {
       tprintf("Margins invalid\n");
       Print();
     }
-    return false;  // Margins invalid.
+//    return false;  // Margins invalid.
   }
   if (left_key_ > BoxLeftKey() || right_key_ < BoxRightKey()) {
     if (textord_debug_bugs) {

@stweil Many Thanks!
By now I've detected already 200+ scans that are considered empty by Tesseract.
Therefore I'll try your suggestion in our ULB-Fork and report back hopefully next week!

Please attach the image to this issue.
https://help.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests

The image is rather large, too large to be attached. It's available here: https://ub-backup.bib.uni-mannheim.de/~stweil/tesseract/issues/3021/0046.png.

The bounding boxes with illegal coordinates come from rotation:
(gdb)
#1  0x00000000006311f7 in TBOX::rotate (this=0x60e0006ba830, vec=...) at ../../../src/ccstruct/rect.h:206
206	      top_right.rotate (vec);
(gdb) p vec
$22 = (const FCOORD &) @0x7fffffff8ea0: {xcoord = 0.999990165, ycoord = -0.00443068426}
(gdb) p top_right
$23 = {xcoord = 7523, ycoord = 10551}
(gdb) p bot_left
$24 = {xcoord = 43, ycoord = 9671}

In this case vec indicates that there is nearly no rotation at all, but because of the very large value of ycoord the function ICOORD::rotate calculates a new xcoord which is clearly outside of the image. It looks like ICOORD::rotate might be wrong and need a better implementation.
The current code rotates top right and bottom left with fix point (0,0). Maybe this should be changed to fix point top left. For small coordinates that does not make a large difference, but here it is essential.

Another command that eliminated the issue:
gm convert 3021.png -bordercolor Black -border 10x10 3021-borderb10.png

It's also sufficient to convert the image to JPEG. The basic issue remains of course and can also result in less obvious problems, for example missing smaller parts of a page only. -c textord_debug_bugs=1 should be the default until that problem is fixed.

I now tried a modified TBOX::rotate. This not only fixes the empty page problem, too, but seams to increase the amount of text which is detected at all, so it would be worth to try it also on other pages. The bad news is that the time for processing a page increases from 56 seconds to 219 seconds. Here is the code:
diff --git a/src/ccstruct/rect.h b/src/ccstruct/rect.h
index 58a867e9..e487c8c1 100644
--- a/src/ccstruct/rect.h
+++ b/src/ccstruct/rect.h
@@ -202,9 +202,13 @@ class DLLSYM TBOX  {  // bounding box
     // and top-right corners. Use rotate_large if you want to guarantee
     // that all content is contained within the rotated box.
     void rotate(const FCOORD& vec) {  // by vector
-      bot_left.rotate (vec);
+      ICOORD top_left(bot_left.x(), top_right.y());
+      bot_left -= top_left;
+      bot_left.rotate(vec);
+      bot_left += top_left;
+      top_right -= top_left;
       top_right.rotate (vec);
-      *this = TBOX (bot_left, top_right);
+      top_right += top_left;
     }
     // rotate_large constructs the containing bounding box of all 4
     // corners after rotating them. It therefore guarantees that all

@M3ssman, we also get "Empty page" errors in our newspaper, see example.
https://github.com/stweil/tesseract/tree/fix contains a patch which seems to fix the problem. Maybe it also gets more texts from other large images, but I am still not sure. For images with large width and height, old and new code can get different results. It would help if you (and others) could try the new code and compare the results with the unpatched Tesseract. If the new code never makes things worse, we could apply it.

@stweil Sorry for the delay!
I just took a quick shot at a single page and it did produce textlines which is per se good but forget about the quality. Tesseract is definitively not happy with this image.
I'll try to do some more testing as it affects a remarkable amount of images and report back real soon™.
The fix + textord_debug_bugs=1 produces quite a lot output. Captured into file; maybe you can get some insights.
tesseract-5.0.0-image-1681877805_J_0112_0068.log

Another thing that will make it work is binarization.

For one of the problematic images I got:
/data/ocr-staging/ocr/1667524704_J_0190/0655.tif =><PHONE_NUMBER>_J_0190_0655 => /data/ocr-staging/ocr/empty-pages/1667524704_J_0190_0655
Tesseract Open Source OCR Engine v5.0.0-alpha-754-g0838 with Leptonica
Page 1
Detected 7102 diacritics
index >= 0 && index < line_count:Error:Assert failed:in file src/textord/makerow.cpp, line 802
./tesseract-empty-pages.sh: Zeile 34: 29848 Abgebrochen             (Speicherabzug geschrieben) ${TESS_BIN} "$tiff_path" "${outpath}" --dpi 470 -l frk alto

I will skip this by now and move on.

Error in boxClipToRectangle: box outside rectangle
Error in pixScanForForeground: invalid box

#427 #468 #1601

These error messages are produced by Leptonica.

I've some larger tests with the patch @stweil provided, with the following results:
From 133 images

6 image produce the mentioned assertion error (index >= 0 && index < line_count:Error:Assert failed:in file src/textord/makerow.cpp, line 802).

4 of them are rather complex announcement pages which don't contain german fracture letters, it's all antiqua. But they were processed via "frk"-configuration.
1 page has a train time table included (which takes about 2/3 of the page). This tables is rotated by 90° counter-clockwise.
1 page needs dewarping, it appears to have a heavy rippled surface.

in addition, 13 images still yield "empty page"

I run the 6 problematic pages once more (v4.1.1-rc2-25-g9707 from alex-p with --dpi 470 -l frk alto).
This time I've got no assertion errors but 2 pages with textlines and still 4 empty pages.
After enhancing brightness (+50) contrast (between +15 and +25) also these 4 pages were processed without errors.
I'm uncertain how to deal with this.
I don't think it's a good idea to silence warnings just to have bad material passing. Second, the assertion error is only in the patched version. This error seems to be really serious, since it even halts execution of my scripts.
By now I take the blame by myself, given with advanced preprocessing tesseract produces text. Our processes watch out for those inglorious 844 byte files, but we didn't have this on our agenda before.
@stweil @amitdo @zdenop I'm fine if you close this issue, but if you'd like to, I can provide more testdata.

The "empty page" message means that Tesseract dropped all text boxes because the internal checks decided that they had coordinates which are out of bounds. This might only be the extreme variant of a general problem: maybe Tesseract also drops parts of other pages where it recognizes text, but not all.
That's why it would be important to run OCR on a larger test set with -c textord_debug_bugs=1 to see whether pages with OCR text also show error messages and whether these error messages correspond to missing text boxes on such pages.

@stweil
I will run the patch with the 130+ images testset and report back early next week.

@stweil Sorry for the delay!
Is the patched code in master branch already?
I'd like to put this issue to an end.
By now (IMHO) there are 2 different problems that we're facing here:

Tesseract produces ALTO-files missing page content.
This is a problem for Tesseract users / apps that utilize Tesseract's output.
Tesseract makes wrong decisions about data validity. This may also effect the general detection algorithm.
This is a problem both to OCR-Engineers as well as any succeeding users or applications.

To deal with 1), I would like appreciate Tesseract to write no output at all and/or print a warning to stdout.
If these options are not worth the additional efforts, please let me know. By now I'm checking the size of the ALTO XML - it works, but it feels like tampering with symptoms.
Number 2 seems to be a really big issue that cannot be solved in total right now.
Thanks for any investigations to @stweil, @zdenop and @amitdo ! All your inspections lead (IMHO) to the
category data error, since tuning the image-data (binarize, despickle, etc.) improves in all cases Tesseract's analyzis.
Therefore I consider this behavior not as an intrinsic problem of Tesseract, it's the data.

With the code from #3418, when Sauvola binarization is used, I don't get "Empty page!!".
"

I just finished OCR with Tesseract 5.0.0 for a huge number of newpaper scans.

6587 scans of 371629 finished with "Empty page" when Tesseract used the default binarization.
105 scans of those 6587 still were "Empty page" when Tesseract was used with -c thresholding_method=2.
6 scans of those 105 still were "Empty page" when Tesseract was used with -c thresholding_method=1 (example).

So using a different binarization helps in most cases, but not always.

Try to convert the jp2 to png. It does not fail for me with your example and method 2.

Thank you, that's interesting. I can reproduce it, and it seems to be related to the image resolution:
The original JP2 image has 300 dpi and fails:
tesseract 0312.jp2 - -l ubma/frak2021-09 -c thresholding_method=2 -c textord_debug_bugs=1
Made partition with bad left coords, 0 > -8
ColPart: (M0-B-8-B-8/-8,5017/5017)->(3599B-3599B-3607M/3599,5071/5071) w-ok=0, v-ok=0, type=0R1, fc=-1, lc=-1, boxes=1 ts=0 bs=0 ls=0 rs=0
Margins invalid
ColPart:E(M0-B-8-B-8/-8,5017/5017)->(3599B-3599B-3607M/3599,5071/5071) w-ok=0, v-ok=0, type=0T1, fc=-1, lc=-1, boxes=0 ts=0 bs=0 ls=0 rs=0
Empty page!!
Made partition with bad left coords, 0 > -8
ColPart: (M0-B-8-B-8/-8,5017/5017)->(3599B-3599B-3607M/3599,5071/5071) w-ok=0, v-ok=0, type=0R1, fc=-1, lc=-1, boxes=1 ts=0 bs=0 ls=0 rs=0
Margins invalid
ColPart:E(M0-B-8-B-8/-8,5017/5017)->(3599B-3599B-3607M/3599,5071/5071) w-ok=0, v-ok=0, type=0T1, fc=-1, lc=-1, boxes=0 ts=0 bs=0 ls=0 rs=0
Empty page!!

Converting the JP2 to PNG with convert removes the resolution information.
Tesseract therefore guesses a resolution of 367 dpi and can process the scan:
tesseract 0312.png - -l ubma/frak2021-09 -c thresholding_method=2 -c textord_debug_bugs=1
Estimating resolution as 367
Made partition with bad right coords, 556 < 577
ColPart: (M184-T204-B207/388,4146/4152)->(577B-1252T-556M/398,4194/4179) w-ok=1, v-ok=1, type=1T4, fc=-1, lc=-1, boxes=24 ts=0 bs=0 ls=0 rs=0
[...]
genommen werden.

Processing the original JP2 with an explicit resolution works, too:
tesseract 0312.jp2 - -l ubma/frak2021-09 -c thresholding_method=2 -c textord_debug_bugs=1 --dpi 400
Made partition with bad right coords, 1232 < 1243
[...]
Zenommen werden. In Beantwortung verſchledener Anfragen erklärte i ĩ ü i
[...]

Thank you, that's interesting. I can reproduce it, and it seems to be related to the image resolution:
The original JP2 image has 300 dpi and fails:

Is it a JPX with mask layer like this https://archive.org/details/bub_gb_qmZyOar8UHwC/page/n71/mode/2up ?
Then try the mask

and negate.
CER 14.23 % is not so bad for the quality of the scan.

Where did you get CER 14.23 %?

@stweil, GIMP reports '72 ppi' for your jp2, but as you said Tesseract see it as 300 ppi. IIRC, when GIMP does not find the ppi in the image metadata, it is reported as 72 ppi.

Where did you get CER 14.23 %?

Good question;-) On logical page 47 of Galileos book.
My comment was meant as: If your jp2 has a mask layer, as jp2 allows many kinds of compressions, then try the mask layer.
The book exists on archive.org in two versions, scanned from two different specimens in different bad conditions:

bub_gb_7sFnWGI31XcC
bub_gb_qmZyOar8UHwC

$ pdfimages -f 69 -l 69 -list bub_gb_7sFnWGI31XcC.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
  69     0 image     600   834  rgb     3   8  jpx    no       338  0<PHONE_NUMBER>B 0.3%
  69     1 image    1800  2500  rgb     3   8  jpx    no       339  0   600   600 13.7K 0.1%
  69     2 mask     1800  2500  -       1   1  jpx    no       339  0   600   600 13.7K 2.5%    <-- the mask

$ pdfimages -f 69 -l 69 bub_gb_7sFnWGI31XcC.pdf bub_gb_7sFnWGI31XcC.p0069

$ ls -la bub_gb_7sFnWGI31XcC.p0069*
bub_gb_7sFnWGI31XcC.p0069-000.ppm
bub_gb_7sFnWGI31XcC.p0069-001.ppm
bub_gb_7sFnWGI31XcC.p0069-002.pbm   <-- the mask

$ convert bub_gb_7sFnWGI31XcC.p0069-002.pbm -negate -density 600x600 -units PixelsPerInch bub_gb_7sFnWGI31XcC.p0069-002.pos.tiff

$ tesseract bub_gb_7sFnWGI31XcC.p0069-002.pos.tiff ...

If I recorded correctly (should write a script for permutations and recording them):
Latin = -l lat
GT4 = -l GT4Hist
ubma = -l ubma/frak2021_0.905_1587027_9141630

CER     variant
0.0567 bub_gb_7sFnWGI31XcC.p0069-002.pos.nopsm.ubma.txt
0.0841 bub_gb_7sFnWGI31XcC.p0069-002.pos.nopsm.GT4.txt
0.1227 bub_gb_7sFnWGI31XcC.p0069-002.pos.nopsm.Latin.txt

0.1618 bub_gb_qmZyOar8UHwC.p0058-002.pos.nopsm.ubma.txt

GIMP reports '72 ppi'

Obviously GIMP ignores the EXIF metadata. GIMP has a menu entry which shows the metadata and also the EXIF part with x/y resolutions of 300 and the resolution unit "inch". exiftool shows resolutions of 118.1102 and the resolution unit "cm" which gives the same DPI value of 300 (118.1102 * 2.54).

AFAIK 72 ppi is the default in some image programs. In GIMP it's AFAIR default only in the GUI Image -> change resolution.
EXIF is the wrong place to specify ppi. convert ... -density 600x600 -units PixelsPerInch ... is reliable, but not all image formats can store it.

try this code @M3ssman
"""from PIL import Image ,ImageEnhance
im = Image.open(r""+"C:\Users\user\Documents\Lightshot\stry5.png")
cness = ImageEnhance.Sharpness(im)
cFactor = 2
im = cness.enhance(cFactor)
cness = ImageEnhance.Brightness(im)
cFactor = 3
im = cness.enhance(cFactor)
im.show()
im.save(r""+"C:\Users\user\Documents\Lightshot\stry7.png",quality=95)"""
it finds blobs for all characters


[DARKNET]RNN Support for darknet

RNN Support for DARKNET frontend is added.
This PR consists of

[x] Darknet frontend framework changed to Class, similar to onnx/tensorflow for better maintainability.
[x] RNN layer processing of darknet.
[x] RNN Tutorial how to run RNN
[x] Testcase to check RNN layer output

Thanks for contributing to TVM!   Please refer to guideline https://docs.tvm.ai/contribute/ for useful information and tips. After the pull request is submitted, please request code reviews from others in the community.

@PariksheetPinjari909 , @srkreddy1238 @Huyuwei @masahi
Please help to review this PR

@srkreddy1238 Thanks for the comments. All comments are addressed. Please check again. TIA

@siju-samuel  with above comments LGTM.

@srkreddy1238 Thanks for the review.
@tqchen Please help to merge https://github.com/dmlc/web-data/pull/96, This PR the trained models for the example.

Thanks @siju-samuel @srkreddy1238 @PariksheetPinjari909 , this is now merged


Enums as specified do not cover interop situations well

This issue was originally filed by<EMAIL_ADDRESS>
Enums as specified do not cover interop situations well where there's an expectation that an enum can be associated with a particular value (e.g. pnacl, http status messages with gaps in ranges, Windows messages, etc).
Please provide any additional information below.
Originally mentioned in comment to Issue #21416

Duplicate of https://github.com/dart-lang/language/issues/158


add variables to dataset from raster files (ecmwf)

close #30

with this commit:
import xsar
from xsar.raster_readers import ecmwf_01_1h_reader
import xarray as xr
import rioxarray
import holoviews as hv
import datetime
import numpy as np
hv.extension('bokeh')

filename = '/home/oarcher/SAFE/S1A_IW_GRDH_1SDV_20210909T130650_20210909T130715_039605_04AE83_C34F.SAFE'
s1meta = xsar.Sentinel1Meta(filename)
s1meta.set_raster('ecmwf', '/home/oarcher/tmp/ECMWF_FORECAST_0100_202109091300_10U_10V.nc', read_function=ecmwf_01_1h_reader)
sar_ds = xsar.open_dataset(s1meta, resolution='1000m')

hv.Image(sar_ds.ecmwf_WSPD).opts(cmap='jet') + hv.Image(sar_ds.sigma0.isel(pol=0)).opts(cmap='gray')

@vincelhx , can you check that it's works as expected for you ?
You will need to use my repo:
git clone https://github.com/oarcher/xsar
cd xsar
pip install -e .


extract raw query parameters to fix clickthrough url truncation issue

Description

extract raw query parameters from the clickthrough url to preserve any customer provided url encoded query parameters.
docs to be updated stating that a clickthrough url containing query parameters must be url encoded.

Related Issue
MOB-18446

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] I have signed the Adobe Open Source CLA.
[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

The destination url provided in the campaign UI is not url encoded. As a workaround for now, the customer will need to url encode the destination url if they want to preserve any query parameters present in the url. I've opened a Campaign issue to request that destination url's be automatically url encoded: CAMP-53014


Avoid reallocation when creating BBS public key

Currently the vec is one byte short, so it reallocates from 201 to 402 bytes.

Oh, that's a nice catch.
What kind of impact are you seeing on performance?

@hartm I just ran quick benchmark but I don't think the difference is measurable given the other work the function is doing. The BBS vs PS benchmarks in libzmix don't compile at the moment.
I just added another commit that fixes a similar issue in BlindSignature::new.

I'll go ahead and try to fix and merge this.


VAT percentage on an Item is defined as Long.

In the sdk the Item-object has vatPercentage defined as Long, Finnish standard VAT is now 25,5%
public constructor Item(
    val unitPrice: Long,
    val units: Long,
    val vatPercentage: Long,
    val productCode: String,
    val deliveryDate: LocalDate? = COMPILED_CODE,
    val description: String? = COMPILED_CODE,
    val category: String? = COMPILED_CODE,
    val merchant: String? = COMPILED_CODE,
    val stamp: String? = COMPILED_CODE,
    val reference: String? = COMPILED_CODE,
    val orderId: String? = COMPILED_CODE,
    val commission: ItemCommission? = COMPILED_CODE
)

Thanks for reporting @visadigia, we will update this.


Add grants

Fixes to add grants and some sadditional search updates.

@jrmerz I updated the vivo.json file as best I could.
Here is an example of the work now for reference to the roles

So the new ElasticSearch text index would look like: role.relatedBy.label and we should probably make a role.@type keyword index for future proofing?

Yes, add role.relatedBy.label.text specifically.  I choose to use the role to try and match the way citations are included, but alternatively, I think maybe we could add directly to the document, a
relatedBy.@type and relatedBy.label.text and then we could eliminate the citation, (except that misses journal names, eg) .
You are right though, the @type would also include the PI vs CO-PI component to the role as well.


Adding support for JSON format on Zuul source

Just as the title says, it is now possible to request output of queries to a Zuul source in JSON format. Also includes support for 'spec'.

Failed build. Re checked manually.


Order of arguments

While writing documentation for my system I noticed that the following command:
SET fleet truck POINT 1 2
Will result in the following GeoJSON output:
{"type":"Point","coordinates":[2,1]}
Now, the GeoJSON specification specifies a point as "Point coordinates are in x, y order (easting, northing for projected coordinates, longitude, latitude for geographic coordinates)", so the output is complaint.
Is there any reason that commands have the order lat lon instead of lon lat?

This was a design decision that I made early in development. The lat lon order is very common in geolocation web and mobile APIs such as Android LocationManager, iOS CoreLocation, and Google Maps. These are some of the tech that I've been integrating with for years, and at the time I thought it would be best to align Tile38 with these APIs.
I regret this decision, and I wish everything was XY ordered.
But the damage is done, at least for 1.X. I've thought about ripping the bandaid off in 2.0, but I haven't decided yet. I'm worried it may be confusing for existing users.

This was a design decision that I made early in development. The lat lon order is very common in geolocation web and mobile APIs such as Android LocationManager, iOS CoreLocation, and Google Maps. These are some of the tech that I've been integrating with for years, and at the time I thought it would be best to align Tile38 with these APIs.

ISO 6709 also specifies the yx format while the GeoJSON spec suggests xy, so even standards don't really agree.

But the damage is done, at least for 1.X. I've thought about ripping the bandaid off in 2.0, but I haven't decided yet. I'm worried it may be confusing for existing users.

For me xy seems more logical since that's is the way axis work in maths. I think if you do decide to change this, it will be more logical for new users, but existing users need to be very aware of the impact of a change to the command structure.
I don't think it is a huge deal either way, as long as users are aware of it. For now, this issue can be closed.

Thanks for sharing your thoughts.


Duplicates

Will this produce duplicates and if so how do I stop this? Thanks

No it will not produce duplicates since there is a piece of code which prevents it from creating a file with a DNA that already exists.


fix prometheus log message terminology

A prometheus "server" typically refers to the prometheus process running
on a central server which connects to various prometheus "exporters" and
collects metrics. What is implemented here in substrate is a prometheus
exporter.
This patch fixes the associated log message to avoid confusion for new
users.

[x] You added a brief description of the PR, e.g.:

What does it do?
What important points reviewers should know?
Is there something left for follow-up PRs?

[ ] You labeled the PR appropriately if you have permissions to do so:

[ ] A* for PR status (one required)
[ ] B* for changelog (one required)
[ ] C* for release notes (exactly one required)
[ ] D* for various implications/requirements
[ ] Github's project assignment

[ ] You mentioned a related issue if this PR related to it, e.g. Fixes #228 or Related #1337.
[ ] You asked any particular reviewers to review. If you aren't sure, start with GH suggestions.
[x] Your PR adheres to the style guide

In particular, mind the maximal line length of 100 (120 in exceptional circumstances).
There is no commented code checked in unless necessary.
Any panickers have a proof or removed.

[ ] You bumped the runtime version if there are breaking changes in the runtime.
[ ] You updated any rustdocs which may have changed
[ ] Has the PR altered the external API or interfaces used by Polkadot? Do you have the corresponding Polkadot PR ready?

Refer to the contributing guide for details.
After you've read this notice feel free to remove it.
Thank you!
✄ -----------------------------------------------------------------------------

Forgot to mention this for reference:
https://prometheus.io/docs/introduction/glossary/#exporter


⚠ BeyondHD has degraded performance

In 5ad97d4, BeyondHD ($BHD) experienced degraded performance:

HTTP code: 200
Response time: 1950 ms

Resolved: BeyondHD performance has improved in be68ac0.


GCS connector sends a high volume of ListObjects requests, triggering GCS 429 throttling error

While enabling Implicit Directories can help list all file objects, it has the side effect of sending too many ListObjects requests to GCS.  When this happens, GCS returns the following error:
Caused by: com.google.cloud.hadoop.repackaged.gcs.com.google.api.client.googleapis.json.GoogleJsonResponseException: 429 unknown
<meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>Sorry...</title>

Google
Sorry...

We're sorry...

... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.

GcsFuse does mention about this caveat here:
https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/semantics.md#implicit-directories
Can we please roll back the change?

I'm seeing an issue that may or may not be related, via GCP Dataproc. Specifically, I have a Spark job running on Dataproc that reads and writes an RDD from a GCS bucket containing implicit directories, and starting on Feb 15, certain interactions with the bucket appears to generate an enormous number of ListObject operations (rising to 40K req/sec for over an hour). As far as I can tell, this spike in ListObject operations seems to happen at the point at which the RDD starts being written to the GCS bucket (/<implicit_rdd_dir>/part_00001, /<implicit_rdd_dir>/part_00002, /<implicit_rdd_dir>/part_00003, etc.).
I don't fully understand the commit referenced by this issue, but from what I gather, if this were in fact the issue causing my spike in ListObjects calls, I should expect a 1:1 relationship between the number of ReadObject calls and the number of ListObjects calls, correct? Which isn't quite what I'm seeing. I'm seeing a rapid rise to about 40K req/sec ListObjects calls, with zero ReadObject calls during the period. However, there are other bucket operations during the period:

WriteObject (starts at about 12 req/sec and gradually diminishes to 4 req/sec over the span of the job)
DeleteObject (same as WriteObject)
RewriteObject (similar throughput pattern, but half the rate of WriteObject; i.e. starts at 6 req/sec and drops to 2 req/sec)
GetBucketMetadata (same as RewriteObject)

None of my Spark job code changed, and there haven't been any notable changes in the size or nature of the data that we're passing in to the Spark job. As mentioned above, this started happening spontaneously on Feb 15.

Most probably this is regression introduced in GCS connector 1.9.12 during performance optimizations and not related to linked commit, we will have fix shortly and release new GCS connector with it.

@medb Thanks for the update. From the information I provided, do you suspect that this issue would be the root cause of the scenario I described as well? Or d'you think what I'm seeing is unrelated?

@medb Also, do I need to do anything to upgrade to 1.9.14? Or will the latest version be used automatically behind the scenes by dataproc/spark? Thanks!

I think that this is a related issue. The problem with list request is that it's paginated (1,000 objects per single request), that's why if you have a lot of objects in that same directory you could have higher list requests ratio to other requests.
I think that we will have GCS connector 1.9.15 build in hour or so, so it will be great if you will be able to validate fix using connectors init action:
https://github.com/GoogleCloudPlatform/dataproc-initialization-actions/tree/master/connectors
We will update Dataproc with new GCS connector version automatically but it will take around a week for new Dataproc release to roll out and you will need to recreate cluster with latest image.

Great, thanks for the info @medb. Is there anything we can do in the short term to mitigate the issue prior to the new Dataproc release?

If we create our root directory as explicit rather than implicit, would that resolve the issue?
Would we also need to make sure any nested directories are also explicitly created?
If this strategy would in fact resolve the issue, what's the best way to create explicit directories in a bucket? The only way I've been able to find so far is by creating them in the Storage UI (GCP Console)...

I don't think that creating root directory will resolve this issue, because GCS connector will still send list request in parallel to improve performance in case it doesn't exist (root cause of the bug).
It will be the best if all explicit directories are created, but if you write your data through Spark/Hive they should be already created.
The best option for you will be to either upgrade/downgrade GCS connector to 1.9.15/1.9.11 using connectors init action or pin your cluster to older Dataproc image version (1.3.24-deb9) that has GCS connector 1.9.11.

We are also seeing this issue; we moved back to 1.3.24-deb9 and this solves the problem for now. Impact is a 100,000x fold increase in ListObject requests.

GCS connector 1.9.15 that fixes this issue was just released:
https://github.com/GoogleCloudPlatform/bigdata-interop/releases/tag/v1.9.15

@medb We've reverted to dataproc 1.3.24-deb9 as well and it solves the problem as well. We won't be able to verify connector version 1.9.15 just yet, but we'll likely be attempting it in the next week.
Thanks for the quick turnaround on this issue!

Still seeing this issue on latest dataproc image 1.4 so GCS connection v1.9.16.
Additional context: in this case we may have multiple clusters making list requests via GCS connector at the same time.
Can this be better handled with exponential back-off or similar to account for multiple systems on the same subnet querying GCS?

@jaketf from your description it seems that this is a different issue. May you file a new GitHub issue for this? And add more details about current behavior (how many clusters with how many nodes are running simultaneously? what is observed behavior (list requests QPS, etc)?) and add expected/desirable behavior.

@medb sure.


Feature Request: Out of the box Account Abstraction support

Is your feature request related to a problem? Please describe.
Today a big issue is non-crypto native users having to deal with gas fees. Account Abstraction fixes this. Having an opinionated out-of-the-box AA implementation would be a great way to make it easier to build on top of Ethereum quickly.
Describe the solution you'd like

Given this project supports base, use a combination of base paymaster with one of the following:

account kit or biconomy.
Maybe there is a complete AA solution being built at Coinbase that I'm unfamiliar with. If so disregard the second point above, Generally speaking though this is key to making as many viral onchain applications as possible.
I'd imagine this could be done with a combination of a provider + hook that lets the signed-in user interact with their smart contract wallet.
Describe alternatives you've considered

For now support a solution like https://www.alchemy.com/account-kit or https://www.biconomy.io/ fully.

Additional context
n/a

I agree 100% on this: Account Abstraction is a must.
I love that you played with a few options out there. I would love to hear more about your experience with them and what the trade-offs you saw are.
Besides the two you mentioned, I also heard about https://www.privy.io, https://web3auth.io/ and https://www.dynamic.xyz.
As of right now, something I want to triple-check is the Javascript dependency they have. Build Onchain Apps loves Viem and Wagmi because they care about being lightweight, a trade-off I want to remember when picking something out there.
What are other trade-offs that are worth to count?

+1 to this. I don't have much to add to this since I think AA is still in early days. But there is also a way to combine Privy with AA: https://docs.privy.io/guide/frontend/account-abstraction/zerodev

As of right now, something I want to triple-check is the Javascript dependency they have. Build Onchain Apps loves Viem and Wagmi because they care about being lightweight, a trade-off I want to remember when picking something out there.

Both account kit and biconomy use viem, I'd imagine that it might be good to at some point setup functionality to index events from a contract(s). In this case account kit might be better since alchemy supports this also, thus you could use the same alchemy account for both. I have heard plenty of great things about biconomy though.

Besides the two you mentioned, I also heard about https://www.privy.io/, https://web3auth.io/ and https://www.dynamic.xyz/.

Hypeshot uses privy: its very great in my experience, they don't have a full passkey flow yet if that is important. Dynamic has this, and they have account abstraction (its in beta though). I personally haven't interacted with web3auth so can't comment on them.
if possible, I think it would be best to not rely on a 3rd party embedded wallet service for this. Given this will hopefully be the default for those making projects on base, I'd rather not eventually have a situation where that service is the default to use, and can trigger vender lock in at any point. Implementing one of the aa services above though would be great, as imo its more flexible to change between them if wanted.

if possible, I think it would be best to not rely on a 3rd party embedded wallet service for this

Disagree because this implies that embedded wallets (hence MPC) is an alternative to account abstraction. It's not. In fact, MPC will work together with AA. AA happens at the contract level whereas MPC is relevant at the key abstraction level. Unfortunately, most AA demos as of today are also demo-ing key abstraction (case in point: https://web3auth.io/). Benefits of AA are batched txs, paymasters etc.

I personally like how nextjs showcases each integration in their examples directory which makes it easy to dissect which vendors a developer wants to integrate. There are certainly maintainability tradeoffs here.

I agree 100% on this: Account Abstraction is a must.

coinbase already implemented AA and will be releasing soon. i have seen demo on twitter


Help with Registering Custom Wood Types

I have looked through the API and am confused, because I keep getting the error Registry ResourceKey[minecraft:root / totemic:b_wood_type] does not exist!

Can you give me the code that you are using for registering and the stack trace? Which Minecraft version is this happening in?

Unfortunately I can't really help you unless you give me more information. It is now possible to add custom wood types via config file, so maybe you can see if that works for you :)


feat: add edit option in suggested queries in hint commands

Description
This PR  introduces a new way to edit the queries directly from slash hint commands that edit button appears on hover of the hint. This also introduces an event EDIT_ACTION_CLICK as emitted from different other places of our application  with all the similar properties except the from : SlashCommandHint

Fixes #32075
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test<EMAIL_ADDRESS>:mag: Cypress test results

[!IMPORTANT]
Workflow run: https://github.com/appsmithorg/appsmith/actions/runs/8465758601
Commit: cff14b0006441274e182d17ff66603219971ddbd
Cypress dashboard url: Click here!
All cypress tests have passed 🎉🎉🎉

Summary by CodeRabbit

New Features

Enhanced the code editor with improved command suggestions and quick command generation, including URL and event parameter handling.
Introduced new styling for command suggestions in the code editor.

Refactor

Updated functions and components for better handling and mapping of plugins within the code editor.

Chores

Added necessary imports and updated the usage of various components and utilities to support new features and improvements.

/build-deploy-preview skip-tests=true

/build-deploy-preview skip-tests=true

/build-deploy-preview skip-tests=true


Improve sorting performance of Spark SQL window function by removing window partition key from sort order

What changes were proposed in this pull request?
Spark SQL rank window function needs to sort the data in each window partition, and it relies on the execution operator SortExec to do the sort. During sorting, the window partition key is also put at the front of the sort order and thus it brings unnecessary comparisons on the partition key. Instead, we can group the rows by the partition key first, and inside each group we sort the rows without comparing the partition key.
We use a HashMap to store the mapping between a partition key and a sorter. All the rows corresponding to a single partition key will be inserted into the same sorter. Each sorter will sort its rows. The partition keys stored in the HashMap will also be sorted at the end. When the sort operator is ready to return the rows to the window operator, it will follow the order of the partition key to go over each sorter, and each sorter will return the rows in the window order decided by the SQL syntax “ORDER BY”.
As we cannot store an unlimited number of key-value pairs in the HashMap, we set an upper bound for the number of pairs. If the number of distinct keys in the HashMap reaches the limit, the new incoming rows will be inserted to the main sorter. This main sorter will sort the rows in the order of the partition key plus the window order. If the number of distinct keys in the HashMap is under the limit, the main sorter will be always empty.
When there are two sequences of sorted rows in both the HashMap and the main sorter, we follow a merge sort to return the rows. We compare the next row ready to return from the HashMap and the next row ready to return from the main sorter, and always choose the one with a higher rank to return.
Why are the changes needed?
This is the related JIRA
https://issues.apache.org/jira/browse/SPARK-32096?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel&focusedCommentId=17147504
This change brings performance improvement for window function. This is the change of performance when running q67 of TPCDS-1TB benchmark.
Query    | Time in seconds (master) | Time in seconds (perf patch)
67-v2.4  | 450.515                            | 226.124
This is the change of performance when running q67 of TPCDS-10TB benchmark.
Query    | Time in seconds (master) | Time in seconds (perf patch)
67-v2.4  | 2486.404                          | 1168.709
While this change brings performance improvement to query 67,  it does not bring performance regression to other queries of TPCDS-1TB or TPCDS-10TB.
Does this PR introduce any user-facing change?
No
How was this patch tested?

existing unit tests
newly added unit tests

Can one of the admins verify this patch?

Can one of the admins verify this patch?

re-test

cc @hvanhovell FYI

ok to test

Test build #129184 has started for PR 29725 at commit 77d615a.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33798/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/33798/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/33798/
Test FAILed.

Test build #129184 has finished for PR 29725 at commit 77d615a.

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

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129184/
Test PASSed.

Merged build finished. Test PASSed.

Test build #129407 has started for PR 29725 at commit 6b8ca20.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34014/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34014/

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34014/
Test PASSed.

Test build #129407 has finished for PR 29725 at commit 6b8ca20.

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

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129407/
Test PASSed.

Test build #129636 has started for PR 29725 at commit 7604f53.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34240/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34240/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34240/
Test FAILed.

Test build #129636 has finished for PR 29725 at commit 7604f53.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129636/
Test FAILed.

Test build #129641 has started for PR 29725 at commit 32a6714.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34245/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/34245/

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/34245/
Test PASSed.

Test build #129641 has finished for PR 29725 at commit 32a6714.

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

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/129641/
Test PASSed.

@hvanhovell , do you have a chance to review this pull request?


More powerful embedded Haxe

I think it would be useful to have some Haxe features that hscript is missing, such as function and enum definitions especially, and the ability to invoke constructors and static methods.
So I'll be looking into forks/extensions/alternatives to hscript. The first one I checked out was ihx, which won't work because it depends on the system's Haxe and Neko binaries (which means it's not fully portable/cross-platform).
Edit: I was wrong. function definitions are allowed in hscript.

A few things slipped my mind about what is/isn't possible in hscript. We previously discussed some of them in issue #16 and here's the link to hscript's limitations: https://github.com/HaxeFoundation/hscript#limitations. Best not to forget the details before making any big decisions.

Also very important: https://github.com/HaxeFoundation/hscript#advanced-usage
What I'm trying to figure out now is if I can use Haxe macros to reimplement some of the janky code translations I've done in evaluateHaxeExpression() in saner ways.

Hscript contains the function Macro.convert(e: hscript.Expr): Expr. What we need to make this possible is a reverse conversion, convert(e: haxe.macro.Expr): hscript.Expr. Then, we'll have access to the full suite of haxe expression reification tools in order to transmute embedded Haxe.
However, it might be simpler to attempt expression reification on hscript Expr's directly, rather than implement the reverse conversion.

To take the simpler approach (using hscript Expr objects only) it seems the main transmutations would be trivial:
EVar(name, type, expression) tells the HInterface todeclare a variable with that name in interp.variables, and change toEBinop(=, EIdent(name), expression)`
EIdent(varname) can be transmuted to check if the varname refers to a viewcount
EBinop(&&, EIdent(varname), EIdent(varname2)) allows for &&'ing view counts as if they were bools, like the TODO comment here notes is currently impossible

One thing I want to do that would require haxe macros is the idea of wrapping static classes like FlxG in instances that can be passed to interp.variables. I think that that conversion doesn't need to happen at runtime, though, it can happen at compiletime for a Hankerchief game.

Just found this and thought I'd point it out. Might be useful. :man_shrugging:
https://github.com/darmie/hxComposer

That actually does look useful! The documentation is sparse/confusing but what I glean from the code looks nifty. I might spend some time in the next month or so looking it over.

triaging this for now


V4 - Additional improvements

[x] Add docblock for some undocumented public functions.
[x] Add ability to get batch uuid in LogBatch::withinBatch().
[x] Add ability to compare date intervals casts.

@nagi1 can you take care of that?

Will do, Can you give me example use case to work with?

A new attribute with, I think, custom object cast to DateInterval instance.
And a testcase covering at least the three listed scenarios.
$model->interval = CarbonInterval::minute() for example.

@Gummibeer You may merge this now :)


[multistage] Aggregation Query with No Grouping Sets Returns Empty Response

When we run an aggregation query without any grouping-sets, if no rows match the operators under the aggregation then the result is empty. Example:
select
  count(*)
from
  baseballStats_OFFLINE
WHERE
  playerID IN (
    select
      playerID
    from
      baseballStats_OFFLINE
    where
      teamID = 'foo'
  )

The expected behavior here would be to receive a single row [0] but instead we don't get any rows.
For the case when a stage does a full aggregate (as opposed to a partial aggregate), if there's no grouping key we may want to assign only 1 worker for that stage since otherwise it may be hard to ensure that stages above the full aggregate stage receive exactly 1 row which contains all the aggregation functions.
Opening this issue for discussing any other solutions.
cc: @walterddr @siddharthteotia

yes there's a feature missing in the AggregationOperator where when _groupByKeyHolder is empty and _groupSet is also empty we should return single row instead of empty row.

did a bit of research in https://github.com/apache/pinot/commit/18316a3047ba11ac7376719dc5315c0ea948cfd4
it is a bit tricky b/c we rely on the empty row results for distributed global agg/sort to produce correct results (e.g. all data funnel through first server while the rest returns directly EOS)
so in order for this change to merge we also need to make an adjustment for the final aggregation or change the reducer in QueryDispatcher.

I didn't mean to close this issue. Just merged the other PR and this automatically got closed. Please feel free to reopen this if needed.

this should be closed. the PR #10222 verifies it


complext table cell got AVT violation that no header defined

Detailed description

Describe in detail the issue you're having.

Is this a feature request (new component, new icon), a bug, or a general issue?

Bug

Is this issue related to a specific component?

Table

What did you expect to happen? What happened instead? What would you like to see changed?

No violation for Accessibility checker

What browser are you working in?

Firefox 85.0.2

What version of the Carbon Design System are you using?

3.54.2

What offering/product do you work on? Any pressing ship or release dates we should be aware of?

ADDI
Steps to reproduce the issue
Additional information

Screenshots or code

Notes

hi, @cal-smith This issue was still pending and it will affect our next accessibility compliance report, would you please arrange to resolve asap? Thanks.
@stanislavgeorgiev

@Donisius After upgrade to latest carbon release (4.52.1), the violation still exists, would you please help for a check? Thanks.

@ninja511

@lj7720 sorry I took a while to get back to you, are you setting the headers through the table model or are you creating a custom header like in this example? If you are setting them similar to that example you need to set the scope="col" property on your ths.

@Donisius Thanks for your comments. Now we can resolve it by adding the property in your sample. It's closed then.
@ninja511


fix(version): update fabric8-runtime-console to 0.8.39

There were the following issues with your Pull Request

Commit: 45ec139aea92ad69378080cf59c63ba22a0ad8ee
Your subject line is longer than 50 characters

Guidelines are available at https://github.com/fabric8io/fabric8-ui

This message was auto-generated by https://gitcop.com


Show notification if one specific traffic light of a timed light never changes to green

See also: #143

Duplicate of #8


[master] Upgrade to latest dependencies

Produced via:
./hack/update-deps.sh --upgrade
./hack/update-codegen.sh

/cc davidor markusthoemmes tcnghia
/assign davidor markusthoemmes tcnghia

/hold
Fixing the issue by https://github.com/knative-sandbox/net-kourier/pull/249.

closing as https://github.com/knative-sandbox/net-kourier/pull/249 was merged.


Update to Orchard Core 1.4.0

Update to Orchard Core 1.4.0. Modify props and projects to reflect other TheNetWorks formats.

All good with this @deanmarcussen


Update ReactiveNSView : add .ctor(CGRect) for Unified API.

I also reordered the usings.

I can squash those commits if needed.

Thanks!


[Epic] Spring Cloud Azure 4.0 - All samples can work correctly

We should make sure all samples can work correctly before 4.0 GA.

[ ] #27483
[x] #27484
[x] https://github.com/Azure/azure-sdk-for-java/issues/27475
[x] #27486

Closing this issue now, the 4.0.0 has been GAed.


is there any light weight and device friendly reid models for edge device?

Hi, @L1aoXingyu
is there any light weight and device friendly reid models for edge device? I use osnet before. But i find it is not friendly to edge device. It is not fast enough compared to is low float operations.
Thanks in advance!

Actually, I just tried ResNet-18 and ResNet-34 for edge devices.
Maybe each device has its preference operation, so osnet may be very small and has low flops. But the speed may be a little bit slow.
My suggestion is to choose the edge-friendly model architecture.


Access "_getFormat" in rcdimple?

Hi Kenton,
Thanks for your great work on the dimple update; I am enjoying working with it.  Right now, I am updating my old population pyramids example (http://walkerke.github.io/2014/06/rcharts-pyramids/) with your new package and some of the new tools that have been released in the past year.
So far, it is working great; there is just one thing I can't figure out yet.  Last year, you and John helped me display all of the values in the tooltip and on the X-axis as absolute values with x._getFormat, which was passed to afterScript in rCharts (https://github.com/ramnathv/rCharts/issues/421).  Is there a way to do this in rcdimple?  Here is where I'm at so far:
library(dplyr)
library(tidyr)
library(rvest)
library(rcdimple)

url <- "http://www.census.gov/population/international/data/idb/region.php?N=%20Results%20&T=10&A=separate&RT=0&Y=2015,2020,2025,2030,2035,2040,2045,2050&R=-1&C=IN"

df <- url %>%
  html() %>%
  html_nodes("table") %>%
  html_table() %>%
  data.frame()

names(df) <- c("Year", "Age", "total", "Male", "Female", "percent", "pctMale", "pctFemale", "sexratio")

cols <- c(1, 3:9)

df[,cols] <- apply(df[,cols], 2, function(x) as.numeric(as.character(gsub(",", "", x))))

df1 <- df %>%
  mutate(Order = 1:nrow(df),
         Male = -1 * Male) %>%
  filter(Age != "Total") %>%
  select(Year, Age, Male, Female, Order) %>%
  gather(Gender, Population, -Age, -Order, -Year)

max_x <- plyr::round_any(max(df1$Population), 10000, f = ceiling)
min_x <- plyr::round_any(min(df1$Population), 10000, f = floor)

df1 %>%
  dimple(x = "Population", y = "Age", group = "Gender", type = 'bar', storyboard = "Year") %>%
  yAxis(type = "addCategoryAxis", orderRule = "Order") %>%
  xAxis(type = "addMeasureAxis", overrideMax = max_x, overrideMin = min_x) %>%
  default_colors(c("green", "orange")) %>%
  add_legend()

Thanks for any advice you can provide, and the work you've put in on this package!

Most definitely a way.  I'll be right back with a demo.

Ok, I'm still not sure this is the best implementation, but I provided an undocumented chart hook that we can use in options to make this work.  rCharts2 will have tack which allows us to change/add options to a widget within a pipe.  I tried to inline comment the JavaScript to explain what I did.  Please ask questions.
library(dplyr)
library(tidyr)
library(rvest)
library(rcdimple)

url <- "http://www.census.gov/population/international/data/idb/region.php?N=%20Results%20&T=10&A=separate&RT=0&Y=2015,2020,2025,2030,2035,2040,2045,2050&R=-1&C=IN"

df <- url %>%
  html() %>%
  html_nodes("table") %>%
  html_table() %>%
  data.frame()

names(df) <- c("Year", "Age", "total", "Male", "Female", "percent", "pctMale", "pctFemale", "sexratio")

cols <- c(1, 3:9)

df[,cols] <- apply(df[,cols], 2, function(x) as.numeric(as.character(gsub(",", "", x))))

df1 <- df %>%
  mutate(Order = 1:nrow(df),
         Male = -1 * Male) %>%
  filter(Age != "Total") %>%
  select(Year, Age, Male, Female, Order) %>%
  gather(Gender, Population, -Age, -Order, -Year)

max_x <- plyr::round_any(max(df1$Population), 10000, f = ceiling)
min_x <- plyr::round_any(min(df1$Population), 10000, f = floor)

df1 %>%
  dimple(x = "Population", y = "Age", group = "Gender", type = 'bar', storyboard = "Year") %>%
  yAxis(type = "addCategoryAxis", orderRule = "Order") %>%
  xAxis(type = "addMeasureAxis", overrideMax = max_x, overrideMin = min_x) %>%
  default_colors(c("green", "orange")) %>%
  add_legend() %>%
  tack(., options = list(
    chart = htmlwidgets::JS("
      function(){
        var self = this;
        // x axis should be first or [0] but filter to make sure
        self.axes.filter(function(ax){
          return ax.position == 'x'
        })[0] // now we have our x axis set _getFormat as before
          ._getFormat = function () {
            return function(d) {
              return d3.format(',.1f')(Math.abs(d) / 1000000) + 'm';
            };
        };
        // return self to return our chart
        return self;
      }
    "))
  )

Brilliant, works great!  Thanks for your swift reply.


[BREAKINGCHANGE] Improve calculations for gauge and stat charts

This change includes a handful of improvements for the calculation setting currently used in the gauge and stat charts and the associated utility functions for generating those calculations:

Gauge and stat charts now communicate when the calculation is null. Previously, they would show a NaN in these cases, which is confusing.
Calculation for Mean is now labeled as Average for slightly better usability/readablity. The underlying constant remains the same.
Calculation utilities now can return null in cases where the data is null. Previously, they would return NaN.
Adjusted several utility functions to handle the fact that values can now be null.
Migration code now translates firstNotNull to FirstNumber, which is more equivalent than the previous translation to First.
Added FirstNumber calculation option to provide users the ability to calculate the first non-null value.

BREAKINGCHANGE: the return values for calculation functions now return null instead of NaN when values are null. Several type signatures for working with values have been modified to include null values and may need to be accounted for.

Checklist

[x] Pull request has a descriptive title and context useful to a reviewer.
[x] Pull request title follows the [<catalog_entry>] <commit message> naming convention using one of the following catalog_entry values: FEATURE, ENHANCEMENT, BUGFIX, BREAKINGCHANGE, IGNORE.
[x] All commits have DCO signoffs.

UI Changes

[x] Changes that impact the UI include screenshots and/or screencasts of the relevant changes.
[x] Code follows the UI guidelines.
[x] Visual tests are stable and unlikely to be flaky. See Storybook and e2e docs for more details. Common issues include:

Is the data inconsistent? You need to mock API requests.
Does the time change? You need to use consistent time values or mock time utilities.
Does it have loading states? You need to wait for loading to complete.

Screenshots
Gauge chart

Stat chart

For some reason github actions is being weird and auto-cancelling some of the jobs. No idea what's going on there. I'll try kicking it in a little while when the other jobs finish.


Horizontal scrollbar doesn't contain thumb after resize.

Description
Horizontal scrollbar doesn't contain thumb after resize.
Steps to reproduce

Open file
Resize editor so that horizontal scrollbar must appear

Expected behavior
Horizontal scrollbar contains thumb.
Actual behavior
Horizontal scrollbar doesn't contain thumb.

It's regression from this commit. There is also dependency from size (here  and here) so ScrollPosition need been updated after resize too.

Yep, I see it.  Thanks!  It looks like we need to do a little more checking in that code.

I don't see good fix for it. Or cache for size or ugly reset and restore horizOffset in SetSize:
	temp := e.horizOffset
	e.horizOffset = -1
	e.SetHorizOffset(temp)

Fixed by https://github.com/nelsam/gxui/pull/24


Radagast - Rhosgobel

http://www.planetminecraft.com/project/house-of-radagast-the-brown-sneak-peek-of-mirkwood/

Is a good idea, but the download is missing unfortunately.


Please add our Scoobi Doge token logo to metamask

Thank you =)

SVG logo is required

alright thank you let me change this now


feat(cli): file system prettier migration

Summary
When we migrate the configuration from Prettier, I decided to not run the other migrations. What do you think? Should we run them at the end?
This PR adds the required operations for the migration from prettier:

file system operations
workspace operations
merging strategy to the main configuration

Test Plan
I added new tests cases, errors too

When we migrate the configuration from Prettier, I decided to not run the other migrations. What do you think? Should we run them at the end?

Just for my understanding, what other migrations are those? Intuitively I’d say it makes sense to only run one at a time, but I’m lacking of context :)

When we migrate the configuration from Prettier, I decided to not run the other migrations. What do you think? Should we run them at the end?

Just for my understanding, what other migrations are those? Intuitively I’d say it makes sense to only run one at a time, but I’m lacking of context :)

At the moment, we only have a migration that updates the version of the schema to the latest.

When we migrate the configuration from Prettier, I decided to not run the other migrations. What do you think? Should we run them at the end?

I think it is better to not to?
By the way, why is this feature is not under the init command? migrate is dedicated to a migration between two biome versions?

At the moment, we only have a migration that updates the version of the schema to the latest.

Yeah, agreed with your approach 👍

By the way, why is this feature is not under the init command? migrate is dedicated to a migration between two biome versions?

That’s a good point. I can kinda see the use case for having it under migrate, but it would be really cool if init would check for the presence of Prettier config too and would prompt interactively if you want to initiate the migration.

By the way, why is this feature is not under the init command? migrate is dedicated to a migration between two biome versions?

Because a user would want to migrate FROM prettier, not init the project with Prettier's defaults.
That was how my brain thinks 😁

Or if interactive prompts are a bit too far-fetched, just a notice diagnostic to inform users of the presence of the migrate command for this.

I don't think they are far-fetched. I am looking forward to use these prompts: https://crates.io/crates/cliclack 🤩

I am going to merge this. Feel free to add more feedback if you need it. The feature isn't finished though, so I will address possible concerns in the next PR

Or if interactive prompts are a bit too far-fetched, just a notice diagnostic to inform users of the presence of the migrate command for this.

I don't think they are far-fetched. I am looking forward to use these prompts: https://crates.io/crates/cliclack 🤩

Giving my conservative cent: if it is only used in a few places, we should avoid adding an extra dependency / way of interacting with Biome.


pwmetrics section in package.json ignored

Running with script command pwmetrics --config according to docs will use pwmetrics config in package.json - so a section such as:
"pwmetrics": {
    "url": "http://www.blah.com",
    "flags": {
      "runs": "2",
      "expectations": true
    },
    "expectations": {
      "ttfcp": {
        "warn": ">=1500",
        "error": ">=2000"
      }
    }
  },

Is getting ignored and dumping error message "✘ Error: No url entered.."
Having a seperate js config file like pwmetrics --config=pwmetrics-config.js works fine on the other hand

I'm hitting the same thing ☝

Hello, thanks for filling this issue.
Could you post the package.json you are using? If possible also the project structure and node version.

A minimal viable example showcasing this would be great to find and fix the bug quickly :)

@pedro93 node v6.9.1
I had to strip out some proprietary tools (filled with xyz), but you will get the idea from this sample:
{
  "name": "xyz",
  "version": "0.0.1",
  "generatorVersion": "1.4.7",
  "description": "xyz",
  "main": "index.js",
  "private": true,
  "scripts": {
    "start": "npm run watch",
    "version": "version-changelog CHANGELOG.md && changelog-verify CHANGELOG.md && git add CHANGELOG.md",
    "watch": "nodemon -w src -x node -r dotenv/config -r babel-core/register src/app.js",
    "watch:docker-compose": "npm run watch -- -L",
    "test:watch": "nodemon -w src -w test -x 'npm test'",
    "test": "mocha -r babel-core/register --opts \"test/unit/mocha.opts\" && npm run lint",
    "test:e2e": "fe-e2e-tests --config test/e2e/nightwatch.conf.js",
    "test:e2e-browserstack": "fe-e2e-tests --config test/e2e/nightwatch.conf.js --browserstack",
    "test:perf": "pwmetrics --config",
    "lint": "eslint src",
    "lint:fix": "eslint src --fix",
    "build": "babel -d lib src -D",
    "flow": "flow",
    "flow:stop": "flow stop",
    "flow:coverage": "flow coverage src/*.js --color"
  },
  "repository": {
    "type": "git",
    "url": "xyz"
  },
  "keywords": [
    "node",
    "react"
  ],
  "author": "Martin Jujou <martin.jujou@domain.com.au>",
  "license": "ISC",
  "bugs": {
    "url": "xyz"
  },
  "homepage": "xyz",
  "dependencies": {
    "xyz": "^3.0.1"
  },
  "devDependencies": {
    "xyz": "^2.2.3"
  },
  "pwmetrics": {
    "url": "http://xyz.com",
    "flags": {
      "runs": "2",
      "expectations": true
    },
    "expectations": {
      "ttfcp": {
        "warn": ">=1500",
        "error": ">=2000"
      },
      "ttfmp": {
        "warn": ">=2000",
        "error": ">=3000"
      },
      "fv": {
        "warn": ">=2000",
        "error": ">=3000"
      },
      "psi": {
        "warn": ">=2000",
        "error": ">=3000"
      },
      "vc85": {
        "warn": ">=2000",
        "error": ">=3000"
      },
      "vs100": {
        "warn": ">=2000",
        "error": ">=3000"
      },
      "tti": {
        "warn": ">=2000",
        "error": ">=3000"
      }
    }
  },
  "eslintConfig": {
    "extends": "xyz",
    "globals": {
      "fetch": false
    }
  },
  "remarkConfig": {
    "presets": "xyz"
  }
}

I think this is actually a docs issue. Because running pwmetrics --config=package.json works. But the README insinuates that pwmetrics --config would work the same.
Is it expected to?

@craig-mulligan probably should default to package.json for convenience i guess

It should @craig-mulligan due to the default parameter here: https://github.com/paulirish/pwmetrics/blob/master/lib/utils/fs.ts#L6
@jooj123 are you running pwmetrics through npm script right now? Could you try and install globally and executing the same snippet from the terminal in the root dir of your project?
In your project's root directory:
$ npm install -g pwmetrics
$ pwmetrics --config

I think the issue is this if statement: https://github.com/paulirish/pwmetrics/blob/master/bin/cli.js#L70
Changing to something like:
config = argv.config ? getConfigFromFile(argv.config) : getConfigFromFile(); works
Im happy to throw up the PR if you can verify thats ok?

I'm not near my laptop to confirm... But @denar90 or @paulirish can validate that very quickly :)

My rough solution would be:
if(argv.config) config = getConfigFromFile(argv.config !== '' ? argv.config : undefined);

The if statement is needed because the config flag may or may not be called. I don't like the code as is though.
If adding 'undefined' as the default value to the the yargs 'config' definition sets the value then this problem can be solved more cleanly.
E.g: https://github.com/paulirish/pwmetrics/blob/master/bin/cli.js#L47

Yeah sorry i just meant my line temporarily fixed it - its not an ideal fix
I can throw up a PR tomorrow for a clean fix - late here in oz :)

Guys, what if instead we set a default value equal to package.json in config option?
We can achieve a lot of simplifications.


feat(mantine): header redesign

Proposed Changes
Before

Design

After

Potential Breaking Changes
Header breadcrumbs have been moved out of the header children
Use the new Header.Breadcrumbs component to render breadcrumbs properly
Acceptance Criteria

[x] The proposed changes are covered by unit tests
[x] The potential breaking changes are clearly identified
[x] README.md is adjusted to reflect the proposed changes (if relevant)

A couple minor comments [...]

All applied!

Good point, same comment applies to actions. The current commit is a breaking change, should we take this as an opportunity to switch them all to the same pattern? However since description is usually just a string, I think it is more convenient as a prop. The actions would make sense as a children

Ok so if I understand correctly
Title : prop
Description : prop
Breadcrumb : <Header.breadCrumb /> in the children
Actions : Children ?  (are you thinking about some kind of <Header.action /> sub component ?

I'm wondering if we should go all to remove the props. E.g,
<Header borderBottom>
    <Header.Breadcrumbs>
        <Anchor>One</Anchor>
        <Anchor>Two</Anchor>
        <Anchor>Three</Anchor>
    </Header.Breadcrumbs>
    Title
    <Header.Description>The header description</Header.Description>
    <Header.DocAnchor href="https://about:blank" label="Tooltip text" />
    <Header.Actions>
        <Button>Primary</Button>
        <Button variant="outline">Secondary</Button>
    </Header.Actions>
</Header>

I'm not sure about the description, but for the documentation link I think it make a lot of sense

I feel the loneliness of the title not within a <Header.Title /> :sob:


waifu.pics integration

Implement a new command that the users can use to query images from waifu.pics. To avoid spamming the API and being slow to respond, the images of a category should be queried in batches of 50 (configurable) and the results should be stored - since these are just URLs, it's cheaper than individual queries. Each user request should take one item from this list when available. When the list is exhausted, another batch request should be sent. A rate limit that spans all categories should be implemented to avoid spamming the API by many concurrent requests.
Given I am a user
When I invoke the /react category: <waifu.pics category> command
Then an embed with an image of the requested category is displayed alongside text describing the action

suske


Create utilities components for animations

[x] Optimize useProximity
[x] optimize useDirection
[x] optimize ScrollWatcher
[x] Circle component that draws on scroll
[x] Rectangle component that draws on scroll

Write the tests for each component

[ ] Circle
[ ] Square
[ ] DynamicBackground

Create documentation for the new components

[ ] Rectangle
[ ] Circle


[TEVA 1974] no listings publisher view style

https://dfedigital.atlassian.net/browse/TEVA-1974

Review app deployed to https://teaching-vacancies-review-pr-2797.london.cloudapps.digital

Can you chuck in before/after screenshots pretty please?


Expand continuous integration to test with various GB projects

As we've worked to add features and fix bugs in RGBDS, we've occasionally made backwards-incompatible changes that affect more projects than we'd anticipated.
While the outcomes of #136 and #190 have been positive, leading to the well-defined implementation of linkerscripts and unions, it would be good to catch these cases before they become a problem. This would allow us to make backwards-compatible amends, or at least alert their authors and publicise the compatibility break.
The developers of Swift have made a list of projects with which they test new versions of Swift (and scripts to do so), helping them to recognise drastic changes in the language or compiler. I think that it would be beneficial to do something similar for RGBDS, using a script in the repo and/or extra continuous integration tests.

While this may make sense, for the time being I'm just going to create a new branch so that we can follow this: http://nvie.com/posts/a-successful-git-branching-model/ That way, projects that use this toolchain can point at the master branch, and the develop branch only catches up with master when a release is going to be made.

I presume you mean that the other way round, otherwise you'd be better off naming the new branch stable 😉

Oh, yeah, the last sentence is wrong, I meant that master only points at the new develop when a new release is going to be made.


Use penaltymodel 0.15.x

switch from penaltymodel-maxgap to penaltymodel-mip
python3.4 and 32bit architectures use penaltymodel-maxgap still

Codecov Report

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

@@          Coverage Diff           @@
##           master     #48   +/-   ##
======================================
  Coverage    92.8%   92.8%
======================================
  Files          16      16
  Lines         570     570
======================================
  Hits          529     529
  Misses         41      41

Impacted Files
Coverage Δ

dwavebinarycsp/compilers/stitcher.py
100% <100%> (ø)
:arrow_up:

dwavebinarycsp/package_info.py
100% <100%> (ø)
:arrow_up:

dwavebinarycsp/exceptions.py
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Add option to analyze only

Adds an --analyze option to only analyze the work to be done; don't modify the computer.
Also adds a hidden --last-task option for the last migration task to perform. It's helpful for development and debugging but we're not ready to make it public yet. Tasks are performed in this order: analyze, shrink partition, create/copy partitions, copy bootloader, reboot.
Also adds a hidden --skip-tasks option, which provides more flexibility than --last-task by specifying which tasks to omit. This ability also may be helpful for troubleshooting. Both --analyze and --last-task ultimately specify a list of tasks to omit to the migrate() function API in Etcher SDK.

I self-certify!


feat: create IDataProvider

Looking good! There's one commit message contains [WIP], would you like to change it?
feat: create IDataProvider [WIP]
We just need to rebase on latest main before merging this.

@stephenctw Done!


Volume (file / folder) and mount path?

Where should you select the Volume location to install?
Installation on a Synology NAS with Docker it asks for a Volume (file/folder) location and mount path.
Furthermore, where does it install by default? Needing to find the configuration file to edit it.

I think I found the right file, but the current contents (after installation is as below).
Location it was found at was: /var/packages/Docker/etc/manymine.config
CONTENTS:
   "enabled" : true,    "entrypoint_default" : "docker-entrypoint.sh",    "exporting" : false,    "id" : "ed996cb34fb5bece529c8a2d90fe0fa5136c1bc2c3642ea5bf017e554247d38a",    "image" : "illiteratealliterator/manymine:latest",    "is_ddsm" : false,    "is_package" : false,    "memory_limit_slider" : 6000,    "name" : "manymine",    "shortcut" : {       "enable_shortcut" : false    } }

I'm afraid I don't have a Synology, so I don't really know how they work. There was someone else recently that I think got it working though, you can see the issue here. I linked to a guide I found for getting Portainer working on Synology, and Manymine uses the same kind of setup I believe. Hope it helps.


Manage subscriptions

This PR introduces the following main changes to the codebase:

[x] Create cron script that charges subscriptions;
[x] Remove code that creates stripe subscriptions
[x] Create a script that migrates subscriptions from stripe to our own database;

Coverage decreased (-0.2%) to 74.593% when pulling 0138b46d4acce56aca68ffe3ed87d40c05494817 on charge-subscriptions into 0030a607d7775e4965011e40acdfea28e3047161 on master.


Resolve imports and exports via cached BindingsMap

Pull Request Description
Addresses #6100 a bit. org.enso.compiler.Compiler.runImportsAndExportsResolution used to take up to three seconds as it triggered deserialization of megabytes of IR caches. Now it is faster as it uses library bindings cache. Alas, overall time isn't shortened, as further compiler passes still load (the same amount of) IR caches in.
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[ ] Screenshots/screencasts have been attached, if there are any visual changes. For interactive or animated visual changes, a screencast is preferred.
[ ] All code follows the
Scala,
Java,
All code has been tested:

[ ] Unit tests have been written where possible.

The above picture represents the current state. The picture below shows the after applying this PR. The runImportsAndExportsResolution clearly no longer deserializes IR - just it loads library bindings - when they are available.