🐛 [firebase_app_check] [WEB] Can't use Flutter Web with App Check for Authentication enforced. User logs out on initial page load.

Bug report
Describe the bug
When enforcing App Check for Authentication on Firebase, I can connect my Flutter App and login users using phone authentication.
After the user logs in a Flutter web application with App Check for authentication enforced and I close the task and revisit the web app I get a 401 error on initial page load:
https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=***************** 401
User credentials are cleared from local storage on 401 and the user has to login again on every visit/ initial page load.
Note: The is no delay between page visits.
Here's a video of the flutter web app behavior deployed on a web server
https://www.veed.io/view/7abffab0-1354-4e5f-a8be-6378728d3a0d?panel=share
Steps to reproduce
Steps to reproduce the behavior:

Go to Firebase and enforce App Check for Authentication
Run/Deploy flutter web app (Firebase App Check needs to be set up).
Log in with phone authentication.
Close the tab and visit the web-app again.

Expected behavior
User should be logged in to my app during initial page loads, but I get an App Check error instead and the user credentials are wiped out from the local storage
Sample project
I cannot provide the login flow using mobile authentication but below is my main.dart. I think this is more than enough to recreate the issue.
`Future<void> main() async {
  usePathUrlStrategy();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
  await FirebaseAppCheck.instance.activate(
    webProvider:
        ReCaptchaV3Provider('6LcannEoAAAAAEEDkHi0CLX7DyFIOS7OXXMnmxvl'),
  );
  FirebaseAppCheck.instance.setTokenAutoRefreshEnabled(true);
  FirebaseAuth.instance
      .authStateChanges()
      .distinct((first, second) => first?.uid == second?.uid);

  runApp(const WebApp());
}`

Additional context
The issue is similar to https://github.com/firebase/flutterfire/issues/11334 . The issue was closed in app_check v0.2.1 but I am still facing this issue
https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=*****************
I checked the network requests and found out that the X-Firebase-Appcheck is present in the headers for the request url above but it's missing on initial page load after I revisit the web-app. As the app check token is missing the request is rejected (401) due to enforcement.
Request screenshots of login request using phone authentication

Screenshots of the login request on initial page load.

Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
[!] Flutter (Channel stable, 3.13.8, on macOS 14.1 23B74 darwin-arm64, locale en-PK)
    ! Warning: `flutter` on your path resolves to /Library/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at
      /library/flutter. Consider adding /library/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Library/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /library/flutter.
      Consider adding /library/flutter/bin to the front of your path.
[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.84.0)
[✓] Connected device (3 available)
[✓] Network resources

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
Dart SDK 3.1.4
Flutter SDK 3.13.8
clubsocial 2.4.4+40

dependencies:
- add_2_calendar 3.0.1 [flutter]
- args 2.4.2
- bloc 8.1.2 [meta]
- cached_network_image 3.3.0 [cached_network_image_platform_interface cached_network_image_web flutter flutter_cache_manager octo_image]
- connectivity_plus 5.0.1 [flutter flutter_web_plugins connectivity_plus_platform_interface js meta nm]
- contacts_service 0.6.3 [flutter collection quiver]
- cross_file 0.3.3+6 [js meta]
- csv 5.1.1
- cupertino_icons 1.0.6
- currency_symbols 0.0.1+2 [flutter]
- date_time_format 2.0.1
- device_info_plus 9.1.0 [device_info_plus_platform_interface ffi file flutter flutter_web_plugins meta win32 win32_registry]
- devicelocale 0.6.0 [flutter flutter_web_plugins]
- dio 5.3.3 [async http_parser meta path]
- equatable 2.0.5 [collection meta]
- extended_nested_scroll_view 6.1.2 [flutter visibility_detector]
- file 6.1.4 [meta path]
- file_picker 5.5.0 [flutter flutter_web_plugins flutter_plugin_android_lifecycle plugin_platform_interface ffi path win32]
- firebase_analytics 10.6.3 [firebase_analytics_platform_interface firebase_analytics_web firebase_core firebase_core_platform_interface flutter]
- firebase_app_check 0.2.1+3 [firebase_app_check_platform_interface firebase_app_check_web firebase_core firebase_core_platform_interface flutter]
- firebase_auth 4.12.1 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
- firebase_core 2.21.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_crashlytics 3.4.3 [firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface flutter stack_trace]
- firebase_messaging 14.7.3 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta]
- firebase_remote_config 4.3.3 [firebase_core firebase_core_platform_interface firebase_remote_config_platform_interface firebase_remote_config_web flutter]
- flex_color_scheme 7.3.1 [flex_seed_scheme flutter meta]
- flutter 0.0.0 [characters collection material_color_utilities meta vector_math web sky_engine]
- flutter_bloc 8.1.3 [bloc flutter provider]
- flutter_cache_manager 3.3.1 [clock collection file flutter http path path_provider rxdart sqflite uuid]
- flutter_credit_card 3.0.7 [flutter]
- flutter_form_builder 9.1.1 [flutter intl]
- flutter_image_compress 2.1.0 [flutter flutter_image_compress_platform_interface flutter_image_compress_common flutter_image_compress_web flutter_image_compress_macos]
- flutter_libphonenumber 2.1.5 [flutter flutter_libphonenumber_android flutter_libphonenumber_ios flutter_libphonenumber_platform_interface flutter_libphonenumber_web]
- flutter_markdown 0.6.18 [flutter markdown meta path]
- flutter_native_timezone 2.0.0 [flutter_web_plugins flutter js]
- flutter_overlay_loader 2.0.0 [flutter]
- flutter_svg 2.0.9 [flutter vector_graphics vector_graphics_codec vector_graphics_compiler]
- flutter_typeahead 4.8.0 [flutter flutter_keyboard_visibility pointer_interceptor]
- fluttertoast 8.2.2 [flutter flutter_web_plugins]
- font_awesome_flutter 10.3.0 [flutter]
- form_builder_validators 9.1.0 [flutter flutter_localizations intl]
- freezed_annotation 2.4.1 [collection json_annotation meta]
- geolocator 10.1.0 [flutter geolocator_platform_interface geolocator_android geolocator_apple geolocator_web geolocator_windows]
- gleap_sdk 11.2.1 [flutter flutter_web_plugins js json_annotation]
- go_router 10.2.0 [collection flutter flutter_web_plugins logging meta]
- google_api_availability 5.0.0 [flutter google_api_availability_android google_api_availability_platform_interface]
- google_api_headers 2.0.3 [flutter package_info_plus]
- google_maps_flutter 2.5.0 [flutter google_maps_flutter_android google_maps_flutter_ios google_maps_flutter_platform_interface google_maps_flutter_web]
- google_maps_webservice 2.0.0 [http meta json_annotation]
- helpers 1.2.3 [flutter vector_math]
- hive 2.2.3 [meta crypto]
- hive_flutter 1.1.0 [flutter hive path_provider path]
- image_cropper 5.0.0 [flutter image_cropper_platform_interface image_cropper_for_web]
- image_downloader_web 2.0.4 [flutter flutter_web_plugins http universal_html]
- image_gallery_saver 2.0.3 [flutter]
- in_app_update 4.2.2 [flutter]
- infinite_scroll_pagination 4.0.0 [flutter flutter_staggered_grid_view sliver_tools]
- intl 0.18.1 [clock meta path]
- intl_phone_number_input 0.7.3+1 [flutter libphonenumber_plugin equatable collection]
- jiffy 6.2.1 [intl]
- json_serializable 6.7.1 [analyzer async build build_config collection json_annotation meta path pub_semver pubspec_parse source_gen source_helper]
- list_tile_switch 1.0.0 [flutter]
- location 5.0.3 [flutter location_platform_interface location_web]
- logger 2.0.2+1
- markdown 7.1.1 [args meta]
- mime 1.0.4
- mobile_scanner 3.5.2 [flutter flutter_web_plugins js]
- onesignal_flutter 3.5.0 [flutter]
- path_provider 2.1.1 [flutter path_provider_android path_provider_foundation path_provider_linux path_provider_platform_interface path_provider_windows]
- permission_handler 10.4.5 [flutter meta permission_handler_android permission_handler_apple permission_handler_windows permission_handler_platform_interface]
- photo_view 0.14.0 [flutter]
- pull_to_refresh 2.0.0 [flutter]
- qr_flutter 4.1.0 [flutter qr]
- quiver 3.2.1 [matcher]
- read_more_text 0.0.5 [flutter]
- recase 4.1.0
- responsive_builder 0.7.0 [flutter provider]
- responsive_framework 0.2.0 [flutter collection]
- roundcheckbox 2.0.5 [flutter]
- rxdart 0.27.7
- screenshot 2.1.0 [flutter]
- shake 2.2.0 [sensors_plus flutter]
- share_plus 7.2.1 [cross_file meta mime flutter flutter_web_plugins share_plus_platform_interface file url_launcher_web url_launcher_windows url_launcher_linux url_launcher_platform_interface ffi win32]
- social_share 2.3.2 [flutter path_provider]
- store_redirect 2.0.1 [flutter]
- stream_chat_flutter 6.11.0 [cached_network_image chewie collection contextmenu dart_vlc desktop_drop diacritic dio ezanimation file_picker file_selector flutter flutter_markdown flutter_portal flutter_svg http_parser image_gallery_saver image_picker jiffy lottie meta path_provider photo_manager photo_view rxdart share_plus shimmer stream_chat_flutter_core synchronized thumblr url_launcher video_player video_thumbnail]
- stream_chat_flutter_core 6.10.0 [collection connectivity_plus flutter freezed_annotation meta rxdart stream_chat]
- stream_chat_persistence 6.9.0 [drift flutter logging meta path path_provider sqlite3_flutter_libs stream_chat]
- timeago 3.6.0 [intl]
- uni_links 0.5.1 [flutter uni_links_platform_interface uni_links_web]
- url_launcher 6.2.1 [flutter url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows]
- validators 3.0.0
- video_compress 3.1.2 [flutter]
- video_editor 2.4.0 [flutter ffmpeg_kit_flutter_min_gpl path path_provider transparent_image video_player video_thumbnail]
- video_player 2.8.1 [flutter html video_player_android video_player_avfoundation video_player_platform_interface video_player_web]
- visibility_detector 0.4.0+2 [flutter]
- wechat_assets_picker 8.7.1 [flutter extended_image photo_manager provider video_player]

