Unable to install with composer

Hi,
When I run composer require syntaxera/cakephp-sparkpost-plugin it says "could not find package".
Submitting it to Packagist should fix this: https://packagist.org/packages/submit

Fixed, however Composer throws a ton of publickey warnings when installing. Looking into those now.

Thanks, it's installing fine for me now.


This node is not a map nor an empty collection

Hello,
I have tried to follow your instructions from Issue#25, but could not manage to make it work. When I am trying to run the command py create_face_model.py -i data/ I am getting the following error:
ImportError: No module named cv2
Also, if I erase the first line on create_face_model.py, #!/usr/bin/python, I am getting this error:
C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:636: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If yo
u are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage
Thank you in advance.
I am using python 3.6

Update
I am getting these errors:
File "C:/Users/Robert/Desktop/Human-detection-and-Tracking-master/create_face_model.py", line 55, in
images, labels = get_images_and_labels(path)
File "C:/Users/Robert/Desktop/Human-detection-and-Tracking-master/create_face_model.py", line 44, in get_images_and_labels
image[y: y + h, x: x + w])
cv2.error: OpenCV(3.4.1) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:636: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon supp

Hi Robert,
Are you able to run any sample code in OpenCV, because it seems like you haven't installed OpenCV properly.

Hi,
I haven`t tried to run other programs that use opencv, since this was the first time I actually used Python. On my project it says that opencv and opencv-contrib are installed. I truly do not know what the issues is since I have tried to use the program on another pc and there it works. Also, I am getting a new error, that cv2 has no attribute called face.
Thank you.

Hi Robert,
The error "cv2 has no module named face" occurs when OpenCV is not build with contrib modules.

I haven't received any replies, I hope this issue is resolved.


feat(kill session): adapt global client session and using block in oracle model in kill session

What type of PR is this?
type-feature

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #1375
Special notes for your reviewer:

Additional documentation e.g., usage docs, etc.:

great job, the logic is very clear


Add page: "Getting started guide"

step by step guided tutorial on how to run EPUBCheck

I can't figure out which page to write this information on, is it "Introduction" (docs/user/index.md)?

Often I see the "quick start" page as the first entry after the introduction in end-user documentation.
I just added a page for it, at /docs/user/getting-started.md. I figure we can move it later if we need to.
What do you think? Does that sound ok?

Perfect, I'll work on it

TBD:

[ ] add link to "Getting Help" (issue #24 )


County Name as a URL Parameter

Grand County is ready to upgrade their site for us.  If we could pass them a URL such as mapserv.utah.gov/parcels?county=GRAND. Then the app would load with Grand County in the title and zoomed to the extent of the county.
The current link is http://www.grandcountyutah.net/790/Parcel-Viewer-Map  and as you would suspect it is busted.

Counties with a space in their full name don't appear to work with the space encoded as %20 or a + sign, so you can't create a valid URL link to them.

[Salt Lake](http://mapserv.utah.gov/#/Salt Lake) should work now ✅


Add more boot time benchmarks

cc @jtkukunas
To be completed with more tests
Measure boot time scalability
On a given system running N containers, how does our boot time per container increase when starting a single container? N=[10, 50, 100]

So, we need to trace interesting events to measure the various boot phases across multiple processes: eg. runtime create() start, qemu exec, qemu/firmware boots the kernel, hyperstart starts, READY is sent, hyperstart createpod/startcontainer commands, runtime start() start and end, ...
I was thinking we use use either uprobes if we want to get fancy, or simple log traces the proxy can gather in one place. We'll have traces for debugging purposes anyway, so it seems the easier path to go for.
An interesting view would be something ala bootchard where we see the various processes (qemu, runtime create, runtime start, runtime stop) and how well we parallelize those processes: one thing that we want possible for 3.0, in the case of docker, is to hide the qemu/hyperstart boot latency behind docker sequencing the create and start commands. But, then, maybe the gains there would be small, we don't really know today.

The following tests were expanded to capture the request:

Docker workload latency for 10, 50 and 100 containers
Stress Kernel boot time for 10, 50 and 100 containers

Might be interesting to add shutdown time benchmarks too.

Just for ref, there is an Issue around the shutdown and rm times over here: https://github.com/clearcontainers/tests/issues/358


why cannot get expected accuracy?

Hi,
when I run
python experiments.py -r F2_VGG_0 --arch vgg11_bn --adam --lr 0.001 --epochs 325 -d cifar100
i cannot get the accuracy of baseline which is around 70%, actually I just get top1:56%.
Why?

Hi,
I think the issue here is use of "cifar100" in your command. If you are trying to recreate the Figure 2 VGG experiments, then you should remove the extra "0" in your quoted command to ensure that you are using "cifar10" data. When I remove the extra "0" from the end of the command you listed, I get the expected 85% baseline accuracy (you should see 60+% test accuracy after just 1 training epoch).
Since you expected 70% baseline accuracy, I think you may be trying to run the "cifar100" experiments shown in Table F.1. Those experiments train ResNet18 on "cifar100", so you will have to modify your command accordingly; for instance, you should change the "--arch" argument to "resnet18". The exact command to use for those experiments is here. When I run:
python experiments.py -r TF1_0 --arch resnet18 --adam --lr 0.0001 --epochs 4000 -d cifar100 --augment, I get 62% top1 test accuracy by epoch 15. Note that the learning rate is small here, and the training duration is 4000 epochs, so running this experiment takes a long time (this training duration/setup was copied from https://arxiv.org/abs/1912.02292).
Please let me know if that doesn't clear things up or if you have any other questions.
Thanks!
Brian


Make scalaJSUseRhino := false by default?

The only reason we have scalaJSUseRhino := true by default is the out-of-the-box experience. We've always wanted to say: hey, you don't need to install anything but sbt, and Scala.js just works.
But, in practice, no one keeps using Rhino. Everyone installs Node.js and rolls with it. So the "default" build includes scalaJSUseRhino in Global := false anyway. Besides, sometimes beginners are baffled by how slow Scala.js is, and at some point veterans realize they're still using Rhino, and tell them not to.
I believe it would do everyone a favor to disable Rhino by default. Yes, our tutorial should then say that users need to install Node.js by default, but that is what every reasonable Scala.js user does anyway.
Note: this only affects users who actually use the run and/or test tasks from sbt.

Ok, works for me. But what do we need Rhino for at all in this case? Maintaining the hooks in the linker for Rhino's lazy loading to work is quite some overhead (and for example sanitizing the Emitter phase might be more complicated as well).
Is actually anyone using Rhino except for toy projects?

Probably you can also try to download and install node on-the-fly using Sbt?

Well at least in 0.6.x we need it for backwards compatibility.
We could consider removing it entirely in 1.0.0, indeed. So we should even deprecate scalaJSUseRhino as well as the Rhino JS env.
Note that currently there's at least one place where we use Rhino: in the Scala community build. We did that because it was easier to set up. We should make sure we can get Lightbend top install a recent enough version of Node.js on the community build machines.

Probably you can also try to download and install node on-the-fly using Sbt?

We considered that a long time ago but had quickly dismissed it, because that would require a lot a system-dependent logic in the sbt plugin, and we do not have the expertise nor the wish to implement and maintain such a thing.

System dependent code is limited to choose between the versions listed here: https://nodejs.org/en/download/
You can also consider a "best effort" approach where you try to download and execute the standalone package and if it doesn't work just display an error...

Maybe this?

Ah ah! Good one :P
I'd rather just tell people: you need to install Node.js, maybe give the website download URL, and let them do it. Anyway, they also have to install sbt to begin with (and a a JRE), so it's not like we're changing from 0 dependency to at least one.

Yeah, I agree. So we'd say:

Set scalaJSUseRhino := false by default
Deprecate scalaJSUseRhino
I would do this in any case, since the setting does not make an awful lot of sense if it is not true by default. We can move it to a setting of our build if we still need Rhino in CI.
Consider deprecating RhinoJSEnv (depending on how much users scream and whether we can make the community build work).

Sounds good to me.

I would do this in any case, since the setting does not make an awful lot of sense if it is not true by default.

Good point.


Fix authentication

In the last refactoring, the authentication with auth0 broke.  @davidascher to fix this so others can work on authentication-requiring use cases.

Fixed it temporarily by getting auth0 to accept the /en-US URL as a redirect, but that won't work in general.


Why the document for Web API in ASP.NET is not present?

I feel this is not write. Whole document was supporting ASP.NET till now and all of sudden there is no suggestion for ASP.NET

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

ID: 15a27a6a-864a-a37e-e3fd-714f01ba7102
Version Independent ID: 4b14dfa1-7c7c-e727-b586-7f0abc9bcd57
Content: Call a web api from a web app - Microsoft Entra
Content Source: articles/active-directory/develop/scenario-web-app-call-api-call-api.md
Service: active-directory
Sub-service: develop
GitHub Login: @jmprieur
Microsoft Alias: jmprieur

@anirudhsinghrawat Thank you for your feedback . We will check this internally and get back to you on the same.

As far as what we have found , In order to standardize the code for users who could be from any platform linux , windows , mac etc. Asp.net core code is provided in place of older asp.net . Microsoft aims to provide platform agnostic code which can run on every platform which is achievable by ASP.net core in every aspect . Hence we recommend using ASP.net core which is almost similar for anyone who already have experience with ASP.net .


Macos Bazel opt build failue: src/cpp/server/server_cc.cc:765:31: error: unused parameter 'ok'

Error is:
Use --sandbox_debug to see verbose messages from the sandbox
src/cpp/server/server_cc.cc:765:31: error: unused parameter 'ok' [-Werror,-Wunused-parameter]
  void DoWork(void* tag, bool ok, bool resources) override {
                              ^
1 error generated.
INFO: Elapsed time: 542.743s, Critical Path

Full log: https://source.cloud.google.com/results/invocations/8cbb1be3-1919-4237-a4fd-3c1b43a67e01/targets/grpc%2Fcore%2Fpull_request%2Flinux%2Fgrpc_build_artifacts/log
Seen in unrelated PR: https://github.com/grpc/grpc/pull/25406
Seems related to https://github.com/grpc/grpc/commit/9cceb28b2e5dcabd92a54d84ac0e3d546aa9680f#diff-afab775337cea1e27d51243874ffb2e89d8c9fac8adce2577c39ca7735dc0497
Looks like the ok param to DoWork under opt builds since ok is now read only inside of a GPR_DEBUG_ASSERT.

#25438

https://github.com/grpc/grpc/pull/25438 should fix this


Annex D example: Main program as a test

See https://github.com/dotnet/csharpstandard/pull/470#discussion_r818409607
Should we remove the Main class from the example in light of years of improvement in unit test frameworks?

@BillWagner It seems odd that there is no Main method in the source code in D.5.1, yet there is in D.5.2, which claims to be the resulting XML from D.5.1. I'm OK for you to remove it from D.5.2.


Given Array<T> const index which not overflow, should indicate element type T instead of T|undefined

Bug Report

🔎 Search Terms

Array<T>
const integer index
not overflow index
indicate element type from array and array index
array element type might be undefined

🕗 Version & Regression Information

This is a crash
This changed between versions ______ and _______
This is the behavior in every version I tried, and I reviewed the FAQ for entries about _________
I was unable to test this on prior versions because _______

⏯ Playground Link

Playground link with relevant code
💻 Code

function fn(s: string) {
        console.log(s)
}

function reproduce(input: string[]) {
        switch (reproduce.length) {
                case 0 as const:
                case 1 as const:
                        fn(input[0 as const])
                        break
                default:
                        break
        }
}

const input: string[] = []
switch (input.length) {
        case 0 as const:
        case 1 as const:
                fn(input[0 as const])
                break
        default:
                break
}

🙁 Actual behavior

// fn(input[0 as const])
Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  Type 'undefined' is not assignable to type 'string'.

🙂 Expected behavior

// fn(input[0 as const])
OK

Additional
I guess there is already an issue.
But seems not easy to find which to track on from tons of issues.

Duplicate of #38000. Used search terms: array length in:title

Background
@MartinJohns
The purpose is parsing column base text into interface.
The column base text definition is in linux kernel.
The column is generated from str.split.
Some columns are required, some columns are optional, based on columns length.
Given

columns is Array<string> or string[]
casting columns into interface
given const-not-overflow-index

Actual

columns[index] is T|undefined

Expected

columns[index] is T

Workaround

columns is LengthCaseArray<string>

// prettier-ignore
type LengthCaseArray<T> =
|[] & {length:0}
|[T] & {length:1}
|[T,T] & {length:2}
|[T,T,T] & {length:3}
|[T,T,T,T] & {length:4}
|[T,T,T,T,T] & {length:5}
|[T,T,T,T,T,T] & {length:6}
|[T,T,T,T,T,T,T] & {length:7}
|[T,T,T,T,T,T,T,T] & {length:8}
|[T,T,T,T,T,T,T,T,T] & {length:9}
|[T,T,T,T,T,T,T,T,T,T] & {length:10}
|[T,T,T,T,T,T,T,T,T,T,T] & {length:11}
|[T,T,T,T,T,T,T,T,T,T,T,T] & {length:12}
|[T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:13}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:14}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:15}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:16}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:17}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:18}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:19}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:20}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:21}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:22}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:23}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:24}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:25}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:26}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:27}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:28}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:29}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:30}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T] & {length:31}
|[T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,...T[]] & {length:number}

This was a well-defined limitation in #39560. We're offering two options here:

noUncheckedIndexedAccess off, which is convenient in all cases
noUncheckedIndexedAccess on, which is sound in all cases

Given that we can't fully track all possible array mutations, we don't intend to add a third in-between option, nor unsound behavior in the latter option.


🐛Need to change the "bundle_id" in "google-services.json" file flutter app

Bug report
In my Flutter app project, the "bundle_id" that exists in the "google-services.json" is not the same as CFBundleIdentifier in info.plist and BUNDLE_ID in the "GoogleService-Info.plist"
Describe the bug

In the firebase project, I created an Flutter App With Bundle_Id ="com.example.yyyy"
and after that I changed the bundle_id to "com.example.xxxxxxx"
and removed the old iOS app Bundle_Id="com.example.yyyy" from the project
still get the old bundle_id = "com.example.yyyy" and different "client_id" too when run flutterfire.

"google-services.json"
      "services": {
        "appinvite_service": {
          "other_platform_oauth_client": [
            {
              "client_id": "yyyyyyyyyy.yyyyyyy.com",
              "client_type": 2,
              "ios_info": {
                "bundle_id": "com.example.yyyyyyyyyyy" // need to change that
              }
            }
          ]
        }
      }

Steps to reproduce
Steps to reproduce the behavior:

Go to Flutter Project
Change the IOS Bundle_Id name
Run flutterfire configure
Generate google-services.json with old bundle_id inside the android folder
And the "client_id" also related to the old bundle_id

Expected behavior

Change the bundle id and client_id to the related bundle_id in the flutter project

Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
[√] Flutter (Channel stable, 3.7.7, on Microsoft Windows [Version 10.0.19044.2728], locale en-US)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[√] Chrome - develop for the web
[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2021.3)
[√] VS Code (version 1.76.2)
[√] VS Code (version 1.75.0-insider)
[√] Connected device (3 available)
[√] HTTP Host Availability

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
Dart SDK 2.19.4
Flutter SDK 3.7.7
app 1.0.0+1

dependencies:
- adjust_sdk 4.33.1 [flutter meta]
- cached_network_image 3.2.3 [flutter flutter_cache_manager octo_image cached_network_image_platform_interface cached_network_image_web]
- connectivity_plus 3.0.3 [flutter flutter_web_plugins connectivity_plus_platform_interface js meta nm]
- country_picker 2.0.19 [flutter collection]
- crypto 3.0.2 [typed_data]
- cupertino_icons 1.0.5
- dart_ipify 1.1.1 [http]
- device_info_plus 8.1.0 [device_info_plus_platform_interface ffi file flutter flutter_web_plugins meta win32]
- dio 4.0.6 [http_parser path]
- equatable 2.0.5 [collection meta]
- expandable 5.0.1 [flutter]
- external_app_launcher 3.1.0 [flutter]
- file_picker 5.2.5 [flutter flutter_web_plugins flutter_plugin_android_lifecycle plugin_platform_interface ffi path win32]
- firebase_analytics 10.1.6 [firebase_analytics_platform_interface firebase_analytics_web firebase_core firebase_core_platform_interface flutter]
- firebase_auth 4.3.0 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface
flutter meta]
- firebase_core 2.8.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_crashlytics 3.0.17 [firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface flutter stack_trace]
- firebase_messaging 14.3.0 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta]
- firebase_performance 0.9.0+16 [firebase_core firebase_core_platform_interface firebase_performance_platform_interface firebase_performance_web flutter]
- flutter 0.0.0 [characters collection js material_color_utilities meta vector_math sky_engine]
- flutter_app_badger 1.5.0 [flutter]
- flutter_bloc 8.1.2 [flutter bloc provider]
- flutter_cupertino_datetime_picker 3.0.0 [flutter]
- flutter_holo_date_picker 1.1.0 [flutter auto_size_text]
- flutter_inappwebview 5.7.2+3 [flutter]
- flutter_local_notifications 13.0.0 [clock flutter flutter_local_notifications_linux flutter_local_notifications_platform_interface timezone]
- flutter_localizations 0.0.0 [flutter intl characters clock collection js material_color_utilities meta path vector_math]
- flutter_mobx 2.0.6+5 [flutter mobx]
- flutter_overlay_loader 2.0.0 [flutter]
- flutter_secure_storage 8.0.0 [flutter flutter_secure_storage_linux flutter_secure_storage_macos flutter_secure_storage_platform_interface flutter_secure_storage_web flutter_secure_storage_windows meta]
- flutter_speed_dial 6.2.0 [flutter]
- flutter_staggered_grid_view 0.4.1 [flutter]
- flutter_svg 2.0.1 [flutter vector_graphics vector_graphics_codec vector_graphics_compiler]
- fluttertoast 8.2.1 [flutter flutter_web_plugins]
- freshchat_sdk 0.10.3 [flutter]
- google_sign_in 5.4.4 [flutter google_sign_in_android google_sign_in_ios google_sign_in_platform_interface google_sign_in_web]
- http 0.13.5 [async http_parser meta path]
- hydrated_bloc 8.1.0 [bloc hive meta synchronized]
- image_picker 0.8.6+2 [flutter image_picker_android image_picker_for_web image_picker_ios image_picker_platform_interface]
- infinite_scroll_pagination 3.2.0 [flutter sliver_tools]
- intl 0.17.0 [clock path]
- introduction_screen 3.1.6 [flutter dots_indicator collection]
- just_audio 0.9.31 [just_audio_platform_interface just_audio_web audio_session rxdart path path_provider async uuid crypto meta flutter]
- local_auth 2.1.3 [flutter local_auth_android local_auth_ios local_auth_platform_interface local_auth_windows]
- mime 1.0.4
- mixpanel_flutter 2.0.0 [flutter flutter_web_plugins js]
- mobx 2.1.4 [meta]
- mobx_codegen 2.1.1 [analyzer build build_resolvers meta mobx path source_gen]
- network_info_plus 3.0.2 [collection nm flutter flutter_web_plugins meta network_info_plus_platform_interface]
- open_filex 4.3.2 [flutter ffi]
- overlay_support 2.1.0 [flutter async]
- package_info_plus 3.0.3 [ffi flutter flutter_web_plugins http meta path package_info_plus_platform_interface win32]
- path_provider 2.0.12 [flutter path_provider_android path_provider_foundation path_provider_linux path_provider_platform_interface path_provider_windows]
- permission_handler 9.2.0 [flutter meta permission_handler_android permission_handler_apple permission_handler_windows permission_handler_platform_interface]
- pin_code_fields 7.4.0 [flutter]
- record 4.4.4 [flutter record_platform_interface record_web record_windows record_macos record_linux]
- sendbird_sdk 3.2.4 [flutter collection uuid json_annotation encrypt shared_preferences http logger mime connectivity_plus meta http_parser web_socket_channel universal_io]
- share_plus 6.3.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]
- shared_preferences 2.0.17 [flutter shared_preferences_android shared_preferences_foundation shared_preferences_linux shared_preferences_platform_interface shared_preferences_web shared_preferences_windows]
- shimmer 2.0.0 [flutter]
- sign_in_with_apple 4.3.0 [flutter meta sign_in_with_apple_platform_interface sign_in_with_apple_web]
- table_calendar 3.0.8 [flutter intl simple_gesture_detector]
- toggle_switch 2.0.1 [flutter]
- url_launcher 6.1.9 [flutter url_launcher_android url_launcher_ios url_launcher_linux url_launcher_macos url_launcher_platform_interface url_launcher_web url_launcher_windows]
- webview_flutter 3.0.4 [flutter webview_flutter_android webview_flutter_platform_interface webview_flutter_wkwebview]
- youtube_player_flutter 8.1.2 [flutter flutter_inappwebview]

dev dependencies:
- build_runner 2.3.3 [args async analyzer 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_lints 2.0.1 [lints]
- flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters collection js matcher material_color_utilities meta source_span stream_channel string_scanner term_glyph]

transitive dependencies:
- _fe_analyzer_shared 53.0.0 [meta]
- _flutterfire_internals 1.0.18 [collection firebase_core firebase_core_platform_interface flutter meta]
- analyzer 5.5.0 [_fe_analyzer_shared collection convert crypto glob meta package_config path pub_semver source_span watcher yaml]
- args 2.4.0
- asn1lib 1.4.0
- async 2.10.0 [collection meta]
- audio_session 0.1.13 [flutter flutter_web_plugins rxdart meta]
- auto_size_text 3.0.0 [flutter]
- bloc 8.1.1 [meta]
- boolean_selector 2.1.1 [source_span string_scanner]
- build 2.3.1 [analyzer async convert crypto glob logging meta path]
- build_config 1.1.1 [checked_yaml json_annotation path pubspec_parse yaml]
- build_daemon 3.1.0 [built_collection built_value http_multi_server logging path pool shelf shelf_web_socket stream_transform watcher web_socket_channel]
- build_resolvers 2.2.0 [analyzer async build collection crypto graphs logging path package_config pool pub_semver stream_transform yaml]
- build_runner_core 7.2.7 [async build build_config build_resolvers collection convert crypto glob graphs json_annotation logging meta path package_config pool timing watcher yaml]
- built_collection 5.1.1
- built_value 8.4.3 [built_collection collection fixnum meta]
- cached_network_image_platform_interface 2.0.0 [flutter flutter_cache_manager]
- cached_network_image_web 1.0.2 [flutter flutter_cache_manager cached_network_image_platform_interface]
- characters 1.2.1
- checked_yaml 2.0.2 [json_annotation source_span yaml]
- clock 1.1.1
- code_builder 4.4.0 [built_collection built_value collection matcher meta]
- collection 1.17.0
- connectivity_plus_platform_interface 1.2.4 [flutter meta plugin_platform_interface]
- convert 3.1.1 [typed_data]
- cross_file 0.3.3+4 [js meta]
- dart_style 2.2.4 [analyzer args path pub_semver source_span]
- dbus 0.7.8 [args ffi meta xml]
- device_info_plus_platform_interface 7.0.0 [flutter meta plugin_platform_interface]
- dots_indicator 2.1.0 [flutter]
- encrypt 5.0.1 [args asn1lib clock collection crypto pointycastle]
- fake_async 1.3.1 [clock collection]
- ffi 2.0.1
- file 6.1.4 [meta path]
- firebase_analytics_platform_interface 3.3.23 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_analytics_web 0.5.1+14 [_flutterfire_internals firebase_analytics_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
- firebase_auth_platform_interface 6.12.0 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
- firebase_auth_web 5.2.10 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins
http_parser intl js meta]
- firebase_core_platform_interface 4.5.3 [collection flutter flutter_test meta plugin_platform_interface]
- firebase_core_web 2.2.2 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_crashlytics_platform_interface 3.3.17 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_platform_interface 4.2.16 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_web 3.2.17 [_flutterfire_internals firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta]
- firebase_performance_platform_interface 0.1.1+35 [_flutterfire_internals firebase_core flutter plugin_platform_interface]
- firebase_performance_web 0.1.1+24 [_flutterfire_internals firebase_core firebase_core_web firebase_performance_platform_interface flutter flutter_web_plugins js]
- fixnum 1.1.0
- flutter_blurhash 0.7.0 [flutter]
- flutter_cache_manager 3.3.0 [clock collection file flutter http path path_provider pedantic rxdart sqflite uuid]
- flutter_local_notifications_linux 3.0.0+1 [dbus ffi flutter flutter_local_notifications_platform_interface path xdg_directories]
- flutter_local_notifications_platform_interface 6.0.0 [flutter plugin_platform_interface]
- flutter_plugin_android_lifecycle 2.0.7 [flutter]
- flutter_secure_storage_linux 1.1.3 [flutter flutter_secure_storage_platform_interface]
- flutter_secure_storage_macos 3.0.0 [flutter flutter_secure_storage_platform_interface]
- flutter_secure_storage_platform_interface 1.0.1 [flutter plugin_platform_interface]
- flutter_secure_storage_web 1.1.1 [flutter flutter_secure_storage_platform_interface flutter_web_plugins js]
- flutter_secure_storage_windows 2.0.0 [flutter flutter_secure_storage_platform_interface]
- flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta vector_math]
- frontend_server_client 3.2.0 [async path]
- glob 2.1.1 [async collection file path string_scanner]
- google_sign_in_android 6.1.6 [flutter google_sign_in_platform_interface]
- google_sign_in_ios 5.5.1 [flutter google_sign_in_platform_interface]
- google_sign_in_platform_interface 2.3.0 [flutter plugin_platform_interface quiver]
- google_sign_in_web 0.10.2+1 [flutter flutter_web_plugins google_sign_in_platform_interface js]
- graphs 2.2.0 [collection]
- hive 2.2.3 [meta crypto]
- http_multi_server 3.2.1 [async]
- http_parser 4.0.2 [collection source_span string_scanner typed_data]
- image_picker_android 0.8.5+6 [flutter flutter_plugin_android_lifecycle image_picker_platform_interface]
- image_picker_for_web 2.1.10 [flutter flutter_web_plugins image_picker_platform_interface]
- image_picker_ios 0.8.6+8 [flutter image_picker_platform_interface]
- image_picker_platform_interface 2.6.2 [cross_file flutter http plugin_platform_interface]
- io 1.0.4 [meta path string_scanner]
- js 0.6.5 [meta]
- json_annotation 4.8.0 [meta]
- just_audio_platform_interface 4.2.0 [flutter plugin_platform_interface]
- just_audio_web 0.4.7 [just_audio_platform_interface flutter flutter_web_plugins]
- lints 2.0.1
- local_auth_android 1.0.18 [flutter flutter_plugin_android_lifecycle intl local_auth_platform_interface]
- local_auth_ios 1.0.12 [flutter intl local_auth_platform_interface]
- local_auth_platform_interface 1.0.6 [flutter plugin_platform_interface]
- local_auth_windows 1.0.5 [flutter local_auth_platform_interface]
- logger 1.1.0
- logging 1.1.1
- matcher 0.12.13 [meta stack_trace]
- material_color_utilities 0.2.0
- meta 1.8.0
- nested 1.0.0 [flutter]
- network_info_plus_platform_interface 1.1.3 [flutter meta plugin_platform_interface]
- nm 0.5.0 [dbus]
- octo_image 1.0.2 [flutter flutter_blurhash]
- package_config 2.1.0 [path]
- package_info_plus_platform_interface 2.0.1 [flutter meta plugin_platform_interface]
- path 1.8.2
- path_parsing 1.0.1 [vector_math meta]
- path_provider_android 2.0.22 [flutter path_provider_platform_interface]
- path_provider_foundation 2.1.1 [flutter path_provider_platform_interface]
- path_provider_linux 2.1.8 [ffi flutter path path_provider_platform_interface xdg_directories]
- path_provider_platform_interface 2.0.5 [flutter platform plugin_platform_interface]
- path_provider_windows 2.1.3 [ffi flutter path path_provider_platform_interface win32]
- pedantic 1.11.1
- permission_handler_android 9.0.2+1 [flutter permission_handler_platform_interface]
- permission_handler_apple 9.0.7 [flutter permission_handler_platform_interface]
- permission_handler_platform_interface 3.9.0 [flutter meta plugin_platform_interface]
- permission_handler_windows 0.1.2 [flutter permission_handler_platform_interface]
- petitparser 5.1.0 [meta]
- platform 3.1.0
- plugin_platform_interface 2.1.3 [meta]
- pointycastle 3.6.2 [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.3 [collection meta]
- pubspec_parse 1.2.1 [checked_yaml collection json_annotation pub_semver yaml]
- quiver 3.2.1 [matcher]
- record_linux 0.4.1 [flutter record_platform_interface path]
- record_macos 0.2.2 [flutter record_platform_interface]
- record_platform_interface 0.5.0 [flutter plugin_platform_interface]
- record_web 0.5.0 [flutter flutter_web_plugins record_platform_interface]
- record_windows 0.7.1 [flutter record_platform_interface path]
- rxdart 0.27.7
- share_plus_platform_interface 3.2.0 [cross_file flutter meta mime plugin_platform_interface path_provider uuid]
- shared_preferences_android 2.0.15 [flutter shared_preferences_platform_interface]
- shared_preferences_foundation 2.1.3 [flutter shared_preferences_platform_interface]
- shared_preferences_linux 2.1.3 [file flutter path path_provider_linux path_provider_platform_interface shared_preferences_platform_interface]
- shared_preferences_platform_interface 2.1.0 [flutter plugin_platform_interface]
- shared_preferences_web 2.0.4 [flutter flutter_web_plugins shared_preferences_platform_interface]
- shared_preferences_windows 2.1.3 [file flutter path path_provider_platform_interface path_provider_windows shared_preferences_platform_interface]
- shelf 1.4.0 [async collection http_parser path stack_trace stream_channel]
- shelf_web_socket 1.0.3 [shelf stream_channel web_socket_channel]
- sign_in_with_apple_platform_interface 1.0.0 [flutter plugin_platform_interface meta]
- sign_in_with_apple_web 1.0.1 [flutter flutter_web_plugins sign_in_with_apple_platform_interface js]
- simple_gesture_detector 0.2.0 [flutter]
- sky_engine 0.0.99
- sliver_tools 0.2.9 [flutter]
- source_gen 1.2.7 [analyzer async build dart_style glob path source_span yaml]
- source_span 1.9.1 [collection path term_glyph]
- sqflite 2.2.4+1 [flutter sqflite_common path]
- sqflite_common 2.4.2+2 [synchronized path meta]
- stack_trace 1.11.0 [path]
- stream_channel 2.1.1 [async]
- stream_transform 2.1.0
- string_scanner 1.2.0 [source_span]
- synchronized 3.0.1
- term_glyph 1.2.1
- test_api 0.4.16 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph matcher]
- timezone 0.9.1 [path]
- timing 1.0.1 [json_annotation]
- typed_data 1.3.1 [collection]
- universal_io 2.2.0 [collection meta typed_data]
- url_launcher_android 6.0.23 [flutter url_launcher_platform_interface]
- url_launcher_ios 6.1.0 [flutter url_launcher_platform_interface]
- url_launcher_linux 3.0.2 [flutter url_launcher_platform_interface]
- url_launcher_macos 3.0.2 [flutter url_launcher_platform_interface]
- url_launcher_platform_interface 2.1.1 [flutter plugin_platform_interface]
- url_launcher_web 2.0.14 [flutter flutter_web_plugins url_launcher_platform_interface]
- url_launcher_windows 3.0.3 [flutter url_launcher_platform_interface]
- uuid 3.0.7 [crypto]
- vector_graphics 1.0.1 [flutter vector_graphics_codec]
- vector_graphics_codec 1.0.1
- vector_graphics_compiler 1.0.1 [args meta path_parsing xml vector_graphics_codec]
- vector_math 2.1.4
- watcher 1.0.2 [async path]
- web_socket_channel 2.3.0 [async crypto stream_channel]
- webview_flutter_android 2.10.4 [flutter webview_flutter_platform_interface]
- webview_flutter_platform_interface 1.9.5 [flutter meta plugin_platform_interface]
- webview_flutter_wkwebview 2.9.5 [flutter path webview_flutter_platform_interface]
- win32 3.1.3 [ffi]
- xdg_directories 0.2.0+3 [meta path process]
- xml 6.2.2 [collection meta petitparser]
- yaml 3.1.1 [collection source_span string_scanner]

No, we didn't change the application_id

we run flutterfire and the bundle_id changed automatically in the google-services.json

the project is old. We started it manually, after that we started to use flutterfire

Hi @AdelDaniel, I just want to confirm something.
The google_services file that has the issue, is it one that you download from the firebase console or is it the one generated by flutterfire_configure?
Can you also share the full google_services.json (before flutterfire configure and after) file with the sensitive parts redacted?

Yes, when I download it manually from the console. I still get the old bundle_id one "com.example.yyyyyyyyyyy" >> deleted form the project

the second question. I am currently using only one IOS app in this project, and its bundle_id doesn't appear in the google_services.json file.

Hi @AdelDaniel, this seems like an issue with firebase itself and not the plugins. Ideally, the google_services.json file should not affect your iOS project since the configuration will be taken from the GoogleService-Info.plist. Is there any particular issue with the bundle id in the google_services.json not matching the iOS bundle id?


.NET Core Project Target Framework

warning NU1701: Package 'ProxySocket 1.1.2' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETCoreApp,Version=v2.1'. This package may not be fully compatible with your project.
It'd be good if there was a target project for .NET core specifically to avoid these warnings.

On top of this, I seem to be getting the following exception whenever I try to use it regardless.
System.IO.FileNotFoundException: 'Could not load file or assembly 'ProxySocket, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=966874d7118d1436'. The system cannot find the file specified.'

fixed


Verify and change the models data types

There are some issues regarding what data types we are currently using for some models, as compared to what the API is using. It would be nice to go through them and change them accordingly - we will see them when implementing integration tests, but it's a small task so it shouldn't take a lot of time.
E.g.:

port should be int?
coins should be BigDecimal

I've been digging around in the API root today a bit. We may need to convert transaction amounts from string to int as well. I know I used string in the confirmation block transaction records and updated balance records because there was a bit of a conflict between some of the docs. But that can also be easily changed. I think the strings may have been a remnant of the older subdivided coins.

I did some mistakes as well, will look into it

I have opened  a pull request for this but it is failing on account of the API still returning balance as string instead of int or decimal.

I have opened a pull request for this but it is failing on account of the API still returning balance as string instead of int or decimal.

Do you mean our class or the actual API?

Sorry I meant I changed the amount and balance type to BigDecimal but the tests are failing because NewtonSoft.Json is serializing them as String. And the tests are failing because there is no explicit JsonConverter given for String -> BigDecimal.
Example:
public class GetAccountBalanceAsync
        {
            [Fact]
            public async void AccountBalanceIsReturned()
            {
                var service = BuildValidatorServiceMock();

                var balance = await service.GetAccountBalanceAsync("9eca00a5-d925-454c-a8d6-ecbb26ec2f76");

                Assert.Equal(4294967051.0000000000000000, balance.Balance);
            }
        }

Message:
    Newtonsoft.Json.JsonSerializationException : Error converting value "4294967051" to type 'System.Numerics.BigDecimal'. Path '[0].Balance', line 1, position 151.
    ---- System.InvalidCastException : Invalid cast from 'System.String' to 'System.Numerics.BigDecimal'.

On a different note: the Confirmation Validator API docs state that the response for GET /accounts will contain balance as a number while the response for GET /accounts/<account_number>/balance will contain balance as a string. Is this accurate or just a discrepancy in the docs?

Sorry I meant I changed the amount and balance type to BigDecimal but the tests are failing because NewtonSoft.Json is serializing them as String. And the tests are failing because there is no explicit JsonConverter given for String -> BigDecimal.
Example:
public class GetAccountBalanceAsync
        {
            [Fact]
            public async void AccountBalanceIsReturned()
            {
                var service = BuildValidatorServiceMock();

                var balance = await service.GetAccountBalanceAsync("9eca00a5-d925-454c-a8d6-ecbb26ec2f76");

                Assert.Equal(4294967051.0000000000000000, balance.Balance);
            }
        }

Message:
    Newtonsoft.Json.JsonSerializationException : Error converting value "4294967051" to type 'System.Numerics.BigDecimal'. Path '[0].Balance', line 1, position 151.
    ---- System.InvalidCastException : Invalid cast from 'System.String' to 'System.Numerics.BigDecimal'.

On a different note: the Confirmation Validator API docs state that the response for GET /accounts will contain balance as a number while the response for GET /accounts/<account_number>/balance will contain balance as a string. Is this accurate or just a discrepancy in the docs?

Let me check that and I'll be back

On a different note: the Confirmation Validator API docs state that the response for GET /accounts will contain balance as a number while the response for GET /accounts/<account_number>/balance will contain balance as a string. Is this accurate or just a discrepancy in the docs?

The docs are wrong. You can verify it with a live server.

^ yup, just wanted to give an update on this. Looks like the number is the correct response.


Updating the value of the date picker

To make sure I understand this from the title, we want to be able to set the date picker value from code, correct?


proposal: os: Mkdir differentiate between file and directory existing

If you are creating a directory, three things can happen:

path not exist
path exist as directory
path exist as file

MkdirAll handles these three cases:
https://github.com/golang/go/blob/b634f5d97a6e65f19057c00ed2095a1a872c7fa8/src/os/path.go#L18-L26
However Mkdir does not. It lumps 2 and 3 together, which is bad because one is an error and one is not. This situation is further compounded by the fact that os.ErrNotDir is not currently available:
https://github.com/golang/go/blob/b634f5d97a6e65f19057c00ed2095a1a872c7fa8/src/os/error.go#L17-L29
I see a reference to it here:
https://github.com/golang/go/blob/b634f5d97a6e65f19057c00ed2095a1a872c7fa8/src/cmd/go/internal/fsys/fsys.go#L240
so without that, a user would need to either just use MkdirAll for everything, or use the syscall package, or I made a function like this as a workaround:
func mkdir(path string) error {
   dir, err := os.Stat(path)
   if err == nil && dir.IsDir() {
      return nil
   }
   return os.Mkdir(path, os.ModeDir)
}

The proposed replacement is not thread safe, the file system may change between os.Stat and os.Mkdir.
Could you step back a bit and talk about the problem that you have that lead you to write this replacement?

The proposed replacement is not thread safe, the file system may change between os.Stat and os.Mkdir.
Could you step back a bit and talk about the problem that you have that lead you to write this replacement?

Hey Dave, thanks for the comment.
In the past, I have actually just ignored the error:
os.Mkdir("March")

or maybe catch it with the next step:
os.Mkdir("March")
e := os.Chdir("March")

but I wanted to finally do something more robust for Mkdir. After finally looking at it more closely, I noticed the issue that I reported. In regard to thread safe, wouldnt that also apply to the MkdirAll code I linked? At any rate, I am not fixed to what I wrote, I just wanted something better than just ignoring the error, as I am doing now.

Hey Dave, thanks for the comment.
In the past, I have actually just ignored the error:
os.Mkdir("March")

or maybe catch it with the next step:
os.Mkdir("March")
e := os.Chdir("March")

but I wanted to finally do something more robust for Mkdir. After finally looking at it more closely, I noticed the issue that I reported. In regard to thread safe, wouldnt that also apply to the MkdirAll code I linked? At any rate, I am not fixed to what I wrote, I just wanted something better than just ignoring the error, as I am doing now.

Thanks for your reply. If you're ignoring the error from os.Mkdir, why not just not make the call? Sorry if this sounds a bit provocative, but I'm still trying to understand what the underlying issue is.

Thanks for your reply. If you're ignoring the error from os.Mkdir, why not just not make the call? Sorry if this sounds a bit provocative, but I'm still trying to understand what the underlying issue is.

why not just not make the call?

I dont understand this statement.

trying to understand what the underlying issue is.

No issue, I am just trying to write better code. I figure if something returns an error, I probably shouldnt just ignore it. If ignoring the error is correct decision, then I would like to know why even return an error.

why not just not make the call?

I dont understand this statement.

trying to understand what the underlying issue is.

No issue, I am just trying to write better code. I figure if something returns an error, I probably shouldnt just ignore it. If ignoring the error is correct decision, then I would like to know why even return an error.

I dont understand this statement.

If you're not checking the return value from os.Mkdir then the code that makes the call shouldn't care if the call succeeded or not as it does not change the behaviour of subsequent operations.

I dont understand this statement.

If you're not checking the return value from os.Mkdir then the code that makes the call shouldn't care if the call succeeded or not as it does not change the behaviour of subsequent operations.

Dave, are you being purposely thick? I had said several times that I was ignoring the error. Now I am wanting to stop ignoring the error. I want to pay attention to the error, I want to check the error. In pursuing that goal, I discovered the issue with os.Mkdir.

Dave, are you being purposely thick? I had said several times that I was ignoring the error. Now I am wanting to stop ignoring the error. I want to pay attention to the error, I want to check the error. In pursuing that goal, I discovered the issue with os.Mkdir.

Maybe we're not using the same terminology, when you say you ignore the error, I'm thinking you're doing this
err := os.Mkdir("...")
_ = err

Maybe you're saying ignoring the error looks like this
err := os.Mkdir("...")
if err != nil {
    return err
}

Is this what you mean by ignoring?

Maybe we're not using the same terminology, when you say you ignore the error, I'm thinking you're doing this
err := os.Mkdir("...")
_ = err

Maybe you're saying ignoring the error looks like this
err := os.Mkdir("...")
if err != nil {
    return err
}

Is this what you mean by ignoring?

No man, ignoring the error. Like this:
package main
import "os"

func main () {
   os.Mkdir("March")
}

No man, ignoring the error. Like this:
package main
import "os"

func main () {
   os.Mkdir("March")
}

Right, so if os.Mkdir failed, then do you expect the code that follows afterwards to succeed?

Right, so if os.Mkdir failed, then do you expect the code that follows afterwards to succeed?

Look, I am not going to play this game with you. If you have something to say, just say it. Stop jerking me around.

Look, I am not going to play this game with you. If you have something to say, just say it. Stop jerking me around.

I'm sorry my replies upset you, as I said at the outset, my goal is to understand the underlying problem that you're trying to solve as that is, in my experience, the first step towards making any change. I'm sorry that my approach was not successful and understand that you would prefer not to discuss this with me. I'll drop out of this thread.

I'm sorry my replies upset you, as I said at the outset, my goal is to understand the underlying problem that you're trying to solve as that is, in my experience, the first step towards making any change. I'm sorry that my approach was not successful and understand that you would prefer not to discuss this with me. I'll drop out of this thread.

Ive deleted all my comments except for the original post, as it always stood on
its own. I would ask you to do the same.
Further, I would ask that you never post again on issues I start, as it seems
from your last comment that you never had anything constructive to add, you were
just convinced I had an XY problem, and you thought you could get me to
"discover it". Please dont do that in the future, just take the question at face
value, dont try to overthink it unless its warranted.

Ive deleted all my comments except for the original post, as it always stood on
its own. I would ask you to do the same.
Further, I would ask that you never post again on issues I start, as it seems
from your last comment that you never had anything constructive to add, you were
just convinced I had an XY problem, and you thought you could get me to
"discover it". Please dont do that in the future, just take the question at face
value, dont try to overthink it unless its warranted.

I found another approach, its basically my function but in reverse:
https://github.com/golang/go/blob/b634f5d97a6e65f19057c00ed2095a1a872c7fa8/src/os/path.go#L48-L58

I found another approach, its basically my function but in reverse:
https://github.com/golang/go/blob/b634f5d97a6e65f19057c00ed2095a1a872c7fa8/src/os/path.go#L48-L58

I believe this would be a breaking change

I believe this would be a breaking change

@seankhliao I dont think so, as one approach would be just adding the error os.ErrNotDir.

@seankhliao I dont think so, as one approach would be just adding the error os.ErrNotDir.

@davecheney I was frustrated yesterday because you refused to give a straight answer. However this morning I remembered, I dont need you to do that, I can just look at your code:
https://github.com/search?q=user%3Adavecheney+os.mkdir+language%3Ago+-repo%3Adavecheney%2Fbenchkube+-repo%3Adavecheney%2Fbenchall+-repo%3Adavecheney%2Fbenchgogs+-repo%3Adavecheney%2Fbenchjuju&type=Code
It seems your solution is to just not use os.Mkdir, but use os.MkdirAll instead.  However this morning I remembered, I dont need you to do that, I can just look at your code:
https://github.com/search?q=user%3Adavecheney+os.mkdir+language%3Ago+-repo%3Adavecheney%2Fbenchkube+-repo%3Adavecheney%2Fbenchall+-repo%3Adavecheney%2Fbenchgogs+-repo%3Adavecheney%2Fbenchjuju&type=Code
It seems your solution is to just not use os.Mkdir, but use os.MkdirAll instead. Good to know.

On Unix systems, os.Mkdir is basically a wrapper around the mkdir system call.  When the mkdir system call is invoked on an existing path (whether the existing path is a file or a directory or something else like a dangling symbolic link), mkdir returns EEXIST.  That is why os.Mkdir works the way it does.
I think that it's true that we could change os.Mkdir so that it if system call fails with EEXIST it checks whether the path exists and is a directory, and in that case returns some different error.  But I'm not sure I see the advantage.
I do want to comment on one statement in the proposal:

However Mkdir does not. It lumps 2 and 3 together, which is bad because one is an error and one is not.

(Here 2 is "path exists as directory" and 3 is "path exists as file".)
Both are errors, and we can't change that behavior.  Mkdir is documented as creating a new directory.  It is an error if there is an existing directory with that name.  MkdirAll, by contrast, is documented as returning nil if the path already exists as a directory.  It would be very bad if Mkdir started returning nil for the case of an existing directory: that would break programs that rely on the fact that Mkdir always either creates a new directory or returns an error.  In particular some programs use Mkdir to reliably get a directory that they know that they control.

On Unix systems, os.Mkdir is basically a wrapper around the mkdir system call.  When the mkdir system call is invoked on an existing path (whether the existing path is a file or a directory or something else like a dangling symbolic link), mkdir returns EEXIST.  That is why os.Mkdir works the way it does.
I think that it's true that we could change os.Mkdir so that it if system call fails with EEXIST it checks whether the path exists and is a directory, and in that case returns some different error.  But I'm not sure I see the advantage.
I do want to comment on one statement in the proposal:

However Mkdir does not. It lumps 2 and 3 together, which is bad because one is an error and one is not.

(Here 2 is "path exists as directory" and 3 is "path exists as file".)
Both are errors, and we can't change that behavior.  Mkdir is documented as creating a new directory.  It is an error if there is an existing directory with that name.  MkdirAll, by contrast, is documented as returning nil if the path already exists as a directory.  It would be very bad if Mkdir started returning nil for the case of an existing directory: that would break programs that rely on the fact that Mkdir always either creates a new directory or returns an error.  In particular some programs use Mkdir to reliably get a directory that they know that they control.

It would be very bad if Mkdir started returning nil for the case of an
existing directory: that would break programs that rely on the fact that
Mkdir always either creates a new directory or returns an error. In
particular some programs use Mkdir to reliably get a directory that they
know that they control.

@ianlancetaylor thats a fair point. You could say its similar to rmdir, in that
rmdir will fail if directory is not empty, but it will also fail if directory
doesnt exist. If that changed I could see how it could cause problems.
Another approach without breaking anything would be to add something like this:
var ErrNotDir = errors.New("not a directory")

then users could more easily craft their own function to handle the different
cases.

It would be very bad if Mkdir started returning nil for the case of an
existing directory: that would break programs that rely on the fact that
Mkdir always either creates a new directory or returns an error. In
particular some programs use Mkdir to reliably get a directory that they
know that they control.

@ianlancetaylor thats a fair point. You could say its similar to rmdir, in that
rmdir will fail if directory is not empty, but it will also fail if directory
doesnt exist. If that changed I could see how it could cause problems.
Another approach without breaking anything would be to add something like this:
var ErrNotDir = errors.New("not a directory")

then users could more easily craft their own function to handle the different
cases.

Right now on Unix systems we return an os.PathError wrapping syscall.EEXIST for both the case of an existing file or an existing directory.  I suppose the possibilities are:
existing directory                     | existing file (or existing path element that is not a directory)

EEXIST                                 | errors.New("file already exists")
errors.New("directory already exists") | EEXIST
errors.New("directory already exists") | errors.New("file already exists")

Right now on Unix systems we return an os.PathError wrapping syscall.EEXIST for both the case of an existing file or an existing directory.  I suppose the possibilities are:
existing directory                     | existing file (or existing path element that is not a directory)

EEXIST                                 | errors.New("file already exists")
errors.New("directory already exists") | EEXIST
errors.New("directory already exists") | errors.New("file already exists")

I think the two functions I put are good enough workarounds, I will close this for now. If others are interested I can reopen, thanks

I think the two functions I put are good enough workarounds, I will close this for now. If others are interested I can reopen, thanks


autosubmit merged PR after it removed autosubmit label

See https://github.com/flutter/flutter/pull/106955

When autosubmit label was first applied in here
then when rebasing the PR to fix Google Testing , autosubmit is removed by the bot and then PR is merged anyways without re-adding autosubmit label.
I think it shouldn't merge the PR without re-adding autosubmit label

There have been several fixes regarding tree status check in the past days.
This issue should have been resolved. Please reopen if you still see the issues.


(AP6 86 / APS 152) Normalise CRN when searching

This removes all trailing/leading spaces and capitalises when searching for a CRN.  When searching for applications and placement requests, the param is crnOrName, but when we search for names in the API, these are capitalised anyway, so this won’t make any difference.

I've had a change of heart - I think this is better handled on the API side


Gridsome Build fails due to TypeError: Url must be a string. Received undefined

Description
Running Gridsome Build fails while generating the sitemap with the following error:
Generate /sitemap.xml (18622 pages) TypeError: Url must be a string. Received undefined
Steps to reproduce
Run gridsome build with sitemap module installed... using mysql source. This may be specific to my data :)
Expected result
Generate a site map
Actual result
Load sources - 81.75s
Create GraphQL schema - 0.57s
Create pages and templates - 0.71s
Generate temporary code - 0.12s
Bootstrap finish - 94.11s
Compile assets - 25.08s
Execute GraphQL (18622 queries) - 89.88s
Render HTML (18622 files) - 175.43s
Process files (0 files) - 0s
Process images (244 images) - 17.99s
Generate /sitemap.xml (18622 pages)
TypeError: Url must be a string. Received undefined
    at normalize (/Users/timcole/Development/weareworship/waw-gridsome/node_modules/url-join/lib/url-join.js:32:15)
    at /Users/timcole/Development/weareworship/waw-gridsome/node_modules/url-join/lib/url-join.js:75:12
    at /Users/timcole/Development/weareworship/waw-gridsome/node_modules/sitemap/lib/sitemap.js:194:21
    at Array.forEach (<anonymous>)
    at Sitemap.toString (/Users/timcole/Development/weareworship/waw-gridsome/node_modules/sitemap/lib/sitemap.js:186:15)
    at /Users/timcole/Development/weareworship/waw-gridsome/node_modules/@gridsome/plugin-sitemap/index.js:60:43
    at Plugins.run (/Users/timcole/Development/weareworship/waw-gridsome/node_modules/gridsome/lib/app/Plugins.js:141:17)
    at async module.exports (/Users/timcole/Development/weareworship/waw-gridsome/node_modules/gridsome/lib/build.js:42:3)

Environment

  System:
    OS: macOS Mojave 10.14.6
    CPU: (8) x64 Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
  Binaries:
    Node: 12.19.0 - /usr/local/bin/node
    Yarn: 1.22.5 - /usr/local/bin/yarn
    npm: 6.14.8 - /usr/local/bin/npm
  Browsers:
    Chrome: 85.0.4183.121
    Firefox: 76.0.1
    Safari: 12.1.2
  npmPackages:
    @gridsome/plugin-sitemap: ^0.4.0 => 0.4.0
    gridsome: ^0.7.0 => 0.7.19
    gridsome-source-mysql: ^1.5.4 => 1.5.4
  npmGlobalPackages:
    @gridsome/cli: 0.3.3

It appears changing
if (component === '') { continue; }
in node_modules/url-join/lib/url-join.js to:
if (component === '' || component === undefined) { continue; }
Allows the sitemap to be built.

Hey @tscole could you please post your gridsome.config.js ?

// This is where project configuration and plugin options are located.
// Learn more: https://gridsome.org/docs/config

// Changes here require a server restart.
// To restart press CTRL + C in terminal and run `gridsome develop`
const tailwindcss = require("tailwindcss");

module.exports = {
  siteName: 'Gridsome',
  siteUrl: process.env.SITE_URL,
  plugins: [
    {
      use: '@gridsome/plugin-sitemap', // see https://www.wavrin.com/adding-plugins-to-a-gridsome-site/
      options: {
        config: {
          "/*": {
            changefreq: "weekly",
            priority: 0.5,
          },
        },
        // include: [],
        options: {
          cacheTime: 600000, // default
        },
        staticUrls: [
          {}
        ]
      }
    },
    {
    use: 'gridsome-source-mysql',
    options: {
      connection: {
        // Do NOT adjust database settings here. Use a .env file!
        host: process.env.MYSQL_SERVER,
        port: process.env.MYSQL_PORT,
        user: process.env.MYSQL_USER,
        password: process.env.MYSQL_PASSWORD,
        database: process.env.MYSQL_DATABASE,
        connectionLimit: 10
      },
      ignoreImages: false, // Do not download any images
      imageDirectory: 'sql_images',
      regex: /()_\d(.(jpg|png|svg|jpeg))/i, // Default false
      queries: [ // required
        {
          name: 'Song',
          route: '/songs/:path',
          path: 'fullname',
          sql: `SELECT Song.ID AS id, Song.title as title, ccli, writerlist, sheetmusicpreview, slug, artist, SongBackground as about, SongArrangement.chords, OriginalKeyChords as chordsKey, OriginalKeySheetMusic as sheetmusicKey, SongArrangement.Tempo as tempo, copyrightyear, copyrightline, videos.video_ids, themes.theme_ids, bibleverses.verses as bibleverses, products.product_ids, CONCAT("https://www.weareworship.com/", filename) as image, ratings.votes as ratingVotes, ratings.val as ratingValue,
          IF((SELECT true FROM HomePage_SongOfTheWeek WHERE NOW() BETWEEN StartDate AND EndDate AND SongArrangementID = SongArrangement.ID), true, false) as freeSong,
          IF((SELECT true FROM HomePage_VintageSongOfTheWeek WHERE NOW() BETWEEN StartDate AND EndDate AND SongArrangementID = SongArrangement.ID), true, false) as freeVintageSong,
          IF((SELECT true FROM HomePage_HymnOfTheWeek WHERE NOW() BETWEEN StartDate AND EndDate AND SongArrangementID = SongArrangement.ID), true, false) as freeHymn,
          IF((SELECT true FROM HomePage_TrendingSongs WHERE SongArrangementID = SongArrangement.ID AND HomePageID = 984), true, false) as popular,
          IF((SELECT true FROM HomePage_NewSongs WHERE SongArrangementID = SongArrangement.ID AND HomePageID = 984), true, false) as new
          FROM Song JOIN SongLyric ON Song.ID = SongLyric.SongID
          JOIN SongArrangement ON SongArrangement.SongLyricID = SongLyric.ID
          LEFT JOIN (
            SELECT SongArrangementID, GROUP_CONCAT(ID) AS 'video_ids'
            FROM ExternalSongResource
            WHERE ExternalSongResourceTypeID IN (9,10,11,12,13,14,15,16)
            GROUP BY SongArrangementID
          ) videos
          ON videos.SongArrangementID = SongArrangement.ID
          LEFT JOIN (
            SELECT SongID, GROUP_CONCAT(SubThemeID) AS 'theme_ids'
            FROM Song_SubThemes
            GROUP BY SongID
          ) themes
          ON themes.SongID = Song.ID
          LEFT JOIN (
            SELECT Song_BibleVerses.SongID, GROUP_CONCAT(BibleBook.Name," ", Chapter, ":", Verse) as verses FROM Song_BibleVerses
            JOIN BibleVerse ON BibleVerse.ID = BibleVerseID
            JOIN BibleBook ON BibleBook.ID = BookID
            GROUP BY Song_BibleVerses.SongID
          ) bibleverses
          ON bibleverses.SongID = Song.ID
          LEFT JOIN (
            SELECT SongLyric.SongID, GROUP_CONCAT(DownloadableProduct.ID) 'product_ids'
            From SongLyric
            JOIN SongArrangement ON SongLyric.ID = SongLyricID
            JOIN DownloadableProduct ON DownloadableProduct.SongArrangementID = SongArrangement.ID
            WHERE ProductTypeID IN (37,38,39)
            GROUP BY SongID
          ) products
          ON products.SongID = Song.ID
        LEFT JOIN SongOfTheWeekImage ON SongArrangement.ID = SongOfTheWeekImage.SongArrangementID
        LEFT JOIN File ON File.ID = SongOfTheWeekImage.PromoImageID
        LEFT JOIN (
        	SELECT SongID, Count(ID) as votes, ROUND(AVG(Amount), 1) as val FROM SongRating GROUP BY SongID
        ) ratings
        ON ratings.SongID = Song.ID
        WHERE SongLyric.Locale = 'en_US' AND SongArrangement.DefaultForLocale = 1;`,
        images: ['image'] // Default []
        },
        {
          name: 'Product',
          sql: 'SELECT DownloadableProduct.ID as id, Title as title, SongArrangementID as arrangementId, DownloadableProduct.Locale as locale, Amount as price, CurrencyCode as currency, ProductTypeID as type FROM DownloadableProduct LEFT JOIN DownloadablePrice ON (DownloadablePrice.DownloadableProductTypeID = ProductTypeID AND DownloadableProduct.Locale = DownloadablePrice.Locale) WHERE ProductTypeID IN (37,38,39);'
        },
        {
          name: 'Video',
          sql: `SELECT ExternalSongResource.ID as id, ExternalResourceID as youtube, ExternalSongResourceTypeID as type, name
            FROM ExternalSongResource
            JOIN ExternalSongResourceType ON ExternalSongResourceTypeID = ExternalSongResourceType.ID
            JOIN SongArrangement ON ExternalSongResource.SongArrangementID = SongArrangement.ID
            JOIN SongLyric ON SongLyricID = SongLyric.ID
            WHERE ExternalSongResourceTypeID IN (9,10,11,12,13,14,15,16) AND Locale = "en_US"`
        },
        {
          name: 'Theme',
          sql: `SELECT SubTheme.id, SubTheme.title as name, Theme.Title as parent, Theme.ID as parentId, LOWER(REPLACE(REPLACE(REPLACE(REPLACE(SubTheme.Title,"&", "and"),"'",""),",","")," ","-")) as slug, song.song_ids FROM SubTheme LEFT JOIN Theme ON ThemeID = Theme.ID
          LEFT JOIN (
            SELECT SubThemeID, GROUP_CONCAT(SongID) AS 'song_ids'
            FROM Song_SubThemes
            GROUP BY SubThemeID
          ) song
          ON song.SubThemeID = SubTheme.ID`
        },
        {
          name: 'WorshipLeader',
          sql: `SELECT SiteTree_Live.ID as id, SiteTree_Live.title, SiteTree_Live.content, URLSegment as slug, CONCAT("https://www.weareworship.com/", filename) as image, songs.song_ids
          FROM ArtistPage_Live
          LEFT JOIN SiteTree_Live ON ArtistPage_Live.ID = SiteTree_Live.ID
          LEFT JOIN File ON File.ID = ThumbnailID
          LEFT JOIN (
            SELECT ArtistPageID, GROUP_CONCAT(SongLyric.SongID) AS 'song_ids'
            FROM ArtistPage_TopSongs
            LEFT JOIN SongArrangement ON SongArrangement.ID = ArtistPage_TopSongs.SongArrangementID
            LEFT JOIN SongLyric ON SongArrangement.SongLyricID = SongLyric.ID
            WHERE SongArrangementID > 0
            GROUP BY ArtistPageID
          ) songs
          ON songs.ArtistPageID = ArtistPage_Live.ID
          WHERE Locale = "en_US";`,
          images: ['image']
        },
        {
          name: 'Article',
          sql: `SELECT SiteTree_Live.ID as id, SiteTree_Live.title, REPLACE(SiteTree_Live.content,"assets/Uploads","https://www.weareworship.com/assets/Uploads") as content, URLSegment as slug, authornames, DATE_FORMAT(PublishDate, '%D %M %Y') as published, category.category_ids, tag.tag_ids
          FROM SiteTree_Live
          JOIN BlogPost_Live on SiteTree_Live.ID = BlogPost_Live.ID
          LEFT JOIN (
            SELECT BlogPostID, GROUP_CONCAT(BlogCategoryID) AS 'category_ids'
            FROM BlogPost_Categories
            GROUP BY BlogPostID
          ) category
          ON category.BlogPostID = BlogPost_Live.ID
          LEFT JOIN (
            SELECT BlogPostID, GROUP_CONCAT(BlogTagID) AS 'tag_ids'
            FROM BlogPost_Tags
            GROUP BY BlogPostID
          ) tag
          ON tag.BlogPostID = BlogPost_Live.ID
          WHERE ClassName = "BlogPost" AND Locale = "en_US"`,
          route: '/learning/articles/:path',
          path: 'URLSegment',
        },
        {
          name: 'Tag',
          sql: `SELECT id, title, URLSegment as slug FROM BlogTag`
        },
        {
          name: 'Category',
          sql: `SELECT id, title, URLSegment as slug FROM BlogCategory WHERE BlogID = 996`
        },
        {
          name: 'SongList',
          sql: `SELECT SiteTree_Live.ID as id, SiteTree_Live.title, IncludedContent as subheading, SidebarHTML as spotify, SiteTree_Live.content, URLSegment as slug, IF(albumCoverUrl IS NOT NULL,albumCoverUrl, IF(File.filename IS NOT NULL,  CONCAT("https://www.weareworship.com/",File.filename),  CONCAT("https://www.weareworship.com/",f.filename))) as image, songs.song_ids
          FROM SongCollection_Live
          JOIN SiteTree_Live ON SongCollection_Live.ID = SiteTree_Live.ID
          LEFT JOIN File f ON f.ID = SongCollection_Live.ThumbnailID
          LEFT JOIN Album_SongCollections ON SongCollectionID = SiteTree_Live.ID
          LEFT JOIN Album ON Album.ID = AlbumID
          LEFT JOIN File ON File.ID = ArtworkID
          LEFT JOIN (
            SELECT SongCollectionID, GROUP_CONCAT(SongLyric.SongID) AS 'song_ids'
            FROM SongArrangement_SongCollections
            LEFT JOIN SongArrangement ON SongArrangement.ID = SongArrangement_SongCollections.SongArrangementID
            LEFT JOIN SongLyric ON SongArrangement.SongLyricID = SongLyric.ID
            WHERE SongArrangementID > 0
            GROUP BY SongCollectionID
          ) songs
          ON songs.SongCollectionID = SiteTree_Live.ID
          WHERE Locale = "en_US"`,
          images: ['image']
        }
      ]
    }
  }],
  templates: {
    Song: [{
        path: '/songs/chords/:slug',
        component: './src/templates/Song.vue'
      },
      {
        name: 'sheet-music',
        path: '/songs/sheet-music/:slug',
        component: './src/templates/SheetMusic.vue'
      }
    ],
    Theme: [
        {
          name: 'theme',
          path: '/songs/themes/:slug',
          component: './src/templates/Theme.vue'
        }
    ],
    WorshipLeader: [{
      path: '/worship-leaders/:slug',
      component: './src/templates/WorshipLeader.vue'
    }],
    Article: [{
      path: '/learning/articles/:slug',
      component: './src/templates/Article.vue'
    }],
    SongList: [{
      path: '/song-lists/:slug',
      component: './src/templates/SongList.vue'
    }],
  },
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          tailwindcss
        ],
      },
    },
  },
}

Based on the plugin description:

Make sure siteUrl is set in your project config....

Can you please recheck that process.env.SITE_URL contains a valid value?
Maybe set a static value to make sure, everything is working as expected.

Doubled checked process.env.SITE_URL - same error
Tried a static value - same error

@tscole There is an empty object in the staticUrls array. Could that be the problem?

I hadn't noticed that.


Intergrate AutoDJ

Allow the AutoDJ to play songs and stuff as well as schedule it to play pre-recorded shows.

Need to pull across icebreath api for this


Improve error handling in calldata decoder

Why is huge rectangle visible when there are no matches?

No error handling when providing ABi by hand:

Resolved in #64, #66, #67.


very simple symbolic_trace added

the current ability can be checked by running usecases/simple_net_trace.py
lots of TODO still remains

代码需要 执行一下 pre-commit 做格式化
可以是
pre-commit run -a

codes are formatted.


SafetensorError: Error while deserializing header: HeaderTooSmall

Environments
Python: 3.9
OS: Ubuntu 20.04
FlagEmbedding            1.2.5
transformers             4.33.1
Details
my test python file bge-test.py:
from FlagEmbedding import BGEM3FlagModel

model = BGEM3FlagModel('models/bge-m3',
                       use_fp16=True) # Setting use_fp16 to True speeds up computation with a slight performance degradation

sentences_1 = ["What is BGE M3?", "Defination of BM25"]
sentences_2 = ["BGE M3 is an embedding model supporting dense retrieval, lexical matching and multi-vector interaction.",
               "BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document"]

embeddings_1 = model.encode(sentences_1,
                            batch_size=12,
                            max_length=8192, # If you don't need such a long length, you can set a smaller value to speed up the encoding process.
                            )['dense_vecs']
embeddings_2 = model.encode(sentences_2)['dense_vecs']
similarity = embeddings_1 @ embeddings_2.T
print(similarity)
# [[0.6265, 0.3477], [0.3499, 0.678 ]]

run python bge-test.py, and the output:
/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/transformers/utils/generic.py:311: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
  torch.utils._pytree._register_pytree_node(
/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/transformers/utils/generic.py:311: UserWarning: torch.utils._pytree._register_pytree_node is deprecated. Please use torch.utils._pytree.register_pytree_node instead.
  torch.utils._pytree._register_pytree_node(
Traceback (most recent call last):
  File "/xxx/workspace/OPO/bge-test.py", line 3, in <module>
    model = BGEM3FlagModel('models/bge-m3',
  File "/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/FlagEmbedding/bge_m3.py", line 36, in __init__
    self.model = BGEM3ForInference(
  File "/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/FlagEmbedding/BGE_M3/modeling.py", line 40, in __init__
    self.load_model(model_name, colbert_dim=colbert_dim)
  File "/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/FlagEmbedding/BGE_M3/modeling.py", line 76, in load_model
    self.model = AutoModel.from_pretrained(model_name)
  File "/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/transformers/models/auto/auto_factory.py", line 563, in from_pretrained
    return model_class.from_pretrained(
  File "/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/transformers/modeling_utils.py", line 2883, in from_pretrained
    state_dict = load_state_dict(resolved_archive_file)
  File "/xxx/env_root/anaconda3/envs/OPO_env/lib/python3.9/site-packages/transformers/modeling_utils.py", line 467, in load_state_dict
    with safe_open(checkpoint_file, framework="pt") as f:
safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooSmall

A possible issue is the old version of transformers. You can try to upgrade the transformers.


Print call stack on error

Hi, I'm working on expect library, that helps to test and print expected/actual values in case of error.
I've run into a problem, that when I use assert or Debug.trap from a helper function I cannot get a stack trace to show in which test file(and which line and column) the error occured.
For example expect.test.mo:
let n = 20;
assert n == 22;

I get ./test/expect.test.mo:71.2-71.16: execution error, assertion failure error, so I parse it with mops and show failed line as follows:
 FAIL test/expect.test.mo:71:2: execution error, assertion failure
   ...
   70   |   let n = 20;
-> 71   |   assert n == 22;
   72   |
   ...

also user can click on test/expect.test.mo:71:2 and navigate to the failed line in code editor.
But when I use helper function and fail inside that function:
let n = 20;
expect.int(n).equal(22);

I get this error:

prim:62.31-62.42: execution error, explicit trap: if I use Debug.trap(err); in helper fn
src/expect/utils.mo:16.3-16.15: execution error, assertion failure if I use Debug.print(err); assert false; in helper fn

I want to get a call stack trace and find *.test.mo:row.col-row.col to show it to the user.
Tried --error-detail 3 - no luck.
Using moc -r

Sorry about the delay, I only just noticed the issue.
moc -r runs the interpreter. The interpreter doesn't build an explicit stack so its hard to construct a trace and it would probably make it even less efficient if it maintained an explicit stack.
You might get a more meaningful stack trace running the (-wasi-system-api compiled) code in wasmtime, if you can.
The way asserts report traps is by reporting the physical source location of the assert. If you abstract several asserts into a function, the asserts will always be reported in the body of that function, because that's where the assert now takes place.
One  thing you could play with is moc -r -t, which prints a trace of function calls during execution, but that might be more information than you want to show.
Its feasible that we could modify that functionality to construct a stack trace, show only on error, but I'd have to revisit the code...

Tried -t flag.
For example, I have ex.mo with assert helpers(where we trap) and te.mo with actual test.
ex.mo
import Debug "mo:base/Debug";
import Error "mo:base/Error";

module {
	public func printAssert() {
		let x = 1 + 2;
		Debug.print("print then assert");
		assert false;
	};

	public func trap() {
		Debug.trap("trappp");
	};

	public func reject() : async () {
		throw Error.reject("rejjj");
	};
};

te.mo
import Ex "ex";

Ex.printAssert();
// Ex.trap();
// await Ex.reject();

Output for assert false
printAssert()
  print("print then assert")
    debugPrint("print then assert")
print then assert
      <= ()
    <= ()
ex.mo:8.3-8.15: execution error, assertion failure

trap
trap()
  trap("trappp")
    trap("trappp")
prim:62.31-62.42: execution error, explicit trap: trappp

reject
reject()
  -> async ex.mo:15.34-17.3
  <= async _
=> await te.mo:5.1-5.18
<- async ex.mo:15.34-17.3
  error("rejjj")
    <= (#canister_reject, "rejjj")
<- await te.mo:5.1-5.18 threw (#canister_reject, "rejjj")
prim:299.3-299.47: execution error, uncaught throw

The problem is that there is no filename:line.column for trap and assert.
For reject there is <- await te.mo:5.1-5.18 threw (#canister_reject, "rejjj") which is helpful, but most of unit tests are not async.
It would helpful if it will print filename:line.column for sync calls too.
Also would be cool to have one standard output format filename:line.column (where is it placed in line) for sync and async calls.
And it would be helpful to distinguish between the trace output line and the line printed by Debug.print, so I could run tests with -t flag in mops and filter out trace messages and show to user only Debug.print messages. Maybe start each line with TRACE  or something like that...


chore(deps): bump https://github.com/zeebe-io/zeebe-cluster-helm from 0.0.45 to 0.0.46

Update zeebe-io/zeebe-cluster-helm from 0.0.45 to 0.0.46
Command run was jx step create pr chart --name zeebe-cluster --version 0.0.46 --repo https://github.com/zeebe-io/zeebe-full-helm.git

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: salaboy
If they are not already assigned, you can assign the PR to them by writing /assign @salaboy in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Added Core.Ink & Alarm functionality

Added functionality to control alarm IRQ
Added example of wake up functionality on TimerCam & Core.ink with minimal power consumption

Based on example code of M5Stack Core.ink
https://github.com/m5stack/M5-CoreInk/blob/master/examples/RTC_WakeUp/RTC_WakeUp.ino
https://github.com/m5stack/M5-CoreInk/blob/master/src/utility/BM8563.cpp

Thank you!


[Ethers v6 Migration] Initial Ethers v6 Integration

Context / Issue
Initial upgrade to Ethers v6 in the safe-core-sdk.
Proposed solution
Integrate Ethers v6 and create a basic script to use the protocol-kit with Ethers v6.
It's expected for the tests and the Hardhat project to fail at this stage.
A separate integration branch will be created, which won't be merged until all migration tasks are completed.
Links
Ethers migration guide docs: https://docs.ethers.org/v6/migrating/

PR created: https://github.com/safe-global/safe-core-sdk/pull/549


Add spy functionality

A spied object is observed but the real logic is used.

wraps was added, however it has some counter-intuitive behavior and limitations that are worth addressing with spy.


Verify that PathMaster exists before trying to use it

Attribute pm does not exist always and building crashes because it is missing when chaining several node modules. Here is a patch that passes the tests.

Good job! Thanks

Off-topic: path resolving has also some similar issues, I will dig into it now. I am trying to import a working React project from Webkit so it gives a nice test ground for a project that is chained heavily. I am absolutely loving the speed of fuse-box!

@adrenalin thanks! That's great that you have some heavy project to test. Fill me in if you get into something.


Add mode to generate canonical PIG domains

Issue #, if available: N/A
Description of changes:
This adds two new features:

Adds a new Ion target that spits out the computed type domains in a canonical Ion form (i.e. all output domains are pure definitions, there are no permutations or transforms)
Adds a --domains/-f command line argument that allows you to specify a subset of domains to generate (rather than requiring all of them)

This makes it much easier to work with and post-process PIG domains outside of PIG while still leveraging PIG to do validation and type resolution.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

My first observation is:
cd $pojrectRoot
./gradlew assemble
cd pig/build/distributions/pig-0.5.1-SNAPSHOT/bin
./pig -u ~/projects/partiql/partiql-lang-kotlin/lang/resources/org/partiql/type-domains/partiql.ion -t kotlin -f partiql_physical --namespace junk --output-directory junk
pig: universe file: /home/ANT.AMAZON.COM/dlurton/projects/partiql/partiql-lang-kotlin/lang/resources/org/partiql/type-domains/partiql.ion
pig: parsing the universe...
pig: permuting domains...
pig: applying Kotlin pre-processing
Exception in thread "main" java.util.NoSuchElementException: Collection contains no element matching the predicate.
	at org.partiql.pig.generator.kotlin.KTypeDomainConverterKt.convertToKTypeUniverse(KTypeDomainConverter.kt:442)
	at org.partiql.pig.MainKt.generateCode(main.kt:80)
	at org.partiql.pig.MainKt.main(main.kt:53)

I will have more, but possibly not for a while.

Seems to have something to do with this TODO.  I'll look into it.


Return unique list of repos from repos.json

Currently, it is possible for there to be duplicate memberships tying a user
to repos and as a result, the user can sometimes see duplicate repos on
houndci.com. This update solves the UI problem. We'll have to dig a bit deeper
to figure out where the duplicates are coming from in the first place.
Part of
https://trello.com/c/GnvVhljg/532-repos-json-endpoint-returns-duplicate-repos

Looks good to me. :+1:

Is there a related PR/card to make sure we don't get duplicate repos in the db? Would it be a better solution to solve this at the db/storage level, rather than adding a uniq call?

@gylaz here's the card to figure out what's up at the persistence level: https://trello.com/c/rVCmKMc1/533-there-are-duplicate-memberships. I figured we could implement uniq (to not confuse users) until the underlying issue is sorted.


Event API Revisions

Having spent some time with @rogeriochaves's awesome event triggering system, I have some ideas for how to revise the API:
Current API
test "input produces expected Msg" <|
    \() ->
        Html.input [ onInput Change ] [ ]
            |> Query.fromHtml
            |> Events.simulate (Input "cats")
            |> Events.expectEvent (Change "cats")

Proposed Change
test "input produces expected Msg" <|
    \() ->
        Html.input [ onInput Change ] [ ]
            |> Query.fromHtml
            |> Event.simulate (Event.input "cats")
            |> Event.expect (Change "cats")

The big change is making (lowercase) functions rather than (uppercase) union type constructors for the events.
Before:
|> Events.simulate (Input "cats")
|> Events.expectEvent (Change "cats")

After:
|> Event.simulate (Event.input "cats")
|> Event.expect (Change "cats")

This has a few benefits.

It's easier to tell at a glance which is the Msg (the uppercase Change) and which is the event (the lowercase input "cats" - as opposed to the previous Input "cats").
Each event helper can have its own documentation, which is especially helpful in the case of nontrivial ones like check.
Adding new helpers can be a minor version bump.

Other changes include:

Renamed EventNode to Event and made the old Event a ( String, Value ) tuple. We never treat these as anything other than function arguments that get passed around without modification, so giving them their own type doesn't seem warranted.
The module is called Event instead of Events - this makes Event.input read nicely ("an input event") and makes the module name correspond to the type - the Event module and the Event type, like the Maybe module and the Maybe type.
Instead of Events.eventResult we can have the self-explanatory Event.toResult - which takes an Event and returns a Result!
In a similar vein, renaming Events.expectEvent to Event.expect - which takes an Event (and a Msg) and returns an Expectation.
Removing the formatting characters from the error message - those won't look great in a browser. 😉

Thoughts?

Cool! It crossed my mind using functions instead of union types for the events, but I haven't thought deeper on the advantages or disadvantages of it. You won me at "Each event helper can have its own documentation".

woa, hold up,I wanna review first

I've putsuggested changes on #29 @rtfeldman

Sorry @eeue56! Didn't realize you wanted to weigh in first. 😅