Use --findUnseenEdges to find unseen edges within the graph

We know from discussions with noob on discord, that it is possible for a node in the DB to have children in the DB, but the moves that lead to the children are not stored as scored moves of the parents. I call these unseen edges of the graph.
I believe it would be desirable to have these edges become visible. For example, scipts like cdbsearch.py and cdbwalk.py rely critically on the scored moves that cdb returns, and often pick random unscored moves when additional moves are needed.
So this PR introduces the command line option --findUnseenEdges. No functional change in the absence of this option.
> ./cdbsubtree --fen startpos --depth 6 --moves --findUnseenEdges
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 2381457 nodes, 240951 (10%) have 783512 unseen edges
    b2b3 : 2722960 nodes, 305339 (11%) have 1013790 unseen edges
    c2c3 : 3117040 nodes, 329508 (10%) have 1206748 unseen edges
    d2d3 : 4229228 nodes, 442130 (10%) have 1590177 unseen edges
    e2e3 : 5124094 nodes, 589940 (11%) have 2349231 unseen edges
    f2f3 : 2117794 nodes, 256887 (12%) have 875839 unseen edges
    g2g3 : 3110112 nodes, 324254 (10%) have 1164174 unseen edges
    h2h3 : 2359709 nodes, 236493 (10%) have 747827 unseen edges
    a2a4 : 2166909 nodes, 275681 (12%) have 909319 unseen edges
    b2b4 : 1997711 nodes, 269218 (13%) have 858936 unseen edges
    c2c4 : 2837380 nodes, 321574 (11%) have 1130580 unseen edges
    d2d4 : 4876595 nodes, 545118 (11%) have 2218898 unseen edges
    e2e4 : 5136905 nodes, 644799 (12%) have 2779997 unseen edges
    f2f4 : 1975189 nodes, 253926 (12%) have 848950 unseen edges
    g2g4 : 2106892 nodes, 232285 (11%) have 773921 unseen edges
    h2h4 : 2150564 nodes, 304607 (14%) have 1072663 unseen edges
    b1a3 : 2054888 nodes, 249389 (12%) have 796583 unseen edges
    b1c3 : 3201323 nodes, 339754 (10%) have 1243752 unseen edges
    g1f3 : 3623933 nodes, 348881 (9%) have 1333102 unseen edges
    g1h3 : 2223646 nodes, 270932 (12%) have 912171 unseen edges
Saved 3135247 positions with a total of 11391977 unseen edges in unseen.epd.
Closing DB

> tail -n2 unseen.epd
rnb1kbnr/pppqpppp/8/3p4/8/2NP4/PPPBPPPP/R2QKBNR w KQkq - c0 "unseen moves: 2";
rnbqk1nr/ppppbppp/4p3/4P3/8/8/P1PP1PPP/RNBQKBNR w KQkq - c0 "unseen moves: 3";

wouldn't it make sense to store a list of positions and unseen moves explicitly, so they could be queued with action=store&move=move:a1a2 ?

ah, wait it looks like you're doing that already.

Yeah, one could store a list of uci moves instead. But I thought that I will probably just use queryall on the parent to refresh these edges in the graph. Waiting for noob to confirm that this would be sufficient.

I would expect that 'action=store&move=move:a1a2' is essentially for free/immediate if the target position is already in the db. But of course, since queryall also works.... now, it appears from your output that even at low depth more than 10% of the positions seems to have missing edges, that's a lot of queryall to do.

Yes, my thinking was that the bottleneck is probably the interaction with the API, not what cdb does below the hood after my request. So then queryall is overall cheaper.
I also agree that the 10% figure is a lot, and very surprising. It would be better of noob did this internally somehow, like with a "discovery" agent, similarly to his "painter". One could also think of doing a parent check for any new node that is added to the db (would need a reverse-move lookup for all possible reverse moves).
PS: I will change this to draft for now, as with the --moves option my numbers output are not quite right. You can see that they decrease towards the end. That is because the map that stores them acts across all moves. This is exactly what I want, but the output is misleading. I also realize that for efficiency reasons I should not use --moves for this, since there is lots of counting of nodes duplicated. Need to think how best to address this. Maybe disallow both --moves and the new option. Not sure.

I guess that looks good, small conflict after merging #2

rebased and squashed

I have no-where else to put this info, so I will just add it here. An alternative might be to add a Wiki with interesting data from the dump either on this repo or on the cdbdirect repo?

depth 5 from startpos
> ./cdbsubtree --fen startpos --depth 4 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 72233 nodes
    b2b3 : 83845 nodes
    c2c3 : 87598 nodes
    d2d3 : 122318 nodes
    e2e3 : 149007 nodes, 1 (0%) have 1 unseen edges
    f2f3 : 70960 nodes
    g2g3 : 85030 nodes
    h2h3 : 72235 nodes
    a2a4 : 84846 nodes, 4 (0%) have 4 unseen edges
    b2b4 : 84287 nodes, 10 (0%) have 10 unseen edges
    c2c4 : 92388 nodes
    d2d4 : 135923 nodes
    e2e4 : 150688 nodes
    f2f4 : 77737 nodes, 26 (0%) have 30 unseen edges
    g2g4 : 83056 nodes, 10 (0%) have 14 unseen edges
    h2h4 : 85460 nodes
    b1a3 : 78119 nodes
    b1c3 : 90551 nodes
    g1f3 : 89964 nodes
    g1h3 : 78125 nodes
Saved 31 positions with a total of 35 unseen edges in unseen.epd.

Closing DB

depth 6 from startpos
> ./cdbsubtree --fen startpos --depth 5 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 472314 nodes, 20327 (4%) have 56153 unseen edges
    b2b3 : 562210 nodes, 30707 (5%) have 98584 unseen edges
    c2c3 : 587190 nodes, 31155 (5%) have 101588 unseen edges
    d2d3 : 806620 nodes, 38950 (4%) have 124949 unseen edges
    e2e3 : 992005 nodes, 54809 (5%) have 191848 unseen edges
    f2f3 : 460162 nodes, 28318 (6%) have 96928 unseen edges
    g2g3 : 588429 nodes, 31691 (5%) have 117793 unseen edges
    h2h3 : 473729 nodes, 20797 (4%) have 60805 unseen edges
    a2a4 : 497654 nodes, 29451 (5%) have 83687 unseen edges
    b2b4 : 487613 nodes, 30726 (6%) have 82526 unseen edges
    c2c4 : 584067 nodes, 34545 (5%) have 105610 unseen edges
    d2d4 : 923197 nodes, 58032 (6%) have 209372 unseen edges
    e2e4 : 1016308 nodes, 71370 (7%) have 276425 unseen edges
    f2f4 : 467627 nodes, 29431 (6%) have 95351 unseen edges
    g2g4 : 502595 nodes, 25243 (5%) have 81958 unseen edges
    h2h4 : 505581 nodes, 34897 (6%) have 117767 unseen edges
    b1a3 : 453290 nodes, 21568 (4%) have 51747 unseen edges
    b1c3 : 585194 nodes, 34798 (5%) have 120017 unseen edges
    g1f3 : 620004 nodes, 36608 (5%) have 143529 unseen edges
    g1h3 : 469706 nodes, 26214 (5%) have 79462 unseen edges
Saved 326493 positions with a total of 1083253 unseen edges in unseen.epd.
Closing DB

depth 7 from startpos
> ./cdbsubtree --fen startpos --depth 6 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 2381457 nodes, 240951 (10%) have 783512 unseen edges
    b2b3 : 2722960 nodes, 305339 (11%) have 1013790 unseen edges
    c2c3 : 3117040 nodes, 329508 (10%) have 1206748 unseen edges
    d2d3 : 4229228 nodes, 442130 (10%) have 1590177 unseen edges
    e2e3 : 5124094 nodes, 589940 (11%) have 2349231 unseen edges
    f2f3 : 2117794 nodes, 256887 (12%) have 875839 unseen edges
    g2g3 : 3110112 nodes, 324254 (10%) have 1164174 unseen edges
    h2h3 : 2359709 nodes, 236493 (10%) have 747827 unseen edges
    a2a4 : 2166909 nodes, 275681 (12%) have 909319 unseen edges
    b2b4 : 1997711 nodes, 269218 (13%) have 858936 unseen edges
    c2c4 : 2837380 nodes, 321574 (11%) have 1130580 unseen edges
    d2d4 : 4876595 nodes, 545118 (11%) have 2218898 unseen edges
    e2e4 : 5136905 nodes, 644799 (12%) have 2779997 unseen edges
    f2f4 : 1975189 nodes, 253926 (12%) have 848950 unseen edges
    g2g4 : 2106892 nodes, 232285 (11%) have 773921 unseen edges
    h2h4 : 2150564 nodes, 304607 (14%) have 1072663 unseen edges
    b1a3 : 2054888 nodes, 249389 (12%) have 796583 unseen edges
    b1c3 : 3201323 nodes, 339754 (10%) have 1243752 unseen edges
    g1f3 : 3623933 nodes, 348881 (9%) have 1333102 unseen edges
    g1h3 : 2223646 nodes, 270932 (12%) have 912171 unseen edges
Saved 3135247 positions with a total of 11391977 unseen edges in unseen.epd.
Closing DB

depth 8 from startpos
> ./cdbsubtree --fen startpos --depth 7 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 7940215 nodes, 1330699 (16%) have 4198974 unseen edges
    b2b3 : 9142199 nodes, 1584384 (17%) have 5186455 unseen edges
    c2c3 : 10976769 nodes, 1839447 (16%) have 6288866 unseen edges
    d2d3 : 15196926 nodes, 2451407 (16%) have 8426350 unseen edges
    e2e3 : 18101966 nodes, 3053106 (16%) have 10924192 unseen edges
    f2f3 : 6854409 nodes, 1270160 (18%) have 4296574 unseen edges
    g2g3 : 10710070 nodes, 1836612 (17%) have 6263292 unseen edges
    h2h3 : 7776317 nodes, 1316009 (16%) have 4154563 unseen edges
    a2a4 : 6371390 nodes, 1195577 (18%) have 3600282 unseen edges
    b2b4 : 5849647 nodes, 1125173 (19%) have 3386134 unseen edges
    c2c4 : 9513589 nodes, 1630236 (17%) have 5300261 unseen edges
    d2d4 : 17683649 nodes, 2908854 (16%) have 10313663 unseen edges
    e2e4 : 18178100 nodes, 3187287 (17%) have 11939728 unseen edges
    f2f4 : 6102446 nodes, 1124738 (18%) have 3670796 unseen edges
    g2g4 : 6398878 nodes, 1004022 (15%) have 3035574 unseen edges
    h2h4 : 6089183 nodes, 1238896 (20%) have 3847345 unseen edges
    b1a3 : 6531434 nodes, 1139991 (17%) have 3676192 unseen edges
    b1c3 : 11284823 nodes, 1929998 (17%) have 6878230 unseen edges
    g1f3 : 13610319 nodes, 2187641 (16%) have 8073214 unseen edges
    g1h3 : 7261828 nodes, 1275671 (17%) have 4285199 unseen edges
Saved 12929499 positions with a total of 43837321 unseen edges in unseen.epd.
Closing DB