dev dependencies:
- bloc_test 9.1.5 [bloc diff_match_patch meta mocktail test]
- build_runner 2.4.6 [analyzer args async build build_config build_daemon build_resolvers build_runner_core code_builder collection crypto dart_style frontend_server_client glob graphs http_multi_server io js logging meta mime package_config path pool pub_semver pubspec_parse shelf shelf_web_socket stack_trace stream_transform timing watcher web_socket_channel yaml]
- flutter_launcher_icons 0.13.1 [args checked_yaml cli_util image json_annotation path yaml]
- flutter_lints 2.0.3 [lints]
- flutter_native_splash 2.3.5 [args flutter flutter_web_plugins js html image meta path universal_io xml yaml]
- flutter_test 0.0.0 [flutter test_api matcher path fake_async clock stack_trace vector_math async boolean_selector characters collection material_color_utilities meta source_span stream_channel string_scanner term_glyph web]
- freezed 2.4.5 [analyzer build build_config collection meta source_gen freezed_annotation json_annotation]
- hive_generator 2.0.1 [build source_gen hive analyzer source_helper]
- integration_test 0.0.0 [flutter flutter_driver flutter_test path vm_service async boolean_selector characters clock collection fake_async file matcher material_color_utilities meta source_span stack_trace stream_channel string_scanner sync_http term_glyph test_api vector_math web webdriver]

dependency overrides:
- connectivity_plus 5.0.1 [flutter flutter_web_plugins connectivity_plus_platform_interface js meta nm]
- ffmpeg_kit_flutter_min_gpl 5.1.0 [ffmpeg_kit_flutter_platform_interface flutter]

transitive dependencies:
- _fe_analyzer_shared 61.0.0 [meta]
- _flutterfire_internals 1.3.11 [collection firebase_core firebase_core_platform_interface flutter meta]
- after_layout 1.2.0 [flutter]
- analyzer 5.13.0 [_fe_analyzer_shared collection convert crypto glob meta package_config path pub_semver source_span watcher yaml]
- animations 2.0.8 [flutter]
- archive 3.4.6 [crypto path pointycastle]
- asn1lib 1.5.0
- async 2.11.0 [collection meta]
- audio_video_progress_bar 0.11.0 [flutter]
- boolean_selector 2.1.1 [source_span string_scanner]
- build 2.4.1 [analyzer async convert crypto glob logging meta package_config path]
- build_config 1.1.1 [checked_yaml json_annotation path pubspec_parse yaml]
- build_daemon 4.0.0 [built_collection built_value http_multi_server logging path pool shelf shelf_web_socket stream_transform watcher web_socket_channel]
- build_resolvers 2.4.1 [analyzer async build collection convert crypto graphs logging package_config path pool pub_semver stream_transform yaml]
- build_runner_core 7.2.11 [async build build_config build_resolvers collection convert crypto glob graphs json_annotation logging meta package_config path pool timing watcher yaml]
- built_collection 5.1.1
- built_value 8.7.0 [built_collection collection fixnum meta]
- cached_network_image_platform_interface 3.0.0 [flutter flutter_cache_manager]
- cached_network_image_web 1.1.0 [cached_network_image_platform_interface flutter flutter_cache_manager]
- characters 1.3.0
- charcode 1.3.1
- checked_yaml 2.0.3 [json_annotation source_span yaml]
- chewie 1.7.1 [cupertino_icons flutter provider video_player wakelock_plus]
- cli_util 0.4.0 [meta path]
- clock 1.1.1
- code_builder 4.7.0 [built_collection built_value collection matcher meta]
- collection 1.17.2
- connectivity_plus_platform_interface 1.2.4 [flutter meta plugin_platform_interface]
- contextmenu 3.0.0 [flutter animations after_layout]
- convert 3.1.1 [typed_data]
- coverage 1.6.3 [args logging package_config path source_maps stack_trace vm_service]
- crypto 3.0.3 [typed_data]
- crypto_keys 0.3.0+1 [pointycastle meta collection quiver]
- csslib 1.0.0 [source_span]
- dart_style 2.3.2 [analyzer args path pub_semver source_span]
- dart_vlc 0.4.0 [flutter dart_vlc_ffi path audio_video_progress_bar]
- dart_vlc_ffi 0.2.0+1 [ffi path]
- dbus 0.7.8 [args ffi meta xml]
- desktop_drop 0.4.4 [flutter flutter_web_plugins cross_file]
- device_info_plus_platform_interface 7.0.0 [flutter meta plugin_platform_interface]
- diacritic 0.1.4
- diff_match_patch 0.4.1
- drift 2.13.0 [async convert collection js meta stream_channel sqlite3 path]
- extended_image 8.1.1 [extended_image_library flutter meta]
- extended_image_library 3.6.0 [crypto flutter http_client_helper js path path_provider]
- ezanimation 0.6.0 [flutter]
- fake_async 1.3.1 [clock collection]
- ffi 2.1.0
- ffmpeg_kit_flutter_platform_interface 0.2.1 [flutter plugin_platform_interface]
- file_selector 1.0.1 [file_selector_android file_selector_ios file_selector_linux file_selector_macos file_selector_platform_interface file_selector_web file_selector_windows flutter]
- file_selector_android 0.5.0+4 [file_selector_platform_interface flutter plugin_platform_interface]
- file_selector_ios 0.5.1+6 [file_selector_platform_interface flutter]
- file_selector_linux 0.9.2+1 [cross_file file_selector_platform_interface flutter]
- file_selector_macos 0.9.3+3 [cross_file file_selector_platform_interface flutter]
- file_selector_platform_interface 2.6.1 [cross_file flutter http plugin_platform_interface]
- file_selector_web 0.9.2+1 [file_selector_platform_interface flutter flutter_web_plugins]
- file_selector_windows 0.9.3+1 [cross_file file_selector_platform_interface flutter]
- firebase_analytics_platform_interface 3.7.5 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_analytics_web 0.5.5+5 [_flutterfire_internals firebase_analytics_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- firebase_app_check_platform_interface 0.1.0+5 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_app_check_web 0.1.0+5 [_flutterfire_internals firebase_app_check_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- firebase_auth_platform_interface 7.0.3 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
- firebase_auth_web 5.8.6 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser js meta]
- firebase_core_platform_interface 5.0.0 [collection flutter flutter_test meta plugin_platform_interface]
- firebase_core_web 2.8.1 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_crashlytics_platform_interface 3.6.11 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_platform_interface 4.5.12 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_web 3.5.12 [_flutterfire_internals firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta]
- firebase_remote_config_platform_interface 1.4.11 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_remote_config_web 1.4.11 [firebase_core firebase_core_web firebase_remote_config_platform_interface flutter flutter_web_plugins js]
- fixnum 1.1.0
- flex_seed_scheme 1.4.0 [collection flutter meta]
- flutter_driver 0.0.0 [file flutter flutter_test fuchsia_remote_debug_protocol path meta vm_service webdriver async boolean_selector characters clock collection matcher material_color_utilities platform process source_span stack_trace stream_channel string_scanner sync_http term_glyph test_api vector_math web]
- flutter_image_compress_common 1.0.3 [flutter flutter_image_compress_platform_interface]
- flutter_image_compress_macos 1.0.1 [flutter flutter_image_compress_platform_interface]
- flutter_image_compress_platform_interface 1.0.3 [flutter plugin_platform_interface cross_file]
- flutter_image_compress_web 0.1.3+2 [flutter flutter_web_plugins flutter_image_compress_platform_interface js]
- flutter_keyboard_visibility 5.4.1 [meta flutter_keyboard_visibility_platform_interface flutter_keyboard_visibility_linux flutter_keyboard_visibility_macos flutter_keyboard_visibility_web flutter_keyboard_visibility_windows flutter]
- flutter_keyboard_visibility_linux 1.0.0 [flutter_keyboard_visibility_platform_interface flutter]
- flutter_keyboard_visibility_macos 1.0.0 [flutter_keyboard_visibility_platform_interface flutter]
- flutter_keyboard_visibility_platform_interface 2.0.0 [flutter meta plugin_platform_interface]
- flutter_keyboard_visibility_web 2.0.0 [flutter_keyboard_visibility_platform_interface flutter_web_plugins flutter]
- flutter_keyboard_visibility_windows 1.0.0 [flutter_keyboard_visibility_platform_interface flutter]
- flutter_libphonenumber_android 1.0.1 [flutter flutter_libphonenumber_platform_interface]
- flutter_libphonenumber_ios 1.1.4 [flutter flutter_libphonenumber_platform_interface]
- flutter_libphonenumber_platform_interface 1.0.0 [flutter plugin_platform_interface]
- flutter_libphonenumber_web 1.0.0 [flutter flutter_web_plugins flutter_libphonenumber_platform_interface js]
- flutter_localizations 0.0.0 [flutter intl characters clock collection material_color_utilities meta path vector_math web]
- flutter_plugin_android_lifecycle 2.0.17 [flutter]
- flutter_portal 1.1.4 [collection flutter vector_math]
- flutter_staggered_grid_view 0.7.0 [flutter]
- flutter_web_plugins 0.0.0 [flutter characters collection material_color_utilities meta vector_math web]
- frontend_server_client 3.2.0 [async path]
- fuchsia_remote_debug_protocol 0.0.0 [process vm_service file meta path platform]
- geolocator_android 4.3.1 [flutter geolocator_platform_interface uuid]
- geolocator_apple 2.3.2 [flutter geolocator_platform_interface]
- geolocator_platform_interface 4.1.1 [flutter plugin_platform_interface vector_math meta]
- geolocator_web 2.2.0 [flutter flutter_web_plugins geolocator_platform_interface]
- geolocator_windows 0.2.2 [flutter geolocator_platform_interface]
- glob 2.1.2 [async collection file path string_scanner]
- google_api_availability_android 1.0.1 [flutter google_api_availability_platform_interface]
- google_api_availability_platform_interface 1.0.1 [flutter plugin_platform_interface meta]
- google_maps 6.3.0 [js js_wrapping meta]
- google_maps_flutter_android 2.5.3 [flutter flutter_plugin_android_lifecycle google_maps_flutter_platform_interface stream_transform]
- google_maps_flutter_ios 2.3.2 [flutter google_maps_flutter_platform_interface stream_transform]
- google_maps_flutter_platform_interface 2.4.1 [collection flutter plugin_platform_interface stream_transform]
- google_maps_flutter_web 0.5.4+2 [collection flutter flutter_web_plugins google_maps google_maps_flutter_platform_interface sanitize_html stream_transform]
- graphs 2.3.1 [collection]
- html 0.15.4 [csslib source_span]
- http 1.1.0 [async http_parser meta]
- http_client_helper 3.0.0 [http]
- http_multi_server 3.2.1 [async]
- http_parser 4.0.2 [collection source_span string_scanner typed_data]
- image 4.1.3 [archive meta xml]
- image_cropper_for_web 3.0.0 [flutter flutter_web_plugins image_cropper_platform_interface js]
- image_cropper_platform_interface 5.0.0 [flutter plugin_platform_interface http]
- image_picker 1.0.4 [flutter image_picker_android image_picker_for_web image_picker_ios image_picker_linux image_picker_macos image_picker_platform_interface image_picker_windows]
- image_picker_android 0.8.8+2 [flutter flutter_plugin_android_lifecycle image_picker_platform_interface]
- image_picker_for_web 3.0.1 [flutter flutter_web_plugins image_picker_platform_interface mime]
- image_picker_ios 0.8.8+4 [flutter image_picker_platform_interface]
- image_picker_linux 0.2.1+1 [file_selector_linux file_selector_platform_interface flutter image_picker_platform_interface]
- image_picker_macos 0.2.1+1 [file_selector_macos file_selector_platform_interface flutter image_picker_platform_interface]
- image_picker_platform_interface 2.9.1 [cross_file flutter http plugin_platform_interface]
- image_picker_windows 0.2.1+1 [file_selector_platform_interface file_selector_windows flutter image_picker_platform_interface]
- io 1.0.4 [meta path string_scanner]
- jose 0.3.4 [crypto_keys meta typed_data x509 http http_parser asn1lib collection]
- js 0.6.7 [meta]
- js_wrapping 0.7.4 [js]
- json_annotation 4.8.1 [meta]
- libphonenumber_platform_interface 0.4.1 [flutter plugin_platform_interface]
- libphonenumber_plugin 0.3.2 [flutter flutter_web_plugins libphonenumber_platform_interface libphonenumber_web]
- libphonenumber_web 0.3.1 [flutter flutter_web_plugins js libphonenumber_platform_interface]
- lints 2.1.1
- location_platform_interface 3.1.2 [flutter plugin_platform_interface]
- location_web 4.2.0 [flutter flutter_web_plugins http_parser js location_platform_interface]
- logging 1.2.0
- lottie 2.7.0 [archive flutter path vector_math]
- matcher 0.12.16 [async meta stack_trace term_glyph test_api]
- material_color_utilities 0.5.0 [collection]
- meta 1.9.1
- mocktail 1.0.1 [collection matcher test_api]
- nested 1.0.0 [flutter]
- nm 0.5.0 [dbus]
- node_preamble 2.0.2
- octo_image 2.0.0 [flutter]
- package_config 2.1.0 [path]
- package_info_plus 4.2.0 [ffi flutter flutter_web_plugins http meta path package_info_plus_platform_interface win32]
- package_info_plus_platform_interface 2.0.1 [flutter meta plugin_platform_interface]
- path 1.8.3
- path_parsing 1.0.1 [vector_math meta]
- path_provider_android 2.2.1 [flutter path_provider_platform_interface]
- path_provider_foundation 2.3.1 [flutter path_provider_platform_interface]
- path_provider_linux 2.2.1 [ffi flutter path path_provider_platform_interface xdg_directories]
- path_provider_platform_interface 2.1.1 [flutter platform plugin_platform_interface]
- path_provider_windows 2.2.1 [ffi flutter path path_provider_platform_interface win32]
- permission_handler_android 10.3.6 [flutter permission_handler_platform_interface]
- permission_handler_apple 9.1.4 [flutter permission_handler_platform_interface]
- permission_handler_platform_interface 3.12.0 [flutter meta plugin_platform_interface]
- permission_handler_windows 0.1.3 [flutter permission_handler_platform_interface]
- petitparser 5.4.0 [meta]
- photo_manager 2.7.2 [flutter]
- platform 3.1.0
- plugin_platform_interface 2.1.6 [meta]
- pointer_interceptor 0.9.3+6 [flutter]
- pointycastle 3.7.3 [collection convert js]
- pool 1.5.1 [async stack_trace]
- process 4.2.4 [file path platform]
- provider 6.0.5 [collection flutter nested]
- pub_semver 2.1.4 [collection meta]
- pubspec_parse 1.2.3 [checked_yaml collection json_annotation pub_semver yaml]
- qr 3.0.1 [meta]
- rate_limiter 1.0.0
- sanitize_html 2.1.0 [html meta]
- sensors_plus 1.4.1 [flutter sensors_plus_web sensors_plus_platform_interface]
- sensors_plus_platform_interface 1.1.3 [flutter meta plugin_platform_interface]
- sensors_plus_web 1.1.2 [flutter sensors_plus_platform_interface flutter_web_plugins]
- share_plus_platform_interface 3.3.1 [cross_file flutter meta mime plugin_platform_interface path_provider uuid]
- shelf 1.4.1 [async collection http_parser path stack_trace stream_channel]
- shelf_packages_handler 3.0.2 [path shelf shelf_static]
- shelf_static 1.1.2 [convert http_parser mime path shelf]
- shelf_web_socket 1.0.4 [shelf stream_channel web_socket_channel]
- shimmer 3.0.0 [flutter]
- sky_engine 0.0.99
- sliver_tools 0.2.12 [flutter]
- source_gen 1.4.0 [analyzer async build dart_style glob path source_span yaml]
- source_helper 1.3.4 [analyzer collection source_gen]
- source_map_stack_trace 2.1.1 [path source_maps stack_trace]
- source_maps 0.10.12 [source_span]
- source_span 1.10.0 [collection path term_glyph]
- sqflite 2.3.0 [flutter sqflite_common path]
- sqflite_common 2.5.0 [synchronized path meta]
- sqlite3 2.1.0 [collection ffi js meta path]
- sqlite3_flutter_libs 0.5.17 [flutter]
- stack_trace 1.11.0 [path]
- stream_channel 2.1.1 [async]
- stream_chat 6.9.0 [async collection dio equatable freezed_annotation http_parser jose json_annotation logging meta mime rate_limiter rxdart synchronized uuid web_socket_channel]
- stream_transform 2.1.0
- string_scanner 1.2.0 [source_span]
- sync_http 0.3.1
- synchronized 3.1.0
- term_glyph 1.2.1
- test 1.24.3 [analyzer async boolean_selector collection coverage http_multi_server io js node_preamble package_config path pool shelf shelf_packages_handler shelf_static shelf_web_socket source_span stack_trace stream_channel typed_data web_socket_channel webkit_inspection_protocol yaml test_api test_core matcher]
- test_api 0.6.0 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph]
- test_core 0.5.3 [analyzer async args boolean_selector collection coverage frontend_server_client glob io meta package_config path pool source_map_stack_trace source_maps source_span stack_trace stream_channel vm_service yaml test_api]
- thumblr 0.0.4 [flutter thumblr_platform_interface thumblr_macos thumblr_windows]
- thumblr_macos 0.4.0 [flutter thumblr_platform_interface]
- thumblr_platform_interface 0.3.1+1 [flutter plugin_platform_interface]
- thumblr_windows 0.0.3+1 [flutter thumblr_platform_interface path_provider]
- timing 1.0.1 [json_annotation]
- transparent_image 2.0.1
- typed_data 1.3.2 [collection]
- uni_links_platform_interface 1.0.0 [flutter plugin_platform_interface]
- uni_links_web 0.1.0 [flutter flutter_web_plugins uni_links_platform_interface]
- universal_html 2.2.4 [async csslib charcode collection html meta source_span typed_data universal_io]
- universal_io 2.2.2 [collection meta typed_data]
- url_launcher_android 6.2.0 [flutter url_launcher_platform_interface]
- url_launcher_ios 6.2.0 [flutter url_launcher_platform_interface]
- url_launcher_linux 3.1.0 [flutter url_launcher_platform_interface]
- url_launcher_macos 3.1.0 [flutter url_launcher_platform_interface]
- url_launcher_platform_interface 2.2.0 [flutter plugin_platform_interface]
- url_launcher_web 2.2.0 [flutter flutter_web_plugins url_launcher_platform_interface]
- url_launcher_windows 3.1.0 [flutter url_launcher_platform_interface]
- uuid 3.0.7 [crypto]
- vector_graphics 1.1.9+1 [flutter vector_graphics_codec]
- vector_graphics_codec 1.1.9+1
- vector_graphics_compiler 1.1.9+1 [args meta path_parsing xml vector_graphics_codec path]
- vector_math 2.1.4
- video_player_android 2.4.10 [flutter video_player_platform_interface]
- video_player_avfoundation 2.5.1 [flutter video_player_platform_interface]
- video_player_platform_interface 6.2.1 [flutter plugin_platform_interface]
- video_player_web 2.1.1 [flutter flutter_web_plugins video_player_platform_interface]
- video_thumbnail 0.5.3 [flutter]
- vm_service 11.7.1
- wakelock_plus 1.1.3 [flutter flutter_web_plugins meta wakelock_plus_platform_interface win32 dbus package_info_plus js]
- wakelock_plus_platform_interface 1.1.0 [flutter plugin_platform_interface meta]
- watcher 1.1.0 [async path]
- web 0.1.4-beta
- web_socket_channel 2.4.0 [async crypto stream_channel]
- webdriver 3.0.2 [matcher path stack_trace sync_http]
- webkit_inspection_protocol 1.2.1 [logging]
- win32 5.0.9 [ffi]
- win32_registry 1.1.2 [ffi win32]
- x509 0.2.4 [asn1lib quiver crypto_keys]
- xdg_directories 1.0.3 [meta path]
- xml 6.3.0 [collection meta petitparser]
- yaml 3.1.2 [collection source_span string_scanner]

