TDLib 1.7: Performance degradation with message database?

After the release of TDLib 1.7 I did the necessary adjustments to my project so that the new library version can be used soon. However, it seems that my application now suffers from a massive performance degradation during startup if the message database is used. On the same device with the same Telegram account and the same codebase of my app (OK, with small adjustments due to changes how senders or thumbnails are handled), the app now takes about 5 seconds longer to load. During use, performance seems to be more or less the same as with TDLib 1.6.
After having verbose debug logging switched on (level 5), the log revealed that TDLib seems to do nothing for about 5 seconds:
[ 3][t 4][1607455342.965187788][MessagesManager.cpp:12901][#1][!Td]	Receive server message 207388 in chat -1001094603738 from user 71131235/chat 0
[ 3][t 4][1607455342.965258359][MessagesManager.cpp:13017][#1][!Td]	Found temporarily invalid message 0 for server message 207388 in chat -1001094603738
[ 3][t 4][1607455342.965288400][MessagesManager.cpp:31080][#1][!Td]	Adding server message 207388 of type Text to chat -1001094603738 from updateNewChannelMessage. Last new is server message 207387, last is server message 207387, from_update = true, have_previous = true, have_next = true
[ 3][t 4][1607455342.965328216][MessagesManager.cpp:30895][#1][!Td]	Search for server message 207388 in chat -1001094603738 found (nil)
[ 3][t 4][1607455342.965358972][MessagesManager.cpp:30927][#1][!Td]	Trying to load server message 207388 in chat -1001094603738 from database from add_message_to_dialog 2
[ 3][t 0][1607455343.795862436][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607455343.795984506][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607455344.797270059][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607455344.797348260][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607455345.799003124][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607455345.799047231][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607455346.800163269][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607455346.800257444][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607455347.802096128][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607455347.802183866][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 4][1607455347.970407724][MessagesManager.cpp:30895][#1][!Td]	Search for server message 207378 in chat -1001094603738 found (nil)
[ 3][t 4][1607455347.970505475][MessagesManager.cpp:30927][#1][!Td]	Trying to load server message 207378 in chat -1001094603738 from database from preload top reply message
[ 3][t 4][1607455347.974346637][MessagesManager.cpp:21465][#1][!Td]	Loaded message of size 140 from database[ 3][t 4][1607455347.976071357][MessagesManager.cpp:30895][#1][!Td]	Search for server message 207378 in chat -1001094603738 found (nil)

Just to be sure, I removed and re-initialized the database three times - no change. Without the message database, there are no delays, but I'd like to keep it as some nice features are only available with the message database. As said, a fresh install of the app with TDLib 1.6 directly afterwards resulted in an app without any startup delays.
Any ideas, anything I can do?

There was a request to SQLite database at that time. 5 seconds is the value of sqlite3_busy_timeout used by TDLib, which is a maximum time the SQLite tries to lock the database before returning an error for the request. Whenever SQLite encounters a locked database, it calls usleep/sleep multiple times. It expects another thread/process to unlock the database after some short time and to be able to lock it after that.  SQLite uses usleep instead of sleep if it is built with HAVE_USLEEP define. usleep usage is preferred for better performance, so we always build SQLite with this define set:
https://github.com/tdlib/td/blob/eb80924dad30af4e6d8385d058bb7e847174df5e/sqlite/CMakeLists.txt#L43.
Are you using our CMake scripts to build TDLib with that define set?

Yes, I do. I was following the build instructions which were made up by the generator:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=../tdlib -DTD_ENABLE_LTO=ON ..
cmake --build . --target install

But is it really important if usleep or sleep is used? A lock on the database every time on startup sounds like a general issue. Is there any chance to trace accesses to the SQLite database and could it be relevant if other SQLite databases are accessed during startup (I have another SQLite DB which is only used by the app itself)?

There are should be no problems in accessing simultaneously different databases. Could you enable logging of all SQLite requests using setLogTagVerbosityLevel("sqlite", 3)?
Between, it is not possible to link the same app against two different SQLite versions on Linux, because there will be conflincting function definitions. How did you solve this?

Also strace output could be helpful to find, when the database is locked and unlocked.

Nothing to see in addition - with level 3. I used level 5, but there is also hardly any additional information:
[ 3][t 4][1607539280.721049547][MessagesManager.cpp:30927][#1][!Td]	Trying to load server message 242971 in chat 65609948 from database from add_message_to_dialog 2
[ 5][t 1][1607539280.787066698][SqliteDb.cpp:119][#1][!KV][&sqlite]	Start exec [query:PRAGMA synchronous=NORMAL][database:0xf032b990][ 5][t 1][1607539280.787562847][SqliteDb.cpp:123][#1][!KV][&sqlite]	Finish exec [query:PRAGMA synchronous=NORMAL][database:0xf032b990]
[ 5][t 1][1607539280.787730932][SqliteDb.cpp:119][#1][!KV][&sqlite]	Start exec [query:PRAGMA temp_store=MEMORY][database:0xf032b990]
[ 5][t 1][1607539280.787899494][SqliteDb.cpp:123][#1][!KV][&sqlite]	Finish exec [query:PRAGMA temp_store=MEMORY][database:0xf032b990]
[ 5][t 1][1607539280.788056612][SqliteDb.cpp:119][#1][!KV][&sqlite]	Start exec [query:PRAGMA secure_delete=1][database:0xf032b990]
[ 5][t 1][1607539280.788225173][SqliteDb.cpp:123][#1][!KV][&sqlite]	Finish exec [query:PRAGMA secure_delete=1][database:0xf032b990]
[ 5][t 1][1607539280.788380861][SqliteDb.cpp:119][#1][!KV][&sqlite]	Start exec [query:PRAGMA recursive_triggers=1][database:0xf032b990]
[ 5][t 1][1607539280.788548707][SqliteDb.cpp:123][#1][!KV][&sqlite]	Finish exec [query:PRAGMA recursive_triggers=1][database:0xf032b990]
[ 3][t 0][1607539281.600804090][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607539281.600876092][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607539282.602328062][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607539282.602445363][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607539283.604043245][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607539283.604109764][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607539284.611289501][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607539284.611397266][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 3][t 0][1607539285.612565755][Client.cpp:282][&td_requests]	End to wait for updates, returning object 0 (nil)
[ 3][t 0][1607539285.612640619][Client.cpp:274][&td_requests]	Begin to wait for updates with timeout 1.000000
[ 5][t 4][1607539285.916070938][SqliteStatement.cpp:181][#1][!Td][&sqlite]	Start step [query:SELECT data FROM messages WHERE dialog_id = ?1 AND message_id = ?2][statement:0xf0082410][database:0xf0009dc4]
[ 5][t 4][1607539285.919831514][SqliteStatement.cpp:184][#1][!Td][&sqlite]	Finish step [query:SELECT data FROM messages WHERE dialog_id = ?1 AND message_id = [?2][statement:0xf0082410][database:0xf0009dc4]]

The respective strace log looks a little bit more interesting (though I'm an absolut noob in that area). Out of memory errors are quite frequent - however, no idea if they are relevant in that context. Though, there were still >2GB out of 4GB memory free - continuously during startup. I attached an excerpt of the db.sqlite-related logs as a file here.
fernschreiber-strace-sqlite.txt

Moreover, I personally didn't need to solve anything with respect to sqlite. I simply used the normal Qt SQL functions - worked flawlessly so far.

Nothing to see in addition - with level 3. I used level 5,

This means that you set "sqlite" tag verbosity level to 5 and not 3.
I see no evident problems in the strace output. ENOMEM errors aren't an issue. Just everything is very slow and database opening takes almost 3 seconds. Between, provided strace output corresponds to application launch and not the time<PHONE_NUMBER> -<PHONE_NUMBER>.
Could you provide strace -v -T -r  output, so it can be seen, whether the system calls are slow, or everything is slow in between?
How much processor cores are available to the app?

Yes, I increased it to 5...
Please find the new strace log attached. I used the options that you provided plus -f - otherwise nothing would be there from TDLib...
fernschreiber-strace-sqlite-2.txt
The device is a Sony Xperia X (Snapdragon 650, 6 cores, 2 faster ones, 4 slower ones).

@Wunderfitz I see nothing suspicious, except system calls are very slow. In my tests calls to mlock last at most 10-15 microseconds instead of 1000-2000 microseconds in your log. Also, there are a lot of "unfinished" system calls in the log, i.e. there was a context switch during them. Context switches shouldn't be so common, unless there are not enough processor cores.
From the other side calls to clock_gettime have expected performance, so there can be a problem specific to mlock/munlock system calls and Sailfish OS. You can try to build SQLite with define "OMIT_MEMLOCK" to completely remove these calls, Just add "-DOMIT_MEMLOCK" to https://github.com/tdlib/td/blob/eb80924dad30af4e6d8385d058bb7e847174df5e/sqlite/CMakeLists.txt#L40.

Thank you very much for the analysis and for the hint, will try tomorrow as builds take a while and it's already pretty late here...

@levlam OK, I tried, but obviously I failed. With this option, the build of the sqlite part fails:
Scanning dependencies of target tdsqlite
[ 20%] Building C object sqlite/CMakeFiles/tdsqlite.dir/sqlite/sqlite3.c.o
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38802:42: error: ‘close’ undeclared here (not in a function); did you mean ‘clone’?
   { "close",        (sqlite3_syscall_ptr)close,      0  },
                                          ^~~~~
                                          clone
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38805:42: error: ‘access’ undeclared here (not in a function); did you mean ‘acosl’?
   { "access",       (sqlite3_syscall_ptr)access,     0  },
                                          ^~~~~~
                                          acosl
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38808:42: error: ‘getcwd’ undeclared here (not in a function); did you mean ‘getcpu’?
   { "getcwd",       (sqlite3_syscall_ptr)getcwd,     0  },
                                          ^~~~~~
                                          getcpu
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38828:42: error: ‘ftruncate’ undeclared here (not in a function); did you mean ‘strncat’?
   { "ftruncate",    (sqlite3_syscall_ptr)ftruncate,  0  },
                                          ^~~~~~~~~
                                          strncat
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38834:42: error: ‘read’ undeclared here (not in a function); did you mean ‘fread’?
   { "read",         (sqlite3_syscall_ptr)read,       0  },
                                          ^~~~
                                          fread
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38851:42: error: ‘write’ undeclared here (not in a function); did you mean ‘fwrite’?
   { "write",        (sqlite3_syscall_ptr)write,      0  },
                                          ^~~~~
                                          fwrite
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38880:42: error: ‘unlink’ undeclared here (not in a function); did you mean ‘uint’?
   { "unlink",       (sqlite3_syscall_ptr)unlink,           0 },
                                          ^~~~~~
                                          uint
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38889:42: error: ‘rmdir’ undeclared here (not in a function); did you mean ‘mkdir’?
   { "rmdir",        (sqlite3_syscall_ptr)rmdir,           0 },
                                          ^~~~~
                                          mkdir
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38893:42: error: ‘fchown’ undeclared here (not in a function); did you mean ‘fchmod’?
   { "fchown",       (sqlite3_syscall_ptr)fchown,          0 },
                                          ^~~~~~
                                          fchmod
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38900:42: error: ‘geteuid’ undeclared here (not in a function); did you mean ‘getenv’?
   { "geteuid",      (sqlite3_syscall_ptr)geteuid,         0 },
                                          ^~~~~~~
                                          getenv
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38907:42: error: ‘mmap’ undeclared here (not in a function); did you mean ‘fmal’?
   { "mmap",         (sqlite3_syscall_ptr)mmap,            0 },
                                          ^~~~
                                          fmal
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38914:42: error: ‘munmap’ undeclared here (not in a function); did you mean ‘fminmag’?
   { "munmap",       (sqlite3_syscall_ptr)munmap,          0 },
                                          ^~~~~~
                                          fminmag
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38921:42: error: ‘mremap’ undeclared here (not in a function); did you mean ‘creat’?
   { "mremap",       (sqlite3_syscall_ptr)mremap,          0 },
                                          ^~~~~~
                                          creat
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38935:42: error: ‘readlink’ undeclared here (not in a function); did you mean ‘realloc’?
   { "readlink",     (sqlite3_syscall_ptr)readlink,        0 },
                                          ^~~~~~~~
                                          realloc
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘seekAndRead’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:41709:17: warning: implicit declaration of function ‘lseek’; did you mean ‘fseek’? [-Wimplicit-function-declaration]
     newOffset = lseek(id->h, offset, SEEK_SET);
                 ^~~~~
                 fseek
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘full_fsync’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:41951:20: warning: implicit declaration of function ‘fsync’ [-Wimplicit-function-declaration]
 # define fdatasync fsync
                    ^~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:42049:8: note: in expansion of macro ‘fdatasync’
   rc = fdatasync(fd);
        ^~~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘unixGetpagesize’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:42616:15: warning: implicit declaration of function ‘sysconf’; did you mean ‘sscanf’? [-Wimplicit-function-declaration]
   return (int)sysconf(_SC_PAGESIZE);
               ^~~~~~~
               sscanf
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:42616:23: error: ‘_SC_PAGESIZE’ undeclared (first use in this function); did you mean ‘S_BLKSIZE’?
   return (int)sysconf(_SC_PAGESIZE);
                       ^~~~~~~~~~~~
                       S_BLKSIZE
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:42616:23: note: each undeclared identifier is reported only once for each function it appears in
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘unixShmMap’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43169:36: error: ‘PROT_READ’ undeclared (first use in this function); did you mean ‘TRANS_READ’?
             pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE,
                                    ^~~~~~~~~
                                    TRANS_READ
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43169:58: error: ‘PROT_WRITE’ undeclared (first use in this function); did you mean ‘CRYPTO_WRITE’?
             pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE,
                                                          ^~~~~~~~~~
                                                          CRYPTO_WRITE
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43169:57: error: invalid operands to binary | (have ‘struct unix_syscall *’ and ‘struct unix_syscall *’)
             pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE,
                                                ~~~~~~~~~^
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43170:13: error: ‘MAP_SHARED’ undeclared (first use in this function)
             MAP_SHARED, pShmNode->hShm, szRegion*(i64)pShmNode->nRegion
             ^~~~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43169:46: warning: passing argument 3 of ‘(void * (*)(void *, size_t,  int,  int,  int,  off_t))aSyscall[22].pCurrent’ makes integer from pointer without a cast [-Wint-conversion]
             pShmNode->isReadonly ? PROT_READ : PROT_READ|PROT_WRITE,
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43169:46: note: expected ‘int’ but argument is of type ‘struct unix_syscall *’
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43170:13: warning: passing argument 4 of ‘(void * (*)(void *, size_t,  int,  int,  int,  off_t))aSyscall[22].pCurrent’ makes integer from pointer without a cast [-Wint-conversion]
             MAP_SHARED, pShmNode->hShm, szRegion*(i64)pShmNode->nRegion
             ^~~~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43170:13: note: expected ‘int’ but argument is of type ‘struct unix_syscall *’
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43172:19: error: ‘MAP_FAILED’ undeclared (first use in this function); did you mean ‘TK_FAIL’?
         if( pMem==MAP_FAILED ){
                   ^~~~~~~~~~
                   TK_FAIL
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘unixRemapfile’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43433:15: error: ‘PROT_READ’ undeclared (first use in this function); did you mean ‘TRANS_READ’?
   int flags = PROT_READ;               /* Flags to pass to mmap() */
               ^~~~~~~~~
               TRANS_READ
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43433:15: warning: initialization of ‘int’ from ‘struct unix_syscall *’ makes integer from pointer without a cast [-Wint-conversion]
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43461:42: error: ‘MREMAP_MAYMOVE’ undeclared (first use in this function)
     pNew = osMremap(pOrig, nReuse, nNew, MREMAP_MAYMOVE);
                                          ^~~~~~~~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43461:42: warning: passing argument 4 of ‘(void * (*)(void *, size_t,  size_t,  int,  ...))aSyscall[24].pCurrent’ makes integer from pointer without a cast [-Wint-conversion]
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43461:42: note: expected ‘int’ but argument is of type ‘struct unix_syscall *’
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43476:15: error: ‘MAP_FAILED’ undeclared (first use in this function); did you mean ‘TK_FAIL’?
     if( pNew==MAP_FAILED || pNew==0 ){
               ^~~~~~~~~~
               TK_FAIL
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43476:13: warning: comparison of distinct pointer types lacks a cast
     if( pNew==MAP_FAILED || pNew==0 ){
             ^~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43483:35: error: ‘MAP_SHARED’ undeclared (first use in this function)
     pNew = osMmap(0, nNew, flags, MAP_SHARED, h, 0);
                                   ^~~~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43483:35: warning: passing argument 4 of ‘(void * (*)(void *, size_t,  int,  int,  int,  off_t))aSyscall[22].pCurrent’ makes integer from pointer without a cast [-Wint-conversion]
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43483:35: note: expected ‘int’ but argument is of type ‘struct unix_syscall *’
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:43486:11: warning: comparison of distinct pointer types lacks a cast
   if( pNew==MAP_FAILED ){
           ^~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘unixOpen’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:38400:28: warning: implicit declaration of function ‘getpid’; did you mean ‘getpt’? [-Wimplicit-function-declaration]
 #define osGetpid(X) (pid_t)getpid()
                            ^~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:44414:22: note: in expansion of macro ‘osGetpid’
   if( randomnessPid!=osGetpid(0) ){
                      ^~~~~~~~
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c: In function ‘unixSleep’:
/home/ygriega/git/td/sqlite/sqlite/sqlite3.c:44930:3: warning: implicit declaration of function ‘usleep’; did you mean ‘fseek’? [-Wimplicit-function-declaration]
   usleep(microseconds);
   ^~~~~~
   fseek
gmake[2]: *** [sqlite/CMakeFiles/tdsqlite.dir/build.make:63: sqlite/CMakeFiles/tdsqlite.dir/sqlite/sqlite3.c.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:1202: sqlite/CMakeFiles/tdsqlite.dir/all] Error 2
gmake: *** [Makefile:141: all] Error 2

Removing it again makes the build to pass. Any additional ideas? Again thanks for taking care!

Then this is another time SQLCipher broke amalgamation build. Comment lines 22558 (#ifndef OMIT_MEMLOCK) and 22567 (#endif) in the file sqlite/sqlite/sqlite3.c to fix this and continue building with the OMIT_MEMLOCK define.

OK, sorry for the late answer, I had a lot to do over the weekend. With this change the build was successful and I just tested it the first time. What shall I say: Incredible, the 5s delay is completely gone! It's actually not just that, the startup now feels even faster than with v1.6! (Need to measure that in detail however to be sure, but I'd say it doesn't matter - at least on ARM I don't see blockers anymore).
I'll do the i486 build as well and if it looks the same there and I don't encounter any other issues on other devices, I'll close this ticket. I'll keep you posted!

OK, seems to work properly, no performance issues anymore, impressive! Thanks again for the help and for your work on TDLib. I'll close this issue now. :+1:


[firebase_ml_vision] Text is either not detected or scrambled on iOS (Android is working fine!)

Describe the bug
When taking photo of some text, no text is recognised. This seems to only be an issue on iOS devices. For example: On an iPhone 6 the text is not recognised at all in portrait, but OCR works sometimes in landscape. There is also an issue with iPad mini 2 where text is either not recognised or it is mirrored/flipped! I think the image capture from iOS changes the orientation of the saved image or exif data is messed up! I have not seen any of these issues when testing on Android devices.
I have the podfile setup to include 'Firebase/MLVisionTextModel'. This works fine on Android and only appears to be an issue on iOS which is now preventing me from releasing my app.
I had also attempted to use the flutter_image_compress but this seemed to make things worse and also break the Android functionality and as such the flutter_image_compress checks i tried are not included in the source below.
To Reproduce
I've put together this mini test app.  I had a postit and simply wrote "Hello" without quotes on it.  Then run this app on and iPhone 6 and iPad Mini 2 in both landscape and portrait and took a photo of it.  Once done the app will display the photo that was taken along with the text that was detected.  There is also some debug comments in the code to spit out what is seen
pubspec.yaml added plugins
    firebase_ml_vision: ^0.9.4     image_picker: ^0.6.7+1     path:      path_provider: ^1.6.7
main.dart
`
import 'dart:io';
import 'package:firebase_ml_vision/firebase_ml_vision.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart' as syspaths;
import 'package:path/path.dart' as path;
void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
    @override
    _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
    File _image;
    String _detectedText = '';

    Future<String> _takePicture() async {
        setState(() {
            _image = null;
        });

        final _picker = ImagePicker();
        final PickedFile image = await _picker.getImage(
            source: ImageSource.camera,
            imageQuality: 100,
        );

        final File imageFile = File(image.path);

        if (imageFile == null) {
            return null;
        }

        final appDir = await syspaths.getApplicationDocumentsDirectory();
        final fileName = path.basename(imageFile.path);

        final savedImage = await imageFile.copy('${appDir.path}/$fileName');
        return '${appDir.path}/$fileName';
    }

    void _cameraScanSearch() async {
        print('_cameraScanSearch()');
        _image = null;

        final imagePath = await _takePicture();
        if (imagePath == null || imagePath.isEmpty) {
            print('_cameraScanSearch() - imagePath is null');
            return;
        }

        setState(() {
            _image = File(imagePath);
        });

        try {
            var stopWatch = Stopwatch()..start();

            print('_cameraScanSearch() - Camera Scan..');
            final FirebaseVisionImage visionImage =
            FirebaseVisionImage.fromFilePath(imagePath);

            final TextRecognizer _recognizer = FirebaseVision.instance.textRecognizer();
            final VisionText readText = await _recognizer.processImage(visionImage);
            setState(() {
                _detectedText = readText.text;
            });

            print('_cameraScanSearch() - VisionText found -> ${readText.text}');

            var blocks = readText.blocks;
            if (blocks.length == 0) {
                print('_cameraScanSearch() - blocks.length == 0');
            }

            for (TextBlock block in blocks) {
                print('_cameraScanSearch() - block -> $block');
            }
            print('_cameraScanSearch() - search took: ${stopWatch.elapsed}');
            stopWatch.stop();
            _recognizer.close();
        } catch (error) {
            print('_cameraScanSearch() - error: $error');
        }
    }

    @override
    Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                appBar: AppBar(
                    title: Text(
                        'Firebase_ML_Vision - MPV',
                        style: TextStyle(
                            fontSize: 24,
                            fontWeight: FontWeight.w400,
                        ),
                    ),
                ),
                body: SingleChildScrollView(
                    child: Container(
                        child: Column(
                            mainAxisSize: MainAxisSize.max,
                            children: <Widget>[
                                Center(
                                    child: FlatButton.icon(
                                        onPressed: _cameraScanSearch,
                                        icon: Icon(Icons.camera_alt),
                                        label: Text('Take Photo'),
                                    ),
                                ),
                            Text (
                                'Detected Text: $_detectedText'
                            ),

                            if(_image != null)
                                Image.file(_image),
                        ],
                    ),
                ),
            ),
        ), //Scaffold
    );
}}`

Expected behavior
Firebase ML Vision Text should be detecting text in all orientations
Actual behaviour
Text is recognised correctly on Android in both portrait and landscape, however for iOS text is not detected. There may actually be two issues here. 1) Text is not recognised in Portrait, but is detected when the picture is taken in landscape. 2) On iPad Mini 2, text is not recognised and when outputting text it seems to be mirrored and garbage! I think the photo orientation is off when taking photos in iOS devices.
Taking a photo of the word "Hello" on an iPhone 6.. Portrait detects no text.  Landscape detects "jjsh"
Additional context
Add any other context about the problem here.
Flutter doctor
Note that although it complains about the Flutter and Dart plugins, it is launching and running (i think this is a separate issue with flutter doctor and Intellij).
flutter doctor -v
[✓] Flutter (Channel stable, v1.17.3, on Mac OS X 10.15.4 19E287, locale en-GB)
• Flutter version 1.17.3 at /Users/rob/development/flutter
• Framework revision b041144f83 (12 days ago), 2020-06-04 09:26:11 -0700
• Engine revision ee76268252
• Dart version 2.8.4
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Users/rob/Library/Android/sdk
• Platform android-29, build-tools 29.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.5, Build version 11E608c
• CocoaPods version 1.9.1
[✓] Android Studio (version 4.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 46.0.2
• Dart plugin version 193.7361
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
[!] IntelliJ IDEA Community Edition (version 2020.1.1)
• IntelliJ at /Applications/IntelliJ IDEA CE.app
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.dev/intellij-setup/#installing-the-plugins
[✓] Connected device (1 available)
• iPhone 6 • f0c4a8bb34aada27a546e68d7646014db2ca8dc9 • ios • iOS 12.3.1
! Doctor found issues in 1 category.

Issue reproducible on iOS and not on Android

flutter doctor -v
[✓] Flutter (Channel dev, 1.20.0-0.0.pre, on Mac OS X 10.15.5 19F101, locale
    en-GB)
    • Flutter version 1.20.0-0.0.pre at /Users/tahatesser/Code/flutter_dev
    • Framework revision d9653445f4 (6 days ago), 2020-06-09 18:43:03 -0400
    • Engine revision e8c13aa012
    • Dart version 2.9.0 (build 2.9.0-14.0.dev 5c1376615e)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.46.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.11.0

[✓] Connected device (4 available)
    • SM M305F   • 32003c30dc19668f • android-arm64  • Android 10 (API 29)
    • macOS      • macOS            • darwin-x64     • Mac OS X 10.15.5 19F101
    • Web Server • web-server       • web-javascript • Flutter Tools
    • Chrome     • chrome           • web-javascript • Google Chrome
      83.0.4103.97

• No issues found!

The same issue

May i ask would the road-map/time frame usually is for a bug fix like this?  I have had to postpone the release of my iOS app due to this issue and only release to google play (android is working great).  I haven't been able to come up with a viable temporary solution for this iOS issue - which is very frustrating.

@TehRaab Did you try using flutter_image_compress to recompress the image on iOS? It seems to have solved the problems I was having on iOS, where text would only be detected in landscape orientation.
pubspec.yaml
flutter_image_compress: ^0.7.0
code
// Recompress _image to fix orientation/text recognition on iOS
Uint8List compressedBytes = await FlutterImageCompress.compressWithFile(_image.path, keepExif: true);
_image = await _image.writeAsBytes(compressedBytes, flush: true);

@TehRaab Did you try using flutter_image_compress to recompress the image on iOS? It seems to have solved the problems I was having on iOS, where text would only be detected in landscape orientation.
pubspec.yaml
flutter_image_compress: ^0.7.0
code
// Recompress _image to fix orientation/text recognition on iOS
Uint8List compressedBytes = await FlutterImageCompress.compressWithFile(_image.path, keepExif: true);
_image = await _image.writeAsBytes(compressedBytes, flush: true);

Thank you.  I did try this package a while back but must have had something wrong as it works with your method :)

@TehRaab Did you try using flutter_image_compress to recompress the image on iOS? It seems to have solved the problems I was having on iOS, where text would only be detected in landscape orientation.
pubspec.yaml
flutter_image_compress: ^0.7.0
code
// Recompress _image to fix orientation/text recognition on iOS
Uint8List compressedBytes = await FlutterImageCompress.compressWithFile(_image.path, keepExif: true);
_image = await _image.writeAsBytes(compressedBytes, flush: true);

Thank you. I did try this package a while back but must have had something wrong as it works with your method :) I do wonder why the compression help!?

Update - i have had reports from a friend that even with this work around, the issue is still seen.  Landscape is simply not working on his iPhone (X i believe)

I was not able to solve the problem with  flutter_image_compress


can i use popover or other things  make a second menu

Short description of the problem:
need a second menu.I have no idea
What behavior are you expecting?
Steps to reproduce:
1.
2.
3.
insert any relevant code between the above and below backticks

Ionic Version: 1.x / 2.x
Browser & Operating System: iOS / Android / Chrome
Run ionic info from terminal/cmd prompt:
paste output from `ionic info` here

come on

this question is for my work,but my ionic part-time-job is dying,so it seem this issues  is losing his meaning.
ps: i am a chinese,poor at english,i do not known if you can understand the question,if anybody have anything to say,welcome.


Interactive window doesn't start kernel in Remote-WSL

Applies To

[ ] Notebooks (.ipynb files)
[X] Interactive Window and/or Cell Scripts (.py files with #%% markers)

What happened?
When I try to start an interactive window, the editor splits but the window stays empty.
I use the Remote WSL extension to work on the projects in my subsystem.
I assumed maybe it has something to do with the experiments (A/B testing) like in #11003 but I can't disable them with remote wsl.

also the extensions page says the extension is running on wsl:

Is there another way to troubleshoot this?
VS Code Version
1.71.0
Jupyter Extension Version
2022.8.1002431955
Jupyter logs
Visual Studio Code (1.71.0, wsl, desktop)
Jupyter Extension Version: 2022.8.1002431955.
Python Extension Version: 2022.14.0.
Multiple Workspace folders opened <redacted>
info 14:50:43.90: ZMQ install verified.
User belongs to experiment group 'jupyterTestcf'
User belongs to experiment group 'jupyterEnhancedDataViewer'
info 14:50:43.995: LSP Notebooks experiment is enabled
info 14:50:44.764: Experiment status for python is {"enabled":true,"optInto":[],"optOutFrom":[]}
info 14:50:45.190: Starting interactive window for resource '/home/c/warranty/extract_labels.py'
info 14:50:45.806: Process Execution: > ~/miniconda3/envs/w/bin/python -m pip list
> ~/miniconda3/envs/w/bin/python -m pip list
error 14:50:50.51: No remote controllers
info 14:50:50.281: Preferred Remote kernel for Interactive-1.interactive is undefined
error 14:50:50.282: No remote controllers

Coding Language and Runtime Version
Python 3.8.13
Language Extension Version (if applicable)
Python Extension Version: 2022.14.0
Anaconda Version (if applicable)
conda 4.10.3
Running Jupyter locally or remotely?
Local

can you try to explicitly set the python interpreter before opening the Interactive window with the command Python: Select Interpreter (is there an interpreter available?). I've seen something similar when we just don't know which interpreter to use.

Sure I did.
I could select all my conda env interpreters and also the system one.
But the problem is still there regardless which interpreter I choose.

I reinstalled VS Code completely in my WSL by deleting the .vscode-server folder in my home folder.
After installing all extensions again it solved the problem.


Support pure C# DSL keywords in PowerShell

This is slightly premature, given that it assumes #3169 , but I want to lay out a possible roadmap for improving the DSL/DynamicKeyword functionality in that PR.
#3169 provides C# syntax for specifying a dynamic keyword syntax, but achieves the actual keyword functionality by invoking PowerShell functions of the form DslModuleName\DslKeywordName. This works by rewriting the AST at compile time so that what the user has written as keyword invocations get turned into function calls, where the "bodies" of keywords (scriptblocks or hashtables) get passed in as arguments to the function (essentially DSLs are syntactic sugar for nested function calls). This works well, but some users may prefer to write everything within the same file, just like Cmdlets. There are a few steps to make here.

Work out just how much we can change the public, but relatively unused, DynamicKeyword API, which looks like:

$kw = [System.Management.Automation.DynamicKeyword]::new()
$kw.Keyword = "MyKeyword"
$kw.PostParse = { ... }
...
[System.Management.Automation.DynamicKeyword]::AddKeyword($kw)

This API is currently available through and stored by a thread-static variable (as seen above). However, because keywords are specific to a parser session, they are likely better stored as parser-local. This would be a breaking change, but with a good cause -- especially since PowerShell currently keeps the parser and the REPL in different threads. While this API might always have a use, it might be nice to prefer a more fluent way to define DSL keywords within PowerShell (such as a keyword-defining DSL).

Update the DynamicKeywordStatementRule in the parser. Currently this is relatively specific for DSC keywords, and in particular has special logic for names in keywords, and does not allow keywords to use parameters -- parameters passed to a scriptblock- or hashtable-bodied keyword will be ignored. For a suggestion on how an update to this might look, see a rough prototype I wrote.

Separate DSC keywords from DynamicKeyword. This class is currently relatively specific to DSC keywords, and might be better as a base type that DSC keywords can inherit from. It contains assumptions such as ResourceName, as well as an extension class (DynamicKeywordExtension) which would be a good candidate for features on a DscKeyword class.

Break up DynamicKeyword. Currently DynamicKeyword holds information like keyword name and parameter type constraints, that can be read in without loading an assembly, as well as delegates like SemanticCheck that do require an assembly load. Moving to a pure C# implementation without changing DynamicKeyword might result in it becoming a catch-all monolith. Instead, breaking it up might pay some dividends:

A DynamicKeywordMetadata class could hold any information that can be obtained without loading the keyword's containing assembly. Ideally this class would be immutable after construction like other elements in the AST. This could inherit from CommandMetadata, containing things like ParameterMetadata.
A DynamicKeywordInfo class, just like CmdletInfo would contain information evaluated from loading the user-defined type that defines a keyword, and would inherit from CommandInfo. This would similarly be immutable, but more aimed at storing parse-time delegates and being used at compile-time. For a rough prototype, see here.
DynamicKeyword itself would perhaps be better repurposed in the namespace in the same way as Cmdlet, so as the abstract base class that user-defined keywords inherit from, with virtual methods to provide useful abstractions over the complexity of the PowerShell internals. A benefit here is that DSC keywords could be defined by inheriting from DscKeyword. Again, see here.

Compiling the C# keyword. This seemed originally to be a hard problem, since users must be able to specify when the expressions they pass to their keywords get evaluated -- in case they are side-effectful.

(Consider in Pester: I can put a BeforeAll block after all other keywords, but if the keywords above it are executed before it, they might not have the state set up that they need.)
This is solved in the current implementation by passing the body as an expression to the function that implements the keyword -- essentially canning the keyword body like a thunk so that the implementing user can choose when (of if) to evaluate it.
I think a similar method of creating a C# ScriptBlock object for keywords to take in as an argument might work well, which would effectively manage the problem of how state set up by outer keywords is communicated to inner keywords. But it certainly bodes discussion.

Passing parameters to keywords. This is the actual hard problem. In order to use the parameter binding algorithm to set parameters on keywords implemented as C#/.NET objects, we need to use the parameter binder logic to make sure that parameters passed to keywords work and are resolved in exactly the same way as parameters passed to any other PowerShell command -- that users' expectations are met.

From what I've read in the code so far, much of the existing logic is spread across ParameterBinderBase, ParameterBinderController and several others. My understanding is that there are two parameter binders in use. CmdletParameterBinder and ScriptParameterBinder do most of the heavy lifting with some common code in the base class, and PseudoParameterBinder uses a combination of the two internally, while NativeCommandParameterBinder does its best to just pass arguments through as strings. The difficulty arises when CommandProcess assumes that the command invoking it could only be a ScriptBlock or a Cmdlet. However, this might be easier to fix than I think, or more likely I am wrong about how this all works.
This is complicated by the fact that the parameters on keywords (not their values) are known at compile time -- so it's less complicated to perform parameter and parameter type checks than for Cmdlets.
For what it's worth, I have a small start on a C#-keyword parameter binder that doesn't work, but similarly doesn't crash PowerShell (I consider this an achievement...). It seems like the alternatives are:

Rewrite some of the current parameter binder logic so that base classes make less assumptions about subclasses and also provide more of the parameter binding logic in a generic way.
Partially re-implement the parameter binding algorithm in a new subclass of ParameterBinderBase and only touch what needs to be changed in the existing parts of code like CommandProcessor.

This is as far as I've gotten with moving dynamic keywords to a pure C# implementation -- and I wanted to record it for discussion.

I might reformat this later to make it more readable...

Closing this in favour of further discussion of how we implement DSLs in PowerShell

Closing this in favour of further discussion of how we implement DSLs in PowerShell


bugfix: update colorscheme session default value

Update colorscheme session default value
What changes are proposed in this pull request?
(Please fill in changes proposed in this fix)
How is this patch tested? If it is not, please explain why.
(Details)
Release Notes
Is this a user-facing change that should be mentioned in the release notes?

[x] No. You can skip the rest of this section.
[ ] Yes. Give a description of this change to be included in the release
notes for FiftyOne users.

(Details in 1-2 sentences. You can just refer to another PR with a description
if this PR is part of a larger change.)
What areas of FiftyOne does this PR affect?

[x] App: FiftyOne application changes
[ ] Build: Build and test infrastructure changes
[ ] Core: Core fiftyone Python library changes
[ ] Documentation: FiftyOne documentation changes
[ ] Other

included in
https://github.com/voxel51/fiftyone/pull/3841


Looking for example JSON for events

Wondering if you would be willing to post an example of a working JSON for getting events.  I am doing some testing for another project and cannot seem to formulate the parameters correctly.  I tried to follow your code but python is not my thing.  Thanks in advance.

This will get you all events for all devices in the last 24 hours:
client.events.list(begin=datetime.now() - timedelta(hours=24), event_values=[EventAlarmType.MOTION, EventAlarmType.SOUND])
You can optionally filter by specific devices and/or event types based on the documentation here: https://wyze-sdk.readthedocs.io/en/latest/wyze_sdk.api.html#events


Getting DOMException [NotFoundError: "Node was not found"

I implemented vue-progress but when i switch between routes I get the following error
DOMException [NotFoundError: "Node was not found"

Routes
export default [
    {path: "/",name:"home", component: (resolve) => { require(["../components/views/home.vue"], resolve)}, },
    {path: ":referral",name:"home", component: (resolve) => { require(["../components/views/home.vue"], resolve)} },
    {path: "/404",name:"404", component: (resolve) => { require(["../components/views/404.vue"], resolve)}},
    {path: "/403",name:"403", component: (resolve) => { require(["../components/views/403.vue"], resolve)}},
    {path: "/contact",name:"contact", component: (resolve) => { require(["../components/views/contact.vue"], resolve)} },
    {path: "/contact/:referral",name:"contact", component: (resolve) => { require(["../components/views/contact.vue"], resolve)} },
    {path: "/privacy/:referral",name:"privacy", component: (resolve) => { require(["../components/views/privacy.vue"], resolve)} },
    {path: "/privacy",name:"privacy", component: (resolve) => { require(["../components/views/privacy.vue"], resolve)} },
    {path: "/terms",name:"terms", component: (resolve) => { require(["../components/views/terms.vue"], resolve)} },
    {path: "/terms/:referral",name:"terms", component: (resolve) => { require(["../components/views/terms.vue"], resolve)} },
    {path: "/signupplan",name:"supplan", component: (resolve) => { require(["../components/views/singupplans.vue"], resolve)} },
    {path: "/signupplan/:referral",name:"supplan", component: (resolve) => { require(["../components/views/singupplans.vue"], resolve)} },
    {path: "/faq",name:"faq",component: (resolve) => { require(["../components/views/faq.vue"], resolve)} },
    {path: "/faq/:referral",name:"faq",component: (resolve) => { require(["../components/views/faq.vue"], resolve)} },
    {path: "/signup/:referral",name:"signp", component: (resolve) => { require(["../components/views/users/signinup.vue"], resolve)} }
]

app.vue
<template>
    <div>
        <router-view></router-view>
        <vue-progress-bar></vue-progress-bar>
    </div>
</template>

<style>
    @import '../../css/load.css';
     body{
         height:100%;
     }
    .mdl-layout-login {
        align-items: center;
        justify-content: center;
    }
    .mdl-layout__content-login {
        padding: 24px;
        flex: none;
    }

</style>

<script>
    export default {
        mounted () {
            //  [App.vue specific] When App.vue is finish loading finish the progress bar
            this.$Progress.finish()
        },
        created () {
            //  [App.vue specific] When App.vue is first loaded start the progress bar
            this.$Progress.start()
            //  hook the progress bar to start before we move router-view
            this.$router.beforeEach((to, from, next) => {
                //  does the page we want to go to have a meta.progress object
                if (to.meta.progress !== undefined) {
                let meta = to.meta.progress
                // parse meta tags
                this.$Progress.parseMeta(meta)
            }
            //  start the progress bar
            this.$Progress.start()
            //  continue to next page
            next()
        })
            //  hook the progress bar to finish after we've finished moving router-view
            this.$router.afterEach((to, from) => {
                //  finish the progress bar
                this.$Progress.finish()
        })
        }
    }
</script>

Libraries
    "@websanova/vue-auth": "^2.11.0-beta",
    "axios": "^0.15.3",
    "babel-core": "^6.24.1",
    "babel-eslint": "^7.2.1",
    "babel-loader": "^6.4.1",
    "babel-plugin-transform-object-rest-spread": "^6.23.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "bootstrap-sass": "^3.3.7",
    "css-loader": "^0.23.0",
    "dropzone": "^4.3.0",
    "file-loader": "^0.9.0",
    "gulp": "^3.9.1",
    "image-webpack-loader": "^3.3.0",
    "jimp": "^0.2.27",
    "jquery": "^3.1.0",
    "laravel-elixir": "^6.0.0-9",
    "laravel-elixir-vue-2": "^0.2.0",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.16.2",
    "material-design-lite": "^1.3.0",
    "path": "^0.12.7",
    "responsive-loader": "^0.7.0",
    "style-loader": "^0.13.0",
    "svg-url-loader": "^1.1.0",
    "url-loader": "^0.5.8",
    "v-qrcode": "^1.0.3",
    "vee-validate": "^1.0.0-beta.10",
    "vue": "^2.2.6",
    "vue-axios": "^1.2.2",
    "vue-hot-reload-api": "^2.0.11",
    "vue-html-loader": "1.2.3",
    "vue-lazyload": "^1.0.3",
    "vue-loader": "^11.3.4",
    "vue-mdl": "^1.1.1",
    "vue-progressbar": "^0.7.2",
    "vue-qrcode-component": "^2.1.1",
    "vue-resource": "^1.3.1",
    "vue-router": "^2.4.0",
    "vue-scrollto": "^2.4.2",
    "vue-strap": "^1.0.11",
    "vue-style-loader": "^1.0.0",
    "vue-template-compiler": "^2.2.6",
    "vue2-dropzone": "^2.2.6",
    "vuelidate": "^0.2.0",
    "vuex": "^2.3.0",
    "webpack": "^2.3.3",
    "webpack-dev-server": "^1.16.1"

app.js
import Vue from 'vue'
import VueQRCodeComponent from 'vue-qrcode-component'
import VueResource from 'vue-resource'
import VueRouter from 'vue-router'
import VueAuth from '@websanova/vue-auth'
import VueProgressBar from 'vue-progressbar'
import App from './components/app.vue'
import mdl from 'material-design-lite'
import VueMdl from 'vue-mdl'
import VueX from 'vuex'
import axios from 'axios'
import VueAxios from 'vue-axios'
import VueScollTo from 'vue-scrollto'
import VueLazyload from 'vue-lazyload'
import VeeValidate from 'vee-validate'

Vue.use(VueRouter);
Vue.use(VueResource);
Vue.use(VeeValidate);
Vue.use(VueMdl);
Vue.use(VueAxios, axios);
Vue.use(VueScollTo);

const options = {
    color: '#bffaf3',
    failedColor: '#874b4b',
    thickness: '5px',
    transition: {
        speed: '0.2s',
        opacity: '0.6s',
        termination: 300
    },
    autoRevert: true,
    location: 'left',
    inverse: false
}

Vue.use(VueProgressBar, options)

/*Import Routes */
import siteRoutes from './routes/site'
import adminRoutes from './routes/adminroutes'
import userRoutes from './routes/userroutes'

/*Define Routes Object */
const loadRoutes = [
    ...siteRoutes
];

/*Define Router */
const router = new VueRouter({
    hashbang: false,
    linkActiveClass: 'active',
    mode: 'history',
    routes:loadRoutes
});

Vue.router = router;
/*End Define Router */

Vue.use(VueLazyload, {
    preLoad: 1.3,
    error: '/images/loose/loader-error.svg',
    loading: '/images/loose/loader.svg',
    attempt: 5,
    listenEvents: [ 'scroll' ]
})

// register custom select
Vue.component('select-c', require('./components/custom/select.vue'));

/*Register Dropzone */
Vue.component('dropzone', require('./components/custom/dropzonetwo.vue'));

/*QrCode */
Vue.component('qr-code', VueQRCodeComponent);

/*CRFC TOKEN For form validations */
Vue.http.headers.common['X-CSRF-TOKEN'] = document.querySelector('#token').getAttribute('content');

Vue.http.options.root="";

Vue.use(VueAuth,{
    authRedirect:'/',
    auth: require('@websanova/vue-auth/drivers/auth/bearer.js'),
    http: require('@websanova/vue-auth/drivers/http/vue-resource.1.x.js'),
    router: require('@websanova/vue-auth/drivers/router/vue-router.2.x.js'),
    token: [{request: 'token', response: 'token', authType: 'bearer', foundIn: 'header'}],
    tokenName:'token',
    loginData: {url: '/api/auth', method: 'POST', redirect: 'dashboard'},
    logoutData: {url: '/api/logout', method: 'POST', redirect: 'login',  makeRequest: false},
    fetchData: {url: '/api/account', method: 'GET' , authType: 'bearer',enabled: true},
    rolesVar: 'role_id',
    refreshData: {enabled: false}
});

const app = new Vue({
    router,
    ...App
})

app.$mount('#app');

i am also have the same problem when I changed style by clicked on button.
 let btn2 = this.$refs['subs_'+channel_id][0].$el          if(btn2.innerText == "UNSUBSCRIBE"){           let newClass = btn2.getAttribute("class").replace("grey","red");           btn2.setAttribute("class",newClass);           btn2.innerText = 'Subscribe';          }else{           let newClass = btn2.getAttribute("class").replace("red","grey");           btn2.setAttribute("class",newClass);           btn2.innerText = 'UnSubscribe';          }


Backtracking Algorithms

Hii there! The available resources section does not currently have a backtracking category. I propose to add in one. We have many questions under this label as follows :

N-Queens
Subset Sum
Hamiltonian Cycle
Rat in a Maze
Knights Tour
and more....

I hope you can assign this issue to me. First thing first, I can work upon the N-Queens problem for a quick start to this category.
Please assign this issue to me. Thank You.

Please raise one issue per algorithm (by the some of the mentioned algo. are already a part of open issues)


feat: default to production when running sst deploy

Following the docs sst deploy uses personal stage by default rather than default stage production.
Alternative: update docs with sst deploy --stage production
ion 0.0.270

@arpadgabor To be fair, I managed to confuse myself as the what the default behaviour should be. A default dev would look a touch weird without the "local" tag in the sst console. Idk, maybe it's fine as is?

Thing is, there's a difference in behaviour between deploy and dev. sst dev deploys dummy code into your lambdas and that code forwards requests to a local server that is running on your computer. sst deploy will create a full-fledged deploy. Personally, I don't want to ever "deploy" to a local stage, as I use that for local development. However when I do want to do a deploy I want it to go into a place where all components work completely in the cloud.
Also, there are cases when you want to exclude a resource from a cloud deployment (e.g. databases or other heavy/expensive resources), so an sst deploy that targets a local stage could potentially crash.

@AdditionAddict is this from the quick starts? Like this one for example, https://ion.sst.dev/docs/start/nextjs
We've changed some things in Ion with how frontends work in your personal stage. It makes it quicker to deploy your app from your personal stage.
Maybe we can add a separate note that tells people to deploy to prod with a separate stage.

@jayair yeah the remix one, was just surprised coming from sst v2
I basically never want to deploy personal, it'd always be staging/production

Yeah I'll write a separate doc on "Going to production" but for the quick start it's okay to deploy your personal stage.
Closing this for now.


Add more information when registering the worker

Is your feature request related to a problem? Please describe.
When the worker is registered, the worker transmits less information to the Master. When deploying an alluxio cluster, we need to know the version of the alluxio ,and the startTime can help in judging whether the worker is restarting.
Describe the solution you'd like
Add the version information and start time of the worker
Urgency
Normal
Additional context
No

@maobaolong @codings-dan As we discussed in the last AI sync, can you help add more detailed upper level information about why this change is needed? Like the background usecase


Why is Ids_outer necessary for HSubstLemmas?

I'm using HSubst in a case where the outer type doesn't have variables of its own (first-order logic; terms are a separate type, variables are bound by quantifiers in the props). I want to derive HSubstLemmas, but it depends on having an Ids instance for the outer type, even though that's impossible here. I glanced at the source and I don't see any obvious reason why it has that dependency... Can it be removed?

I'm having the same problem while trying to formalize Peano arithmetic. From the manual, I guess it is necessary to derive the lemma (ids x).|[sigma] = ids x, even though the Ids instance for the outer type is not listed as dependency. Is there any way this can be changed in the future in order to allow the outer type not to have binders?

This is one of the things that we are changing for Autosubst 2 (very preliminary report at: https://www.ps.uni-saarland.de/extras/lfmtp17/).
In Autosubst 1, I think that we are using Ids_outer somewhere to derive HSubstLemmas. I guess it's possible to remove the constraint from the class, but the derive tactic will fail and you will have to provide your own implementation.
A "better" - as in working but hacky - way around this problem can be to use nested types with MMap instances instead.
For example, suppose you want to represent terms for call-by-value reduction. The obvious solution would be to use mutual inductive types:
Inductive term :=
| app (s t : term)
| val (v : value)
with value :=
| var (x : var)
| lam (b : {bind value in term}).

Apart from the fact that we don't even support mutual inductive types at the moment this would fail because instantiation in terms is not a heterogeneous instantiation operation as currently implemented in Autosubst - there are no term variables.
An alternative presentation of the system as a nested inductive type does work though. Here are all the messy details:
Inductive term_of {T} :=
| app (s t : term_of)
| val (v : T).

Inductive value :=
| var (x : var)
| lam (b : {bind value in @term_of value}).

Section MMapTermOf.
  Variable (A B : Type).
  Variable (MMap_A_B : MMap A B).
  Variable (MMapLemmas_A_B : MMapLemmas A B).
  Variable (MMapExt_A_B : MMapExt A B).

  Global Instance mmap_term_of : MMap A (@term_of B). derive. Defined.
  Global Instance mmapLemmas_term_of : MMapLemmas A (@term_of B). derive. Qed.
  Global Instance mmapExt_term_of : MMapExt A (@term_of B). derive. Defined.
End MMapTermOf.

Instance Ids_value : Ids value. derive. Defined.
Instance Rename_value : Rename value. derive. Defined.
Instance Subst_value : Subst value. derive. Defined.
Instance SubstLemmas_value : SubstLemmas value. derive. Qed.

Definition test : value :=
  lam (app (val (var 0)) (val (var 1))).
Compute test.[ren (+1)].


vscode doesn't notice typechange on files

VSCode Version: 1.15.1
OS Version: Ubuntu 16.04.3 LTS

Steps to Reproduce:

Create symlink like link -s libx--1.0.so.1 libx.so
Commit the change
delete the symlink, replace it with a copy of the file (rm libx.so && cp libx-1.0.so.1 libx.so)

git status shows typechange: libx.so
while vscode shows no changes.

Reproduces without extensions: Yes (shows no changes while git status does)

Tracked in https://github.com/Microsoft/vscode/issues/5970


After upgrading to 3.0.2, can't create or update records when json field is null

I'm having a similar error to https://github.com/prisma/prisma/issues/9199 after upgrading to Prisma 3.0.2 (from 2.x)
I have also ran prisma migrate with no changes in order to cohere with Upgrade Path for referential actions and named constraints
datamodel in particualar:
model Room {
  id        String    @id @default(cuid()) @db.VarChar(30)
  name      String
  updatedAt DateTime  @updatedAt
  createdAt DateTime  @default(now())
  accountId String    @map("account") @db.VarChar(30)
  bgColor   Json?
  account   Account   @relation(fields: [accountId], references: [id])
  bookings  Booking[]

  @@index([accountId])
}

Mutation from Nexus:
    t.field('createRoom', {
      type: 'Room',
      args: {
        name: nonNull(stringArg()),
        accountId: nonNull(idArg()),
        bgColor: arg({type: "Json"}),
      },
      resolve: (_parent, args, ctx) => ctx.prisma.room.create({
        data: {
          ...args
        }
      })
    });

Error when bgColor is null (the same thing when creating or updating):
Invalid `prisma.room.create()` invocation: { data: { name: 'Test Room', accountId: 'ckm7v6zpi00130huil8hbwvlk', bgColor: null ~~~~ } } Argument bgColor for data.bgColor must not be null. Please use undefined instead.```

Originally posted by @chemicalkosek in https://github.com/prisma/prisma/issues/9199#issuecomment-919430264

Thanks @chemicalkosek for the great issue. With the model and query included in it, we should be able to reproduce the behavior in 2.x and 3.x and see if we also get the same difference you are describing.

I think this is expected as this is listed as a breaking change in 3.x
https://www.prisma.io/docs/guides/upgrade-guides/upgrading-versions/upgrading-to-prisma-3#json-null-equality

I don't think it is, we've been through it already the linked issue.
I'm not doing any filtering by Json. It's creating or updating a record with a null Json field value.

Hi, I'm also running into the same issue. I'm doing:
prisma.foo.update({ where: { ... }, data: { someJsonColumn: null }});

And am receiving the error message:
Argument someJsonColumn for data.someJsonColumn must not be null. Please use undefined instead.

However, if I understood things correctly, I'm not sure that this can be quite right:

By using null, I want to set a MySQL NULL value, regardless of what was there before
If I used undefined, I think that would let the value unchanged from whatever it was before

Is that a correct understanding? If so I think this is a genuine bug, and not an expected change?

I can't modify JSON fields to null anymore since 3.0...
Any workarounds?

That would mean rewriting even the simplest resolvers such as
 resolve: (_parent, args, ctx) => ctx.prisma.room.create({
        data: {
          ...args
        }
      })

to check for json null values.
Can we make a default that will transform the null value to the previous behaviour? Or such thing will not be possible?

Just ran into this issue. We uncovered the issue while doing the following:
const record = repository.find() // does a `prisma.find()` underneath the hood;
record.foo = "bla";
repository.createOrUpdate(record) (does a `prisma.upsert({where: ..., create: record, update: record})` under the hood;

I'm having a hard time understanding why we now need to go through all of records attributes and convert any nulls into Prisma.JsonNull. And since we've abstracted prisma under our Repository abstraction, we're either going to have to couple prisma code (Prisma.JsonNull) in the caller (we wrote the repository to abstract the orm) or do some very tricky code in the repository because we have no way of knowing if the null was due to an explicit (makes this null in the db) or don't bother since it was already null in the db and I just looked it up.
Maybe I'm missing something?

Erm ok hold on. We're on prisma v3.0.2 and we don't even have Prisma.JsonNull but we're seeing this error message: https://github.com/prisma/prisma/issues/9344 so now I'm really stumped. :(

Not only this is bit weird not allowing to insert real null, but also jusing Prisma.JsonNull it inserts null string rather than db NULL
e.g. from postgres

and that's on latest Prisma 3.8.1

here is a handy function to convert all null to DbNull if that can help
import { Prisma } from '@prisma/client';

export const replaceNullWithDbNull = (obj: Record<string, any>) => {
	for (const key in obj) {
		if (obj[key] === null) {
			obj[key] = Prisma.DbNull;
		} else if (typeof obj[key] === `object`) {
			replaceNullWithDbNull(obj[key]);
		}
	}

	return obj;
};

Would be nice to have a simple option that converts nulls to DbNulls automatically.

Hello!
Can it be mentioned somewhere in the docs? I've stumbled upon this, since I've been looking for:
where: {
    field: {
        not: null
    }
}

on a Json type field, and Prisma was giving me errors.
The solution was:
where: {
    field: {
        not: Prisma.DbNull
    }
}

Not sure if it's mentioned, since my Googling didn't show anything of the sort.
Thanks in advance!

Let us know if you stumbled over some places where we could or should have linked that information. Always important to surface such separate content in the right spots.

I'd say that a good spot would be in "Null and undefined" section, as an explanation that e.g. "for data consistency purposes, Prisma utilises helper types, such as DbNull or JsonNull". That'd explain, why not: null is misbehaving with Json type fields.
Of course now that I've localised the exact explanation as mentioned, I can't say it's nonexistent - nevertheless, it would be of great help to put Json type null-ish values near the null-related topic.

I created a docs issue so someone can think about this in the future: https://github.com/prisma/docs/issues/5012 Thanks for the feedback!


V9.1.3 - #9 Export Data Test Script

#9 Export Data
Added

test following manual script 21
cdisc odm xml file for import
commands to support test
async-csv node module to support parsing exported csv data

@AndrewPoppe - Thanks for all of your hard work!  I've been out of the office so I'm catching up on some stuff, but this is definitely on my radar.  I'm hoping to examine it all soon.  Thanks!

@aldefouw Yep no worries, I've made some decisions in this one that we may want to discuss. And I found I had to add some cy.wait() calls in a few places to make the tests run consistently so maybe we can review better ways of doing that.

@AndrewPoppe  - We can certainly talk about cy.wait() ...
There might be a few instances where you can't avoid waits.  I generally try to rely on the user interface changing in some way to prevent using a wait.  (You can use .should() statements, which are Promises and that's a more robust way to handle it.)
There are a rare few times I've seen that there is no user interface change, which can make things nearly impossible without a wait.
That said, even in those cases, if there are AJAX queries being made in the background and that corresponds to what you're watching for, that's something you can use to your advantage:
Have a look here at an example of an AJAX wait:
https://github.com/aldefouw/redcap_cypress/blob/57ca63cf62f0ae53ab7a5946d2c09af49d827af2/cypress/support/core/commands.js#L220-L254
We can chat more during our meeting tomorrow.  Thanks again!


Setting count via AddCustomQueryParameter

customRequestParameters.AddCustomQueryParameter("since_id", cursor.SinceId);
customRequestParameters.AddCustomQueryParameter("max_id", cursor.MaxId);
//customRequestParameters. AddCustomQueryParameter("count", cursor.Count.ToString());

Third line is commented out due to "count  already added exception."
Instead of setting it there as shown in the snippet, I used the code below ;
var customParameters = new HomeTimelineParameters();
customParameters.MaximumNumberOfTweetsToRetrieve = cursor.Count;

this works.But setting all the cursor related parameters at one place in an extension method is quite neat in my opinion.Now I am going to set these parameters separately for every endpoint that utilizes Cursoring. I checked the source code where tweetinvi adds count to tuple.Would it be possible to check whether count is already added before adding? So it will give me the ability to set it this way.
Thanks.

Hello,
I will try to do that for the next release but I do not promise anything at this stage of development.
Cheers,
Linvi

Thank you for your time. Tweetinvi is a great project.
On Mon, Feb 26, 2018 at 10:41 PM, linvi<EMAIL_ADDRESS>wrote:

Hello,
I will try to do that for the next release but I do not promise anything
at this stage of development.
Cheers,
Linvi
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/linvi/tweetinvi/issues/660#issuecomment-368624258,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATqfsZY2ruUxy0VISNdpdOYN2jKFwUMmks5tYwjMgaJpZM4STX8p
.

Moving to 2.3 as it requires consideration that would delay the release of 2.2 which is already way overdue.
Thanks for your understanding.


Bulbs crystallize by fluid when they shouldn't

When you put an already-typed crystal into the bulb it should respect you want to crystallize that, and not prevent it from growing just because the bulb has more of a different goo type in it (which is how it selects the initial crystal to make quartz into, but beyond that, it's a bug).
According to Ento this is the current behavior - will try to repro and then fix, presuming it is wrong.

Pretty sure I've got this fixed in the next build.


Version 5.1.1 missing git tag

Release 5.1.1 has no corresponding git tag (https://github.com/datalust/serilog-sinks-seq/pull/166)
This is quite unsettling, regarding recent malware attacks on third party dependencies.
Could you please add the tag / github release?

Thanks for the heads-up, Mario! I've created a tag now; seems we have a release publishing issue in CI, I'll take a look.


Use TaskSpec in local dask execution

This effectively causes all dask/dask schedulers to convert to the new task spec and use it as an execution backend.
Todos

~Haven't done a sanity perf check but if there is something slow, it is likely because it is still using tuples as tasks (the parsing has some overhead)~ I believe that these kinds of tests are currently premature. I also haven't seen anything significant happening when running distributed tests and expect performance to improve in follow up PRs either way
the module structure is a little messed up. For now I put in lazy imports but it would be nice if that wasn't necessary everywhere. Might be not as bad as it looks but I haven't spent the time to clean this up properly.
(Follow up) Migrate the internals to use TaskSpec. A couple of heavy hitters like Blockwise would already go a long way. The more we migrate, the less overhead the converter has.

Note

I am removing a non-underscored function from dask.core. That's technically a breaking change. However, I would like to propose to make everything in dask.core private. It's effectively a second utils package. We might want to kill the entire module since it's really confusing since there is also dask.base which is much more meaningful and contains more valuable user facing stuff.

xref https://github.com/dask/dask/issues/9969

this is ready to merge. There are a few subtle breaking changes. However, they are so deeply burried that I do not believe a proper deprecation cycle is required.
For example:

The Profiler class (which I never used and only vaguely remember even knowing about) returns the new task spec instead of the tuples regardless of what the user put in
The function dask.core.has_tasks is gone
Callbacks (I actually didn't know this exists) now also receive the new task spec instead of the tuple

The documentation about our task spec has not been updated yet, see https://docs.dask.org/en/stable/spec.html At this point, this change is entirely internal and we're fully backwards compatible so I don't consider it necessary to have this page updated with this PR (but I'll follow up)

The one test failure is https://github.com/dask/dask/issues/11460


Nix flake tweaks

I noticed while reading the recently merged flake that there were some formatting inconsistencies, and an outstanding TODO to move the package into it's own file.
This PR is broken into a few commits that achieve the following:

Break the magmawm package into its own file
Remove reliance on flake-parts to simplify flake
Ensure rust-overlay follows this flake's nixpkgs instance
Include a package overlay so people can more easily consume the package on their system
Apply formatting with nixpkgs-fmt
Adds meta section to package
Read package version from Cargo.toml

Overall I think this will result in needing to change fewer things when bumping versions and adding/removing dependencies.
Happy to make any changes as necessary! :+1:

logged onto discord on my phone just to say the pr number is nice lol, while im here thx for the pr ill look into it, i dont do nix so maybe @nixos-goddess can review

No problem! I also just added a simple Github Action so that it's easy to see if the Nix build breaks in the future.

nice pr number
also keep in mind #68 so it may take a bit for people to get to you

I like how two of the developers commented just to say that number 69 is funny

I like how two of the developers commented just to say that number 69 is funny

@jnsgruk is this ready to merge or are there any changes

AFAICT this is ready to go :slightly_smiling_face:

Thanks! Feel free to ping me if there are ever any issues and I'll do what I can to help!


[Benchmark]: The throughput benchmark result does not match the one of paper

Your current environment
Collecting environment information...
 With the params unchanged but the --num-prompts. I set --num-prompts 1000 to run the script and the result is as follow:

The throughput does not show a significant or regular pattern with changes in the --compression-rate. Is there a limit to the improvement in throughput from KV compression?
Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

Hi there 👋
We don't actually report throughput benchmarks for the 8B model on an H100--all 8B throughput benchmarks were run on an NVIDIA L4. We did run throughput benchmarks for the 70B model on an H100, so you should be able to reproduce those on your hardware.
But to answer your question, yes there absolutely is. The improvement in thoughput is very small when the amount of allocable cache space is large (eg. when running small models on GPUs with lots of vRAM) since large decoding batches can then fit in cache even without any compression. Because of this, our evaluations focus on model/hardware configurations where most of the available memory is allocated to the model parameters.
An additional factor is the input token length. The shorter the inputs are, the easier it is to fit large batches into limited cache space without compression. As input length increases, eventually the limited cache space will impose a limit on the maximum batch size that can be used during decoding, hurting throughput. At this point, compression can be used to free up cache space and improve throughput.
Thanks for taking the time to reproduce the results. If you have any with input_len > 500 I'd be interested to see them!


Fixed #29718 -- Doc'd admin template collision backwards incompatibility in Django 2.1.

https://code.djangoproject.com/ticket/29718

git push origin ticket_xxxxx


Expected sql object and actual object assesrtion doesn't hold true

Describe the bug
Like the example given in the documentation
    expected_anyalsis3 = CombinedAnalysis(3, some, anyalsis, values)
    anyalsis3 = session.query(CombinedAnalysis).get({"pk1": 3})
    assert anyalsis3 == expected_anyalsis3

The above assertion fails, however the column values are same but the _sa_instance is different for both the objects.
Expected behavior
The assertion should not consider the instance id
Possible solutions

Assertion method to check only values

OS: debian
Version : SQLAlchemy==1.4.23

Not sure I fully understand, can you give more context into what exactly you ran?
The example in the documentation is merely exemplary to what this library can perform, and not directly runnable.
If the assertion is failing due to unequal objects, then you can implement an __eq__  on the object to do the comparison the way you desire. The assertion behavior is not determined by this library, but by python itself (the same as the == operator). The default __eq__ for an SQLAlchemy object inheriting from Base may not always serve your needs.
Again, I could be misunderstanding what you are saying, so feel free to comment explaining what I missed.

Closing issue. Feel free to re-open if you feel there is more to this issue that I am missing.

Not sure I fully understand, can you give more context into what exactly you ran?
The example in the documentation is merely exemplary to what this library can perform, and is not directly runnable.
If the assertion is failing due to unequal objects, then you can implement an __eq__ on the object to do the comparison the way you desire. The assertion behavior is not determined by this library, but by python itself (the same as the == operator). The default __eq__ for an SQLAlchemy object inheriting from Base may not always serve your needs.
Again, I could be misunderstanding what you are saying, so feel free to comment explaining what I missed.

@rajivsarvepalli Yes you are right, I figured this while digging into the assertion, thanks!


handle IRS "b notice" / cp2100 (backup withholding for TIN mismatch)?

Any plans to handle the "sad path" of 1099 filing, cp2100(a) (aka B notice), when TINs and names on 1099s you generate don't match IRS records?
https://www.irs.gov/pub/irs-pdf/p1281.pdf

Great question Tom! I have a few questions / topics from that:

It looks like we would need to store a reference that a CP2100 (and later a CP2100A) notice has been received for a specific document. In #50 we're starting to add the concept of a document_id this could be associated to.
The corrected file would need to be created and submitted. We're going to support submitting files, so corrected files will follow suit.
Our library doesn't support W9's right now, which is a requirement of this.
The ledgering support for B notices seems out of scope for this project.
We need to handle parsing the B Notices?

Does this sound correct so far?

I'm no tax expert but that sounds about right.
If I understand the PDF I linked, B notices might be supplied on paper (<25 errors) but usually end up being delivered by CD/DVD! I hope by the time you're adding this that they support SFTP ;)
For W9, I leave it to y'all to consider if it lives in irs, watchman or customers, or someplace else. There's some fairly clear guidance on required language and what to collect for a "substitute" here: https://www.irs.gov/instructions/iw9#idm140098828624048
If I understand your note, I think the ledgering requirements for B notices would need to be supported wherever you're paying interest or wherever you'd otherwise have to set aside withheld funds - agree that's out of scope for the irs project as you've positioned it so far. Probably accounts in moov land?

Ouch. CD/DVD would require a human to read those off and likely manually find the linked records.
The ledgering requirement would be outside moov-io/irs for sure, but part of a larger Moov service.


IDE uses new visualization API

Pull Request Description
PR integrates new visualization API that uses method pointers instead of lambdas as visualization expressions.

Important Notes

Checklist
Please include the following checklist in your PR:

[x] The documentation has been updated if necessary.
[x] All code conforms to the
Scala,
Java,
and
Rust
style guides.
All code has been tested:

[x] Unit tests have been written where possible.
[x] If GUI codebase was changed: Enso GUI was tested when built using BOTH
./run ide build and ./run ide watch.

Please double-check that all calls to this have been update. This is a change that can easily cause issues as the arguments have the same type and this will only fail at runtime.

I'm pretty sure I updated all of them. Unless grep failed me :sweat_smile:


OOP School Library: Create Initial Classes

OOP School Library: Create Initial Classes
In this branch, I have done the following
✅ created a class Person
✅ created a class Student
✅ created a class Teacher
✅ updated the ReadMe file
✅ fixed all errors spotted by linters

Thanks for the review @mikethreels


Problem with the Opinion page chart and formatting

Is it my imagination or are there a few problems with the Opinion page (that I've never noticed before) @ronm123 @FayCross ?
This demo asks 11 questions:

But the first Question text is centred (or at least an attempt has been made to centre it - it's slightly off) and the rest (although they have "text-align: centre" style added) are not centred - I think I prefer the left justified version anyway but just wondering if this is new?
Also the chart, although it displays with the correct selections, it is showing the Page Title as the popup for every question's results:

Should this not be the actual Question text? Or am I just being a bit dense?
Also do we think that the numeric parts should display a % sign afterwards?

Seems that qTxt class was being applied to the question holder but no style had been setup. The questions were not centre-ing  because the 'center' style had been added in the editor to the  tags but they weren't expanding to full width...
These two bugs are present here too @ronm123 - not sure how long they have been like that...
https://xot.xerte.org.uk/play.php?template_id=81#v3.6section22
Now the chart shows like this:

Messed up the commit tagging https://github.com/thexerteproject/xerteonlinetoolkits/commit/f97044449739c913f8a5a7e2ecfd19149ad488e8

@JohnSmith-LT that LO is embedded from one of my installations and I just checked it...
There's no relevant custom css applied and the labels e.g. New Themes are just plain text inputs so no alignment styling applied there. Not sure why the first label isn't aligned left like the others but it's obviously not centred either.
Re the question results in the chart not showing the labels - that seems like a bug must have crept in at some point after we used this. I'm sure @torinfo will know?
Can't remember if we've got a test project on any of the installs Tom looks after with shared access that we can use as a reference for this?

Hi @ronm123 both those things are now fixed in develop
The Question titles were centred using the Editor but the container was collapsing to minimum size - i've expanded the container to 100% and now the titles all work centred.

@JohnSmith-LT I put your changed model and css file in place in my install from where the LO is embedded and initially I could see the labels on the chart on hover were now correct. However then I couldn't see the LO at all so I put the older model and css in place but still not working. I'm probably missing something and I doubt this is due to your commits here. Will email you and @torinfo with further details.

 My install where this is embedded from is now latest develop and as you say John the titles are now all centred. Also because my install is now develop you'll see that on the release notes page we now get the play button that you have to click before the LO is available.
@torinfo is better placed to advise whether this issue should now be closed.

@JohnSmith-LT @torinfo BTW in testing this and getting what was probably just caching issues and because I had the console open I was getting a pause with a call to debugger somewhere but can't replicate that now.

@ronm123 I checked that link again and your LO isn't loading because it cannot find loadjs. You will need to pull down the latest xenith.js file also as loadjs has been added to better handle dependency loading and catch missing files which the previous $script loader couldn't do.

@JohnSmith-LT it's loading for me. Do you not see the LO with the big white play icon overlay? I updated my install to latest develop so it should have all the files and that was over 4 hours ago. Caching at your end?

Yes @ronm123, was caching. I don't get a debugger pause so not sure what that was...

@JohnSmith-LT looks like you & @ronm123 have sorted some of this out now. I haven't used the opinion page so probably aren't best placed to comment on how it works but above you asked 'do we think that the numeric parts should display a % sign afterwards?' and yes, I think that would make more sense.

Can the numbers on the graph be made bigger? They are so small in an example I just made that I didn't realise they were numbers and was looking for an option in editor to turn the numbers on

@FayCross tbh I haven't used this much either and th results page that @torinfo has for tracking exhibits the same strange sizing of numbers and the chart...
I think at some point in the future we cold revisit charting in all the pages and upgrade to a more modern and compliant library which may improve accessibility for these colour and graphic heavy pages...
I'm going to close this for now but please reopen if anyone has concerns about any of this for the current release.


cleaned up some err messages

#16  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @mAmineChniti and the rest of your teammates on  Graphite


test: Fix cleanup after PolicyAuditMode test

This test set the PolicyAuditMode, but didn't revert it afterwards. This
meant that subsequent tests could potentially fail because they didn't
expect this setting to be configured.
Fix it by adding an AfterAll() that turns the feature back off.
Fixes: 6cd69ed7d79a ("Implement policy audit mode for the daemon")
Fixes: #10486

This change is

test-me-please

Coverage decreased (-0.008%) to 45.618% when pulling 1c4e6d2659a862b3f339cc349636103e702bb0bc on joestringer:submit/fix-audit-test-cleanup into 99e6bc817e1b3b079734bd626dc9ddda982818d7 on cilium:master.


READMEs not being rendered correctly on atom.io/packages

So, recently (I'm not really that sure that's recently, but anyway) I've been unable to reliably update my README on atom.io/package. Yes, it sometimes work, but sometimes don't, the images get all wrong links and I'm not sure why, and the whole thing gets worse when you have a package that is not on GitHub.
For example, here's one example: https://atom.io/packages/simple-git
Here's another: https://atom.io/packages/chlorine
No images appear at all, and they do appear both on Github and on Gitlab's pages. So, how to make it work?
Originally posted by @mauricioszabo in https://github.com/atom/atom/discussions/22904

@mauricioszabo Thank you for opening this issue. This is now on our radar and we will resolve it as soon as we can.

@sadick254 someone already did all the work to fix this: https://github.com/nlydv/atom-io-imgfix/blob/master/js/content.js.
Why not just use it and then solve this issue? Discussions here: https://github.com/atom/atom/discussions/22904
I mean, we could open a PR and solve this upstream, but I don't think that packages site's code is open, right?

Can we please see what's happening? The atom.io/packages source code is not at GitHub (so we can't contribute), and this bug that should be easy to fix (I mean, just replace the src at the image to what you're putting in data-canonical-src).
Why the so long delay?


Robustness evaluation

🚀 The feature
Request from potential user: "There are two main aspects, 1) adjusting prompts that changing semantic words does not trigger hallucination, 2) the prompt itself is such that LLM doesnt slip away from instruction"
Idea: for (1) use prompt templates to substitute words, run evals to check semantic similarity of all results. For (2) use auto-evaluation given instruction, prompt, and response to determine if the LLM followed instructions.
Motivation, pitch
We got this request from a potential user, and also robustness is a common concern in LLM evaluation
Alternatives
No response
Additional context
No response

Hey, I am working on the issue and I have generated 2 sample scripts - one involving prompt substitution and the other for auto evaluation. I am using Promptbench in both scripts. Can you please guide me as to how to integrate the scripts into your experiments? I am joining your discord group wherein we can discuss this issue in detail.


Clarification around snaphot capture

We overused the the term "snapshot" to mean multiple things as both a noun and verb.
Our "Process Snapshot" feature is not supported in the IntelliTrace standalone tool so we are removing the term "snaphot" to reduce confusion.
Additionally when we start the discussion about collecting "snapshots" on the main IntelliTrace page we are explicitly stating that the stand-alone collection does not support this type of snapshot.

@poppastring : Thanks for your contribution! The author, @mikejo5000, has been notified to review your proposed change.

#sign-off

@poppastring @Mikejo5000 ,
As a reminder: Microsoft authors and contributors need to make content contributions through the private repository so the content can be staged and validated by the current validation rules.
Read about authors working in the public repo for more information.
If you need help getting set up to work in the private repo, see Set up Git repository locally for documentation.
Thank you.


Fix translations .verbose.enabled and .enabled-recording arguments

This would need to be changed in the crowdin project too.... yikes


[TRACKING] Breaking changes in Falco 0.39.0

This issue keeps track of all deprecated Falco features that will be removed in Falco 0.39.0

remove options -D, -t, -T https://github.com/falcosecurity/falco/pull/3193

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

/remove-lifecycle stale

PR: https://github.com/falcosecurity/falco/pull/3311

Other breaking changes regard the newly introduced prometheus metrics in Falco 0.38.0:

https://github.com/falcosecurity/falco/pull/3272
https://github.com/falcosecurity/falco/pull/3319
https://github.com/falcosecurity/falco/pull/3324

Thanks @incertum for the great job!
Since the feature was introduced in an incubating state, and it will remain so in the 0.39.0 release too, there was no guarantee of stability.
The feature should reach stable level in Falco 0.40.0.

Released! We can close this one!
/close

@FedeDP: Closing this issue.

In response to this:

Released! We can close this one!
/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.


Windows CI began to fail on Oct 21

#2769 passed the CI, but its merge commit and later ones are failing
https://github.com/lima-vm/lima/actions/runs/11429806278/job/31800191430
[…]
time="2024-10-21T01:14:55Z" level=info msg="SSH Local Port: 22"
time="2024-10-21T01:14:55Z" level=info msg="[hostagent] Waiting for the essential requirement 1 of 2: \"ssh\""
time="2024-10-21T01:15:05Z" level=info msg="[hostagent] Waiting for the essential requirement 1 of 2: \"ssh\""
time="2024-10-21T01:15:15Z" level=info msg="[hostagent] Waiting for the essential requirement 1 of 2: \"ssh\""
time="2024-10-21T01:24:43Z" level=fatal msg="did not receive an event with the \"running\" status"

Something seems to have changed between https://github.com/actions/runner-images/releases/tag/win22%2F20241006.1 and https://github.com/actions/runner-images/releases/tag/win22%2F20241015.1

In https://github.com/lima-vm/lima/actions/runs/11445753347/job/31843450765?pr=2778 I see:
System has not been booted with systemd as init system (PID 1). Can't operate.

@pendo324 Do you have any idea what may be causing the Windows tests to fail now?
I can't find anything that seems related in https://github.com/actions/runner-images/commit/fcc4cdb1d095af1317859c4809364538953b3497 or https://github.com/actions/runner-images/commit/09ff567de6908096a96ace47eb3f41079993366d
The errors look like systemd is no longer enabled in your distro, but there has been no change to the distro.
I'm at a loss on what might be causing this.

Thanks for pinging me, taking a look now


Significant Digits

Addresses #12
This handles significant digits (S) for Date, LongYear, and ExponentialYear classes.

This looks great, thank you very much.


Fix Docker run for bridged Docker network in Windows, macOS

During the ICE gathering step of WebRTC, it searches for available network interfaces with some random ports.
Therefore we couldn't use the default port export config with the bridge network in Docker.
If we explicitly define a port range for ICE candidates and swap internal Docker IP onto the host IP, it should work.
There are new ice-related params in the config that undefined by default so the app runs as usual. These params are set with env in the new docker-compose script.

It looks good. It's still weird to me that host network worked before and stop working now. But this change is good (y).

It's possible that you're was using the old Docker Toolbox based on VirtualBox which should support bridge on all OSes.
I tried Windows WSL2 Linux and it's not working with <IP_ADDRESS> because it's not it's address (you should use what in eth0).
Could you check this Docker on native Linux and Mac? And then I'll be merging into master.

It looks good. It's still weird to me that host network worked before and stop working now. But this change is good (y).

It's possible that you're was using the old Docker Toolbox based on VirtualBox which should support bridge on all OSes.
I tried Windows WSL2 Linux and it's not working with <IP_ADDRESS> because it's not it's address (you should use what in eth0).
Could you check this Docker on native Linux and Mac? And then I'll be merging into master.

Actually, we need as much as possible ports open, since any spectator watching a game will need a port from that range.

Tested max number of opened (forwarded) Docker ports on Windows and it seems it works up until 999 opened ports, after that the app just won't respond. (:

Tested max number of opened (forwarded) Docker ports on Windows and it seems it works up until 999 opened ports, after that the app just won't respond. (:

Oh I pulled master, and run. And it's totally fine. : D

Maybe it's the issue on some machines. We can remove "The app runs as a Docker container only in Linux. "

Oh I pulled master, and run. And it's totally fine. : D

Maybe it's the issue on some machines. We can remove "The app runs as a Docker container only in Linux. "

@giongto35, interesting. So the "host" mode works then. Can you confirm that you are running Docker Desktop?
Ok, I'll revert config changes leaving config options.

@giongto35, interesting. So the "host" mode works then. Can you confirm that you are running Docker Desktop?
Ok, I'll revert config changes leaving config options.


Incorrect achievement version

Found that all v2.5 achievements have been labeled v2.4.

Pretty convinced this is a v2.5 achievement because it's related to new battle of Raiden Shogun

Fixed https://github.com/MadeBaruna/paimon-moe/commit/755ad329f360c27c24b29e52f4db63920f15c901 & https://github.com/MadeBaruna/paimon-moe/commit/49e2be50aff28530ed82c492273f2f230cdfd848