depth 9 from startpos
> ./cdbsubtree --fen startpos --depth 8 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 22117088 nodes, 4699208 (21%) have 14516936 unseen edges
    b2b3 : 24409159 nodes, 5389182 (22%) have 16640377 unseen edges
    c2c3 : 32430406 nodes, 6803000 (20%) have 22646003 unseen edges
    d2d3 : 46849173 nodes, 9310020 (19%) have 31672599 unseen edges
    e2e3 : 54224065 nodes, 11385226 (20%) have 39651850 unseen edges
    f2f3 : 17935098 nodes, 3977632 (22%) have 12317416 unseen edges
    g2g3 : 29906146 nodes, 6462703 (21%) have 20797205 unseen edges
    h2h3 : 21109244 nodes, 4517756 (21%) have 13761373 unseen edges
    a2a4 : 15372121 nodes, 3597364 (23%) have 10419432 unseen edges
    b2b4 : 13432296 nodes, 3235286 (24%) have 9130577 unseen edges
    c2c4 : 26126017 nodes, 5673048 (21%) have 17653729 unseen edges
    d2d4 : 51741576 nodes, 11033005 (21%) have 37949186 unseen edges
    e2e4 : 51446359 nodes, 11668120 (22%) have 41742039 unseen edges
    f2f4 : 15462326 nodes, 3469746 (22%) have 10385995 unseen edges
    g2g4 : 15669288 nodes, 2969487 (18%) have 8133030 unseen edges
    h2h4 : 14320207 nodes, 3508514 (24%) have 10316221 unseen edges
    b1a3 : 19020040 nodes, 3688962 (19%) have 11275382 unseen edges
    b1c3 : 35056452 nodes, 6944598 (19%) have 23473245 unseen edges
    g1f3 : 43816034 nodes, 8376611 (19%) have 28700231 unseen edges
    g1h3 : 21233910 nodes, 4221270 (19%) have 13347907 unseen edges
Saved 41602621 positions with a total of 135566809 unseen edges in unseen.epd.
Closing DB

Here the corresponding statistics for the second dump, dated 2024-11-14.

depth 5 from startpos
> ./cdbsubtree --fen startpos --depth 4 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 72233 nodes
    b2b3 : 83845 nodes
    c2c3 : 87598 nodes
    d2d3 : 122318 nodes
    e2e3 : 149008 nodes
    f2f3 : 70960 nodes
    g2g3 : 85030 nodes
    h2h3 : 72235 nodes
    a2a4 : 84847 nodes
    b2b4 : 84289 nodes
    c2c4 : 92388 nodes
    d2d4 : 135923 nodes
    e2e4 : 150688 nodes
    f2f4 : 77743 nodes
    g2g4 : 83062 nodes
    h2h4 : 85460 nodes
    b1a3 : 78119 nodes
    b1c3 : 90551 nodes
    g1f3 : 89964 nodes
    g1h3 : 78125 nodes

Closing DB

depth 6 from startpos
> ./cdbsubtree --fen startpos --depth 5 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 492255 nodes, 7182 (1%) have 11242 unseen edges
    b2b3 : 596159 nodes, 6279 (1%) have 9385 unseen edges
    c2c3 : 623246 nodes, 8035 (1%) have 12269 unseen edges
    d2d3 : 852527 nodes, 9974 (1%) have 15283 unseen edges
    e2e3 : 1060397 nodes, 11411 (1%) have 16484 unseen edges
    f2f3 : 496997 nodes, 5856 (1%) have 8880 unseen edges
    g2g3 : 628905 nodes, 7048 (1%) have 10698 unseen edges
    h2h3 : 494881 nodes, 6627 (1%) have 10230 unseen edges
    a2a4 : 528417 nodes, 9305 (1%) have 14821 unseen edges
    b2b4 : 518453 nodes, 8412 (1%) have 13148 unseen edges
    c2c4 : 620960 nodes, 9575 (1%) have 16477 unseen edges
    d2d4 : 992452 nodes, 13452 (1%) have 19854 unseen edges
    e2e4 : 1108269 nodes, 12253 (1%) have 18268 unseen edges
    f2f4 : 501943 nodes, 7265 (1%) have 11371 unseen edges
    g2g4 : 529581 nodes, 8247 (1%) have 13287 unseen edges
    h2h4 : 550645 nodes, 8616 (1%) have 13806 unseen edges
    b1a3 : 473309 nodes, 7065 (1%) have 11364 unseen edges
    b1c3 : 626202 nodes, 9067 (1%) have 14479 unseen edges
    g1f3 : 668160 nodes, 8401 (1%) have 13743 unseen edges
    g1h3 : 499488 nodes, 6975 (1%) have 10934 unseen edges
Saved 75431 positions with a total of 116718 unseen edges in unseen.epd.
Closing DB

depth 7 from startpos
> ./cdbsubtree --fen startpos --depth 6 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 2750924 nodes, 115181 (4%) have 267680 unseen edges
    b2b3 : 3181372 nodes, 131858 (4%) have 312708 unseen edges
    c2c3 : 3657788 nodes, 163808 (4%) have 418209 unseen edges
    d2d3 : 4919088 nodes, 226047 (4%) have 564502 unseen edges
    e2e3 : 6134999 nodes, 310294 (5%) have 837998 unseen edges
    f2f3 : 2550280 nodes, 112766 (4%) have 280671 unseen edges
    g2g3 : 3618684 nodes, 149037 (4%) have 367793 unseen edges
    h2h3 : 2682694 nodes, 105576 (3%) have 238116 unseen edges
    a2a4 : 2607701 nodes, 132023 (5%) have 320102 unseen edges
    b2b4 : 2425201 nodes, 126414 (5%) have 305898 unseen edges
    c2c4 : 3359231 nodes, 176020 (5%) have 448736 unseen edges
    d2d4 : 5879904 nodes, 321072 (5%) have 911509 unseen edges
    e2e4 : 6330876 nodes, 339882 (5%) have 1001818 unseen edges
    f2f4 : 2426513 nodes, 131662 (5%) have 318595 unseen edges
    g2g4 : 2518958 nodes, 129364 (5%) have 316131 unseen edges
    h2h4 : 2739741 nodes, 153262 (5%) have 404643 unseen edges
    b1a3 : 2433514 nodes, 116185 (4%) have 279644 unseen edges
    b1c3 : 3803893 nodes, 176357 (4%) have 461333 unseen edges
    g1f3 : 4254086 nodes, 184633 (4%) have 483516 unseen edges
    g1h3 : 2679084 nodes, 127249 (4%) have 313267 unseen edges
Saved 1559329 positions with a total of 4075249 unseen edges in unseen.epd.
Closing DB

depth 8 from startpos
> ./cdbsubtree --fen startpos --depth 7 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 10216252 nodes, 929641 (9%) have 2211358 unseen edges
    b2b3 : 11956953 nodes, 1040293 (8%) have 2528552 unseen edges
    c2c3 : 14282126 nodes, 1248427 (8%) have 3107048 unseen edges
    d2d3 : 19460410 nodes, 1641498 (8%) have 4065704 unseen edges
    e2e3 : 23783220 nodes, 2089102 (8%) have 5328519 unseen edges
    f2f3 : 9355213 nodes, 850767 (9%) have 2181321 unseen edges
    g2g3 : 14065731 nodes, 1245555 (8%) have 3108375 unseen edges
    h2h3 : 10012883 nodes, 883571 (8%) have 2117013 unseen edges
    a2a4 : 8661108 nodes, 889785 (10%) have 2101107 unseen edges
    b2b4 : 8113644 nodes, 800545 (9%) have 1908233 unseen edges
    c2c4 : 12556052 nodes, 1181896 (9%) have 2883260 unseen edges
    d2d4 : 23339048 nodes, 2095431 (8%) have 5374519 unseen edges
    e2e4 : 24770897 nodes, 2203854 (8%) have 5837824 unseen edges
    f2f4 : 8434332 nodes, 825139 (9%) have 2021455 unseen edges
    g2g4 : 8472531 nodes, 822846 (9%) have 1926343 unseen edges
    h2h4 : 8767297 nodes, 959742 (10%) have 2350682 unseen edges
    b1a3 : 8743223 nodes, 808029 (9%) have 2076406 unseen edges
    b1c3 : 15117682 nodes, 1369830 (9%) have 3600726 unseen edges
    g1f3 : 17817677 nodes, 1519293 (8%) have 3992938 unseen edges
    g1h3 : 9871711 nodes, 914194 (9%) have 2377549 unseen edges
Saved 8993705 positions with a total of 22730325 unseen edges in unseen.epd.
Closing DB

depth 9 from startpos
> ./cdbsubtree --fen startpos --depth 8 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 31417550 nodes, 4384641 (13%) have 11712247 unseen edges
    b2b3 : 35078396 nodes, 4858704 (13%) have 12717504 unseen edges
    c2c3 : 46093605 nodes, 6338932 (13%) have 17714582 unseen edges
    d2d3 : 65097325 nodes, 8551222 (13%) have 23834915 unseen edges
    e2e3 : 77272858 nodes, 10577596 (13%) have 30040038 unseen edges
    f2f3 : 26586243 nodes, 3626261 (13%) have 9324986 unseen edges
    g2g3 : 42803134 nodes, 6174211 (14%) have 16968665 unseen edges
    h2h3 : 30022791 nodes, 4104496 (13%) have 10704674 unseen edges
    a2a4 : 22759939 nodes, 3579541 (15%) have 9182999 unseen edges
    b2b4 : 20277462 nodes, 3173512 (15%) have 7885758 unseen edges
    c2c4 : 37257478 nodes, 5579659 (14%) have 15213490 unseen edges
    d2d4 : 74164863 nodes, 10823502 (14%) have 31796802 unseen edges
    e2e4 : 76125845 nodes, 11253272 (14%) have 33344442 unseen edges
    f2f4 : 22885227 nodes, 3418296 (14%) have 8705483 unseen edges
    g2g4 : 22012442 nodes, 3065064 (13%) have 7370001 unseen edges
    h2h4 : 22406798 nodes, 3644364 (16%) have 9468903 unseen edges
    b1a3 : 27266821 nodes, 3400490 (12%) have 8865144 unseen edges
    b1c3 : 50269477 nodes, 6740711 (13%) have 19181785 unseen edges
    g1f3 : 61317830 nodes, 7970765 (12%) have 22729804 unseen edges
    g1h3 : 31009264 nodes, 3956787 (12%) have 10585500 unseen edges
Saved 39810223 positions with a total of 110060367 unseen edges in unseen.epd.
Closing DB

depth 10 from startpos
> ./cdbsubtree --fen startpos --depth 9 --findUnseenEdges --moves
Opening DB
Going through all moves for rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
    a2a3 : 69398453 nodes, 14848745 (21%) have 39838517 unseen edges
    b2b3 : 76277665 nodes, 16050525 (21%) have 42875982 unseen edges
    c2c3 : 107822273 nodes, 22144452 (20%) have 61894220 unseen edges
    d2d3 : 161161888 nodes, 31016119 (19%) have 87100651 unseen edges
    e2e3 : 184172174 nodes, 36410437 (19%) have 102738701 unseen edges
    f2f3 : 57857263 nodes, 11757128 (20%) have 31309938 unseen edges
    g2g3 : 94067733 nodes, 20715629 (22%) have 57402608 unseen edges
    h2h3 : 65999092 nodes, 13860961 (21%) have 36933541 unseen edges
    a2a4 : 43783989 nodes, 10087610 (23%) have 25528089 unseen edges
    b2b4 : 38322747 nodes, 8588209 (22%) have 21286579 unseen edges
    c2c4 : 80304389 nodes, 17788685 (22%) have 48572354 unseen edges
    d2d4 : 165290431 nodes, 35434872 (21%) have 99426753 unseen edges
    e2e4 : 165128793 nodes, 36037968 (21%) have 103148695 unseen edges
    f2f4 : 46984005 nodes, 10419251 (22%) have 27761560 unseen edges
    g2g4 : 43176806 nodes, 8529379 (19%) have 20212751 unseen edges
    h2h4 : 41620235 nodes, 9605660 (23%) have 23917198 unseen edges
    b1a3 : 70179356 nodes, 11977409 (17%) have 34016169 unseen edges
    b1c3 : 123491646 nodes, 24220776 (19%) have 70951113 unseen edges
    g1f3 : 153691950 nodes, 30361879 (19%) have 90311215 unseen edges
    g1h3 : 77928937 nodes, 13791329 (17%) have 39246347 unseen edges