@drklrd56
Check this issue and underlying comments and see if it helps in your case or not.

I will test the fix mentioned there. I will notify once I have tested it.

If you expand Flutter dependencies mentioned in the issue and search for firebase_core_web, you can see that I am on the latest version of the package (v.2.8.1). According to the change log of the package, SDK was update to v.10.3.1 in v.2.8.0 so that closing comment mentioned in the issue doesn't resolve my issue.
Also I updated my firebase dependencies to the latest versions, deployed my web app and tested again. But the issue is still there.

@drklrd56 Check this issue and underlying comments and see if it helps in your case or not.

@drklrd56
Is the issue occuring only if you deploy to a host or also locally in debug mode ?

@darshankawar same issue in local debug mode

User should be logged in to my app during initial page loads, but I get an App Check error instead and the user credentials are wiped out from the local storage

@drklrd56 Revisiting the issue again, the user credentials being wiped out after you are closing the tab and restarting, in chrome debug, it is expected since the browser is starting from a clean state. Also, to have the state to be persisted locally you need to keep the same port between restarts.

but I am am using the same port 8080 for local debugging.. local storage is maintained.

@darshankawar

@darshankawar
As there has been no reply from the firebase team. I did my own debugging into firebase packages and found the issue. The MR to resolve this will not work for the initial page load issue because even if we move the app check service initialization before every other firebase service, if the service initializer skips its activation then we are on ground zero, that is no app-check-token in the headers and the request will result in 401.
If we look in the ensurePluginInitialized function for app check package it reads the recaptchaType and recaptchaSiteKey from the session storage and if these variables are not in the session storage it does not call the activate function.
That is our issue, I added a print state at the top of my main function that check the session storage when the app starts and at that time there are no key-value pairs for recaptchaType and recaptchaSiteKey in the session storage. They are added much later after the initial user fetch call has been sent and the user is signed out on 401 error.

I added a way around in my main.dart that check if the recaptchaType and recaptchaSiteKey key-value pairs are present in my session storage if not then it writes them to the session storage. Doing this does not affect the firebase app flow because the app check can just rewite the session storage later and it will not cause it to throw an error.

I added the way around, tested the app in local debug mode and after deployment and the initial page load issue was resolved. As this is just a way around the issue, I expect the firebase team to at least resolve it in the app check package initialization code.