Saved 113342547 positions with a total of 310740570 unseen edges in unseen.epd.
Closing DB


feat: Support Qwen 2.5

Problem Statement
https://www.reddit.com/r/LocalLLaMA/comments/1flkcav/qwen_25_casually_slotting_above_gpt4o_and/
Requested by: https://discord.com/channels/1107178041848909847/1110389363809976361/1287521950167466024
Users who prefer Qwen 2.5 or need its specific capabilities are unable to utilize it within Jan.
Feature Idea
Implement support for the Qwen 2.5 model in Jan. This would involve:

[ ] Adding Qwen 2.5 to the list of available models in Jan's model hub
[ ] Providing appropriate config options

Since there would be similar requests like this in the future, and this concerns "OpenAI-compatible endpoints". why not do it like this: Step 1: Configure a Client Connection

Navigate to the Jan app > Settings.
Select the "Create Custom Model".
The OpenAI fields can be used for any OpenAI-compatible API.
Insert the API Key and the endpoint URL into their respective fields...
Click "Save" to add your model on the list.
PS. Sorry. My bad. I should have started opened a new request. Anyway, have it a thought!

@norrybul Thanks - this is a great idea and exactly how we are thinking about it.
We are working on revamping our Remote API Extensions here:
https://github.com/janhq/jan/issues/3505

Converted all qwen2.5 family


Downloading A Specific Version

The Examples section gives the example:
Download a specific GraalVM CE JDK
$ bash <(curl -sL https://get.graalvm.org/jdk) graalvm-ce-java17-22.3.1
So, I want to download a different J17 version. I clicked on the provided CE link:
https://github.com/graalvm/graalvm-ce-builds/releases
I scroll down the J17 releases and see one versioned 17.0.7.
I now use the version number in bash command given:
$ bash <(curl -sL https://get.graalvm.org/jdk) graalvm-ce-java17-0.7
and get:
$ bash <(curl -sL https://get.graalvm.org/jdk) graalvm-ce-java17-0.7
Downloading graalvm-ce-java17-linux-amd64-0.7.tar.gz...
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     9    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
Failed to download 'https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-0.7/graalvm-ce-java17-linux-amd64-0.7.tar.gz'.

Thanks for raising this, @gmseed.
We still haven't updated these download script to support the latest GraalVM release. The easiest way to download GraalVM is via SDKMAN!, so you could run sdk install java 17.0.7-graalce (or sdk install java 17.0.7-graal for Oracle GraalVM) instead. This means we probably will add a note on this to the download scripts and the README of this repo and retire this project.

Thanks for your reply.
After I posted my comment I tried to edit/delete it as I realised I misunderstood the Java-GraalVM versioning system. However, I do still think it is a little confusing as the webpage says you simply select the version numbers you want, but how does a user know what these version numbers are? I tried a few and it didn't work and was left guessing. A list of all available versions would be nice. I now understand that the versioning system is java17-, java20-, etc but what GraalVM number to choose? So I head over to [https://github.com/graalvm/graalvm-ce-builds/releases] but I'm still no wiser what the GraalVM version numbers are.
So, I select, say, the following Java17 version and hover over the link:
https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.7/graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz
I know the Java version but still no wiser what the GraalVM version.
So, I download it and unzip it.
Only then when I look inside the release text file do I see version info such as:
GRAALVM_VERSION="<IP_ADDRESS>"

As part of the alignment with OpenJDK, we are phasing out the GraalVM version. Normal users should neither see nor worry about the GraalVM version anymore. I'm working on an update for the README. Looks like adding support for the new release should work, but it probably still makes sense to retire the JDK downloader now that GraalVM can be installed with standard Java tools.


🚀 Feature: Adding your icon to 2FAS

🔖 Feature description
Not really a feature request for pingvin-share itself but I would appreciate if you could submit / fill out this form to add your icon to 2FAS.
The form is here if you want to fill it out: https://2fas.com/your-branding/
🎤 Pitch
In my opinion, this would be great as this is widely used 2FA Authentication app and it would be great if the pingvin-share icon was there rather than having no logo. I think that is all I have to say, I hope you consider my request.

Good idea. I've just filled out the form. I'll update you when I get a response :)

Should be added :)

I would like to say the icon has not been added to the 2FAS app yet.

@Imzxhir It might be that you have to disable and enable TOTP again because the issuer has changed. If this doesn't work it is probably not released yet by 2FAS.

I have tried to disable and enable 2FA for Pingvin-Share but that did not show the icon either. I guess I will have to wait for 2FAS to update.


Adjust boolean/string logic

It's much better to use 'true' and 'false' over true and false, as there's no guarantee that true.to_s == 'true'. I changed around the resources to accept TrueClass, FalseClass, or a String, but they will always convert whichever they get to Strings. Then you aren't relying on ruby to coerce booleans into strings and hope you get "true" and "false" (maybe one day you will get "True").

Many if something.nil? checks were replaced with unless something && !something.empty?. This prevents false and the empty string from being handed to various templates and logic, since the empty string is not nill.

NewRelic.to_boolean was called in a few places, but it wasn't in the NewRelic module, it was in the helpers module (so it failed to compile). I've moved it into the NewRelic module.

Removed param value if value from resource invocations. The providers all know how to handle nil and false, so there's no need to repeat the conditional so much.

One boolean value was still being passed a String in a recipe. Fixes https://github.com/escapestudios-cookbooks/newrelic/issues/179.

Hi @martinb3,
I've picked a few of these changes and pushed them up...
However, I'll need to have another look (probably not at the end of a long day of a long week :-) ) at the other changes.
Kind regards,
David


Update gaze.md

Updated recommendations to address the differences between head and eye gaze.
Linked "eye gaze" design guidelines.

Docs Build status updates of commit 460b273:
:warning: Validation status: warnings

File
Status
Preview URL
Details

mixed-reality-docs/gaze.md
:warning:Warning
View
Details

mixed-reality-docs/gaze.md

Line 46: [Warning] Illegal link: `<a href="index.md#news-and-notes">coming soon</a>` -- missing bookmark. The file index.md doesn't contain a bookmark named news-and-notes.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit ebf15cb:
:warning: Validation status: warnings

File
Status
Preview URL
Details

mixed-reality-docs/gaze.md
:warning:Warning
View
Details

mixed-reality-docs/gaze.md

Line 46: [Warning] Illegal link: `<a href="index.md#news-and-notes">coming soon</a>` -- missing bookmark. The file index.md doesn't contain a bookmark named news-and-notes.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 0cc06e8:
:warning: Validation status: warnings

File
Status
Preview URL
Details

mixed-reality-docs/gaze.md
:warning:Warning
View
Details

mixed-reality-docs/gaze.md

Line 46: [Warning] Illegal link: `<a href="index.md#news-and-notes">coming soon</a>` -- missing bookmark. The file index.md doesn't contain a bookmark named news-and-notes.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 37a9f43:
:warning: Validation status: warnings

File
Status
Preview URL
Details

mixed-reality-docs/gaze.md
:warning:Warning
View
Details

mixed-reality-docs/gaze.md

Line 46: [Warning] Illegal link: `<a href="index.md#news-and-notes">coming soon</a>` -- missing bookmark. The file index.md doesn't contain a bookmark named news-and-notes.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


2015mokc qm74, qm85 youtube videos incorrect

The match video for MOKC qualifying matches 74 and 85 both show video from qualifying match 68.
videos should be removed, but depends on https://github.com/the-blue-alliance/the-blue-alliance/issues/1254

Removed both.


Use defoverridable and add reflection to Norm.Contract

This is arguably simpler impelementation where we do less
metaprogramming by leveraging defoverridable.
Instead of overriding Kernel.def/2, we let the function be defined as
usual and we later simply defoverridable it with the contract conforming
function.
Additionally we add contract reflection, that is for each contract there
would be a __contract__({fun, arity}) clause defined on the module.
This could be later used as a building block for things like:
iex> contract = Foo.__contract__({:add, 2})
iex> Norm.Contract.conform!(contract, {Bar, :bar, ["1", 2]})
** (Norm.MismatchError) Could not conform input:
val: 42 fails: is_binary()
iex> Norm.Contract.conform!(contract, {Bar, :bar, [1, 2]})
3

but currently it's just an implementation detail. The reflection
function is not yet documented and is considered private API.

Forgot to mention, another possible use case for reflection is:
  property "conforms to contract" do
    %{args: [a: a, b: b]} = Reflection.__contract__({:foo, 2})

    check all(a <- Norm.gen(a), b <- Norm.gen(b)) do
      Reflection.foo(a, b)
    end
  end

There's one thing left, for this file:
src/norm[wm-refactor]% cat run.exs
Foo.foo("42")

we get this stacktrace:
src/norm[wm-refactor]% mix run run.exs
** (Norm.MismatchError) Could not conform input:
val: "42" fails: is_integer()
    (norm 0.10.0) lib/norm.ex:395: Norm.conform!/2
    (norm 0.10.0) lib/foo.ex:1: anonymous fn/2 in Foo.foo/1
    (elixir 1.10.0-dev) lib/enum.ex:2096: Enum."-reduce/3-lists^foldl/2-0-"/3
    (norm 0.10.0) lib/foo.ex:1: Foo.foo/1

let me take a shot at improving it.

After last commit this should be a bit better, we put the line where the contract was defined (lib/foo.ex:4 below) into the stacktrace:
** (Norm.MismatchError) Could not conform input:
val: "42" fails: is_integer()
    (norm 0.10.0) lib/norm.ex:395: Norm.conform!/2
    (norm 0.10.0) lib/foo.ex:4: anonymous fn/2 in Foo.foo/1
    (elixir 1.10.0-dev) lib/enum.ex:2096: Enum."-reduce/3-lists^foldl/2-0-"/3
    (norm 0.10.0) lib/foo.ex:4: Foo.foo/1

There's one other thing, if actual function crashes like e.g. here:
@contract foo(n :: spec(is_integer())) :: spec(is_integer())
def foo(n), do: raise "bad"

the stack trace is as following:
(norm 0.10.0) lib/foo.ex:5: Foo."foo (overridable 1)"/1

notice the  (overridable 1) piece. Not sure if it's a big deal but might be confusing and/or break tooling. Will look into it.

regarding stacktrace I did some research and to make it better we'd need changes in the compiler so I wouldn't wait for these to happen :) FWIW, on master it was even worse:

(norm 0.10.0) lib/foo.ex:4: Foo.__foo_without_contract__/1


WIP: refactor pods scheduling policy

@jasongilanfarr and I talked about trying to eliminate some of the nested Option fields generated from the RAML and that it might be possible to use type inheritance w/ discriminators to achieve this.
This PR does the following:

refactor scaling types into a library so that they're formally named types, usable w/ discriminators
refactor the Pod and PodStatus types into a library (and declare a dep on the scaling lib)
mods to the pods REST api to use the pod library that now wraps the Pod and PodStatus types

Seems reasonable. I wonder how this affects the generator.

I adapted this into https://github.com/mesosphere/marathon/pull/4268


chore: release v1.11.2

This release contains the updated configuration for the new Holesky launch planned on September 28th 11:55am (UTC)

:tada: This PR is included in v1.11.3 :tada:


In syntax def doc examples, show html output rendered as well

It would help to quickly visualize and learn what a bit of djot markup does if the examples contained rendered html in addition to the raw html output.

That is, in https://htmlpreview.github.io/?https://github.com/jgm/djot/blob/master/doc/syntax.html.

Well, it's hard to put three things in columns; there's not really enough room for them to display nicely.

Since some of the examples are wide things like tables or hr's, maybe the rendered html could be displayed underneath both, in its own row that spans the two cols? Could even have a different background color than the jdot and html blocks/cells.

I could try just having the rendered HTML.
Or to be really fancy, show the rendered HTML but allow clicking something to show the HTML.

I think it's most valuable to be able to look at the jdot and the rendered html at the same time.
It could also be valuable to see the raw html sometimes.
Maybe optimal would be jdot markup and rendered html side-by-side, and then a click-to-reveal the raw html if the reader wants to see it.

I could try just having the rendered HTML.
Or to be really fancy, show the rendered HTML but allow clicking something to show the HTML.

Maybe something like this? (https://esbuild.github.io/getting-started/#bundling-for-the-browser)

I think it's most valuable to be able to look at the jdot and the rendered html at the same time.

I disagree. I find it more important to see what the function of jdot is: it’s input, and its output. Not how browsers render such output.

Hm. Good point, @wooorm . Maybe it depends upon who the reader is. I suspect:

if the reader just quickly wants to see which syntax yields what output, I think that "djot --> rendered html" will be most useful to them.
if the reader wants a concise reference of djot behavior, then "djot --> raw html" may be most useful to them.

Anyhow though, regardless: the syntax reference in question happens to be using html for its output examples. The djot readme says djot is not HTML-centric. So, for users who are not targetting html as their output format (and who may not even know much html at all), it would help them to see some kind of rendered output.
Incidentally, I found this markdown doc that goes with three cols for the smaller examples, but then reverts to the sequential style when it gets to blockquotes and images.

if the reader just quickly wants to see which syntax yields what output

This could partially also be solved with a cheatsheet-like page, something along the lines of https://commonmark.org/help/. The markdown doc you later link also is such a page.

I think @wooorm 's idea of a separate cheatsheet is a great idea.
@jgm , I'm ok with closing this issue, but am leaving it open in case you are still thinking about adding reveal buttons to the syntax reference.

Note: even though there's now a cheatsheet (thanks for adding it in #39, @uvtc!), I still think it would be worth showing the rendered HTML output in the full syntax document.


Installation failed with message INSTALL_FAILED_NO_MATCHING_ABIS

Hi,
I am not able to install on emulator (running api 25).  I get the following error
$ adb push /Users/bc/tmp/AndroidSandbox/app/build/outputs/apk/app-debug.apk /data/local/tmp/my.sandbox.project2
$ adb shell pm install -r "/data/local/tmp/my.sandbox.project2"
Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

Error while Installing APK

I have specified the abi filters in my app build.gradle defaultConfig as follows
defaultConfig {
      ...
      ndk {
          abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
      }
}

dependencies {
      ...
      compile 'com.madhavanmalolan.android:ffmpegandroidlibrary:0.0.4'
}

I built my .so libs using https://github.com/IljaKosynkin/FFmpeg-Development-Kit.
And I copied them to my projects src/main/jniLibs folder.
Any idea what is causing the error?  I am running Android Studio 2.3.3, .so libs built using NDK 13rb and FFMPEG 3.2.9.
Thanks.

The issue seems to be fixed. In src/main/jniLibs the folders for each architecture did not contain the .so files which were actually embedded one level deeper in a subfolder.  When I moved them up one level to be directly under src/main/jniLibs/x86 for example, the installation succeeded.

The library currently supports only arm-v7a
You are getting this error because you have multiple ABIs configured under
ndk { }
It will work fine if you have only armeabi-v7a in the ndk section.
However if you want to support all these architectures, you can do a manual
compilation (link mentioned in the README.md)
On 11-Nov-2017 1:15 AM, "bkatgithub"<EMAIL_ADDRESS>wrote:
Hi,
I am not able to install on emulator (running api 25). I get the following
error
$ adb push /Users/bc/tmp/AndroidSandbox/app/build/outputs/apk/app-debug.apk
/data/local/tmp/my.sandbox.project2
$ adb shell pm install -r "/data/local/tmp/my.sandbox.project2"
Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native
libraries, res=-113]
Error while Installing APK
I have specified the abi filters in my app build.gradle defaultConfig as
follows
defaultConfig {
...
ndk {
abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
}
}
dependencies {
...
compile 'com.madhavanmalolan.android:ffmpegandroidlibrary:0.0.4'
}
I built my .so libs using https://github.com/IljaKosynkin/FFmpeg-
Development-Kit.
And I copied them to my projects src/main/jniLibs folder.
Any idea what is causing the error?
Thanks.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/madhavanmalolan/ffmpegandroidlibrary/issues/2, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACA3FRkMQpfHeZflIZyWjQ5JRYvJ0UTkks5s1KfdgaJpZM4QaBaR
.


Is it possible to create a virtual touch screen?

As the title say, I would like to create a virtual touch screen instead of a regular virtual display. Does this tool allow that?
Thank you.

What do you mean with a virtual device that needs physical input?? The question doesn't make sense to me. But English isn't my native tongue.
Would please, elaborate on this?

What do you mean with a virtual device that needs physical input?? The question doesn't make sense to me. But English isn't my native tongue.
Would please, elaborate on this?

I believe he means he will be connecting to a virtual display from a touch screen device therefore wants the display to accept touch screen input. I could be wrong

What do you mean with a virtual device that needs physical input?? The question doesn't make sense to me. But English isn't my native tongue.
Would please, elaborate on this?

I believe he means he will be connecting to a virtual display from a touch screen device therefore wants the display to accept touch screen input. I could be wrong

Yes, this was the idea but I've discovered that a fork of Moonlight for Android enable this function client side on my tablet, so now the "regular" virtual display will be read as a Windows multi-touch input, solving my issue.
By the way those are the two Moonlight forks that enable this function, if anyone like me is interested in it:
https://github.com/MuhamadRifkii/moonlight-android
https://github.com/TrueZhuangJia/moonlight-android-Enhanced-MultiTouch


Move update model for notebook save to the input

Remove some vscode merge conflicting code for notebooks. @chlafreniere help with knowledge in this area would be great. I think this solves the same issue but I'm not sure.

@chlafreniere would love to get this is relatively soon, I hit this merge conflict at least once a week right now.


Login error message does not interpolate server value as intended

https://github.com/atc0005/check-vmware/blob/bc83186dc297e5459b00594a1d9e5dec10035287/cmd/check_vmware_host_cpu/main.go#L106
I've not checked yet to see how many plugins are affected, but I would assume most would be since they share the same login-related code.
Proposed (untested) fix:
log.Error().Err(loginErr).Msgf("error logging into %s", cfg.Server)

Found 15 hits when searching the project, including one for an in-progress plugin that isn't ready for release yet.


Helm having issues with properly resolving nested (duplicated) dependencies

Output of helm version:
version.BuildInfo{Version:"v3.14.4", GitCommit:"81c902a123462fd4052bc5e9aa9c513c4c8fc142", GitTreeState:"clean", GoVersion:"go1.21.9"}
Output of kubectl version: Shouldn't be relevant here, but
Client Version: v1.28.8
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Cloud Provider/Platform (AKS, GKE, Minikube etc.): not relevant
Issue:
We are having some base components (like services) defined in pre-defined charts that we are then using to build up more complex structures.
E.g.:
component-service: defines a kubernetes service resources with variable placeholders
component-quarkus: defines a lot of base setup (including deployment, poddisruptionbudget, ...), as well as include the above component for configuring a service
actual app repo: then uses component-quarkus and configures the quarkus deployment by eg providing image, env and some other configuration
Now we had the need to have more than one deployment in a single app repository.
The idea sounded simple: just add the component-quarkus chart twice as a dependency (with two different aliases), and configure them individually. But for some reason, helm is having issues resolving the template within the component-service within that, once the dependency is added twice.
Simplified Example:

component-inner
component-inner/templates/service.yml:
apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}
  namespace: {{ .Values.global.namespace | default "namespace" }}
  labels: {} # empty for mvp
spec:
{{- if .Values.type }}
  type: {{ .Values.type }}
{{- end }}
  ports:
  {{- range $k,$v := .Values.ports }}
    {{- if $v }}
    - name: {{ $k }}
      port: {{ tpl ( $v | toString ) $ }}
      protocol: TCP
      targetPort: {{ $k }}
    {{- end }}
  {{- end }}
  selector: {} # empty for mvp

component-inner/Chart.yaml:
apiVersion: v2
type: application
name: component-inner
version: 0.1.0
description: <insert description>

component-outer
component-outer/Chart.yaml:
apiVersion: v2
type: application
name: component-outer
version: 0.1.0
description: <insert description>
dependencies:
  - name: component-inner
    alias: inner
    version: 0.1.0
    repository: file://../component-inner

component-outer/values.yaml:
inner:
  ports:
    http: "8080"

app
app/Chart.yaml:
apiVersion: v2
type: application
name: app
version: 0.1.0
description: <insert description>
dependencies:
  - name: component-outer
    alias: outerone
    version: 0.1.0
    repository: file://../component-outer
  - name: component-outer
    alias: outertwo
    version: 0.1.0
    repository: file://../component-outer

app/values.yaml:
outerone:
  inner:
    type: someType

outertwo:
  inner:
    type: someType

Resulting template result of app, after resolving dependencies:
---
# Source: app/charts/outerone/charts/inner/templates/service.yml
apiVersion: v1
kind: Service
metadata:
  name: release-name
  namespace: namespace
  labels: {} # empty for mvp
spec:
  type: someType
  ports:
    - name: http
      port: 8080
      protocol: TCP
      targetPort: http
  selector: {} # empty for mvp
---
# Source: app/charts/outertwo/charts/component-inner/templates/service.yml
apiVersion: v1
kind: Service
metadata:
  name: release-name
  namespace: namespace
  labels: {} # empty for mvp
spec:
  ports:
  selector: {} # empty for mvp

Observations:

For the component, which is rendered second, neither the ports, nor the type are passed correctly
the comment with the source in the final result shows that for the second service, the alias is ignored, and it is just using the inner component directly
this behavior depends on the order of the dependencies defined in the Chart.yaml. If outerone and outertwo would be switched, then the other one would be rendered incorrectly
when using two different versions of component-outer in the app, then the issue seems to be resolved (even though they still use the same version of the inner component)
when referencing/using outertwo.component-inner.ports/type (as suggested from the result path) from app/values.yaml instead of the configured alias, then the properties are available in the actual template

Are we doing something wrong here? Or is this a bug with helm?

Thanks for the detailed examples. From looking briefly, this does appear to be a bug. And if so, Helm is not correctly dealing with the aliases. I didn't get a chance to look in detail / reproduce.
One curiousity I see from the example output, is that the outerone chart is rendering the inner chart (as an alias). The outertwo chart is rendering as component-inner (the chart name).

Hey, author of #12276 here. Would love to get that merged and resolve this, but not sure what it will take. Maybe the maintainers only merge fixes for bugs considered high priority 🤷.

not stale, issue persists


Unable to perform cert check when using native SSH implementation after key pivot

Error checking /var/lib/kubelet/pki/kubelet-client-current.pem during the crc start process on Win10 with 4.6.0-fc.7 bundle.
General information

OS: Windows
Hypervisor: Hyper-V
Did you run crc setup before starting it (Yes/No)? Yes

CRC version
CodeReady Containers version: 1.16.0+9cfefb2
OpenShift version: 4.6.0-fc.7 (not embedded in binary)

CRC status
CRC VM:          Running
OpenShift:       Running (v4.6.0-fc.7)
Disk Usage:      12.99GB of 32.72GB (Inside the CRC VM)
Cache Usage:     15.34GB
Cache Directory: C:\Users\crcqe\.crc\cache

CRC config