Hi @drklrd56, sorry for getting to this late.
Labeling based on the report shared above as I do not have a firebase project capable of reproducing this atm

Sorry for the late reply.. @danagbemava-nc
You don't need to do anything different on the flutter project.

Create a firebase app on console enable authentication and enable app check
Create a flutter project and add firebase authentication and firebase app check.
Add a button to login using email and password and a logout button.  The login button should disappear if the user is loggedIn. That's it.
Create a build for the app and deploy and then go to website, login, close the page, revisit the page. You will be able to reproduce the issue.
If you are using localhost. launch the app in using flutter run, login, copy the localhost url and paste it load the app in another tab. You will be able to reproduce the issue.

@drklrd56, what I meant was, I can't enable app_check for auth on my current firebase projects

Here's a write-up I did on the same issue before finding this issue. Perhaps it can help with implementation of a fix: #12199

I believe this issue is now fixed with the latest version of firebase_auth / firebase_auth_web. You can see https://github.com/firebase/flutterfire/issues/12452

I believe this issue is now fixed with the latest version of firebase_auth / firebase_auth_web. You can see #12452

No, it's still happened:
firebase_core: ^3.6.0
firebase_auth: ^5.3.1
firebase_app_check: ^0.3.1+4


chore: Add PR checks

Add checks on PRs. The checks run on changes to the PR metadata and on external PRs.
It checks:

cc is used
title is upper case
there is a body and it is not the template
there is a changelog that fits the cc preamble

Closes SAP/cloud-sdk-backlog#926.

[x] I know which base branch I chose for this PR, as the default branch is v2-main now, which is not for v3 development.
[ ] If my change will be merged into the main branch (for v3), I've updated (V3-Upgrade-Guide.md)[./V3-Upgrade-Guide.md] in case my change has any implications for users updating to SDK v3

I have a question regarding .github/actions/check-pr/node_modules/. Should this directory be ignored, or is it intended to include them?

This is intended. For actions this is required unfortunately.

This is intended. For actions this is required unfortunately.

I've never worked with actions inline in the repo, but would not be building the action using ncc be a way to avoid that? this produces one big inlined js artifact which can be executed without node modules..

Do we need the test files in the changeset dir?

ncc

I think this is a nice improvement. But I would prefer to separate this from this PR, given that we have another action, that I would probably have to touch as well. I will create a ticket.

Do we need the test files in the changeset dir?

Nope, I removed them now. Good catch 👍


Ignore block states

I am streaming an AI called baritone to building large build to Show off the project and find bugs in the program. baritone uses Schematica to make the builds. one problem that has come to the surface is block when block states do not match. This is a huge problem with things like doors. if a door is placed and is closed and in the schematic it is open Schematica shows that the placement is incorrect and the AI removes the door.  Then, places a new door. It of corse will be closed again and the cycle repeats. I also have seen where an Iron door is placed and despite correct orientation the state is still somehow invalid. and the same problem crops up. After thinking it over it seems that this is more of a Schematica issue than a baritone issue.  I would like to request that there be a way for users to add items to a list that Schematica would accept the correct item in any state. ie. Oak door open, closed, hinged left or right as long as it is an Oak door it's cool.
Thank you for your time and consideration and thank you for creating a great mod
BTW I am using MC ver. 1.12.2  and Schematic <IP_ADDRESS>

This is an issue with Baritone itself, this should be closed.

hoes mad

lol @leijurv I agree this is a problem with baritone. However @ZeroMemes  I think it would probably be more easily solved by Schemata. This is more of a feature request than a bug report. sorry if my post made it seem otherwise.


After recording an python error is reportet