Host Operating System
# Put the output of `cat /etc/os-release` in case of Linux
# put the output of `sw_vers` in case of Mac
# Put the output of `systeminfo` in case of Windows

Steps to reproduce

crc setup
crc start

Expected
CRC starts without errors.
Actual
> crc setup
INFO Checking if oc binary is cached
INFO Checking if podman remote binary is cached
INFO Checking if goodhosts binary is cached
INFO Checking if CRC bundle is cached in '$HOME/.crc'
INFO Checking minimum RAM requirements
INFO Checking if running as normal user
INFO Checking Windows 10 release
INFO Checking Windows edition
INFO Checking if Hyper-V is installed and operational
INFO Checking if user is a member of the Hyper-V Administrators group
INFO Checking if Hyper-V service is enabled
INFO Checking if the Hyper-V virtual switch exist
INFO Found Virtual Switch to use: Default Switch
Setup is complete, you can now run 'crc start -b $bundlename' to start the OpenShift cluster

and
> crc start -b C:\Users\crcqe\Downloads\crc_hyperv_4.6.0-fc.7.crcbundle -p C:\Users\crcqe\Downloads\pull-secret --log-level=debug
DEBU CodeReady Containers version: 1.16.0+9cfefb2
DEBU OpenShift version: 4.6.0-fc.7 (not embedded in binary)
DEBU Total memory of system is<PHONE_NUMBER>0 bytes
DEBU Unable to find out if a new version is available: Get https://mirror.openshift.com/pub/openshift-v4/clients/crc/latest/release-info.json: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
INFO Checking if oc binary is cached
DEBU Running 'C:\Users\crcqe\.crc\bin\oc\oc.exe version --client'
DEBU Found oc.exe version 4.5.9
DEBU oc binary already cached
INFO Checking if podman remote binary is cached
DEBU Currently podman remote is not supported
INFO Checking if goodhosts binary is cached
DEBU goodhost binary already cached
INFO Checking minimum RAM requirements
DEBU Total memory of system is<PHONE_NUMBER>0 bytes
INFO Checking if running as normal user
INFO Checking Windows 10 release
INFO Checking Windows edition
DEBU Running on Windows Professional edition
INFO Checking if Hyper-V is installed and operational
INFO Checking if user is a member of the Hyper-V Administrators group
INFO Checking if Hyper-V service is enabled
INFO Checking if the Hyper-V virtual switch exist
INFO Found Virtual Switch to use: Default Switch
INFO Loading bundle: crc_hyperv_4.6.0-fc.7.crcbundle ...
INFO Checking size of the disk image C:\Users\crcqe\.crc\cache\crc_hyperv_4.6.0-fc.7\crc.vhdx ...
INFO Creating CodeReady Containers VM for OpenShift 4.6.0-fc.7...
DEBU Waiting until ssh is available
DEBU About to run SSH command:
exit 0
DEBU SSH command results: err: <nil>, output:
INFO CodeReady Containers VM is running
INFO Generating new SSH Key pair ...
DEBU About to run SSH command:
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlJjiTVo9qxTd+pOX+pyrmuKnrPswj7LDFGC1jYjphV/WdCj7cp3EqADnlEgFkEAObNvj7SnEXOEdZpDJQK+7qe5dQ3lzZX7tBsuk0+lXVtCubd6uDObHHcBXF6QkWXHSFq8fPsrLsRLcmjzXQ5HbgJ+ONFt6HOZwG226QBTx6Hxo8gi0tQCpPtHOr1bD8/xYDXjgxSXtNU6hlcjQXlzsJ5ThqQge7l8LsNDAARBfbxFBcQbUh1KtzPQe/N6lSFax/r7Vqw66Vb5u/HS5gVWskzKonw97zRO3ilj1s6eL9DnPL+8SVBZEdMcw5SsjCb0+iy9a2VIx8dbAIiio/8R8x
' > /home/core/.ssh/authorized_keys; chmod 644 /home/core/.ssh/authorized_keys
DEBU SSH command results: err: <nil>, output:
INFO Copying kubeconfig file to instance dir ...
DEBU Copying 'C:\Users\crcqe\.crc\cache\crc_hyperv_4.6.0-fc.7\kubeconfig' to 'C:\Users\crcqe\.crc\machines\crc\kubeconfig'
INFO Starting network time synchronization in CodeReady Containers VM
DEBU About to run SSH command:
sudo timedatectl set-ntp on
DEBU SSH command results: err: <nil>, output:
INFO Verifying validity of the cluster certificates ...
DEBU About to run SSH command:
date --date="$(sudo openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate | cut -d= -f 2)" --iso-8601=seconds
DEBU SSH command results: err: <nil>, output:
ERRO Failed to check certificate validity: parsing time "" as "2006-01-02T15:04:05Z07:00": cannot parse "" as "2006"
Failed to check certificate validity: parsing time "" as "2006-01-02T15:04:05Z07:00": cannot parse "" as "2006"

This is caused by the pivot of the ssh key; the configuration did not consider using the new key.

Can you try with latest master ? It should be fixed now.


Strict typing for object spread in higher order function.

TypeScript Version:  2.9.2
Search Terms:  strict object literal higher order function object spread
Code
// A *self-contained* demonstration of the problem follows...
// Test this by running `tsc` on the command-line, rather than through another build tool such as Gulp, Webpack, etc.

Expected behavior:
type A = { x: number, y: number }

const x: A = { x: 1, y: 2 }

const y: A = {...x, b: 10} // Error ✅

function hoc(fn: (a: A) => A) { }

hoc(a => ({a: 1, y: 2, b: 10})) // Error ✅

hoc(a => ({ ...a, b: 10 })) // No Error ❌

Actual behavior:
I would expect the hoc(a => ({ ...a, b: 10 })) to throw an error.
Playground Link: playground

Duplicate of https://github.com/Microsoft/TypeScript/issues/12632

Thanks!


docs: replace image in README

Pull Request
Related issue
Fixes #638
What does this PR do?

Replaces the example image in the README

PR checklist
Please check if your PR fulfills the following requirements:

[x] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)?
[x] Have you read the contributing guidelines?
[x] Have you made sure that the title is accurate and descriptive of the changes?

Thank you so much for contributing to Meilisearch!

bors merge

Thanks again for contributing with Meilisearch :heart:
If you are participating in Hacktoberfest, and you would like to receive a small gift from Meilisearch too, don't forget to fill this form.


Reissuance Asset Amount & Whitelist Amount

Can this be changed from 10,000 to 1?
Reason is that the additional 4 zeros are extra data that serve no purpose and over time this will accumulate significantly.
For example... 1,000 bars = 72,000 inflation tx's per month / 864,000 per year. So it's a lot of extra data that can be dropped?

Probably best this goes to mapping repo. Is the problem the number of outputs or the output amount?

Can be closed - variable does not take up extra space :D


feat: English translation

Gridea is awesome, but I don't understand anything and I have to copy-paste everything in Google Translate to have an idea. Is there an English translation of the app and documentation planned?

The app has an English translation, and the documentation in English may not have the energy to maintain it for a while

Gridea has a multi-language setting.

You can find it in the left-bottom and click the icon which likes a control panel.
Then choose the "English" on the top of the new pages.
Please click the the botton which has a "保存"(save) on it.

Congratulations!Your Gridea now in English!
Have a nice day with Gridea!


refactor(configuration): use array instead of properties

Also getters may improve within:
    public function get($propName)
    {
        return $this->params($propName);
    }

Hey, @sensorario ty for the PR.
I don't see any advantage using an array internally instead of using properties, on the other hand
I see some disadvantages doing so, for example:

we won't be allowed to use static analyses on it, because the array can be changed over time.
IDEs will help you during refactoring properties and explicit getter (instead of a generic one like you suggested) are better because you can type hint and improve the general code base
Why hide your properties? for fewer lines of code? It is worth? IMHO it's never worth hide complexity for x lines less in the code.
It's better to be explicit and tackle the complexity to the first step in order to avoid hacks and bugs (or unexpected behavior) in the future and during runtime.

💪


Revisions for camera behavior, added basic gesture methods, separated…

Adds basic framework for gesture handling.
Adds gesture models to capture gesture setup.
Adds user tracking behaviors to camera update.
Renames initialCamera to constantCamera to reflect behavior.
Adds Hashable to types that could be used when navigating to a MapView (e.g. MapCameraView).
Separates out MapView, Coordinator and Modifiers.
Maps MLNCameraChangeReason to swift representation of last reason.

Add tests


Issue with changing scene type

Tested on Godot 2.1, but pretty positive the issue is there in 2.2+
Issue description (what happened, and what was expected):
If a scene was added to a group in the Node viewer (Node is next to Inspector. Group is next to Signals)
and then we try to change the type of the scene (say, static 2d to area2d), the added "Group" is gone!
Looking for issues in the wrong place, this can lead to headaches if overlooked, barking up the wrong tree is not nice!
Steps to reproduce:
Create a scene lets say StaticBody2D
Add it to a group, lets say "Walls"
Change the type of the Scene/Node to Area2D
Grouping is gone.

It would be better to change title to describe more specific, like "Changing node type loses Group info"


Missing file

The file linked in Note 3 is no longer valid. Can you upload it again?

Thanks for your interest and sorry I missed this. The model files are complete under "use_this_model_example" folder. The missing file should be some intermediate files for plotting the figures. I forget what they are.. If you want to run the model, the "use_this_model_example" folder is sufficient.


Ignore "non-existing" errors when getDirectorySize calculates the size

The git command may operate the git directory (add/remove) files in any time.
So when the code iterates the directory, some files may disappear during the "walk". All "IsNotExist" errors should be ignored.
Fix #26765

I was unable to create a backport for 1.21. @wxiaoguang, please send one manually. :tea:
go run ./contrib/backport 28276
...  // fix git conflicts if any
go run ./contrib/backport --continue


Fetch API corrupts repetitive response headers

Description
The Fetch API misinterprets repetitive response headers, for instance, Set-Cookie header passed separately for each cookie. All values of the header concatenate into a single string unusable for further processing.
Reproduction
fetch('https://github.com/facebook/react-native')
    .then((response) => {
        console.log(response.headers);
        console.log(response.headers.getAll('Set-Cookie'));
    });

Expected result:
{ map:
	   { date: [ 'Fri, 10 Mar 2017 06:53:22 GMT' ],
	     'content-type': [ 'text/html; charset=utf-8' ],
	     'set-cookie': [
                 '_gh_sess=eyJsYXN0...; path=/; secure; HttpOnly',
                 'user_session=AYIZ4afT...; path=/; expires=Fri, 24 Mar 2017 07:18:28 -0000; secure; HttpOnly'
             ]
           }
}

[
    '_gh_sess=eyJsYXN0...; path=/; secure; HttpOnly',
    'user_session=AYIZ4afT...; path=/; expires=Fri, 24 Mar 2017 07:18:28 -0000; secure; HttpOnly'
]

Actual result:
{ map:
	   { date: [ 'Fri, 10 Mar 2017 06:53:22 GMT' ],
	     'content-type': [ 'text/html; charset=utf-8' ],
	     'set-cookie': [
                 '_gh_sess=eyJsYXN0...; path=/; secure; HttpOnly, user_session=AYIZ4afT...; path=/; expires=Fri, 24 Mar 2017 07:18:28 -0000; secure; HttpOnly'
             ]
           }
}

[
    '_gh_sess=eyJsYXN0...; path=/; secure; HttpOnly, user_session=AYIZ4afT...; path=/; expires=Fri, 24 Mar 2017 07:18:28 -0000; secure; HttpOnly'
]

Solution
The underlying platform-specific code that implements the Fetch API needs to be fixed.
Additional Information

React Native version: 0.42.0
Platform: iOS (haven't tested on Android)
Operating System: MacOS

React Native also appears to discard cookie path (and perhaps domain) when automatically sending Cookie headers based on the previously received Set-Cookie. It may be unable to recognize cookie properties because values of multiple cookies are "glued" in the underlying data structure.

In reading things this morning, and talking to folks behind the Fetch spec, React Native seems to be following the fetch spec correctly, with the exception of allowing access to Set-Cookie headers at all.
The header combining behavior is allowed (but not required) according to the HTTP RFC, and also mentioned in the cookie RFC:

An origin server may include multiple Set-Cookie headers in a response.  Note that an intervening gateway could fold multiple such headers into a single header.

It can be rather difficult to combine a combined Set-Cookie header since, for example, a expires field can contain the same ", " separator that is used to combine multiple headers into one.
The Fetch spec takes things a step further and requires this combining behavior. Fetch folks are aware that it doesn't work well for cookies but require the behavior anyways since their spec doesn't allow access to Set-Cookie headers.
So, in summary...
Since React Native does allow access to set-cookie headers, I would recommend following the example of Node.js and special-casing Set-Cookie headers as an array field rather than a combined one and/or providing access to the raw headers.

Regarding this:

React Native also appears to discard cookie path (and perhaps domain) when automatically sending Cookie headers based on the previously received Set-Cookie.

I believe this is the correct behavior. Set-Cookie is allowed to contain that stuff, but not Cookie - it just contains name-value pairs as appropriate for the requested path and domain.

Just wanted to clarify regarding:

I believe this is the correct behavior. Set-Cookie is allowed to contain that stuff, but not Cookie - it just contains name-value pairs as appropriate for the requested path and domain.

React Native's fetch acts as a browser in terms of maintaining cookies. When a response contains Set-Cookie header, React Native memorizes it and starts to include the respective Cookie header into all subsequent requests. That is pretty cool, isn't it? Well, the problem is that it does not respect the cookie scope (path for sure, haven't checked the domain). For example, if a request to http://login.example.com/ returns Set-Cookie: token=123; Path=/protected/, React Native will keep sending Cookie: token=123 to URL with any path, not only the /protected/ path the cookie was meant for. This a security concern.

I am the owner of node-fetch (which react-native uses) and was searching for a relevant issue about getAll.
Basically there are 2 issues to be fixed for node-fetch here:

for v1.6.3, which react-native currently uses, you are saying set-cookie headers isn't parsed properly. I would glad to take a PR with tests to fix it.

we are currently working on v2 of node-fetch, which follows the Fetch Spec more closely, but because Fetch Spec didn't account for set-cookie headers being exposed, and has deprecated getAll, we somehow need to handle this special case which is not possible in browsers. I would glad to take a PR with tests as well.

As for the cookie path issue, I think its a react-native problem, true?
You can follow up on a similar issue on https://github.com/bitinn/node-fetch/issues/251

Hi there! This issue is being closed because it has been inactive for a while. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. Either way, we're automatically closing issues after a period of inactivity. Please do not take it personally!
If you think this issue should definitely remain open, please let us know. The following information is helpful when it comes to determining if the issue should be re-opened:

Does the issue still reproduce on the latest release candidate? Post a comment with the version you tested.
If so, is there any information missing from the bug report? Post a comment with all the information required by the issue template.
Is there a pull request that addresses this issue? Post a comment with the PR number so we can follow up.

If you would like to work on a patch to fix the issue, contributions are very welcome! Read through the contribution guide, and feel free to hop into #react-native if you need help planning your contribution.

I know this ticket is pretty old, but I think I finally have a good solution. Thanks to a PR from @chrusart, the set-cookie-parser library is now capable of splitting the combined cookie string! It can then be parsed as individual set-cookie headers. See https://www.npmjs.com/package/set-cookie-parser#usage-in-react-native
Please test it out and let me know how it works for you.


TraceBounds infinite looping

TraceBounds becomes stuck in an infinite loop when labeling 8-connected objects with Connectivity=4.

@slee172


Order of includes in Header section should be the the opposite

As noted in this file, for include you need both Usbiodef.h and initguid.h
Notice the order matters, and it should actually be first initguid.h and only then Usbiodef.h (as pointed out here)

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: dc07324f-bf4f-8857-2ea3-3539a586fb27
Version Independent ID: 63179fd5-2bd5-ef2c-b180-419340116d29
Content: GUID_DEVINTERFACE_USB_DEVICE - Windows drivers
Content Source: windows-driver-docs-pr/install/guid-devinterface-usb-device.md
Product: windows-hardware
Technology: windows-devices
GitHub Login: @tedhudek
Microsoft Alias: tedhudek

Thank you, @tzuriel-spearuav, that is a subtle but crucial distinction. There is a sentence higher on the page that I think makes the point ("You must include initguid.h before including...") but I just took the liberty of making it more explicit in the Requirements table.  See what you think.


Lets upgrade heroku and use 2 dynos

We are going to

[ ] Upgrade the app to a Standard level Heroku ($25 a month)
[ ] Set the number of dynos to zero (reducing the effective cost to $0 a month)
[x] Set up integromat to scale the dyno to two dynos for production hours
[x] Set up integromat to scale the dyno to zero outside of production

We need to have a "system is out of production' function.
Two options.
Serverless function with 2 variables, time start and time end
Use GitHub pages to host the phone schedule (instead of the Twilio server) see the GitHub action YAML in this article we can run a js script, create a JSON, PR, and auto-merge into the repo on a chron schedule!


nixos/cockroachdb: simplify dataDir management, tweaks

This cleans up the CockroachDB expression, with a few suggestions from
@aszlig.
However, it brought up the note of using systemd's StateDirectory=
directive, which is a nice feature for managing long-term data files,
especially for UID/GID assigned services. However, it can only manage
directories under /var/lib (for global services), so it has to introduce
a special path to make use of it at all in the case someone wants a path
at a different root.
While the dataDir directive at the NixOS level is occasionally useful,
I've gone ahead and removed it for now, as this expression is so new,
and it makes the expression cleaner, while other kinks can be worked out
and people can test drive it.
CockroachDB's dataDir directive, instead, has been replaced with
systemd's StateDirectory management to place the data under
/var/lib/cockroachdb for all uses.
There's an included RequiresMountsFor= clause like usual though, so if
people want dependencies for any kind of mounted device at boot
time/before database startup, it's easy to specify using their own
mount/filesystems clause.
This can also be reverted if necessary, but, we can see if anyone ever
actually wants that later on before doing it -- it's a backwards
compatible change, anyway.
Signed-off-by: Austin Seipp<EMAIL_ADDRESS>Motivation for this change
Things done

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

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

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

@thoughtpolice Can you wait until people have reviewed your PRs before merging them?


Improve search for missing vocabularies

For example, searches in languages and funders are still good enough.

See also https://github.com/inveniosoftware/invenio-vocabularies/issues/387

Search for CERN


Ralph Link

In your hello world part of the docs it refers to the Ralph Website. The URL has a SQL error http://www.ralphmedia.co.uk/reefine/demo_basic
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'legacy_field_data' in 'field list':
SELECT field_id, field_type, field_name, site_id, field_label, concat('field_id_',field_id) as field_column, 0 as is_title_field, case when legacy_field_data = 'y' then 1 else 0 end as is_legacy_field FROM exp_channel_fields
Thought you might wanna know.

This is fixed now


nightly_zips_cleanup task iterates over all resources

Description of the bug
<MaybeEncodingError: Error sending result: ''(1, <ExceptionInfo: Retry(Retry(...), SessionException(SessionException(...), "Error processing IRODS request: 3. stderr follows:\\n\\nb\'remote addresses: <IP_ADDRESS> ERROR: rmUtil: rm error for /hydroshareZone/home/wwwHydroProxy/zips/2023-11-18, status = -819000 status = -819000 CAT_SUCCESS_BUT_WITH_NO_INFO\\\\n\'"), 0)>, None)''. Reason: '"RecursionError('maximum recursion depth exceeded while calling a Python object')"'.>

This recursion is caused by these lines in the task:
https://github.com/hydroshare/hydroshare/blob/2.10.3/hs_core/tasks.py#L153-L156
The remedy is to change the query to something like:
BaseResource.objects.order_by().values_list('resource_federation_path').distinct()

so that it returns one single result for each federation path
Steps to reproduce the bug:
Occurs nightly
Expected behavior
Task should succeed without irm recursion error
Additional information
HS v2.10.3

reopening because even though we fixed duplication of federated paths in https://github.com/hydroshare/hydroshare/pull/5266, there is also an issue in iRods 4.2.X
https://github.com/irods/irods/issues/3505
irm -f -r fails when removing deeply nested collections


Render calendar for RangeDatePicker

This is the first step in creating range date picker. There are still lot of things to do in next PRs. Even this PR is quite big, but I hope it should be still readable enough, because there are lot of styles and easy components.
I noticed that I forgot to show in video that the content of RangeDatePicker is scrollable :)
Btw I'm not sure why there is a small delay during opening modal and clicking on specific date (you can notice it on simulators). If you have idea, let me know. I plan to spare time on it in next PR. (fixed)

Btw RangeDatePicker moved to universal-components

@JoseDuSV @tbergq @FilipMessa 🚀


acro.crosstab revelas cell content when margins=True

When margins=True option is passed to crosstab, the content of some unsafe cell is reveled.
code version = 0.4.5 (updated 2024-03-04 (2273a3a15d72a)
Tested with notebooks/acro_demo_v2.ipynb
acro.suppress = True

safe_table = acro.crosstab(df.recommend, df.parents)
print(safe_table)

INFO:acro:get_summary(): fail; threshold: 4 cells suppressed;
INFO:acro:outcome_df:
----------------------------------------------------|
parents    |great_pret   |pretentious  |usual       |
recommend  |             |             |            |
----------------------------------------------------|
not_recom  |          ok |          ok |          ok|
priority   |          ok |          ok |          ok|
recommend  | threshold;  | threshold;  | threshold; |
spec_prior |          ok |          ok |          ok|
very_recom | threshold;  |          ok |          ok|
----------------------------------------------------|

INFO:acro:records:add(): output_1
parents     great_pret  pretentious   usual
recommend
not_recom       1440.0       1440.0  1440.0
priority         858.0       1484.0  1924.0
recommend          NaN          NaN     NaN
spec_prior      2022.0       1264.0   758.0
very_recom         NaN        132.0   196.0

recommended:recommend row should be completely unamiable to researcher.
The cell recommended:very_recom/parents:great_pret should be unamiable to researches.
When margins is activated the value of the cell recommended:very_recom/parents:great_pret (0) is shown. This is the correct value (show the suppression if False).
Be aware that the fully deleted row of recommended:recommend is not shown.
acro.suppress = True
safe_table = acro.crosstab(df.recommend, df.parents, margins=True)
print(safe_table)

INFO:acro:get_summary(): fail; threshold: 5 cells suppressed;
INFO:acro:outcome_df:
------------------------------------------------------------------|
parents    |great_pret   |pretentious  |usual        |All         |
recommend  |             |             |             |            |
------------------------------------------------------------------|
not_recom  |          ok |          ok |          ok |          ok|
priority   |          ok |          ok |          ok |          ok|
recommend  | threshold;  | threshold;  | threshold;  | threshold; |
spec_prior |          ok |          ok |          ok |          ok|
very_recom | threshold;  |          ok |          ok |          ok|
All        |          ok |          ok |          ok |          ok|
------------------------------------------------------------------|

INFO:acro:records:add(): output_2
parents     great_pret  pretentious  usual    All
recommend
not_recom         1440         1440   1440   4320
priority           858         1484   1924   4266
spec_prior        2022         1264    758   4044
very_recom           0          132    196    328
All               4320         4320   4318  12958

Note: The marginals seems to be calculated correctly, without accounting for the hidden cells.

@zizaola Thank you for bringing this issue to our attention. I'm currently working on resolving it.

output is correct when whoops_supressed =True

in which case it calls
table = manual_crossstab_with_totals()

error is when show_suppressed = False (the default value)

in which can the call is to :

table = crosstab_with_totals
it is correctly deleting the empty rows/columns

Fixed in 0..4.6
acro.suppress = True

safe_table = acro.crosstab(df.recommend, df.parents,
                           margins=True,
                          )
print(safe_table)

produces:


New core set icons?

There are new icons in the new core set:

Tallon Roll left
Tallon Roll right
Tech upgrade icon

https://github.com/geordanr/xwing-miniatures-font/commit/a826c133c4c6b32e26e38c4d7ccd521e1f6f7640


Fix session being persisted even when disabled

This fixes 2 bugs:

PersistState being called when the window is closed
(as opposed to closing the tab). The settings check was missing.
Session cleanup running depending on whether the feature is
currently enabled as opposed to whether it was enabled on launch.

Closes #17206
Closes #17207
Validation Steps Performed

Create a bunch of leftover buffer_*.txt files by running
the current Dev version off of main
Build this branch, then open and close a window
All buffer_*.txt are gone and state.json is cleaned up ✅

Can you make sure this works properly in the multi-window case?
2 windows 2 tabs cases:

Close the second window with the X
Close the second window by closing each tab individually
Quit the application with all 4 tabs open by using command palette Quit

Closes #17211

Closes this PR? haha

@DHowett When you say "this works" what do you mean: That it persists or that it doesn't persist?
If it's the latter, then yes this will work, because PersistState() is only ever called if ShouldUsePersistedLayout() is true. There's no alternate way to get into the PersistState() call that gets past this condition. Of course I can test this later, but this PR is IMO good to go.

If it's the latter, then yes this will work, because PersistState() is only ever called if ShouldUsePersistedLayout() is true.

ShouldUsePersistedLayout only reflects the user's preferences, it does not make any decisions based on how many windows currently exist.
I expect the top two cases to NOT persist, and the bottom case to persist two windows.

Oh I get what you mean now. So, the difference is AppHost::_CloseRequested() vs. AppHost::_quit() and its callback AppHost::_QuitRequested.
_CloseRequested() is called when the last tab of a window is closed or you close a window and there's more than one left. _quit() is called when using "Quit all". It's also called when there's only 1 window is left (see _CloseRequested() and its GetNumberOfPeasants()).
I'll test it but I think this should be helpful for understanding how it works. 😅

Alright, I hope I tested it properly, but it seemed to work correctly.


Proposal: Add --pretty to tsconfig.json

It's currenty hard to read TypeScript errors in VS Code:

There is a --pretty option for TypeScript, but AFAIK it can't be used when using gulp-typescript or other task runner plug-ins.
So I'd like to suggest to add pretty: boolean to the tsconfig.json definition.

Plus, I'd like to suggest to pimp the colors even more so the message and code positions can easily be read, too (not only the - rather uninformative - constant word "error"):

(Suggested colors are: green for code position, red for error keyword/code and dark yellow for the error message.)

pretty is a supported configuration in your tsconfig today (using 1.8). however this only affects the output of tsc. what you are asking for is a request for gulp-typescript, the TS API has no control on how the gulp error messages are reported.


Implement Google Signin

Is your feature request related to a problem? Please describe.
Implement google sign in functionality to be called when a user clicks on the sign in with google button
Describe the solution you'd like

consider using @react-native-google-signin/google-signin is a great library that provides smooth authentication with google while supporting modern react native architecture
in also provides a GoogleSigninButton component ready to use.  remember to use the right colors as per theme

Additional context

PS - ofcourse this will require Google auth configuration with firebase

@kharioki I can work on this.

@kharioki any updates?

@kharioki , I guess we can close this issue now that they did away with signin


Pass variables to webschema's "script"

We need some way to pass variables/objects to  webschema's script.
Ideally, script should be passed and executed as an actual PowerShell scriptblock, with it's SessionState and so on. This way we could capture required variables with GetNewClosure or pass them to scriptblock as arguments.
Right now, if I understand it correctly, scriptblocks are used as text to build function that executed in nancy via PowerShell host:
string command = @"function RouteBody {{ param($Parameters, $Request) {0} }}";

I'd love to be able to do this.  I'm not sure I can though - I will be actively pursuing a solution over this week while I'm at the MVP summit in Redmond.

I'm not sure that we can pass an actual PS scriptblock, but as viable workaround we can create a new InitialSessionState, create Runspace using it, assign this Runspace to a PowerShell object, and then import current variables/modules into it. Unfortunately, while it's all can be done in PowerShell, I have no idea how to pass this Runspace to the Flancy. Probably C# code has to be extended with some method/property that would accept Runspace object.
References:

Windows PowerShell Host Quickstart
Warren F.'s Invoke-Parallel function. It's a good example of importing variables/modules in a Runspace.

More thoughts on a subject:

If we could pass a runspace to a Nancy's PS host, we could ditch string command = @"function RouteBody {{ param($Parameters, $Request) {0} }}"; line entirely and instead add this function to a Runspace beforehand in PS part of module.

If this Runspace object could be passed as some kind of "shared" object (by reference?), we could modify it on the fly and script could be reloaded (but not routes, though) without restarting PowerShell.


option groups/aliases

would be nice if we could group options and add aliases for subcommands, like done with https://github.com/janluke/cloup

I can certainly add aliases for commands like:
@app.command(name=["foo", "bar"])  # Register the function ``foo`` to CLI tokens "foo" and "bar"
def foo():
    pass

Option groups are hard. I think the API would have to look something like:
from cyclopts import App, Group, Parameter

app = App()

cool_options = Group(name="Cool options", mutually_exclusive=True)

@app.command
def foo(
    *,
    bar: Annotated[Optional[str], Parameter(group=cool_options)] = None,
    baz: Annotated[Optional[str], Parameter(group=cool_options)] = None,
):
    pass

What are your thoughts?

I mostly implemented the alias feature (see command-alias branch), but actually, I think it might be better to just have the user multiple decorate their function (which the existing library code already achieves):
@command(name="foo")
@command(name="bar")
def blah():
    pass

This achieves the same thing without complicating the code more. The main argument I see for allowing a list for name is that it's more consistent with how Parameter works.

multiple commands would also work. might get a bit unreadable though perhaps?

I think I'll continue adding this feature; I think maintaining consistency with all the other functionality (lots of parameters in Parameter can be a string or a list) is very important.

command aliases are now available in v1.1.0.
Keeping this issue open to discuss the best way to handle groups.

Closing this issue to centralize discussion over to #39.


Bloc/Cubit For State Management

You should consider using bloc or just cubit, for state management. The code will be much easier to maintain and you wont need to call setState all the time.
Relative example
https://bloclibrary.dev/#/flutterinfinitelisttutorial

I'll check it out, thanks. The code is getting a bit messy

I am currently working on migrating the app to a CLEAN architecture. I will use bloc in the presentation layer.

Where are you at with CLEAN architecture? haven't seen movement on it.
Clean is a bit over kill, you can get away with half of the features of clean.

Where are you at with CLEAN architecture? haven't seen movement on it.
Clean is a bit over kill, you can get away with half of the features of clean.

I'm a bit busy at the moment, but here's the rundown. Yes, CLEAN is way overkill and I gave up on switching to it, however I'm looking into some simple state management solutions to avoid passing callbacks all over the place.

Try Cubit / Bloc. Thats what I use on all my projects. This is the best sample project to learn it https://github.com/felangel/fluttersaurus

I'll check it out, thanks.

If you like written tutorials -> https://resocoder.com/2020/08/04/flutter-bloc-cubit-tutorial/
And once you do that try https://bloclibrary.dev/#/flutterweathertutorial

@Rukkaitto do you want help with the initial bloc / cubit architecture?

@Rukkaitto do you want help with the initial bloc / cubit architecture?

Sure, you can checkout feature/bloc-migration, I've started with boards.
Thanks a lot.

Hey @Rukkaitto did you see https://github.com/Zchandev/iChan
It uses bloc, although Im not a fav of the architecture of bloc and you can simplify a ton of the code using cubits.

I'll check it out, thanks.

@mitchross I'm looking into the Stacked architecture with this plugin :
https://pub.dev/packages/stacked
What do you think?

Started with #29. I prefer it to Bloc so far.

It's your app you should do what you feel best, I personally think bloc is the best. If you just use Cubit you can cut 75% of the boiler plate code with bloc.
MVVM is an outdated architecture for apps. The entire industry is moving to Unidirectional Data Flow or also known as one-way data flow. You see this with React Redux or React Context API.... Android and Ios are incorporating this natively to doing this pattern too.
The benefit of one-way data flow is state is published out to subscribers, likely multiple areas of the app need the state change information. Lots of times with MVVM you have two way communication which quickly breaks down and causes all sorts of errors in your architecture. MVVM is easier to grasp initially, but for Flutter, which is tree-based, I think its the wrong pattern.
Which I first started Flutter, I did MVVM since that's was I was comfortable with at the time, I built this app https://github.com/mitchross/multi_camera_dashboard , infact I used no plugins or frameworks, just vanilla MVVM.
I would strongly suggest sticking with Bloc for community support and staying relevant in the industry. The issue you will find with Stacked is limited support.
End of the day, do what you want and feel comfortable with. If your goal is to learn and be relevant with the industry, stick with a UDF/Reactive framework, it will pay dividends in other tech stacks, especially React.

I'll give it a shot.

Read through this
https://resocoder.com/2020/08/04/flutter-bloc-cubit-tutorial/
Try
https://github.com/felangel/fluttersaurus


feat: add group for kycdao (polygon)

This is a group for kycdao for issue here
To further improve the group, we should bring current kycdao addresses in from a subgraph query or similar.
Kycdao doesn't offer API's or a subgraph currently, so we're using Sismo BigQuery for Polygon.
We don't currently support CELO, NEAR, or Solana

@sampolgar thanks again, if you are willing to do the subgraph let's go! Otherwise I'll close the PR because we need all he holders.

@sampolgar I'm closing the PR for now, but don't hesitate to ping me when you want to work on it again


Remove fuzziness from title queries

RIP

I think this will probably require changes to the rank tests themselves, not just the query json, ie we no longer want to check that fuzzy matches are matched.
Have you tried running rank locally with the new queries @jamieparkinson ?

Ah yes, I did indeed forget about rank tests - will check those


pip repository is outdated

Hi,
i came to cqparts because of the great way to create threads. But this doesnt work correctly if I install cqparts via pip because the code there is older. The current version from github works fine.
Is there a other nice way to install cqparts and keep it up to date?
Can the "~/.FreeCAD/Mod" folder be used for this maybe?

@dickshaydle I can't answer for @fragmuffin about pip, but I'm the maintainer of the CadQuery module/workbench for FreeCAD. I wouldn't be opposed to including cqparts in that workbench so that it would always be accessible and could be updated through the FreeCAD addons manager.

@dickshaydle

i came to cqparts because of the great way to create threads

I'm quite proud of how threads works... or rather, I will be when #1 is fixed...
Due to #1 causing exceptions, or invalid solids, I've made all threads "simple" by default, meaning that unless you explicitly set the parameter _simple=False, all threads will render as a cylinder.
Of course, when #1 is fixed, that default behaviour will be removed.

But this doesnt work correctly if I install cqparts via pip because the code there is older. The current version from github works fine

That's very interesting, because I haven't made any changes to threads since release (comparison: release...master)
Could you be more specific about what's not working from the pip released version?, a code example would help.

Can the "~/.FreeCAD/Mod" folder be used for this maybe?

To import cqparts directly from a git repo' you can use its parent directory ~/.FreeCAD
# change this to your path
cqparts_path=~/git-repo-path/cqparts

# just cqparts
ln -s $cqparts_path/src/cqparts ~/.FreeCAD/cqparts

# to include all the cqparts_* libs as well
cqparts_libs=$(find $cqparts_path/src/ -mindepth 1 -maxdepth 1 -type d -printf %f\\n)
for lib_name in $cqparts_libs ; do
    ln -s $cqparts_path/src/$lib_name ~/.FreeCAD/$lib_name
done

@jmwright I wouldn't be opposed to adding cqparts to the workbench either :smile:.

@dickshaydle
I just thought of another reason it might not work...
cqparts is the core library, whereas threads come from cqparts_fasteners which is a library that requires cqparts.
pip install cqparts cqparts_fasteners


Updating vtkm and vtkh scripts

Description
Updated the VTKm and VTKh repository versions, build scripts, and the associated vtk -> vtkm dataset conversion code.
Type of change

[ ] Bug fix
[ ] New feature
[ ] Documentation update
[x] Other

How Has This Been Tested?
Unit tests run on local Linux machine.
Checklist:

[x] I have followed the style guidelines of this project.~~
[x] I have performed a self-review of my own code.~~
[x] I have commented my code where applicable.~~
[ ] I have updated the release notes.~~
[ ] I have made corresponding changes to the documentation.~~
[x] I have confirmed new and existing unit tests pass locally with my changes.~~
[ ] I have added new baselines for any new tests to the repo.~~
[x] I have NOT made any changes to protocol or public interfaces in an RC branch.~~
[x] I have assigned reviewers (see VisIt's PR procedures for more information).~~

The CI is failing because the Docker container used for the CI needs to be updated to the new vtkm and vtkh. I will get to work on that and let you know when I've got it in place.

@brugger1 Thank you! I was trying to figure out what the issue was without much luck.

@brugger1  This is building for me now using these two new code versions. Let me know if there is anything else that should be done with it.

Looks good. I have a commit for develop, but I'll wait a bit a bit to give you a chance to merge it so you don't have to keep merging the latest version and then wait for the CI to finish.

The CI is failing running the tests with the errors shown here:
https://dev.azure.com/visit-dav/VisIt/_build/results?buildId=1247&view=logs&j=9d45be1f-974b-55d5-7a13-9902d034de7e&t=aa26b843-8b2a-5983-ffc0-601f98e2dee1
The viewer can't find the library libvtkmdiympi_nompi.so.

@brugger1 Oh shoot. That library shows up in my build, but maybe that is a fluke. There is a specific flag that you can pass to enable it, I will add it and hopefully that will fix it.

I see the library in the vtkm build, so it was built, but for some reason the viewer couldn't find it when it ran.
ls build-mb-develop-ci-smoke/thirdparty_shared/third_party/vtkm/v1.7.0/ci/lib
cmake                           libvtkm_filter_contour-1.7.so     libvtkm_lodepng-1.7.a
libvtkm_cont-1.7.so             libvtkm_filter_contour-1.7.so.1   libvtkm_rendering-1.7.so
libvtkm_cont-1.7.so.1           libvtkm_filter_extra-1.7.so       libvtkm_rendering-1.7.so.1
libvtkm_cont_testing-1.7.so     libvtkm_filter_extra-1.7.so.1     libvtkm_source-1.7.so
libvtkm_cont_testing-1.7.so.1   libvtkm_filter_gradient-1.7.so    libvtkm_source-1.7.so.1
libvtkmdiympi_nompi.so          libvtkm_filter_gradient-1.7.so.1  libvtkm_worklet-1.7.so
libvtkm_filter_common-1.7.so    libvtkm_io-1.7.so                 libvtkm_worklet-1.7.so.1
libvtkm_filter_common-1.7.so.1  libvtkm_io-1.7.so.1

Oh cool, I did not see how to get into the directory structure like that. I have had similar issues locally with the adios library that is build as part of VisIt. I have to export that path before running the viewer. And at one point I used to have to export the vtkm path too. Any idea on how to fix these issues?

I ran the CI container and poked around in it. Are you familiar with running Docker containers? You could run the container and then build VisIt and then see what isn't working correctly. If you can't, I can try and see what's going wrong.

I am not familiar with it, but will research it. May as well learn. Hopefully I'll learn something by the morning.

@brugger1 I've got docker installed and did some research on how to use it (I looked at the VisIt manual on Docker images as well). However, I cannot find how to download the container from the pipelines. Where are the images?

The CI image is located at Docker Hub. I think you can pull it with the following command:
docker pull visitdav/visit-ci-develop:2022-01-27-shae23795

I believedo you can pull images without a Docker Hub account, but I'm not 100% sure.

@brugger1 Thanks for the updated container! It looks like things ran just like they should, with the embree error that you mentioned.

Thanks for merging! I didn't get back to check on it yesterday.


Package Manager Discovery Correctness

I think we may want to change how we resolve the package manager to be a bit more forgiving.
Explanation
If you have installed rehearsal globally on your machine and you point migrate to a directory like so:
rehearsal migrate -p ./some-package

What will end up happening is that we will start looking for files from the process.cwd() instead of the path that is passed. This can lead to using the wrong package manager.
Options
I think are several options here but I think what users would expect is that by default we use process.cwd() but if a path is passed will lookup from that path to figure out the package manager. This would make rehearsal migrate and rehearsal migrate -p . synonymous, it also means you could run it anywhere in a project and we would resolve correctly.

I think this may already be fixed from what I can tell.

Confirmed to be resolved. Closing this issue.


[BugFix] [API] Fix Squash Merge

you will get an 500 error if you try to merge a pull via squash merge option via API
this fix it

TESTED: this bug also afect v1.11 - sending backport ...

Backport: #11039


add GDC validation of WCMP2 id against incoming topic

Given data providers publish discovery metadata to the .../metadata topic, a GDC SHALL validate the WCMP2 against the topic to which it was published.
cc @amienshxq

To be included in the Guide.

Example:

centre-id ca-eccc-msc publishes WCMP2 document to topic origin/a/wis2/ca-eccc-msc/metadata
WCMP2 document has an identifier of urn:x-wmo:md:fr-meteo-france:observations.swob

The GDC should check for a match and raise an error/report if there is no match.
Action: @tomkralidis to add to Guide under GDC.

Tom to update the Guide :)

PR in #80


xmake dpp.lib(cluster.cpp.obj) : error LNK2019

Git commit reference:
ffa2653f7504a701735ed23cfb2d503648253a96
Describe the bug:
When trying to install dpp through xmake, I receive this error, which does not allow me to start the project.
To Reproduce:
Steps to reproduce the behavior:

Create a new xmake project
Update the xmake.lua file by adding the dpp package, below the minimum configuration:

add_rules("mode.debug", "mode.release")

add_requires("dpp")

target("test-bot")
	set_kind("binary")
	add_files("src/*.cpp")

	add_packages("dpp")

Then build it xmake build

Screenshots:

System Details:

OS: Windows 11 Pro 64 bits
Version: 22621.2715

Adicional Info:
I literally did what I was told on your website, here is the link: https://dpp.dev/10.0.28/install-xmake.html

@Mishura4 This is related to #980. Is this because it's not ran inside visual studio?

I'll investigate. In the meantime you can add DPP_BYPASS_VERSION_CHECKING to the list of defines in your project to work around this

you didn't link the windows sdk which contains the messageboxA function, this is required client side in the program which includes dpp.

@braindigitalis Thanks to you, I managed to compile. I found how to link to the sdk.
My xmake.lua file now looks like this:
add_rules("mode.debug", "mode.release")

add_requires("dpp")

target("test-bot")
    add_rules("win.sdk.application")

    set_kind("binary")
    add_files("src/*.cpp")

    add_packages("dpp")

You need to update this on your website.

Please don't close this if it's not yet resolved on our end.
Thank you though for the solution, we'll look at this. There are potentially other solutions as well.

Maybe we could simply change the solution to fix this? If the windows api is found (check with #ifdef) then we do the message box, otherwise we could do a fallback and just send the error log via std::cout or something.

I have ideas, I'll take a look soon
Very busy atm so probably next week

I have ideas, I'll take a look soon Very busy atm so probably next week

Okie dokie!

did you forgor mor?

@Mishura4 Did you forgor even mor?

Why not including the pure user32.lib from windows?, I'm not so experienced handling with xmake but something like a pragma to import user32 in this lines.
Also would be useful if TEXT() macro (defined in windows.h) is used in MessageBox to support unicode and non-unicode windows builds, avoiding compile issues in the future.
#ifdef _WIN32
#include <windows.h>
#pragma comment(lib, "user32.lib")

if constexpr (BuildType != build_type::universal && BuildType != expected) {
		MessageBox(
			nullptr,
			TEXT(
				"Mismatched Debug/Release ...\n"
				"..."
			),
			TEXT("D++ Debug/Release mismatch"),
			MB_OK | MB_ICONERROR
		);
		// ...
}
#endif
// ...

Useful links:
MessageBoxA requirements
MessageBoxW requirements


some style changes

Made some updates to the style

The brighter blue background matches v3
shrunk the weekday selector
Tried out a step function. I think it makes sense because the slope doesn't really mean much on this graph.  Also, the fact that it's divided into half-hour increments means each increment is a distinct datapoint and showing a curved line between them is somewhat misleading.

Lmk what you think

You got me addicted to stepped graphs @idreyn


When the version supporting 7.5.1 be released?

I want to install it in version 7.5.1. But since this supports till 7.1.1 I am stuck.

If you can use kibana 7.6.X, I suggest you to use the last patch of this thread https://github.com/datasweet/kibana-datasweet-formula/issues/62

I assume that it will work for 7.5.1 also. Right?

I don't think so. You can take your chance :)
If you really can't use Kibana 7.6.X, I would create a patch for 7.5.X...

What is the process of installing this? I tried but gave up. My understanding was that I had to checkout the code, build it and then install. Is it that I have to install the patch just like a kibana plugin?

I just tried it and unfortunately the patch for 7.6.1 is not working for 7.5.1 ...


What is the git version which integrated in tfs 2018 cu2?

thanks!

Thanks for your question. It looks like your question isn't an issue with the documentation, but an issue or question specific to your implementation or a bug in the product itself.
For help with a specific task, here are a couple of options where you might consider asking your question:

Azure DevOps on Stack Overflow
Azure DevOps Support Bot

If you've encountered an issue with the product itself, to make sure it gets in front of the right people, please submit your bug here.
If you have an idea for improving the product, please submit your idea here.


Update project dependencies

:tada: This PR is included in version 3.16.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


docs: add doc for icon light client

Description: Added doc stating deviation for Icon LightClient
Commit Message
docs: add doc for icon light client

see the guidelines for commit messages.
Changelog Entry
version: <log entry>

Checklist:

[x] I have performed a self-review of my own code
[x] I have documented my code in accordance with the documentation guidelines
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have run the unit tests
[x] I only have one commit (if not, squash them into one commit).
[x] I have a descriptive commit message that adheres to the commit message guidelines

Please review the CONTRIBUTING.md file for detailed contributing guidelines.

Codecov Report

Merging #626 (5ca1a3d) into main (d75ae87) will increase coverage by 0.70%.
Report is 5 commits behind head on main.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main     #626      +/-   ##
============================================
+ Coverage     68.32%   69.02%   +0.70%
  Complexity      408      408
============================================
  Files           129      151      +22
  Lines         12626    14016    +1390
  Branches        294      294
============================================
+ Hits           8627     9675    +1048
- Misses         3843     4185     +342
  Partials        156      156

Flag
Coverage Δ

rust
67.17% <ø> (+1.07%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 29 files with indirect coverage changes