I am running Viseron on a Rasp3 with a Coral Stick added.... I configured the recorder and MQTT. After an dection event occured i get the following error in the log:
[2021-07-11 14:43:10] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 9 [2021-07-11 14:43:11] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 8 [2021-07-11 14:43:12] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 7 [2021-07-11 14:43:13] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 6 [2021-07-11 14:43:14] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 5 [2021-07-11 14:43:15] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 4 [2021-07-11 14:43:16] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 3 [2021-07-11 14:43:17] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 2 [2021-07-11 14:43:18] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 1 [2021-07-11 14:43:19] [INFO    ] [viseron.nvr.garage      ] - Stopping recording in: 0 [2021-07-11 14:43:19] [INFO    ] [viseron.nvr.garage      ] - Pausing motion detector [2021-07-11 14:43:19] [INFO    ] [viseron.recorder.garage ] - Stopping recorder Exception in thread Thread-19: Traceback (most recent call last):   File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner     self.run()   File "/usr/lib/python3.8/threading.py", line 870, in run     self._target(*self._args, **self._kwargs)   File "/src/viseron/recorder.py", line 136, in concat_segments     self._segmenter.concat_segments(   File "/src/viseron/segments.py", line 215, in concat_segments     temp_file = os.path.join("/tmp", file_name)   File "/usr/lib/python3.8/posixpath.py", line 90, in join     genericpath._check_arg_types('join', a, *p)   File "/usr/lib/python3.8/genericpath.py", line 152, in _check_arg_types     raise TypeError(f'{funcname}() argument must be str, bytes, or ' TypeError: join() argument must be str, bytes, or os.PathLike object, not 'NoneType'
here my recorder settings:
recorder:   lookback: 10   timeout: 10   retain: 7   filename_pattern: 'Garage_%H_%M_%S'   thumbnail:     save_to_disk: true     send_to_mqtt: true

Will look into this ASAP.
I am in the process of moving tho so it might take a bit longer than usual

maybe it has something to do with the location I am saving the files ?
I pointed the location in the compose yml file to a fat32 formated fileserver (NAS) volume ... the behave of viseron seems to be changing : If I use something like /home/user/viseron/rec für the recordings , viseron is always ( as configured and desired) saving a thumb picture next to the mp4 video. But using the fat32 volume only the video is beeing stored ....


CTXM15R5V1B and FTXM20R5V1B : New API?

Hello,
I have a CTXM15R5V1B and FTXM20R5V1B units, the pages called by the plugin doesn't exists on those units:
ERROR: Queued request to http://<IP_ADDRESS>/common/basic_info returned error Error: Not Found
    at Request.callback (/homebridge/node_modules/homebridge-daikin-local/node_modules/superagent/src/node/index.js:879:15)
    at IncomingMessage.<anonymous> (/homebridge/node_modules/homebridge-daikin-local/node_modules/superagent/src/node/index.js:1130:18)
    at IncomingMessage.emit (events.js:327:22)
    at endReadableNT (internal/streams/readable.js:1327:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  status: 404,
  response: [Response],
  retries: 0

That could means that there is a new Daikin API that is not supported yet ?
I tried the url http://<IP_ADDRESS>/aircon/get_model_info and I got this message :
Page Not Found
/aircon/get_model_info

And with http://<IP_ADDRESS>/skyfi/aircon/get_model_info :
Page Not Found
/skyfi/aircon/get_model_info

I have another unit (FTXA50A2V1BW) that is working well with the plugin.
Someone already experienced this kind of issues?

I just saw that the wifi contrôler is BRP069C4x, this is a new one. It can be controlled by the new app "Daikin Residential Controller", not the old one "Daikin Online Controller" (I have to use two apps to control all my units :()

I just saw that the wifi contrôler is BRP069C4x, this is a new one. It can be controlled by the new app "Daikin Residential Controller", not the old one "Daikin Online Controller" (I have to use two apps to control all my units :()

It looks like there is a full new api, I started to catch https calls, from France, we need to discuss with https://api.prod.unicloud.edc.dknadmin.be 4
First request on https://api.prod.unicloud.edc.dknadmin.be/v1/info 6
Second request on ***/v1/gateway-devices
Dont know yet how is done the authentication


Feature/preload initial image

Description of changes:
Added new component ImageItem which provides the functionality of loading initial image before the unitl the original image is available
Related issues (if any):
Checks:

[✔] Please confirm npm run lint ran successfully
[ ✔] Please confirm that only /src and /examples/src are committed
[ ✔] [if new feature] Please confirm that documentation was added to the README.md

Close pull request

Delete branch


Added Infernal Painting

Infernal Painting will only show paintings from IE
Vanilla paintings won't show IE paintings
Infernal paintings still need custom texture, recipe and lang file line

LGTM, merge at your own discretion.


Completion work from slide ingestion tests

Some observations:

Generally the ingestion works seamlessly for a random TCGA dataset, which is good news.  It has a different file structure than our MIND pathology folders, different source, naming convention, etc.
Issues with making new directories, a permissions problem.  Must manually create the project folder as root and chmod
A lot of seemingly unused fields in the data ingestio template/schema
A landing path of data/my_project is not correct as the infrastructure assumes things live under data/
How paths, especially root/prefix paths, are handled is not uniform.  There are a couple different params that all do similar, but different things: HDFS_URI, MIND_ROOT_DIR, ROOT_DIR, data vs data/, project location -- we should try and harmonize this and also separate out user/data-specific configuration from constants or assumed configuration.
No graph method, however this was pretty easy to add.
It was kinda cool to not do much actual work to learn a bit about these slides, e.g. that they were 40x resolution!

PR mostly completes/cleanups pathology slide ingestion.
data_processing/pathology/proxy_table/generate.py

Add graph logic/code
Some cleanup

tests:

Only test delta table creation

Codecov Report

Merging #131 (e789c2c) into master (7d7b373) will increase coverage by 0.01%.
The diff coverage is 30.00%.

@@            Coverage Diff             @@
##           master     #131      +/-   ##
==========================================
+ Coverage   61.55%   61.56%   +0.01%
==========================================
  Files          43       43
  Lines        2822     2854      +32
==========================================
+ Hits         1737     1757      +20
- Misses       1085     1097      +12

Impacted Files
Coverage Δ

data_processing/pathology/proxy_table/generate.py
62.16% <30.00%> (-20.12%)
:arrow_down:

data_processing/common/Container.py
12.21% <0.00%> (+12.21%)
:arrow_up:

Continue to review full report at Codecov.

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


@types/katex definitions are broken since v0.14 due to default export

Before reporting a bug

[x] Check common issues.
[ ] Check the bug is reproducible in the demo. If not, check KaTeX is up-to-date and installed correctly.
[x] Search for existing issues.

Describe the bug:
@types/katex definitions use named exports, but katex v0.14+ switched to using a default export.
To Reproduce:
Steps to reproduce the behavior:

Install katex v0.14 or above
Install @types/katex
Try to use it, e.g. import { renderToString } from 'katex'
See runtime error: import is undefined

Expected behavior:
Types are consistent with implementation, i.e. should only allow import katex from 'katex' if KaTeX is only exporting a default value instead of named exports
Environment (please complete the following information):

KaTeX Version: v0.14+

Additional context:
I have started a PR here

@JamesFisher's pull request is failing CI tests. I am attempting another pull request:
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59524

It seems this was fixed at one point but now it's happening again. I tested with the latest versions of katex (0.16.10) and @types/katex (0.16.7).


Data Entry - entry formats

Multiple choice (weather, trash, NAV) are probably better as selection boxes.  Likewise multiple selection lists (appearance, erosion, odor, turb) are definitely better as checkboxes.  Pulldowns are just less efficient for these entry types.  Volunteer name could go either way.  I set it up as a checkbox list on the interim form, limited to the region.  Handy when selecting multiple volunteers at a site as you don't need to repeat the pulldown operation - just scan and check.  Depth method (which I like) could be multiple choice though here the pulldown is not onerous.  Location is definitely a pulldown.

I can change any inputs to checkbox style easily. I did pull-downs to conserve space, and reduce need for scrolling. For long lists the pull downs are nice because you can type in the box to skip down the list.  Checkboxes for volunteers would fill an entire page. I can change the depth selection to checkbox style easily.

Normally, I'm very anti-scrolling.  However, I'm surprised by how quickly I can enter using the interim form which is essentially one long column - scroll, click.  It's muscle memory.  Also, pointer selection seems faster in the case of multiple selection or correcting a selection.  Having said that, I'm not a typist, more mouse oriented.  Sad really as I started out with emacs and the command line only to be corrupted by GUI.  Others may prefer pull and select or type and select.  Also I'm hampered by not having full screen so I often can't see all the selections without careful positioning.  I might try soliciting the opinion of another FC and Joy? before we commit.
I agree on volunteers, type and select pulldown is probably fastest.  I have it limited to zone on the interim form so the scroll isn't that bad.

Mulit-select inputs are now checkbox style. Single select inputs are radio buttons (I have no control over this). Please review and see if you like it.


Peformance question for to_arrow, to_pandas, to_duckdb

Question
Hey, thanks for this very convenient library.
This is not a bug, just want to better understand something.
I have a question regarding the performance - ie time to query the table (?) - for such methods.
if __name__ == "__main__":
    catalog = SqlCatalog(
        "default",
        **{
            "uri": f"postgresql+psycopg2://postgres:Password1@localhost/postgres",
        },
    )
    table = catalog.load_table("bronze.curitiba_starts_june")
    df = table.scan(limit=100)
    pa_table = df.to_arrow()

The code above will run ok. My question is regarding the last command, to_arrow() transformation takes around 60s (+-) to execute. I believe this is mostly because of the network itself?
The execution time will stay roughly the same with different row limit (1, 10, 100).
Querying the same table in motherduck - using iceberg_scan - is faster:

When running the same query locally - without motherduck but still using duckdb - the execution time will be similar to what pyiceberg takes, actually it will be a bit slower. That's why I think this is mostly like a network "issue". Can you help me understand what's happening? Thank you!
Table Data
The table has two parquet files (110mb, 127mb)

Hi @jkleinkauff , that's indeed an interesting observation.
I have some follow up questions to help us understand it better.

Where are your files stored?
Is there a way we can profile your IO and plot it against your IO Download limit?

As a way of comparison, I just ran a scan using to_arrow against a table that has 63, 5.5Mb Parquet files comprising the table. I'd imagine a table with less files to take less time to return (although the limit function here should ensure that we aren't even reading the other parquet files past the first one)
It returned in 6 seconds.
Your observation that limit 1~100 took similar times makes sense to me as well. If you have 100+ Mb files, you are going to have to download the same amount of data regardless to return the limited result.

There's a nontrivial cost in reading metadata files in Iceberg.
Can you run this command,
table.inspect.manifests().to_pandas()

This will show the number of manifest files https://py.iceberg.apache.org/api/#manifests

Hey, thank you for taking a time to answer me!

My files are in S3.
Sure! It's something I could do on my end? Do you have any recommendation on that?
(I'm not sure if it's the same, running a download profiler (I've written something using psutil) in on file it takes something between 25s to complete it)

Yeah, even with limit=1 it seems scan is returning both files (just an observation, maybe it's intended):
    df = table.scan(limit=1)
    # pa_table = df.to_arrow()
    [print(task.file.file_path) for task in df.plan_files()]
# s3://xxx/xxx/curitiba_starts_june/data/00000-0-6984da88-fe64-4765-9137-739072becfb1.parquet
# s3://xxx/xxx/curitiba_starts_june/data/00000-0-1de29b8f-2e8c-4543-9663-f769d53b17b7.parquet

Output of table.inspect.manifests().to_pandas()
❯ python pyiceberg_duckdb.py
   content                                               path  length  partition_spec_id  ...  added_delete_files_count  existing_delete_files_count  deleted_delete_files_count  partition_summaries
0        0  s3://data-lake-jho/bronze/curitiba_starts_june...   10433                  0  ...                         0                            0                           0                   []
1        0  s3://data-lake-jho/bronze/curitiba_starts_june...   10430                  0  ...                         0                            0                           0                   []

[2 rows x 12 columns]

I can also share the files or a direct link to my files. Thank you!

Hi @kevinjqliu thank you for your time!
Those are my findings:
I've included a read_parquet method from awswrangler. Don't know why, but it's by far the fastest method.
reading raw parquet file with awswrangler:
read_raw_parquet_awswrangler.py
1st run: Time taken to read the Parquet file: 16.10819697380066 seconds
2nd run: Time taken to read the Parquet file: 16.06696915626526 seconds
3rd run: Time taken to read the Parquet file: 14.28455901145935 seconds

reading raw parquet file with pyarrow
read_raw_parquet_pyarrow.py
1st run: Time taken to read the Parquet file: 39.86264896392822 seconds
2nd run: Time taken to read the Parquet file: 39.484612226486206 seconds
3rd run: Time taken to read the Parquet file: 26.693129062652588 seconds

reading entire iceberg table, without limits
read_iceberg_full.py
1st run: Time taken to read the Iceberg table: 21.632921934127808 seconds
2nd run: Time taken to read the Iceberg table: 36.94430899620056 seconds
3rd run: Time taken to read the Iceberg table: 49.66138482093811 seconds

reading iceberg table, with limit of 1
read_iceberg_limit.py
1st run: Time taken to read the Iceberg table: 45.886711835861206 seconds
2nd run: Time taken to read the Iceberg table: 29.464744091033936 seconds
3rd run: Time taken to read the Iceberg table: 44.78428387641907 seconds

reading iceberg table with duckdb
read_iceberg_duckdb.py
1st run: Time taken to read the Parquet file: 59.5912652015686 seconds
2nd run: Time taken to read the Parquet file: 61.646626710891724 seconds
3rd run: Time taken to read the Parquet file: 58.97534728050232 seconds

Proxying through motherduck (con = duckdb.connect("md:db")):
1st run: Time taken to read the Parquet file:<PHONE_NUMBER>4589844 seconds
2nd run: Time taken to read the Parquet file:<PHONE_NUMBER>2043152 seconds
3rd run: Time taken to read the Parquet file:<PHONE_NUMBER>6003723 seconds

eading iceberg table with duckdb, with limit of 1
read_iceberg_duckdb_limit.py
1st run: Time taken to read the Parquet file: 63.78661298751831 seconds
2nd run: Time taken to read the Parquet file: 79.1733546257019 seconds
3rd run: Time taken to read the Parquet file: 80.755441904068 seconds
Proxying through motherduck:
Why md is faster here? It somehow is pushing it
1st run: Time taken to read the Parquet file: 3.524472951889038 seconds
2nd run: Time taken to read the Parquet file: 3.4903008937835693 seconds
3rd run: Time taken to read the Parquet file: 3.258246898651123 seconds

Thanks for looking into the different scenarios. It looks like there are varying results depending on the engines.
Read Path
I took a deeper look into the read path for PyIceberg and discovered a missing optimization.
For context, reading an Iceberg table is done through the internal TableScan API. For example, catalog.load_table(“foo.bar”).scan().to_arrow() produces a pyarrow table. Tracing the call stack, here are the main areas to look at

to_arrow, gathers the TableScan parameters and materializes a Pyarrow Table. It calls project_table with an iterable of FileScanTask (self.plan_files()) and specified limit, if any.
project_table, takes the FileScanTasks, which corresponds to parquet files, and processes them asynchronously with futures. The futures will stop early if the limit is satisfied.

So given an Iceberg table with 2 files. scan(limit=1).to_arrow() will produce 2 FileScanTasks (corresponding with each parquet file). Both tasks will be submitted simultaneously. After reading the entire parquet file, one of the tasks is completed. The limit is satisfied and the other future is cancelled.
The important note here is that the unit of work is per FileScanTask, which means per parquet file read. The limit will be checked only after each future completion. This means at least 1 parquet file will be read entirely before the limit is applied. The limit is never pushed down to the parquet file read level. Even when limit=1 is specified, the entire parquet file will be read. In your example, with or without limit, an entire ~100mb data file will be read.
The potential optimization here is to pushdown the limit to _task_to_table and in turn to _task_to_record_batches. Perhaps check the limit against the number of records when yielding each batch.
In fact, this optimization is already done in project_batches , which is used by to_arrow_batch_reader (an alternative to to_arrow).
Unify implementations
As a side note, there might be an opportunity to unify the implementation details of to_arrow and to_arrow_batch_reader.
to_arrow_batch_reader bug
There is also a bug with to_arrow_batch_reader, as it does not respecting the given limit, returning more records than specified. The bug is in project_batches, specifically with the way yield interacts with the two for-loops. Here’s a Jupyter notebook reproducing the issue, see the last cell and the number of rows read by using to_arrow vs to_arrow_batch_reader.
Summary

Optimize to_arrow to push down limit to the file level
Potentially unify implementation of to_arrow and to_arrow_batch_reader
Fix to_arrow_batch_reader to respect the given limit

@kevinjqliu that's awesome! Thank you so much !
I have one more question regarding the read_parquet from awswrangler.
Do you know why it's faster than the other methods? Is there any optimization on their end or something?

@jkleinkauff Without profiling it's hard to say for sure, but I can make a bet based on my experience with object storage clients/fsspec implementations in particular:

you're benchmarking the fsspec FileIO path in pyiceberg, which if I understand correctly is using fsspec s3fs directly with a lot of defaults.  Probably it keeps the default block size (5mb).
awswrangler is probably using a much bigger block size: https://github.com/aws/aws-sdk-pandas/blob/main/awswrangler/s3/_read_parquet.py#L170 (for a read like yours, block size is 20mb).

This is one thing that will have a big impact, but there are likely other differences too since, as you can see, awswrangler is not using the fsspec s3fs implementation and has its own wrappers for i/o over S3...  There's also a lot of stuff I see there in awswranglerthat is similar to some of the optimizations pyarrow makes in its native blob storage filesystem implementations;  maybe the fsspec s3fs implementation supports some of these too, but I'm less familiar with current state of that project.   At least historically, a lot of the defaults were tuned for random access, and not really the best for maximizing throughput in columnar workloads; pyiceberg probably should not be using all defaults.
I believe pyiceberg also provides FileIO implementations that use pyarrow native filesystems instead of fsspec.  I am curious what you find if you benchmark that? There may also be defaults there that pyiceberg should be tuning, but I suspect they will still be better tuned for the kinds of reads pyiceberg is doing.

I have one more question regarding the read_parquet from awswrangler.
Do you know why it's faster than the other methods? Is there any optimization on their end or something?

I was also surprised by the performance difference. It's hard for me to say unless I look into the implementation details (in awswrangler/s3/_read_parquet.py). There's definitely room for optimizations on the PyIceberg side.
If you look at another engine like daft, which is optimized for reading parquet on S3, that's a good target for potential performance gains.
On the PyIceberg side, there's a future opportunity to integrate with iceberg-rust, which might speed up reading files.

you're benchmarking the fsspec FileIO path in pyiceberg, which if I understand correctly is using fsspec s3fs directly with a lot of defaults. Probably it keeps the default block size (5mb).

There are two FileIO implementations, fsspec and pyarrow. In the case above, I believe pyarrow is used, since its preferred over fsspec (source)
Looks like the pyarrow default buffer size is 1MB
https://github.com/apache/iceberg-python/blob/f05b1aedee8451d981188adf68be5e8b360a9ca1/pyiceberg/io/pyarrow.py#L417

@sungwy @kevinjqliu I'm really enjoying this discussion and learning a ton from it. Would love to keep it going but feel free to close it as this is not an issue. Thank you folks!

Thanks for reporting this. I learned a lot from exploring this thread, and we have some solid improvements coming up. Please let us know if anything else comes up!


Objects with same id cannot be stored in database for two different Tenants

Since the id is created automatically by Django's ORM and sets it to be primary_key, even if we have
 class Product(TenantModelMixin, models.Model):
    store = models.ForeignKey(Store)
    tenant_id='store_id'
    name = models.CharField(max_length=255)
    description = models.TextField()

    class Meta(object):
        unique_together = ["id", "store"]

Another store with same id cannot be created, assuming the id is not autoadd. Ideally the primary key should be set as composite one with (id, store_id). I am aware though that composite primary key support is still not there in Django as it breaks a lot of other things like admin where the lookup is primarily based on id only.
It is not clear then in the docs that why having unique_together on id, store is needed, if id is anyways a primary key.

Hi @divick,
so this library is primarily meant to be used with a distributed postgres database. It should also work with a single node postgres.
In citus, when we distribute a table (split it in smaller tables on multiple workers), we have to change the primary key to be a composite primary key with (store_id, id). So you are right, the primary key should be composite :)
As you say composite primary key are tricky, because of the admin and also because of the views urls like for example /products/id.
The documentation has to be updated :), thank you for your feedback.
Having unique constraint with the tenant_id column is necessary in a distributed postgresql setup. As each shard is a table, and are distributed on different workers, unique constraints need to include the column to avoid slow writes (we don't want to have to check all the shards on all the workers :) )
If you want more information on this here is the documentation of citus: https://docs.citusdata.com/en/v8.1/


docs: update version

Update armonik-docs-theme version
Add a CI to validate docs generation in PR
fix #194

@esoubiran-aneo formatting is not running ?


fix(all): sync changes to v3

These changes bring in the latest changes from master into the V3 branch, with some changes.
All Submissions:

[X] Have you followed the guidelines in our Contributing document?
[X] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
[X] Does your submission pass tests?

Side note, but at some point before releasing V3, we MERGE from master into V3, and then, importantly, DO NOT SQUASH MERGE. That way when eventually V3 becomes the master branch... authors get credit for their commits (right now commits from master post v3 split will be lost).

That would be cool but I haven't seen large merges work well.


ngCordovaOauth for Instagram - Invalid scope field

I followed this tutorial to create my own Ionic based Instagram Feed app. I use this ngCordovaOauth plugin to help me with the Oauth part.
But, I get stucked at this screen after login into my Instagram account.

This is my app.js so far:
var app = angular.module('starter', ['ionic', 'ngCordova']);

app.run(function($ionicPlatform) {
    $ionicPlatform.ready(function() {
        if (window.cordova && window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }
    });
});

app.controller('OauthCtrl', ['$scope', '$cordovaOauth', function($scope, $cordovaOauth) {

    $scope.login = function() {
        var igClientId = "example123456789";
        $cordovaOauth.instagram(igClientId, ["scope=basic"]).then(function(result) {
            alert.log(JSON.stringify(result));
        }, function(error) {
            alert.log(error);
        });
    };

}]);

I also try to empty the scope array like this:
$cordovaOauth.instagram(igClientId, [])
But it didn't work too.
How to solve this problem?

Try downloading ng-cordova-oauth again.  I just did a merge with the development branch based on https://github.com/nraboy/ng-cordova-oauth/pull/125.
Someone contributed an Instagram change that I forgot to migrate to production.
Let me know how it goes.
Best,

Ok, I've the latest one of ng-cordova-oauth. Now I get error like inside the screenshot above.
What should I do now?

My assumption is that you disabled implicit grant in your Instagram dashboard:
https://instagram.com/developer/restrict-api-requests/
Find the checkbox and make sure it is enabled.
Best,

You're correct man! This is my final IG Client settings:

And now I get the access_token!

Questions:

Should I store this access_token into user localStorage?
Does this access_token permanent or it will be change in the future?
If it's changing, what is the best approach for me to keep it so that user doesn't require to keep login again to use my app (see their Instagram feed)?

Really appreciate your help and thoughts!

I store it in local storage.  Implicit tokens are designed to expire after one hour.  So you'll have to add logic to check the current time vs the time the token was issued.  If the token is considered expired, then the user will need to log in again.
Best,

I see. So, there's no such thing like "remember me"? My user need to login every 1 hour?

Explicit grants have a refresh token, but they should only be used server side.  Unless you want to build something server side, you should settle with the 1 hour expiration.
This is per the legitimate oauth spec that I followed.

Sorry nraboy. I couldn't really understand it. Could you explain simpler? :)

You might want to do some research on "explicit grant" and "implicit grant" for oauth.
Best,

Alright, thanks!


Fixes #453 - Reversing behavior of Row.lpush/Row.rpush

Co-authored-by: chim<EMAIL_ADDRESS>

HISTORY.md correctly notes this as a breaking change, and it's definitely fixing a bug.
However, we of course don't know how many people are using this and relying on the broken behaviour.
The cautious thing to do would be to use SemVer and put (deprecation?) warnings in release 1.10, and then make the breaking change in release 2.0.

Providing a deprecation period is nice when the user can do something about it in its code, like using another path to avoid the warning. Here, what would we suggest to do to avoid the deprecation in 1.1.0?

Some options:

Just fix it, release as breaking change in 1.1.

Not following SemVer
May break code where people are relying on current behaviour
Non-major bump may surprise people who expect no breaking changes

Just fix it, release as breaking change in 2.0.

Follows SemVer
May break code where people are relying on current behaviour
But a major bump indicates breaking changes, more likely to check release notes

Deprecation warning in 1.1. Fix in 2.0.

Users can fix it and silence the warning
But silencing specific warnings isn't always easy, especially if it comes from a dependency
Not always straightforward to silence warnings
Need to un-silence for 2.0?

Introduce new, fixed methods in 1.1. Deprecate old, broken ones in 1.1. Remove old, broken ones in 2.0.

Warns people immediately about the bug
They can start using the fixed ones
No particular rush to get 2.0 out

I favour number 4.
For example, the new ones could be l_push/r_push or left_push/right_push or prepend/append.
Or better, we should look to the stdlib and use consistent naming with existing data structures.

Lists have l.append(x), and l.insert(0, x) (there's no prepend because it's inefficient.

collections.deque has append and appendleft.

How about this?

Hmm, a slight complication. The existing append just calls rpush and is therefore also now broken (and is fixed by this PR, so needs to be in the release notes):
    def append(self, value):
        self.rpush(value)

My feeling is that few people are using this Row API. And if they are, they should have noticed that reversed behavior. However, I didn't read any bug report about that, so at some point, if they didn't report it, then they are also partly to blame. That's why I still prefer 1. or 2. A drawback of changing the API is that it will be different from the Dataset object which also has lpush and rpush.

Good point, Row also has a similar lpush_col and rpush_col.
How about we go for option 2?
And perhaps make a 1.1 release first where we can at least mention the upcoming change in the release notes?

That sounds like a good plan.


11164 widget reordering fix

Fixes #11164
The problem with the widget ordering was simply that we weren't showing the ordered list on the render. This change fixes that.
This PR also incorporates @ivanmalagon fix for the specs: #11208 (we should wait until that PR is merged to merge this one, just in case something new comes up)
Edit: The PR was just merged to master, so I've merge master in this branch. Ready to deploy if CR and acceptance are both OK.

Works like a charm 🚀


Increase the size of prompts

Use more than just the atoms which connect to the node of a MOFs ("anchor atoms") to prompt the ligand generation.
To do list:

[x] Make an example prompt which includes more than just the anchors
[ ] Ensure that we can still substitute dummy atoms correctly
[ ] Keep track of the prompt throughout the lifetime of a ligand (i.e., all the way through the MOF simulation)
[ ] Test in a larger workflow

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
32 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.3%) to 41.394%

Files with Coverage Reduction
New Missed Lines
%

mofa/model.py
6
91.33%

mofa/utils/src/edm.py
26
58.46%

Totals

Change from base Build<PHONE_NUMBER>:
-0.3%

Covered Lines:
4093

Relevant Lines:
9888

💛  - Coveralls


Include Percy::RedisClient from percy-common

Related:

https://github.com/percy/percy-common/pull/28
https://github.com/percy/percy-common/pull/32

Integrate Percy::RedisClient library for connecting to TLS-enabled Redis when REDIS_URL environment variable is provided or explicitly passed into the initialization for Percy::Hub

@fotinakis Back to you


Action results in two checks on a PR, one that passes, one that fails

Hi folks, thanks for all your hard work on this tool.
I'm hoping someone can help me understand why when I set this action up to run on PRs (following the basic setup instructions), I end up getting two checks on the PR. Actually, only one shows up at first, titled "Code scanning - action / CodeQL-Build (pull_request)". It seems to do the bulk of the scanning, since it takes a little over 10 minutes on our repo. Once it completes, it is marked passing, but then a second check appears farther down the list of checks, titled "Code scanning / CodeQL", which completes in 2 seconds, and it fails (as expected, since I am testing the action with the introduction of code I expected to fail the scan).
You can see this in action on cfpb/cfgov-refresh#5870.
Why are there two checks? Why does one of them pass? Have I misconfigured something?
Thanks for your time.

This is working as expected, but perhaps it's not too clear. The action titled "Code scanning-action / CodeQL-build" is the workflow you wrote and is the one doing the analysis of your project. Once that analysis is submitted GitHub compares it with an analysis submitted for the branch you are merging into, because otherwise how would we know which alerts are new and which are existing ones. In this case there are alerts introduced by this PR and we create a new check called "Code scanning / CodeQL" to show you these new alerts.
Some details like the "completed in" time for the second check are a bit meaningless, so best not to worry about those. Bottom line is you're not doing anything wrong.
I'll close this issue for now but let me know if you'd like any more explanation.

Thanks, @robertbrignull, that helps clear things up a bit.
I'm wondering if it would be possible to incorporate the comparison check into the scan check? If there is a user benefit to seeing them as separate checks, I'm not understanding what that is.
If that's not possible, perhaps I could suggest:

Renaming the 2nd action that shows the alerts to something like "Code scan comparison results" or just "Code scan results" or something like that?
Updating the docs (the Enabling Code Scanning page, specifically) to describe that this is the expected behavior for PR checks

Thanks again!

I'm wondering if it would be possible to incorporate the comparison check into the scan check?

Unfortunately it's not that easy. The main problem is that the analyses of the PR and of the base branch could happen in any order. So if the PR analysis happens first then there won't be anything to compare against when it finishes.

If that's not possible, perhaps I could suggest:

Renaming the 2nd action that shows the alerts to something like "Code scan comparison results" or just "Code scan results" or something like that?
Updating the docs (the Enabling Code Scanning page, specifically) to describe that this is the expected behavior for PR checks

Those are pretty reasonable suggestions. I'll create issues internally and see if we can get the naming or the documentation made more clear.

Sounds good! Thanks, Robert.


[6.0] Make SwiftSDK.init available via @_spi

Cherry-pick of #7482.
This initializer is an internal implementation detail that should only be available via @_spi.
Explanation: swift package init --type macro template is outdated.
Scope:
Risk:
Testing:
Issue: rdar://124160537
Reviewer:

@swift-ci test

@swift-ci test

@swift-ci test


[Question] Wildcard subdomains

So I have this set up and working for normal domains. But for the life of me I can't seem to get wildcard subdomain certificates. I simply cant figure out how to include the DNS plugins with the certbot on the init script.
Anyone have any experience with creating wildcard subdomain certificates with this repo?
Am I even going the correct direction, or am I looking at this in the wrong way?
Thanks!

This repo uses Verification by webserver. to my knowledge wildcard certs are only possible with DNS-authenticators.
This might be helpful: https://community.letsencrypt.org/t/wildcard-domain-step-by-step/58250/4
I am not sure how auto-renewal works with DNS though.

Did you solve the problem with installing the certificate on the subdomain?

I managed to get DNS verification working like so (for Cloudflare):
Follow these docs (specifically the part about getting a cloudflare token):
https://certbot-dns-cloudflare.readthedocs.io/en/stable/
In your docker composer use the image called certbot/dns-cloudflare instead of certbot/certbot
Then, replace the cert issuing command to the following (you'll have to create cf.ini per the docs above):
certbot certonly \
$staging_arg \
$email_arg \
-d $domain \
--rsa-key-size $rsa_key_size \
--no-eff-email \
--agree-tos \
--force-renewal \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cf.ini \
--dns-cloudflare-propagation-seconds 30

Regards,
Francisco Hodge


[Accessibility]A11y_VSCode_RestartRunningTask_ScreenReader:JAWS is not reading the placeholder text.

Environment Details:
VSCode Version : 1.24.1
OS Version : Win10
Additional Details:
ScreenReader,,[JAWS18.0.5038],MAS1.3.1
Repro Steps:
Launch VS Code.
Navigate   to Tasks(Alt+T) menu option and select "Restart Running Task" from   dropdown.
Observe what jaws reads.
Actual:
JAWS is not reading the placeholder text.
Same issue observed in JAWS also.
Expected:
:JAWS is not reading the placeholder text.
Recommendations:
Refer below link which is repository of bug fixes code snippets:
https://microsoft.sharepoint.com/teams/msenable/mas/pages/browse-fixes.aspx
User Impact:
The user will not be able to know the placeholder text.
MAS Reference:
https://microsoft.sharepoint.com/:w:/r/teams/msenable/_layouts/15/WopiFrame.aspx?sourcedoc={54f28d1f-a2d1-4dcd-84e1-5c9b87e8aba4}
Does this issue occur when all extensions are disabled?: Yes
Attachment for Reference
restartplaceholder.pptx

@dbaeumer Should this be a message dialog?

@chrmarti  No, this is actually using a normal quick pick which uses a place holder text. I will assign this to you assuming that this is something that needs to be addressed in the quick pick infrastructure.

Please ping if you think otherwise.

This is a little problematic then in terms of showing progress. I currently feed in a promise and the quick pick shows progress if it takes a while to compute the running tasks. If I would use a dialog the quick pick would show then close and a dialog would pop up. I found it the worse alternative. Will this be something that becomes easier with the multi step input?

No, not initially. We could later add a message area to the QuickPick to avoid having to use a list item to show messages like this one.

Good idea.

Dup of https://github.com/Microsoft/vscode/issues/51824
Also we do not suport jaws


TextField multiline with no rows throws error when using ReactTestRenderer

[x] This is not a v0.x issue.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior 🤔

When a renderer for <TextField multiline /> is created by ReactTestRenderer.create, no errors should be thrown:
import React from 'react'
import ReactTestRenderer from 'react-test-renderer'

import TextField from '@material-ui/core/TextField'

it('should not throw errors', () => {
  ReactTestRenderer.create(<TextField multiline />)
})

Current Behavior 😯

Running a test containing such a request produces this error:
    Error: Uncaught [TypeError: Cannot read property 'style' of null]

This is what appears to be the relevant part of the stack trace:
    The above error occurred in the <ForwardRef(Textarea)> component:
        in ForwardRef(Textarea) (created by ForwardRef(InputBase))
        in div (created by ForwardRef(InputBase))
        in ForwardRef(InputBase) (created by WithStyles(ForwardRef(InputBase)))
        in WithStyles(ForwardRef(InputBase)) (created by ForwardRef(Input))
        in ForwardRef(Input) (created by WithStyles(ForwardRef(Input)))
        in WithStyles(ForwardRef(Input)) (created by ForwardRef(TextField))
        in div (created by ForwardRef(FormControl))
        in ForwardRef(FormControl) (created by WithStyles(ForwardRef(FormControl)))
        in WithStyles(ForwardRef(FormControl)) (created by ForwardRef(TextField))
        in ForwardRef(TextField) (created by WithStyles(ForwardRef(TextField)))

Steps to Reproduce 🕹

Link: https://codesandbox.io/s/create-react-app-jl67r

Go to the Tests tab
Note the failing test (the error is actually different in the sandbox—maybe this helps diagnose the problem?)
Note the other variants of rendering TextField that do not fail
Note the workaround (fourth test): using createNodeMock to return a textarea element

Context 🔦

I have test suites which render React components that have the Material UI TextField component with multiline set to true (but no rows attribute). These tests passed in v1.x (and the app works fine as well) but are now throwing this error in v4.1.3 (I skipped v3.x so I don't know if they would have passed then).
I can use the createNodeMock workaround for now, but it feels unwieldy to add this to every usage of ReactTestRenderer for a component that happens to have a TextField multiline somewhere in its tree.
Your Environment 🌎

Tech
Version

Material-UI
v4.1.3

React
v16.8.6

Browser
n/a

TypeScript
n/a

etc.

Thanks in advance for any help that you might be able to provide!

@dondi Thanks for the report, the issue is that the input ref is null when the useLayoutEffect effect triggers. I'm wondering if we shouldn't change the logic to:
const useEnhancedEffect =
  typeof window !== 'undefined' && process.env.NODE_ENV !== 'test'
    ? React.useLayoutEffect
    : React.useEffect;

In v1 -> v3 we were avoiding the issue with:
https://github.com/mui-org/material-ui/blob/acbf1e360c326de183cc1801f7510222060e54b4/packages/material-ui/src/InputBase/Textarea.js#L103-L111

@dondi What do you think? Do you want to submit a pull request?
I have run the following script:
import React from "react";
import ReactTestRenderer from "react-test-renderer";
import * as core from '@material-ui/core';

// Throw when accessing the children
const broken = [
  'WithStyles(ForwardRef(ExpansionPanel))',
  'WithStyles(WithFormControlContext(ForwardRef(FormControlLabel)))',
  'WithStyles(Tooltip)',
]

Object.keys(core).forEach(key => {
  const Component = core[key];

  if (!Component.displayName || broken.indexOf(Component.displayName) !== -1) {
    return;
  }

  it(`should be OK with ${Component.displayName}`, () => {
    ReactTestRenderer.create(<Component />);
  });
})

The problem seems to be isolated to the TextareaAutosize :)

Thanks for the quick analysis! It'll take a little longer to digest everything but sure, once I’ve gotten myself situated, I can submit something.

@oliviertassinari I have tried the two approaches, https://github.com/mui-org/material-ui/issues/16491#issuecomment-508654731 and https://github.com/mui-org/material-ui/issues/16491#issuecomment-508666249, and the first approach which swaps out useEffect for useLayoutEffect did not work for me because syncHeight still gets called in TextareaAutosize, thus accessing the ref and encountering errors because the ref is null.
The second approach, which just returns if the ref is null, passes the test case. I think I’ll go with that, although I don’t know the code base well enough to know whether just returning from syncHeight upon encountering the null ref will suffice.
I guess we’ll find out when the PR goes up for review 🙂 I just thought I would comment ahead of this in order to explain why the PR will look the way it does.

the first approach which swaps out useEffect for useLayoutEffect

@dondi Thanks for trying it out. However, I was proposing the oppossite. Adding an env test for test should make the logic uses useEffect instead of useLayoutEffect. Could you try again :) ?

@oliviertassinari I tried again (and copy-pasted the code from the comment to be sure) but still get an error:
  1) <TextField />
       prop: multiline
         should render without errors in ReactTestRenderer:
     Error: Uncaught [TypeError: The provided value is not of type 'Element'.]
    at reportException (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:62:24)
    at innerInvokeEventListeners (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:331:9)
    at invokeEventListeners (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:266:3)
    at HTMLUnknownElementImpl._dispatch (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:212:11)
    at HTMLUnknownElementImpl.dispatchEvent (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:87:17)
    at HTMLUnknownElement.dispatchEvent (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:144:23)
    at Object.invokeGuardedCallbackDev (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:2427:16)
    at invokeGuardedCallback (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:2480:31)
    at commitPassiveEffects (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10867:9)
    at flushPassiveEffects$1 (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:10915:5)
    at scheduleRootUpdate (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12583:3)
    at updateContainerAtExpirationTime (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12613:10)
    at updateContainer (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:12624:10)
    at Object.create (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/react-test-renderer/cjs/react-test-renderer.development.js:13057:5)
    at Context.create (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/packages/material-ui/src/TextField/TextField.test.js:149:25)
    at callFn (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runnable.js:372:21)
    at Test.Runnable.run (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runnable.js:364:7)
    at Runner.runTest (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runner.js:455:10)
    at /Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runner.js:573:12
    at next (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runner.js:369:14)
    at /Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runner.js:379:7
    at next (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runner.js:303:14)
    at Immediate._onImmediate (/Users/dondi/Documents/Main/Code/git/specialx/material-ui/node_modules/mocha/lib/runner.js:347:5)
    at processImmediate (timers.js:637:19)

I’ll dig in a bit more to see what’s up. The discussion here and in the PR is giving me a better big-picture sense of what’s going on and so I’m getting some other ideas now.

Just stumbled upon this, my solution for this was to not use react-test-renderer, but render from @testing-library/react
it("renders", () => {
  const { asFragment } = render(<Header text="Hello!" />);
  expect(asFragment()).toMatchSnapshot();
});

Shoutout to https://www.leighhalliday.com/introduction-react-testing-library where I was able to find this API for generating snapshots.


Console Spamming error

The console is spamming the following error:
https://hastebin.com/emijobiwuq.css

This error isn't enough to go on, the db is null meaning it failed outside of Prism's control. If you see any other H2-related errors, that will help you determine the issue.

I can't seem to figure out the issue.
https://gyazo.com/53a5fd0aa2ba9e14bcfb1a921133a666
These are the 3 files and there don't seem to be any issues with them. Would you be able to help?


Bubbles (Horizontal Scroll) in FaceBook Messenger

How to show the attachments as a horizontal bubble list in Messenger ? Right now if a message has multiple attachments (each attachment having multiple buttons), they are shown vertically. I would like to present this horizontally.
Any ideas how to do this ?
Here is how it looks now,

Here is how I want it to look,

Ah, it turned out that you need images for automatic horizontal bubbles. Sorry for this.


Unable to add extra methods

Hi,
I'm trying to create a custom class in ts but I'm running into a couple of issues, this is one...
If I add a second method, by simply modifying dummy_class_foo.ts like this:
        rt.regFunc(_plusX, type, "plusX", [rt.intTypeLiteral], rt.intTypeLiteral);
        rt.regFunc(_plusX, type, "plusX2", [rt.intTypeLiteral], rt.intTypeLiteral);

Using the class_basics in an HTML file:
    var code = "#include <iostream>"+
        "#include <foo>"+
        "using namespace std;"+
        "int main() {"+
        "    Foo foo;"+
        "    cout << foo.x << ',' << foo.y << endl;"+
        "    cout << foo.plusX(5) << endl;"+
        "    cout << foo.plusX2(5) << endl;"+
        "    return 0;"+
        "}";

I get this error:
[Error] TypeError: undefined is not an object (evaluating 't.v')
	dispatchException (JSCPP.es5.min.js:1:334009)
	(anonymous function) (JSCPP.es5.min.js:1:330361)
	run (JSCPP.es5.min.js:1:220827)
	Global Code (class.html:32)

Any help would be greatly appreciated. Thanks.

Have you run npm run build to regenerate JSCPP.es5.min.js after the change?

Have you run npm run build to regenerate JSCPP.es5.min.js after the change?

thanks, I was usingwatch-ts but that wasn't enough.

thanks, I was usingwatch-ts but that wasn't enough.


Enable Simulation of the Hippocampus (AUV from TUHH)

Adding files which enable a simulation with the autonomous underwater
vehicle (AUV) from the Technical University Hamburg-Harburg

@LorenzMeier is there a reason the mixer having to be on  ROMFS/px4fmu_test/mixers/?

Jenkins test this please.

Yes - everything that goes into common adds to the flash space use on the main MCU

Yes - everything that goes into common adds to the flash space use on the main MCU

Ok makes sense. There was heavy formatting on the mixer file in order to be accepted by the CI system. Is there a reason for it sometimes not accepting sectioning titles for example?

Nice, thanks @LorenzMeier . But as @TSC21 mentionend, do you know why I had such trouble to get the mixer accepted by the CI?

@NRottmann can you still please update the Devguide here: https://dev.px4.io/en/simulation/gazebo.html

@TSC21 Sure, but at the moment I am not at the university. I will do it when I am back. I think this will be around the first of september.

@TSC21 Sure, but at the moment I am not at the university. I will do it when I am back. I think this will be around the first of september.

That's fine. Thanks!

@TSC21 Hi, I want to update the Devguide. I've already forked it but I have a few questions:
1.) The simulation of the HippoCampus works right now only with ROS wrappers, so I just would add things here: https://dev.px4.io/en/simulation/ros_interface.html , is this right?
2.) Shall I just add things or can I also rewrite somethings?

1.) The simulation of the HippoCampus works right now only with ROS wrappers, so I just would add things here: https://dev.px4.io/en/simulation/ros_interface.html , is this right?

Would be good if you can remove this dependency and have it working with Gazebo only. Something that could run after issuing make posix_sitl_default gazebo_hippocampus. If you have any doubts I can help ya on how to do it.

2.) Shall I just add things or can I also rewrite somethings?

You can add and rewrite whatever you like as long it is explainable and makes sense.

@TSC21 Hi, I've seen that you already approved the changes to the sitl_gazebo submodule. A new pull request for the master has been started in order to enable simulation without ROS wrappers (https://github.com/PX4/Firmware/pull/7888).


Poor error reporting with parse-server, express and Rollbar

From what I can tell, parse-server doesn't throw standard Javascript errors, see: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Error
Instead it throws maps like this:
{
  "message": "code=209, message=invalid session token"
}

Standard error reporting solutions like AirBrake and Rollbar do not handle these well, making it impossible to find out what actually went wrong.
Instead code like this would work well:
var err = new Error('Invalid session token (Code=209)');
err.code = 209;

Maybe actual root cause is: https://github.com/ParsePlatform/Parse-SDK-JS/issues/326

This seems to fix things up a bit:
// Fix up Parse.Error handling for rollbar :(
app.use(function(err, req, res, next) {
  var data = null;

  if (err instanceof Parse.Error) {
    var parseErr = err;
    // replace error
    err = new Error(parseErr.message);
    data = { code: parseErr.code };
    // Group errors by parse error code, see: https://rollbar.com/docs/grouping-algorithm/
    if (parseErr.code)
      data['fingerprint'] = parseErr.code.toString()
  }

  return rollbar.handleErrorWithPayloadData(err, data, req);
});

@alexblack what do you suggest?

If Parse.Error extended from Error as is normal for javascript errors, then that would be a big improvement. But, presumably there is some reason they don't.
For us, the code above fixes things up enough.

I believe the main issue is that we're using the Parse client SDK errors inside the server. If it makes sense to use a new Error type like ParseServer.Error that extends error I would accept that too if that makes sense. Would you like to work on such PR?

How do we figure out if that makes sense?  This doesn't sound like a good first PR for someone like myself, as it probably affects a lot of code.

That's a replacement at large of all Parse.Error to ParseServer.Error, tedious but not complicated. I don't really have time to work on that for now (I'm trying not to improve the bandwidth for large push sending), and given that you have your workaround, that seems to be OK.

Yes the workaround works fine.  It lacks stack traces that you normally get with JavaScript, but it's not the end of the world

Yes the workaround works fine.  It lacks stack traces that you normally get
with JavaScript, but it's not the end of the world.
On Oct 22, 2016 10:27 AM, "Florent Vilmart"<EMAIL_ADDRESS>wrote:

That's a replacement at large of all Parse.Error to ParseServer.Error,
tedious but not complicated. I don't really have time to work on that for
now (I'm trying not to improve the bandwidth for large push sending), and
given that you have your workaround, that seems to be OK.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ParsePlatform/parse-server/issues/2841#issuecomment-255541812,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAJFwtlST2Fy6sGl-sHWAuIegwubkQ4Wks5q2kdtgaJpZM4KQf6H
.

dupe of #661


cmd/go: -gcflags and cached packages

Delve builds its binaries using -gcflags='-N -l' to disable inlining and optimizations. This works well until the user separately does a go install or a go build -i at which point any subsequent build will pick up the cached version of all unchanged dependencies, built with optimizations turned on, leading to surprising behavior.
Attempting to circumvent this problem by passing -a to build fail because of #18774.
Considering that #18774 has existed for a while (the first reference I found is #12055) would it be possible to make build pick up cached packages only when compiler flags match, making an exception for runtime?

This looks like a dup of the discussion in issue #14319, in particular this comment about making -N part of the build signature:

There's also the question of what should happen if you mix packages compiled with and without -N and whether -N should be part of the build signature. I think it's safe to mix packages as long as there are no "go:nosplit" functions in the user packages (auto-nosplit should be fine, since their bound is small and fixed) and user code can't directly call nosplit runtime functions with large frames (which I think is true). That's a lot of "if"s, and it's also strange that the same build command can result in different binaries depending on which packages are clean. To me, this indicates -N should be part of the build signature. I'm not sure if we do that for other flags.

That comment wouldn't fully solve the problem however, even if build didn't mix packages built with and without -N it still couldn't build runtime with -N.

Related (possible dup?): #18369

Work on better caching will fix this. I have a prototype. Not for Go 1.9 but probably for Go 1.10.

Great, thank you. I should mention that last week I've discovered that on tip now I can build with both -a and -gcflags="-N -l" together, which provides a workaround for this problem.

This Makefile is meant to be used by people that do not usually work
with Go source code. If you know what GOPATH is then you probably
don't need to bother with make.
.
@echo "Run "$(GOBIN)/geth" to launch geth."
how to modify the makefile above in order to show the variable?


All contributors badge does not update

The all-contributors badge on the README file does not update when new contributors are added (e.g. it's stuck to 77 but we have 81 in the all contributors table). It might be that we just need to add the README back to the files list in the configuration file (https://allcontributors.org/docs/en/bot/configuration), but not sure if that will bring the table back to the README.

Yeah that is updated automatically as well:
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-77-orange.svg)](#-contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

Not the nicest way for the badge to work, but I guess it keeps them from requiring an account
I will find a fix for this since I broke it.


Refactor out Under FS into separate modules (TACHYON-221)

This is a resubmission of #642 and #647 and hopefully should now be sufficiently stable to be merged and pave the way for further extraction of modules based upon this pattern.
It is rebased up against the latest master (at time of submission) and as part of rebasing I have tried to strip out unnecessary formatting changes where possible.  However I haven't gone back through and stripped these out of classes that didn't have rebase conflicts so there are still some there but I hope these won't unduly hold up getting this reviewed and merged.
See the previous pull requests for general overview of the PR, main changes since last submission are as follows:

Accounts for @hsaputra's  TachyonConf refactoring
Adds new Under FS module JARs to the Tachyon class path in libexec/tachyon-config.sh
Strips out some of the unrelated formatting changes

As previously noted one advantage of this refactoring is that both local and HDFS tests are run as part of the build.  Gluster FS tests still require explicitly enabling since they require a specific environment to run.
I have successfully started a Tachyon cluster and done tachyon runTests with both a local and HDFS under file system in my environment.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Tachyon-Pull-Request-Builder/2804/
Test PASSed.

Closing to address formatting issues