Mac build does not work

Hi!
I admittedly am new to Mac OS, but I setup a build environment for SkiaSharp and I get a quite meaningless exception when running
sudo ./bootstrapper.sh -t externals-android
the relevant trace part is

[33/755] CC obj/third_party/externals/libwebp/src/dsp/libwebp_dsp.upsampling.o
ninja: build stopped: subcommand failed.
Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d arm_v7_neon skia_lib pdf sfntly icuuc
GYP_GENERATORS is "ninja-android"
Updating projects from gyp files...
ninja: Entering directory /Users/xammac/SkiaSharp/skia/out/config/android-arm_v7_neon/Release' [349/1002] CXX obj/src/c/xamarin/core.sk_x_path.o FAILED: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/../toolchains/arm-r10e-14/bin/arm-linux-androideabi-g++ -MMD -MF obj/src/c/xamarin/core.sk_x_path.o.d -DSK_INTERNAL -DSK_GAMMA_APPLY_TO_A8 -DSK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0 -DSK_SUPPORT_GPU=1 -DSK_FORCE_DISTANCE_FIELD_TEXT=0 -DSK_ARM_HAS_NEON -DSK_BUILD_FOR_ANDROID -DSK_GAMMA_EXPONENT=1.4 -DSK_GAMMA_CONTRAST=0.0 -DSKIA_DLL -DSKIA_IMPLEMENTATION=1 -DSK_SUPPORT_LEGACY_CLIPTOLAYERFLAG -DNDEBUG -I../../../../include/c -I../../../../include/config -I../../../../include/core -I../../../../include/pathops -I../../../../include/ports -I../../../../include/private -I../../../../include/utils -I../../../../include/images -I../../../../src/core -I../../../../src/sfnt -I../../../../src/image -I../../../../src/opts -I../../../../src/utils -I../../../../include/gpu -I../../../../src/gpu -I../../../../platform_tools/android/third_party/cpufeatures -fPIC -g -fno-exceptions -fstrict-aliasing -Wall -Wextra -Winit-self -Wpointer-arith -Wsign-compare -Wno-unused-parameter -Werror -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=softfp -fuse-ld=gold -O2 -std=c++11 -fno-rtti -fno-threadsafe-statics -Wnon-virtual-dtor  -c ../../../../src/c/xamarin/sk_x_path.cpp -o obj/src/c/xamarin/core.sk_x_path.o ../../../../src/c/xamarin/sk_x_path.cpp:94:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kMove_Verb == MOVE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                       ^ ../../../../src/c/xamarin/sk_x_path.cpp:95:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kLine_Verb == LINE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                       ^ ../../../../src/c/xamarin/sk_x_path.cpp:96:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kQuad_Verb == QUAD_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                       ^ ../../../../src/c/xamarin/sk_x_path.cpp:97:39: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kConic_Verb == CONIC_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                        ^ ../../../../src/c/xamarin/sk_x_path.cpp:98:39: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kCubic_Verb == CUBIC_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                        ^ ../../../../src/c/xamarin/sk_x_path.cpp:99:39: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kClose_Verb == CLOSE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                        ^ ../../../../src/c/xamarin/sk_x_path.cpp:100:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]  static_assert (SkPath::kDone_Verb == DONE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");                                       ^ ../../../../src/c/xamarin/sk_x_path.cpp:127:47: error: comparison between 'enum SkPath::AddPathMode' and 'enum sk_path_add_mode_t' [-Werror=enum-compare]  static_assert (SkPath::kAppend_AddPathMode == APPEND_ADD_MODE, "ABI changed, you must write a enumeration mapper for SkPath::AddPathMode to sk_path_add_mode_t");                                                ^ ../../../../src/c/xamarin/sk_x_path.cpp:128:47: error: comparison between 'enum SkPath::AddPathMode' and 'enum sk_path_add_mode_t' [-Werror=enum-compare]  static_assert (SkPath::kExtend_AddPathMode == EXTEND_ADD_MODE, "ABI changed, you must write a enumeration mapper for SkPath::AddPathMode to sk_path_add_mode_t");                                                ^ cc1plus: all warnings being treated as errors [349/1002] CXX obj/third_party/externals/sfntly/sfntly/table/truetype/sfntly.glyph_table.o ninja: build stopped: subcommand failed. Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d arm64 skia_lib pdf sfntly icuuc GYP_GENERATORS is "ninja-android" Updating projects from gyp files... ninja: Entering directory /Users/xammac/SkiaSharp/skia/out/config/android-arm64/Release'
[20/647] CXX obj/src/c/xamarin/core.sk_x_path.o
FAILED: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/../toolchains/arm64-r10e-21/bin/aarch64-linux-android-g++ -MMD -MF obj/src/c/xamarin/core.sk_x_path.o.d -DSK_INTERNAL -DSK_GAMMA_APPLY_TO_A8 -DSK_ALLOW_STATIC_GLOBAL_INITIALIZERS=0 -DSK_SUPPORT_GPU=1 -DSK_FORCE_DISTANCE_FIELD_TEXT=0 -DSK_BUILD_FOR_ANDROID -DSK_GAMMA_EXPONENT=1.4 -DSK_GAMMA_CONTRAST=0.0 -DSKIA_DLL -DSKIA_IMPLEMENTATION=1 -DSK_SUPPORT_LEGACY_CLIPTOLAYERFLAG -DNDEBUG -I../../../../include/c -I../../../../include/config -I../../../../include/core -I../../../../include/pathops -I../../../../include/ports -I../../../../include/private -I../../../../include/utils -I../../../../include/images -I../../../../src/core -I../../../../src/sfnt -I../../../../src/image -I../../../../src/opts -I../../../../src/utils -I../../../../include/gpu -I../../../../src/gpu -I../../../../platform_tools/android/third_party/cpufeatures -fPIC -g -fno-exceptions -fstrict-aliasing -Wall -Wextra -Winit-self -Wpointer-arith -Wsign-compare -Wno-unused-parameter -Werror -fuse-ld=gold -O2 -std=c++11 -fno-rtti -fno-threadsafe-statics -Wnon-virtual-dtor  -c ../../../../src/c/xamarin/sk_x_path.cpp -o obj/src/c/xamarin/core.sk_x_path.o
../../../../src/c/xamarin/sk_x_path.cpp:94:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kMove_Verb == MOVE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:95:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kLine_Verb == LINE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:96:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kQuad_Verb == QUAD_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:97:39: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kConic_Verb == CONIC_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:98:39: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kCubic_Verb == CUBIC_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:99:39: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kClose_Verb == CLOSE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:100:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kDone_Verb == DONE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:127:47: error: comparison between 'enum SkPath::AddPathMode' and 'enum sk_path_add_mode_t' [-Werror=enum-compare]
static_assert (SkPath::kAppend_AddPathMode == APPEND_ADD_MODE, "ABI changed, you must write a enumeration mapper for SkPath::AddPathMode to sk_path_add_mode_t");
^
../../../../src/c/xamarin/sk_x_path.cpp:128:47: error: comparison between 'enum SkPath::AddPathMode' and 'enum sk_path_add_mode_t' [-Werror=enum-compare]
static_assert (SkPath::kExtend_AddPathMode == EXTEND_ADD_MODE, "ABI changed, you must write a enumeration mapper for SkPath::AddPathMode to sk_path_add_mode_t");
^
cc1plus: all warnings being treated as errors
[20/647] CXX obj/src/core/core.SkAAClip.o
ninja: build stopped: subcommand failed.
Executing: /Users/xammac/Library/Developer/Xamarin/android-ndk/ndk-build
An error occured when executing task 'externals-android'.
Error: System.ComponentModel.Win32Exception: ApplicationName='/Users/xammac/Library/Developer/Xamarin/android-ndk/ndk-build', CommandLine='', CurrentDirectory='/Users/xammac/SkiaSharp/native-builds/libSkiaSharp_android', Native error= Cannot find the specified file
at System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) <0x39cf1e8 + 0x0055f> in :0

any advice would be greatly appreciated

by looking a bit into it as no-one is answering, the only real problem seems to be

../../../../src/c/xamarin/sk_x_path.cpp -o obj/src/c/xamarin/core.sk_x_path.o
../../../../src/c/xamarin/sk_x_path.cpp:94:38: error: comparison between 'enum SkPath::Verb' and 'enum sk_path_verb_t' [-Werror=enum-compare]
static_assert (SkPath::kMove_Verb == MOVE_PATH_VERB, "ABI changed, you must write a enumeration mapper for SkPath::Verb to sk_path_verb_t");

But I neither know how to fix it, nor where...

2 gentledepp
skia/src/c/xamarin/sk_x_path.cpp
Simply comment out lines from 93 to 101 (there are nothing extra important - just assertions)

Thank you @hypeartist, but unfortunately this only yields other similar errors.
I guess this is because the build runs with the option "treat warnings as errors"
I would much rather run the build without "warnings as errors" instead of modifying skia code...
Can you give me a hint how I could to that?

2 gentledepp

native-builds/libSkiaSharp_android/jni/SkiaSharp.mk

At line 35 try to remove -Werror switch

Thank you so much! I tried it and it did not work either.
So I switched back to your first proposal *commenting out the static asserts
and in the same file,

skia/src/c/xamarin/sk_x_path.cpp
commented out the lines 127... 130 like so

`
//#if __cplusplus >= 199711L
//static_assert (SkPath::kAppend_AddPathMode == APPEND_ADD_MODE, "ABI changed, you must write a enumeration mapper for SkPath::AddPathMode to sk_path_add_mode_t");
//static_assert (SkPath::kExtend_AddPathMode == EXTEND_ADD_MODE, "ABI changed, you must write a enumeration mapper for SkPath::AddPathMode to sk_path_add_mode_t");
//#endif
not the build seems to work
Thank you so much!

Oh man... there is still a problem, whereby a different one.

Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d x86 skia_lib pdf sfntly icuuc
GYP_GENERATORS is "ninja-android"
Updating projects from gyp files...
ninja: Entering directory /Users/xammac/SkiaSharp/skia/out/config/android-x86/Release' [3/3] SOLINK lib/libskia_android.so Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d x86_64 skia_lib pdf sfntly icuuc GYP_GENERATORS is "ninja-android" Updating projects from gyp files... ninja: Entering directory /Users/xammac/SkiaSharp/skia/out/config/android-x86_64/Release'
[3/3] SOLINK lib/libskia_android.so
Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d arm skia_lib pdf sfntly icuuc
GYP_GENERATORS is "ninja-android"
Updating projects from gyp files...
ninja: Entering directory /Users/xammac/SkiaSharp/skia/out/config/android-arm/Release' [3/3] SOLINK lib/libskia_android.so Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d arm_v7_neon skia_lib pdf sfntly icuuc GYP_GENERATORS is "ninja-android" Updating projects from gyp files... ninja: Entering directory /Users/xammac/SkiaSharp/skia/out/config/android-arm_v7_neon/Release'
[3/3] SOLINK lib/libskia_android.so
Executing: /Users/xammac/SkiaSharp/skia/platform_tools/android/bin/android_ninja -d arm64 skia_lib pdf sfntly icuuc
GYP_GENERATORS is "ninja-android"
Updating projects from gyp files...
ninja: Entering directory `/Users/xammac/SkiaSharp/skia/out/config/android-arm64/Release'
[3/3] SOLINK lib/libskia_android.so
Executing: /Users/xammac/Library/Developer/Xamarin/android-ndk/ndk-build
An error occured when executing task 'externals-android'.
Error: System.ComponentModel.Win32Exception: ApplicationName='/Users/xammac/Library/Developer/Xamarin/android-ndk/ndk-build', CommandLine='', CurrentDirectory='/Users/xammac/SkiaSharp/native-builds/libSkiaSharp_android', Native error= Cannot find the specified file
at System.Diagnostics.Process.Start_noshell (System.Diagnostics.ProcessStartInfo startInfo, System.Diagnostics.Process process) <0x39af1e8 + 0x0055f> in :0

it tries to fire up a process with ...

2 gentledepp
Take a look:
externals-android

I guess you mean
https://github.com/mono/SkiaSharp/blob/master/build.cake
;-)

2 gentledepp
yep!

seems I was missing ninja build system.... veeeeery interesting stuff....

I pushed a fix that should address the static_assert errors.

2 gentledepp

I'm fed up. Thank you for helping me out, but this is too tedious for me to continue.

Totally agreed! Tried to build it on Windows with no success. That incredible building system, with all those cakes, cmakes, ninjas, pythons and pwershells mixed up in some voodoo way, just blew my head off.

well... interestingly it worked out-of-the box on my windows machine :dancer:

I am closing this as the fix/commit seems to have removed all the kinks. It builds fine for me with m49/m52 as well as locally and on CI

hmmm... so what am I doing wrong here?

=== BUILD TARGET libSkiaSharp OF PROJECT libSkiaSharp WITH CONFIGURATION Release ===
Check dependencies
Ld build/Release/libSkiaSharp.dylib normal i386
cd /Users/xammac/SkiaSharp/native-builds/libSkiaSharp_osx
export MACOSX_DEPLOYMENT_TARGET=10.10
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -L/Users/xammac/SkiaSharp/native-builds/libSkiaSharp_osx/build/Release -F/Users/xammac/SkiaSharp/native-builds/libSkiaSharp_osx/build/Release -filelist /Users/xammac/SkiaSharp/native-builds/libSkiaSharp_osx/build/libSkiaSharp.build/Release/libSkiaSharp.build/Objects-normal/i386/libSkiaSharp.LinkFileList -install_name /usr/local/lib/libSkiaSharp.dylib -mmacosx-version-min=10.10 -stdlib=libc++ /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libgiflib.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libpng_static.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_codec_android.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_codec.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_pdf.a -lz /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libicuuc.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libsfntly.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libwebp_dec.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libwebp_demux.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libwebp_dsp_enc.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libwebp_dsp.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libwebp_enc.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libwebp_utils.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libjpeg-turbo.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libetc1.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_utils.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libSkKTX.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_ports.a -lc++ /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_opts_ssse3.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_sfnt.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_skgpu.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_core.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_effects.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_images.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_opts_avx.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_opts_sse41.a /Users/xammac/SkiaSharp/skia/xcodebuild/Release/libskia_opts.a -framework CoreGraphics -framework CoreText -framework CoreServices -framework ImageIO -framework CoreFoundation -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/xammac/SkiaSharp/native-builds/libSkiaSharp_osx/build/libSkiaSharp.build/Release/libSkiaSharp.build/Objects-normal/i386/libSkiaSharp_dependency_info.dat -o /Users/xammac/SkiaSharp/native-builds/libSkiaSharp_osx/build/Release/libSkiaSharp.dylib
Undefined symbols for architecture i386:
"_jconst_fancy_upsample_sse2", referenced from:
_jsimd_can_h2v2_fancy_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
_jsimd_can_h2v1_fancy_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_fdct_float_sse", referenced from:
_jsimd_can_fdct_float in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_fdct_ifast_sse2", referenced from:
_jsimd_can_fdct_ifast in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_fdct_islow_sse2", referenced from:
_jsimd_can_fdct_islow in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_idct_float_sse2", referenced from:
_jsimd_can_idct_float in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_idct_ifast_sse2", referenced from:
_jsimd_can_idct_ifast in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_idct_islow_sse2", referenced from:
_jsimd_can_idct_islow in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_idct_red_sse2", referenced from:
_jsimd_can_idct_2x2 in libjpeg-turbo.a(jsimd_x86_64.o)
_jsimd_can_idct_4x4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_merged_upsample_sse2", referenced from:
_jsimd_can_h2v2_merged_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
_jsimd_can_h2v1_merged_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_rgb_gray_convert_sse2", referenced from:
_jsimd_can_rgb_gray in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_rgb_ycc_convert_sse2", referenced from:
_jsimd_can_rgb_ycc in libjpeg-turbo.a(jsimd_x86_64.o)
"_jconst_ycc_rgb_convert_sse2", referenced from:
_jsimd_can_ycc_rgb in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_convsamp_float_sse2", referenced from:
_jsimd_convsamp_float in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_convsamp_sse2", referenced from:
_jsimd_convsamp in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extbgr_gray_convert_sse2", referenced from:
l_switch.table.1 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extbgr_ycc_convert_sse2", referenced from:
l_switch.table in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extbgrx_gray_convert_sse2", referenced from:
l_switch.table.1 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extbgrx_ycc_convert_sse2", referenced from:
l_switch.table in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extrgb_gray_convert_sse2", referenced from:
l_switch.table.1 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extrgb_ycc_convert_sse2", referenced from:
l_switch.table in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extrgbx_gray_convert_sse2", referenced from:
l_switch.table.1 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extrgbx_ycc_convert_sse2", referenced from:
l_switch.table in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extxbgr_gray_convert_sse2", referenced from:
l_switch.table.1 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extxbgr_ycc_convert_sse2", referenced from:
l_switch.table in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extxrgb_gray_convert_sse2", referenced from:
l_switch.table.1 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_extxrgb_ycc_convert_sse2", referenced from:
l_switch.table in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_fdct_float_sse", referenced from:
_jsimd_fdct_float in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_fdct_ifast_sse2", referenced from:
_jsimd_fdct_ifast in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_fdct_islow_sse2", referenced from:
_jsimd_fdct_islow in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_downsample_sse2", referenced from:
_jsimd_h2v1_downsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_extbgr_merged_upsample_sse2", referenced from:
l_switch.table.4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_extbgrx_merged_upsample_sse2", referenced from:
l_switch.table.4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_extrgb_merged_upsample_sse2", referenced from:
l_switch.table.4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_extrgbx_merged_upsample_sse2", referenced from:
l_switch.table.4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_extxbgr_merged_upsample_sse2", referenced from:
l_switch.table.4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_extxrgb_merged_upsample_sse2", referenced from:
l_switch.table.4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_fancy_upsample_sse2", referenced from:
_jsimd_h2v1_fancy_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_merged_upsample_sse2", referenced from:
_jsimd_h2v1_merged_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v1_upsample_sse2", referenced from:
_jsimd_h2v1_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_downsample_sse2", referenced from:
_jsimd_h2v2_downsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_extbgr_merged_upsample_sse2", referenced from:
l_switch.table.3 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_extbgrx_merged_upsample_sse2", referenced from:
l_switch.table.3 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_extrgb_merged_upsample_sse2", referenced from:
l_switch.table.3 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_extrgbx_merged_upsample_sse2", referenced from:
l_switch.table.3 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_extxbgr_merged_upsample_sse2", referenced from:
l_switch.table.3 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_extxrgb_merged_upsample_sse2", referenced from:
l_switch.table.3 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_fancy_upsample_sse2", referenced from:
_jsimd_h2v2_fancy_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_merged_upsample_sse2", referenced from:
_jsimd_h2v2_merged_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_h2v2_upsample_sse2", referenced from:
_jsimd_h2v2_upsample in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_idct_2x2_sse2", referenced from:
_jsimd_idct_2x2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_idct_4x4_sse2", referenced from:
_jsimd_idct_4x4 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_idct_float_sse2", referenced from:
_jsimd_idct_float in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_idct_ifast_sse2", referenced from:
_jsimd_idct_ifast in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_idct_islow_sse2", referenced from:
_jsimd_idct_islow in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_quantize_float_sse2", referenced from:
_jsimd_quantize_float in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_quantize_sse2", referenced from:
_jsimd_quantize in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_rgb_gray_convert_sse2", referenced from:
_jsimd_rgb_gray_convert in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_rgb_ycc_convert_sse2", referenced from:
_jsimd_rgb_ycc_convert in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_extbgr_convert_sse2", referenced from:
l_switch.table.2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_extbgrx_convert_sse2", referenced from:
l_switch.table.2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_extrgb_convert_sse2", referenced from:
l_switch.table.2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_extrgbx_convert_sse2", referenced from:
l_switch.table.2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_extxbgr_convert_sse2", referenced from:
l_switch.table.2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_extxrgb_convert_sse2", referenced from:
l_switch.table.2 in libjpeg-turbo.a(jsimd_x86_64.o)
"_jsimd_ycc_rgb_convert_sse2", referenced from:
_jsimd_ycc_rgb_convert in libjpeg-turbo.a(jsimd_x86_64.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
The following build commands failed:
Ld build/Release/libSkiaSharp.dylib normal i386
(1 failure)
An error occured when executing task 'externals-osx'.
Error: Cake.Core.CakeException: xcodebuild: Process returned an error (exit code 65).
at Cake.Core.Utilities.Tool1[TSettings].Run (Cake.Core.Utilities.TSettings settings, Cake.Core.IO.ProcessArgumentBuilder arguments, Cake.Core.IO.FilePath toolPath, Cake.Core.IO.ProcessSettings processSettings, System.Action1 postAction) <0x39bd460 + 0x00183> in :0
at Cake.Core.Utilities.Tool`1[TSettings].Run (Cake.Core.Utilities.TSettings settings, Cake.Core.IO.ProcessArgumentBuilder arguments, Cake.Core.IO.FilePath toolPath) <0x39bd418 + 0x00037> in :0
at Cake.XCode.XCodeBuildRunner.Build (Cake.XCode.XCodeBuildSettings settings) <0x39bc9c8 + 0x009fb> in :0
at Cake.XCode.XCodeAliases.XCodeBuild (ICakeContext context, Cake.XCode.XCodeBuildSettings settings) <0x39bc5f8 + 0x000a3> in :0
at CakeBuildScriptImpl.XCodeBuild (Cake.XCode.XCodeBuildSettings settings) <0x39bc5c0 + 0x00023> in :0
at CakeBuildScriptImpl+c__AnonStorey0.<>m__2B (System.String arch, System.String skiaArch) <0x39bc068 + 0x0015b> in :0
at CakeBuildScriptImpl+c__AnonStorey0.<>m__19 () <0x39bbb08 + 0x000b3> in :0
at Cake.Core.CakeTaskBuilderExtensions+<>c__DisplayClass4.b__3 (ICakeContext context) <0x39ad2f8 + 0x00014> in :0
at Cake.Core.ActionTask.Execute (ICakeContext context) <0x39ad240 + 0x00059> in :0
at Cake.Core.DefaultExecutionStrategy.Execute (Cake.Core.CakeTask task, ICakeContext context) <0x39ad078 + 0x00162> in :0
at Cake.Core.CakeEngine.ExecuteTask (ICakeContext context, IExecutionStrategy strategy, System.Diagnostics.Stopwatch stopWatch, Cake.Core.CakeTask task, Cake.Core.CakeReport report) <0x39aca80 + 0x00099> in :0

Also, where is your CI?
Is there any way to crab the nuget packages that are created in your CI? Please?

I seem to be just too dumb to get the build to work on mac.
I would greatly appreciate, if someone could supply me with a nuget build of the current master branch. Maybe as "alpha version"?
I really need this to continue developing my SVG editor/renderer based on Skia... :-|

Never mind - I got it to work! (I am such a n00b so thank you for hanging in with me)


Sticky scroll seems to render on top of minimap

VS Code Version: 1.70.2
OS Version: Manjaro Linux 21.3.7 "Ruah"

Hi thank you for filing this bug. It should be solved in the Insiders version of VS Code which you can download in order to verify this : https://code.visualstudio.com/insiders/. You will see the new corrected behavior in the next stable release which happens once a month.


NoClassDefFoundError

Game crashes on launch, here's the log:
http://paste.ee/p/ia1Th
deepresonance-1.8.9-1.1.4beta5
ElecCore-1.8.9-1.4.234
mcjtylib-1.8.9-1.8.1beta7
Edit: Apparently needed latest version of RFtools and RFDim. Might wanna list that as a Dependency on curse.

Hmm those should not be needed. I have to check it out. Thanks for finding this

Should be fixed in next version hopefully


add cmake argument azure_IoT_Sdks for raspberrypi c

@ZhijunZhao  @zikalino

need to bump version for better BI tracking

version bumped to 0.11.13


[Distributed] Remove class-bound restriction from target invocation decoder

Remove artificial restriction from DistributedTargetInvocationDecoder to be class-bound;
Make executedDistributedTarget and accessor functions generic over type of decoder.

Resolves: rdar://problem/88719791

@ktoso We need to add tests for structs and enums but I didn't want to just copy-paste encoders/decoders or clone _remoteCall.swift per nominal type, so ideas are welcome!

The annoying limitation here is that we cannot have multiple fake systems in a different module either because symbol for decodeNextArgument from a different module need to get requested during SILGen which is not yet implemented...

@swift-ci please test

@swift-ci please test

The annoying limitation here is that we cannot have multiple fake systems in a different module either because symbol for decodeNextArgument from a different module need to get requested during SILGen which is not yet implemented...

I think I can give this a shot right now

@swift-ci please test

@swift-ci please test Windows platform

xedin:dist-generic-accessors
Sources/Basics/HTPClient+URLSession.swift YES
Do Not Allow Advertiser Tracking
Objective-CSwiftUnity SDK
// Set AdvertiserTrackingEnabled to NO if a device does not provide consent [FBSDKSettings setAdvertiserTrackingEnabled:NO];

@swift-ci please test Windows platform

[AdvertiserTrackingEnabled](;Sources/Build/BuildPlan.swift yes or Do Not Allow Advertiser Tracking  Objective-CSwiftUnity SDK  // Set AdvertiserTrackingEnabled to NO if a device does not provide consent [FBSDKSettings setAdvertiserTrackingEnabled:NO];)

gh pr checkout 41415``

Seems this helped, failure was lldb   lldb-shell :: SwiftREPL/BreakpointSimple.test

@swift-ci please test macOS


Added article 'dotnet club use wechaty to collect valuable wechat threads'

Fixes #152
Make sure these boxes are checked before creating your pull request -- thank you!

[x] Add Blog Header, including title, author, date.

---
title: dotnet club 借助 WeChaty 沉淀深度技术对话
author: jijiechen
date: 2019-08-12 21:15 +0800
---

> 作者: [@jijiechen](https://github.com/jijiechen) dotnet club 技术社区负责人(https://dotnetclub.net)

[x] Keep all filenames & url as lowercase, and use - to connect words instead of space.
[x] Embed the photo & video before publishing, save all external file to the blog /download/2018 directory.
Added to /docs/assets/2019/dotnetclub-chaty/
[x] Add <!--more--> section to just show the abstract in blog homepage.

See more

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Great work!
Please remember to add the issue reference to your Pull Request before we close it.

Done. Should close #152


Invalid TOML when appending tables or documents to arrays

Python version: 3.11.0
tomlkit version: 0.12.4
The following procedures give different TOML strings when I would expect them to be the same.
import tomlkit as tk

def make_doc(val):
    doc = tk.document()
    arr = tk.array()
    arr.append(val)
    doc['a'] = arr
    return doc

# regular dict
dict_val = {'b': {}}

# same dict, but as a table
tbl_val = tk.table()
tbl_val['b'] = {}
assert tbl_val == dict_val

# same dict, but as a document
doc_val = tk.document()
doc_val['b'] = {}
assert doc_val == dict_val

print(tk.dumps(make_doc(dict_val)))
a = [{b = {}}]

print(tk.dumps(make_doc(tbl_val)))
a = [[b]
]

print(tk.dumps(make_doc(doc_val)))
a = [{b = }]

Only the first of these is valid TOML.  It's surprising the results are different given they all have the same content.
The issues persist even if I change arr.append(val) to arr.append(dict(val)), or if I switch from {'b': {}} to a version without the empty dict, {'b': {'c': 1}}.

In TOMLKit, elements have not only semantic meaning but also structural meaning.
For example, array means a inline array wrapped by [], different from an array of table(table with [[name]] header)
and table means a regular TOML table, not inline table. They can't replace each other, so just avoid this kind of usage.
By creating document with these TOMLkit elements, you are manipulating the format and structure, you are responsible to choose the right elements. Otherwise if you don't care about the formats, just use plain python objects.


Support for context.Context in func(any, []any) any

  I am very grateful for the excellent open-source code you have provided, and I have used it in my project. However, I noticed that your func(any, []any) any function does not support the context.Context parameter. I saw the env.ctx parameter in your source code, so I was wondering if it would be possible to update the function signature to support the context.Context parameter. This would greatly enhance the usability of your code and make it more compatible with other libraries.
Here is an example of what I saw in your code:
x, args := env.pop(), env.args[:argcnt]
for i := 0; i < argcnt; i++ {
    args[i] = env.pop()
}
w := v[0].(func(any, []any) any)(x, args)

  I noticed that the env.ctx variable is consistent with the context.Context type. Therefore, I think adding the context.Context parameter would be a great improvement.
  If you have any suggestions or recommended supported methods, please let me know. Thank you very much for your time and help.
Best regards.

I'm just for curious, what kind of custom function you want to integrate with gojq?

in my case, I need to follow up on the jq function debug results obtained by inputting different http bodies for the same jq code, and share the same session information under the same request. eg:
optFn := func(key string) gojq.CompilerOption {
		return gojq.WithFunction(key, 1, 1,
			func(ctx context.Context, a any, _ []any) any {
				claim := getClaim(ctx)
				id, _ := a.(int64)
				name, _ := callHttp(claim.sessinId, id)
				claim.DebugMap[key] = name
				return name
			})
	}

	userInputCode := `{"user_name":getUserName(.user_id), "company_name":getCompanyName(.company_id)}`
	query, _ := gojq.Parse(userInputCode)
	code, _ := gojq.Compile(query, optFn("getUserName"), optFn("getCompanyName"))

	Handler := func(w http.ResponseWriter, r *http.Request) {
		// ctx has some claims from middleware
		ctx := r.Context()
		body, _ := ioutil.ReadAll(r.Body)
		var data map[string]interface{}
		_ = json.Unmarshal(body, &data)
		res := code.RunWithContext(r.Context(), body)
		val, _ := iter.Next()
		if err, ok := val.(error); ok {
			panic(err)
		}
		result := val.(map[string]interface{})
		if err := doSth(result); err != nil {
			claim := getClaim(ctx)
			w.Write(claim.DebugMap)
			w.WriteHeader(http.StatusInternalServerError)
			return
		}
		w.Write([]byte("success"))
		w.WriteHeader(http.StatusOK)
		return
	}

	http.ListenAndServe(":8080", http.HandlerFunc(Handler))

I'm just for curious, what kind of custom function you want to integrate with gojq?

@itchyny Sorry for such late response.I need to follow up on the jq function debug results obtained by inputting different http bodies for the same jq code, and share the same session information under the same request. eg:
	optFn := func(key string) gojq.CompilerOption {
		return gojq.WithFunction(key, 1, 1,
			func(ctx context.Context, a any, _ []any) any {
				claim := getClaim(ctx)
				id, _ := a.(int64)
				name, _ := callHttp(claim.sessinId, id)
				claim.DebugMap[key] = name
				return name
			})
	}

	userInputCode := `{"user_name":getUserName(.user_id), "company_name":getCompanyName(.company_id)}`
	query, _ := gojq.Parse(userInputCode)
	code, _ := gojq.Compile(query, optFn("getUserName"), optFn("getCompanyName"))

	Handler := func(w http.ResponseWriter, r *http.Request) {
		// ctx has some claims from middleware
		ctx := r.Context()
		body, _ := ioutil.ReadAll(r.Body)
		var data map[string]interface{}
		_ = json.Unmarshal(body, &data)
		res := code.RunWithContext(r.Context(), body)
		val, _ := iter.Next()
		if err, ok := val.(error); ok {
			panic(err)
		}
		result := val.(map[string]interface{})
		if err := doSth(result); err != nil {
			claim := getClaim(ctx)
			w.Write(claim.DebugMap)
			w.WriteHeader(http.StatusInternalServerError)
			return
		}
		w.Write([]byte("success"))
		w.WriteHeader(http.StatusOK)
		return
	}

	http.ListenAndServe(":8080", http.HandlerFunc(Handler))

In my case, I implemented a configuration similar to low-code through gojq code (userInputCode). HTTP requests may take message events, and I used WithFunction to provide plugin capabilities to users, allowing them to freely assemble data and do certain things

We also need such functionality, because it turns out there is no way to pass different parameters after code was compiled. Variables and functions can only be set at compile time and nothing passes request context at runtime, and for intense use it looks like we are spending noticeable cpu time inside compile, with lots of memory allocations. It would be supereme if compiled code may be reused, ctx will just do the job.
Not to break compatibility you may, for example, just add opcall_ctx opcode alongside with WithCtxFunction - that way it won't affect neither compatibility, neither execution speed of old code..
Very demanding feature!

For your usecase you can use WithVariables.

Sadly, no.. we have a functions, that needing to work with request context. We have concepts of "alternate data streams" when you have not only input objects but associated metadata with it. And special functions for working with it. Also, we have jq functions, doing network requests on itself. Ultimately, calling compile is just slow for our workload.
Adding ability to work with context easily solves all of above problems, so we forked and started extensive use of context.
We've got code simplifications and measured 10-30% gains with it, its important for us.
We hope one day we may drop our temporary fork (merging main+json_numbers+auroraV work+fixes because his mr broke something and there were paniking builtins), and switch back to this repository.
All that is needed for that - is ability to register function signature with context, which would accept whatever is passed to RunWithContext. I even offered how to do so without breaking changes..


Debug and release builds can have different behavior.

See eg https://github.com/tigerbeetledb/tigerbeetle/issues/390#issuecomment-1379639703.
This is not only bad for debugging - if it's dependent on optimization passes in the compiler it could also cause differences between different compiler versions or even different operating systems or build targets.
After fixing this case, we should probably also start comparing debug vs release builds of the same fuzz seed in CI.

The fuzz seed above:

Does not do any IO
Does not have any threads.
Does not show any difference in rng outputs before the divergence point.


Fail when run  .\gradlew assembleRelease

Got the message below. Any suggestion?
PS E:\TestProj\MixedReality-WebRTC\tools\build\android> .\gradlew assembleRelease
Starting a Gradle Daemon (subsequent builds will be faster)

> Task :webrtc-native:externalNativeBuildRelease FAILED
Build mrwebrtc arm64-v8a
ninja: error: 'E:/TestProj/MixedReality-WebRTC/tools/build/libwebrtc/webrtc/src/out/android/arm64/Release/obj/libwebrtc.a', needed by 'E:/TestProj/MixedReality-WebRTC/tools/build/android/webrtc-native/build/intermediates/cmake/release/obj/arm64-v8a/libmrwebrtc.so', missing and no known rule to make it

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':webrtc-native:externalNativeBuildRelease'.
> Build command failed.
  Error while executing process C:\Users\JC\AppData\Local\Android\Sdk\cmake\<IP_ADDRESS>88404\bin\cmake.exe with arguments {--build E:\TestProj\MixedReality-WebRTC\tools\build\android\webrtc-native\.externalNativeBuild\cmake\release\arm64-v8a --target mrwebrtc}
  ninja: error: 'E:/TestProj/MixedReality-WebRTC/tools/build/libwebrtc/webrtc/src/out/android/arm64/Release/obj/libwebrtc.a', needed by 'E:/TestProj/MixedReality-WebRTC/tools/build/android/webrtc-native/build/intermediates/cmake/release/obj/arm64-v8a/libmrwebrtc.so', missing and no known rule to make it

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 8s
19 actionable tasks: 2 executed, 17 up-to-date

Hi @JiphuTzu, what commit are you at?

I cloned the newest master branch yesterday, and built 'libwebtrc.aar' by following the '/libwebrtc/README.md'. When I went on with option 2 in '/android/README.md', error appeared.

Does the file mentioned in the error actually exists on disk?
E:/TestProj/MixedReality-WebRTC/tools/build/libwebrtc/webrtc/src/out/android/arm64/Release/obj/libwebrtc.a

Yes, it's right there.

I have no idea then. If the file is there but ninja complains it's not then there's not much I can do. We have a release pipeline for Unity building the Android platform and there's no issue.
Does the build works in Debug or FullDebug? That is, with e.g. gradlew assembleDebug?

Also I see you're using a PowerShell prompt; I'd try with a regular cmd.exe instead. PowerShell is very not friendly to non-PS scripts, especially coming from the *nix world, and I've seen a lot of issues with PS which disappear by just switching to cmd.

I've just tried in a VM with both Android Studio and command-line gradew, in Debug and Release, and everything works fine. It's possibly an issue with Windows-based cross-compiling. Are you using WSL2 (and not WSL1)?

I tried cmd first, and got the same error. So I turn to PowerShell. Debug and FullDebug are the same. And I also built with AndroidStudio.

Yes, I am using WSL2.

Maybe try a clean build?

Well, I'll try again.

Er... Would you please send me a mrwebrtc.aar? I want to run my program on Android. Thanks.

We just released a preview version of 2.0.0 which includes mrwebrtc.aar in the Unity package; please use that.
https://github.com/microsoft/MixedReality-WebRTC/releases/tag/v2.0.0-preview.1

Great job!

This seems to be solved (or not reproducible) so closing, reopen if necessary.


Fix infinite loop in ChunkHeader.records() when a record has length 0…

…. Catch errors parsing filetimes.

Updated.

awesome, thanks again!


Include resource_actions and picture in service_template copy

Added missing associations to the service_template #template_copy method and marked existing helper methods as private.
Recommend reviewing commit-by-commit.

First commit only moves the existing tests into a separate files (matching the separate file the template_copy code lives in)
Second commit copies the missing resources
Third commit moves the save! method so the newly create template is returned from the call, instead of true from the save! call and makes helper methods private.
Final commit adds tests for the new resources.

Fixes #18949
Closes #18450
Links
Found while working on UI changes https://github.com/ManageIQ/manageiq-ui-classic/pull/5667
Extends work from #18464
Steps for Testing/QA
After copying a service_template validate that it contains the same Automate entry-points, picture and additional_tenants on the summary screen as the original service_template.
cc @d-m-u

@tinaafitz I did not make the change here but I'm thinking with the change to Ansible runner we can remove the restriction on ServiceTemplateAnsiblePlaybook as we do not have to create the JobTemplate anymore.  Thoughts?  cc @lfu

@tinaafitz I did not make the change here but I'm thinking with the change to Ansible runner we can remove the restriction on ServiceTemplateAnsiblePlaybook as we do not have to create the JobTemplate anymore. Thoughts? cc @lfu

The cleanup of JobTemplate with Ansible runner is not going to happen at the moment.  cc @carbonin

@lfu I said that it's not likely that I will get to cleaning up the job template logic. If someone else wants to take it on, that's fine with me.


Add a PyTorch example notebook

@sedeer Thanks for this PR! I think we need to add helper_functions.py file here?


Implementation ECTR <IP_ADDRESS>

Hi,
is it possible to implement it in the new ECTR 5.2.6?
I get a error-message in ECTR Debug.log in the "Start OSGI framework" section:
Starting bundle: [ ERROR    ] -> org.dogoodthings.ectr.OSGi-Examples-OBTab-Part5 [7](R 7.0): missing requirement [org.dogoodthings.ectr.OSGi-Examples-OBTab-Part5 [7](R 7.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=1.9.0))) Unresolved requirements: [[org.dogoodthings.ectr.OSGi-Examples-OBTab-Part5 [7](R 7.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=1.9.0)))]
I tried to bind the org.osgi.framework with following in the pom.xml:
<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.framework</artifactId>
			<version>1.8.0</version>
			<scope>provided</scope>
		</dependency>

instead of the original:
		<dependency>
			<groupId>org.osgi</groupId>
			<artifactId>org.osgi.core</artifactId>
			<version>6.0.0</version>
			<scope>provided</scope>
		</dependency>

But that didn't help.
Thanks for your help.
MaFIN

Yes, you just have to change a pom.xml a little bit.Take a look at pom.xml of the example "TransformationOperation"The relevant changes are under tag , especially the _noee entry.    --Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail gesendet.Am 03.04.23, 14:32 schrieb MaFINman @.***>:
Hi, is it possible to implement it in the new ECTR 5.2.6? I get a error-message in ECTR Debug.log in the "Start OSGI framework" section: Starting bundle: [ ERROR ] -> org.dogoodthings.ectr.OSGi-Examples-OBTab-Part5 [7](R 7.0): missing requirement [org.dogoodthings.ectr.OSGi-Examples-OBTab-Part5 [7](R 7.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=1.9.0))) Unresolved requirements: [[org.dogoodthings.ectr.OSGi-Examples-OBTab-Part5 [7](R 7.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.8.0)(!(version>=1.9.0)))]
I tried to bind the org.osgi.framework with following in the pom.xml:  org.osgi org.osgi.framework 1.8.0 provided
instead of the original:  org.osgi org.osgi.core 6.0.0 provided
But that didn't help.
Thanks for your help. MaFIN
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

Thank you very much for the very quick help.
I copied the  part and pasted it into my pom. xml and it works.
Now I can adapt enlargement to our needs.

Don't forget to change groupId / artifactId / version of your own new osgi bundle.

Hi,
Is there a way to debug or do you know how to run ECTR with java remote debug?
Looking forward to your feedback, thanks

Sorry for a late response - although i don't have exact instructions, i'm pretty sure you can debug ECTR using remote debug settings. Take a look into  <INST_DIR>\basis\config\jvm-config.xml - you can set any remote debug parameters there inside


Please invite me to the Community Organization

Name
Ayomide
Discord Username (if applicable) E.g John#412
Ay#5194
Questions & suggestions?
No response

Hello Ayomide 👋🏾 Welcome to the communitypro 🙌🏾🤩


Initializing the val_loss with not Inf value

Can anybody help me in finding a way to resume training for an LSTM model with fit_generator without restating the loss value to inf?
Background: I am training an LSTM model and I have a very big time series data (many sample times) and only 2 features. Therefore the shape of my time series x data is N by 2 where N is a very large number. I use a batch generator to randomly segment my data in smaller batches of batch_N by 2 (where batch_N is much smaller than N):
def batch_generator(batch_size, sequence_length):
...
    for i in range(batch_size):
        ...
       x_batch[i] = batch_x_train_scaled[idx:idx+sequence_length]
       y_batch[i] = batch_y_train_scaled[idx:idx+sequence_length]
 yield (x_batch, y_batch)

I use also a ModelCheckpoint to save the best-trained model
callback_checkpoint = ModelCheckpoint(filepath=path_checkpoint,
monitor='val_loss', verbose=1,save_weights_only=False, save_best_only=True)

Also, every time I want to resume the training, first I load the last saved model:
if True:
    try:
#         model.load_weights(path_checkpoint)
        model = load_model(path_checkpoint)

    except Exception as error:
        print("Error trying to load checkpoint.")
        print(error)

What is the Problem? Every time I resume the training, a new batch file is loaded first into the fit_generator and the model would use the last save weights. the loss value is reset to inf. Therefore, at the end of the first resumed training epoch, no matter how good or bad is the training outcomes, the model reports that the val_loss is improved from inf to some number and thus overwrites the new weights. The problem is that sometimes the new weights are not as optimal as the previous ones (due to the fact that this time the model is using new batch data for training) and thus I will lose some optimum weights.
What I have done so far to fix this issue?
Approach one (unsuccessful): defining custom loss function:
def my_loss(y_true, y_pred):
    train_loss = binary_crossentropy(y_true, y_pred)
    validation_loss = 2*binary_crossentropy(y_true, y_pred)
    temp=tf.keras.backend.cast(validation_loss,'float16')
    if temp>1:  # update 1 to last best val_loss before resume training
        validation_loss=validation_loss+np.inf
# validation_loss=np.inf
    return tf.keras.backend.in_train_phase(train_loss, validation_loss)

model.compile(loss=my_loss, optimizer=optimizer)

results of approach one:
Error:
---> 12     if temp>1:
TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.

Approach two (unsuccessful): defining a custom callback to save model:
best_val_loss = 1 # update 1 to last best val_loss before resume training

def saveModel(epoch,logs):
    val_loss = logs['val_loss']
    if val_loss < best_val_loss:
        best_val_loss=val_loss
        model.save('my_model.hdf5')

my_callback = LambdaCallback(on_epoch_end=saveModel)

results of approach two:
UnboundLocalError: local variable 'best_val_loss' referenced before assignment

Approach three(unsuccessful): defining a custom callback to save model:
best_val_loss = 1 # update 1 to last best val_loss before resume training

def saveModel(epoch,logs,best_val_loss):
    val_loss = logs['val_loss']
    if val_loss < best_val_loss:
        best_val_loss=val_loss
        model.save('my_model.hdf5')

my_callback = LambdaCallback(on_epoch_end=saveModel)

results of approach three:
TypeError: saveModel() missing 1 required positional argument: 'best_val_loss'

Please fill the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Along with the template, please provide as many details as possible to find the root cause of the issue. . Thanks!

Closing due to lack of recent activity. Please update the issue when new information becomes available, and we will open a new issue. Thanks!

I have faced the same problem when saving only the weights of the model. Instead, I tried to save the whole model, not just the weights, as an h5 file using the save command.
When I loaded the saved model, val_loss started from the last value and not inf when I continued the training.

@micbia - Thanks a zillion. Your code snippet came very handy. I wonder keras team is yet not worried about this issue. Working with Google Colab is a challenge as it timesout in few mins of inactivity and to restart the model from previous check point, loss is always calculated from inf.
I wish Keras team tries to focus on this very basic lack of capability and fix it as soon as possible and provide this functionality out of the box.

i too have this problem
for the keras team to consider that this is a real issue::
in my model, i begin training a classifying layer with the rest of the model frozen
next, i unfreeze the last 25 layers (25 layers previous to the classifying layer)
next, the following 25, etc
in this process i use the keras callback to save the best checkpoints and later load them back for the next stage
after every training stage and upon beginning a new one, the val_loss of the previous stage is lost and val_loss is initialized to inf
thanks for the custom callback @micbia!

Still no solution from keras team???

i need this too

Reopening it. Can one of you please provide a standalone code to reproduce the issue?

@jvishnuvardhan the issue can be replicated with any code. For instance, I can suggest you use the simple CNN on MNIST provided by Keras API.
It is enough to run the network, let it save a model with the standard ModelCheckpoint callback, stop the training before it is finished and then resume the network training from the stopped epoch while loading the previously best-saved model.
You will notice that after the first resumed epoch, no matter what loss you get a new model will be saved just because the monitored variable best is reset to np.inf (or -np.inf).
I proposed a quick fix by passing the variable best=None (the epoch of the best-saved model before the stop), such that the user can define it in case of resumed training. Have a look at my callback here.
To notice that also the ReduceLROnPlateau callback has this problem. Once resumed the training the wait variable is reset to 0. As a quick fix, I pass this variable so that the user can define it as the difference between the resume epoch and the epoch of the best-saved model, in case of resumed training. Check out my code where I use the callbacks here. You can find the modified callback here.
Thank you for reopening the post.
Cheers

any comments from the keras team?

@rchao Can you please take a loot at it. Thanks!

Summary: The ModelCheckpoint would save the model after the first epoch regardless of if the model has improved or not because it is always comparing with the initial val_loss, which is set to inf, even if the model was loaded from disk and has good performance.

ModelCheckpoint should have the ability to set self.best (as @micbia pointed out) to checkpoint file's. There's no point on saving the best-weight checkpoint if you cannot resume the training without losing monitored metric's value.

ModelCheckpoint should have the ability to set self.best (as @micbia pointed out) to checkpoint file's. There's no point on saving the best-weight checkpoint if you cannot resume the training without losing monitored metric's value.

as mentioned above by @deketh, to fix this you require very little change to ModelCheckpoint. I think you just need to add best as a variable. As a reference, here is my custom checkpoint SaveModelCheckpoint.
The changes I implemented consist simply in passing best with the initiation variables (None otherwise) and adding a few if-else between lines 148 and 164 for initiation of best and the operation on the monitor

It seems like this was silently implemented with the release of tf API v2.8.
I just checked the tf docs for the ModelCheckpoint callback and it now shows the following:

@easadi Can we close this issue as it has been implemented as shown above. Thanks!

@easadi Can we close this issue as it has been implemented as shown above. Thanks!

Yes please.


Weave Data Management mobile support improvements

Weave Data Management mobile support improvements
-- Add onFlushUpdateComplete callback to notify path results to
application, including systemError array, statusProfileId array, and
statusCode array. For each flushed path, it has one set of systemError,
statusProfileId, and statusCode. If systemError is WEAVE_ERROR_STATUS_REPORT_RECEIVED,
application can check profildId and statusCode for detailed reasoning.
-- Add DeleteData API so that application can delete data in particular
path.
-- When GetTraitSchemaEngine fails, it means user does not load the
correct profile id, update err with WEAVE_ERROR_INVALID_PROFILE_ID
-- When refresh fails, we use onRefreshDataComplete to pass the
systeemError, statusProfileId and statusCode. When refresh fails in
subscription, and received SubscriptionTerminated Event, and err is
WEAVE_ERROR_STATUS_REPORT_RECEIVED, onRefreshDataComplete can be used to
pass the detailed profile id and status code to upper layer.
-- Fix some style issues.
-- Update onFlushUpdateComplete and DeleteData and onRefreshDataComplete APIS for objective C, Java, Python

@jaylogue For update flushed path result, reason code should be enough? do you think we need to tell app the profile id + status code?, thanks

@jaylogue For update flushed path result, reason code should be enough? do you think we need to tell app the profile id + status code?, thanks

In Java, just return an array of Throwables (and have WeaveDeviceException and WeaveDeviceManagerException,
either WeaveDeviceManagerException (uses the Weave error code) or WeaveDeviceException (uses profile ID and status code
or just 3 arrays(reason code, profile id and status code)

@jaylogue For update flushed path result, reason code should be enough? do you think we need to tell app the profile id + status code?, thanks

When error is  WEAVE_ERROR_STATUS_REPORT_RECEIVED, application may need more useful info, for exmaple, profile id + status code

Codecov Report

Merging #540 into master will decrease coverage by 0.02%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #540      +/-   ##
==========================================
- Coverage   54.18%   54.16%   -0.03%
==========================================
  Files         331      331
  Lines       57623    57651      +28
==========================================
  Hits        31225    31225
- Misses      26398    26426      +28

Impacted Files
Coverage Δ

...les/data-management/Current/SubscriptionClient.cpp
7.54% <0.00%> (-0.09%)
:arrow_down:

...files/data-management/Current/SubscriptionClient.h
7.14% <ø> (ø)

...lib/profiles/data-management/Current/TraitData.cpp
73.01% <0.00%> (-0.59%)
:arrow_down:

...c/lib/profiles/data-management/Current/TraitData.h
34.48% <ø> (ø)

...rofiles/data-management/Current/TraitPathStore.cpp
92.63% <0.00%> (-4.79%)
:arrow_down:

.../profiles/data-management/Current/TraitPathStore.h
90.00% <ø> (ø)

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 06e7dab...d46bd98. Read the comment docs.

I am moving the effort from https://github.com/openweave/openweave-core/pull/527 to this PR since some large code refactor is happening here.

Just validated it in python, objective c and java, please help further review. thanks

Just making sure you'd seen the comment thread on #527, about using the specific exception types rather than an array of integer codes: https://github.com/openweave/openweave-core/pull/527#discussion_r403393258

Just making sure you'd seen the comment thread on #527, about using the specific exception types rather than an array of integer codes: #527 (comment)

Yes, I see that, I think it can be handled in application layer. For example, if we have 100 paths in this flush operation, then some of them are WEAVE_ERROR_STATUS_REPORT_RECEIVED, i am not sure how to use one call to pass some WeaveDeviceException (for profile/status errors), and some  WeaveDeviceManagerExceptions(notes that I need to keep the sequence, they must be in one array)

@jaylogue @g-coppock
For java, it seems it would be a array of jobject, something link [WeaveDeviceException, WeaveDeviceException, WeaveDeviceManagerExceptions, WeaveDeviceException] in jni layer, then java can check particular exception from this array.  note WeaveDeviceException (for profile/status errors) or WeaveDeviceManagerException (for errors)
In objective C, we cannot pass the mixed type of array, the best effort is to use NSArray to contruct only one type of array for NLProfileStatusError.
In python, from c++ to python, we cannot pass the mixed type of array, the best effort is just array of DeviceError.
The unified way is just 3 arrays for error code, profileid, and statusCode, or just array of statusReport

offline chat with Jay, and addressing the comments, thanks

@jaylogue @robszewczyk this pull is ready for review, thanks


For the TUDataset, can we separate the labels and features of node / edge?

❓ Questions & Help

I see the implementations of TUDataset
https://github.com/rusty1s/pytorch_geometric/blob/55c2e7da1840433e3331069e80deba481e4d00a4/torch_geometric/read/tu.py#L27-L38
where the node labels are concatenated to node features.
A similar process of edges can be seen as well.
Can we separate the labels and features?
In some cases, I may learn the node representations from just one of them, either labels or features, rather than both of them.
For example, a recent paper of label-aware GCN https://arxiv.org/abs/1907.04707, use the labels of neighborhood edges.
Basically, let the user decide what kind of features send to GNN.

There is nothing that prevent you from separating the labels and features. For example, the TUDataset provides the attribute use_node_attr to only use node labels (note that it is set to False by default). If you only want to use node attributes, you can use the num_node_labels and num_node_attributes properties of the TUDataset, and, e.g., select the right features using custom transforms:
dataset = TUDataset(..., use_node_attr=True)

class MyCustomTransform(class):
    def __call__(self, data):
        data.x = data.x[:, :dataset.num_node_attributes]
        return data

dataset.transform = MyCustomTransform()

I agree that this is not really elegant, but I guess this use-case is quite rare.

Thanks.
BTW, it is better to use a sparse tensor when the feature is built from labels only, just for saving memory.

While technically true, this introduces a lot of other problems. This works well, e.g., for GCN, however for other operators (that need to aggregate those sparse features) this basically results in sparse-sparse matrix multiplications. This is very slow in contrast to simply using dense features, and will only support gradients w.r.t. to non-zero values.
In the end, it is not worth the hazzle for low-dimensional initial node features. The operators that can naturally support sparse node feature matrices will accept them though, so feel free to convert your matrices to sparse ones if you feel that memory usage is a problem.

Really helpful. Thank you.
Close it for now.


[BUG] Null error on profiles

Describe the bug
Profiles not worky
To Reproduce
Steps to reproduce the behavior:

Click any profile

Expected behavior
a wild profile appears
Screenshots

Smartphone (please complete the following information):

Device: [e.g. iPhone6] lenovo tablet
OS: [e.g. iOS8.1] android 14
Browser [e.g. stock browser, safari] none
Version [e.g. 22] 14

Additional context
Add any other context about the problem here.

What profile is this happening on so I can reproduce this error

Any of my subscriptions; take @elonmusk for example

Ok, thanks I suspect it's due to an error in the  Regex filtering which I will remove in a future version for stability

Would you mind testing out the latest ci build and let me know if you still experience this error

Same error with latest ci artifact

Have you tried deleting cookies and re-login on your account?

When i try tog in i get a 2fa code email from X but no way to enter it in the aop

Currently login doesn't work with 2FA

Can confirm this issue also happens on my 2FA-enabled account, maybe a PSA should be put on README to close this issue?

Can confirm this issue also happens on my 2FA-enabled account, maybe a PSA should be put on README to close this issue?

Better to put the info in the app right next to the login screen.
Also the same bug appears when not logged in at all.

Can confirm this issue also happens on my 2FA-enabled account, maybe a PSA should be put on README to close this issue?

Better to put the info in the app right next to the login screen. Also the same bug appears when not logged in at all.

I have added this into the latest ci build until I find a way to implement #9

I have added a notice under the Accounts category in v3.3.0


Wrong number of function parameters DOMDocument::schemaValidate fix

WI-31566 Wrong number of function parameters DOMDocument::schemaValidate (code inspection) https://youtrack.jetbrains.com/issue/WI-31566

Have you submitted a contributor license agreement? If not, please download the PDF from http://www.jetbrains.org/display/IJOS/Contributor+Agreement and then print it out, sign (mention you github account name there), scan and email to<EMAIL_ADDRESS>

We finally simplified the legal procedures for this, thank you for your contribution!


Resource Cleanup Improvements

We've run into issues where live test resources have been left behind by canceled and timed out tests. We've had to manually query for and delete these resources when this happens. Let's improve how our automation handles this:
Things to do:

[ ] Always delete resources (remove succeededOrFailed() condition)
[ ] Reduce DeleteAfter time -- this time is set arbitrarily but we are not aware of anyone going back to investigate a live test resource left behind during a timed out or canceled run so shortening this time can return resources faster

Things to consider:

[ ] Run cleanup more frequently -- Perhaps every hour. It doesn't use much agent time (6 minutes max according to the run history)
[ ] Run the cleanup process as an Azure Function and have the job run as a server job so that we don't eat up agent time

We should also try to kick off the clean-up asynchronously so we don't have to block

@benbp: I think we should prioritize async cleanup since it can save a lot of time on our limited internal agents.

@benbp  reopening as I think we might still want to do some of the other things in the list as well. Your PR fixed the async nature but are there other improvements we might want to enable.

Whoops, didn't intend to auto-close this. Thanks @weshaggard

Closing because I've increased frequency, reduced expiration, and added async deletion. Running delete in a function is not addressed, but because of the frequency increase, the cleanup job takes <1 minute now, so I don't think agent quota is a concern.


 Maybe it's not 10 and instead is equal to the number of training images you have i.e. 10618 as you calculate the number of files in line: num_classes = get_num_subfolders(train_dir)

I think you just don't have a last dense of size 10. Looks like you output a dense of size 10618 rather than 10. Try to change the last dense amount to 10.

InceptionV3_base_model = InceptionV3(weights='imagenet',include_top = False)
I think you could change include_top=False to True, then add a classes=10.
--https://keras.io/applications/#inceptionv3
although, i would try what @dabasajay mentionned before trying anything else.

I have checked the num_classes variable and it's 10618

@akinpelu746 So you have to change that to 10 because you have 10 classes, not 10618 classes.

@dabasajay How do i change it to 10?

Thanks @dabasajay.The error has beern rectified.

@dabasajay Thanks so much.
I changed it to 10 and it worked perfectly.

Happy to help!

@dabasajay
I noticed my input is  shape=(?, ?, ?, 3)  but suppose to be (? , 299,3) since my image height and width is 299.
I want to deploy it on an Andriod app so I need to change it to tensor flow lite and only input(index(0)) is allowed to be 0.
how can I correct this?


Cannot create node.js function project using 'faas create'

I get the same error with 'http' and 'event'
faas create nodejs-events.default.<IP_ADDRESS>.nip.io --runtime nodejs --repository docker.io/lanceball --trigger http
Path to project directory (/home/lanceball/tmp/faas-test):
Function project name (nodejs-events.default.<IP_ADDRESS>.nip.io):
Verbose logging (y/N):
Runtime of source (nodejs):
Function Trigger (http):
Repository for Function images (docker.io/lanceball):
1/4 Initializing new Function project
Error: A template for runtime 'nodejs' template 'http' was not found internally and no extended repository path was defined.

Boneheaded use of nodejs instead of node for runtime.

@lance we should improve our error messages

I had same problem when I used java instead of quarkus.

Honestly, we shouldn’t allow the command to even get that far. On create and init, we should check the template value immediately.


Feature/50 mouse events

Description
Introduce:

MouseButtonEvent: fired when a mouse button is pressed/released.
MouseWheelScrollEvent: fired when a mouse wheel is scrolled.
MouseMoveEvent: fired when the mouse cursor move.

All these events update accordingly the Mouse input resource if present in the registry.
Close #50
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?
Unit tests for each of the event type were written.
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Codecov Report

Merging #58 (e64b71d) into main (9358f9f) will decrease coverage by 0.41%.
The diff coverage is 20.00%.

@@            Coverage Diff             @@
##             main      #58      +/-   ##
==========================================
- Coverage   70.31%   69.90%   -0.42%
==========================================
  Files          23       23
  Lines         411      422      +11
  Branches      149      154       +5
==========================================
+ Hits          289      295       +6
  Misses         23       23
- Partials       99      104       +5

Impacted Files
Coverage Δ

src/ecstasy/integrations/event/events/Event.hpp
0.00% <0.00%> (ø)

src/ecstasy/integrations/event/inputs/Mouse.hpp
72.72% <0.00%> (+22.72%)
:arrow_up:

src/ecstasy/integrations/event/EventsManager.cpp
40.00% <33.33%> (-10.00%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Add more meta to show results

Show number, show type, guest avatar if available. Maybe even the AI tags?

you sure we want to clutter it that much? I could see guest avatar being useful here, but the rest might be too much noise?

I think the show number and/or the date will give a bit more context to which is the newest. Maybe not show type

Show number is now included in results: https://github.com/syntaxfm/website/blob/main/src/lib/search/SearchResultList.svelte#L66C11-L66C18
Is there anything else we want to include?


Suggestion to rename /icons directory for simpler compatibility with Apache web server

Most Apache web server installations come out of the box with a configuration file treating the /icons/ route as a special case.
More precisely, the mod_alias configuration file (enabled by default) sets the /icons/ route to point to the /usr/share/apache2/icons/ folder on the server instead of the /icons folder of the website being served.
Here is a mention of the "problem": https://serverfault.com/questions/153177/apache2-and-icons-path-behaving-differently
Using this route to serve images for the template may cause unexpected problems for Apache users unaware of this default configuration, such as 404 errors for images contained in the /icons folder.
I suggest renaming the folder/route to something like /images or /social to embrace a larger public :slightly_smiling_face: .

Yeah I don't mind putting the images to '/imagesand social icons to/images/social`. Whaddya think @jakewies?

Thinking out loud here:
Hugo takes anything in the static/ directory and puts it at the website root for use in the app. So the static/icons/ directory can be accessed at www.your-site.com/icons/. This is a problem for Apache users because their server treats the /icons route as a special case.
Do I have that right?
And the proposed change is to replace the static/icons/ directory with a static/images/ directory? And inside that we can put icons at static/images/social/<icon_name>.svg?

Do I have that right?

Yes it appears to be the case. In our HTML code we do often refer to the path /icons/..., which Apache2 servers will treat as usr/share/apache2/icons/....
Also /images is a more commonly used paths for static image resources so I'm fine with changing that.

Ok I'm totes on board with this.

Here is a PR :slightly_smiling_face:

Merged :slightly_smiling_face:


Support FLAT network type

Zuul CI environment is broken, and I use pull request to upstream the patch.

Thank you for contributing to openstack/networking-onos!
openstack/networking-onos uses Gerrit for code review.
If you have never contributed to OpenStack before make sure you have read the
getting started documentation:
http://docs.openstack.org/infra/manual/developers.html#getting-started
Otherwise please visit
http://docs.openstack.org/infra/manual/developers.html#development-workflow
and follow the instructions there to upload your change to Gerrit.


OAuth implementation, homepage redesign, etc...

These changes now include Authentication. That is, users can use their UMass google account to create an account with our project.

I also implemented a "theme switcher". While it works, we need to have different CSS for light mode, considering what we have is only for "dark mode".


Preprocessed Camvid and PASCAL dataset

Hello, could you please provide the preprocessed Camvid and PASCAL dataset?  I have some error running the label_generator.py code. It always encountered the error as follows.

Thanks for your interest. I have uploaded the pre-processed camvid/PASCAL datasets to onedrive and baidu-disk (passwd: tpe4).
I will fix the error in the pre-processing code later.


[feature][doc] Add docs for Command AckResponse to historical versions

Modifications
Apply doc changes implemented in #15497 for Command AckResponse to historical versions.
Documentation

[x] doc

@liangyepianzhou can you pls review the PR?
//cc @Anonymitaet


Accordion dropdown data attribute misspelled

In v3-next branch,  there is a new feature to collapse sidebar dropdowns, but it is misspelled:
data-drodpown-accordion="true"

should be :
data-dropdown-accordion="true"

This is a follow-up issue for #502

@jameswilson thanks for the catch!

@jameswilson will be solved in the next release.


Overflow on channel: flutter/platform on web app with plugins

The url_launcher example app throws the following exception when compiled for web when clicking on any button.
The rest of the app works, but the following exception is always thrown:
Overflow on channel: flutter/platform.  Messages on this channel are being discarded in FIFO fashion.  The engine may not be running or you need to adjust the buffer size if of the channel.

(I noticed this same issue while working in another plugin, so it doesn't seem to be related to the url_launcher plugin in particular)
Steps to Reproduce

Grab the url_launcher example app.
Modify its pubspec to add a dependency on the url_launcher_web plugin:

url_launcher: ^5.1.4
url_launcher_web:
  git:
    url: git://github.com/flutter/plugins.git
    path: packages/url_launcher/url_launcher_web

Execute flutter create . on it, to add the missing web pieces.
Run flutter run -d chrome and wait for the browser to pop up
Open the development console, and click any button, the exception should show up.

Target Platform: Web (any?)
Target OS version/browser: Any
Devices: Any
Logs
flutter run -d chrome --verbose
[+1164 ms] Debug service listening on ws://<IP_ADDRESS>:35447/ZYSaqFDQDic=

[  +12 ms] Attempting to connect to browser instance.. (completed in 3.7s)
[   +1 ms] 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻
[        ] Warning: Flutter's support for building web applications is highly experimental.
[        ] For more information see https://github.com/flutter/flutter/issues/34082.
[        ] 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻 👻
[        ] 🔥  To hot restart (and rebuild state), press "r" or "R".
[        ] For a more detailed help message, press "h". To quit, press "q".
[   +5 ms] Debug service listening on ws://<IP_ADDRESS>:35447/ZYSaqFDQDic=
[+16889 ms] ══╡ EXCEPTION CAUGHT BY SERVICES LIBRARY ╞══════════════════════════════════════════════════════════
[        ] The following StateError was thrown during a platform message response callback:
[   +8 ms] Bad state: Future already completed
[        ] When the exception was thrown, this was the stack:
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 3995:11    throw_
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 37848:62   complete
[        ] package:flutter/src/services/binding.dart 177:18                    <fn>
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 134581:15  [_onDropItem]
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 134520:36  [_dropOverflowItems]
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 134507:55  push
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 134589:31  push
[        ] package:flutter_web_plugins/src/plugin_registry.dart 84:27          handlePlatformMessage
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42367:34   runBody
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42395:7    _async
[        ] package:flutter_web_plugins/src/plugin_registry.dart 76:37          handlePlatformMessage
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 160565:17  sendPlatformMessage
[        ] package:flutter/src/services/binding.dart 175:15                    [_sendPlatformMessage]
[        ] package:flutter/src/services/binding.dart 221:12                    send
[        ] package:flutter/src/services/platform_channel.dart 314:51           invokeMethod
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42367:34   runBody
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42395:7    _async
[        ] package:flutter/src/services/platform_channel.dart 312:28           invokeMethod
[        ] package:flutter/src/services/platform_channel.dart 446:3            [invokeMethod]
[        ] package:flutter/src/services/platform_channel.dart 429:36           invokeMethod$
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42367:34   runBody
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42395:7    _async
[        ] package:flutter/src/services/platform_channel.dart 427:28           invokeMethod
[  +35 ms] package:flutter/src/services/system_sound.dart 23:35                play
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42367:34   runBody
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42395:7    _async
[        ] package:flutter/src/services/system_sound.dart 22:27                play
[        ] package:flutter/src/material/feedback.dart 98:28                    forTap
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42367:34   runBody
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 42395:7    _async
[        ] package:flutter/src/material/feedback.dart 93:29                    forTap
[        ] package:flutter/src/material/ink_well.dart 700:33                   [_handleTap]
[        ] package:flutter/src/material/ink_well.dart 783:36                   <fn>
[        ] package:flutter/src/gestures/recognizer.dart 182:24                 invokeCallback
[        ] package:flutter/src/gestures/tap.dart 486:47                        handleTapUp
[        ] package:flutter/src/gestures/tap.dart 264:5                         [_checkUp]
[        ] package:flutter/src/gestures/tap.dart 236:7                         acceptGesture
[        ] package:flutter/src/gestures/arena.dart 156:12                      sweep
[        ] package:flutter/src/gestures/binding.dart 222:20                    handleEvent
[        ] package:flutter/src/gestures/binding.dart 198:14                    dispatchEvent
[        ] package:flutter/src/gestures/binding.dart 156:7                     [_handlePointerEvent]
[        ] package:flutter/src/gestures/binding.dart 102:7                     [_flushPointerEventQueue]
[        ] package:flutter/src/gestures/binding.dart 86:32                     [_handlePointerDataPacket]
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 145367:9   [_onPointerData]
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 145580:26  <fn>
[        ] package:build_web_compilers/src/dev_compiler/dart_sdk.js 145516:11  <fn>
[        ] ════════════════════════════════════════════════════════════════════════════════════════════════════

flutter analyze
(After removing test and test_driver dirs)
Analyzing url_launcher_app...

   info • Unused import: 'dart:ui' • lib/generated_plugin_registrant.dart:4:8 • unused_import

1 issue found. (ran in 1.3s)

flutter doctor -v
[✓] Flutter (Channel master, v1.9.6-pre.740, on Linux, locale en_US.UTF-8)
    • Flutter version 1.9.6-pre.740 at /path/to/flutter
    • Framework revision fbbc4fa868 (3 hours ago), 2019-10-16 17:17:06 -0400
    • Engine revision bb78551a0a
    • Dart version 2.6.0 (build 2.6.0-dev.8.0 ed1e0e199e)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.1)
    • Android SDK at /path/to/Android/Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-stable, build-tools 29.0.1
    • Java binary at: /path/to/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Android Studio (version 3.4)
    • Android Studio at /path/to/android-studio
    • Flutter plugin version 38.2.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)

[✓] VS Code (version 1.38.1)
    • VS Code at /path/to/code
    • Flutter extension version 3.5.1

[✓] Connected device (2 available)
    • Chrome          • chrome          • web-javascript • Google Chrome 77.0.3865.120
    • Headless Server • headless-server • web-javascript • Flutter Tools

• No issues found!

@hterkelsen took a quick look and it seems that a callback to handlePlatformMessage may be being called twice?
Also:

it looks like the binaryMessenger in the framework has the same bug
it will call the callback twice because it's also doing finally { callback(response); }

cc/ @gaaclarke maybe you have more context on this one?

Hi, yes I can provide more context.  That message should only be showing up if you are using a debug build, on master that should be the case.
You can consider it a warning an not actually an error.  This is happening because we are sending lifecycle messages on the platform channel before the engine is running, thus the overflow.  It is not erroneous.  That's why I had to pull it back into debug builds until we can think of a better way to communicate this behaviour.  =)

Ah yes, indeed I'm using a debug build.
Thanks for the clarification!

However @gaaclarke, the error is thrown after each click and not just when the engine is starting. How come?

However @gaaclarke, the error is thrown after each click and not just when the engine is starting. How come?

Is the overflow on channel "flutter/platform"?  That sounds like an error that we are continually communicating on that channel.  The engine is running when this happening?  I can't say for sure that it is erroneous.  Let me check with @yjbanov.

I'm sorry yesterday I spoke too soon.  My brain was fried at the end of the day.  flutter/platform is the channel used for communicating to things like the platform plugin.  (I was thinking flutter/lifecycle which happens under normal execution like I previously mentioned).
By default channels have a buffer size of 1.  If you are seeing this message, you are talking to an engine that is not running, or you are sending messages faster than they can be processed (which is impossible in the iOS situation, it might be different for web, I'm not familiar with it).

Here is the bug as I see it:

The framework sends a platform call for the SystemSound#playSound method, which causes a Completer to be initialized and a callback is passed to the platform-side which completes the Completer with the result of the platform call:

from here:
    ui.window.sendPlatformMessage(channel, message, (ByteData reply) {
      try {
        completer.complete(reply);
      }
      ...

On the platform side, we currently forward any unhandled platform calls to the plugin platform call handler, which then pushes any unrecognized platform calls to the channel buffer. However, in addition to buffering the call, it also passes null to the callback as a signal that the call was unrecognized:

Notice the callback(null) in the finally clause below. This code is from the plugin message handler, but the exact same code is in the framework platform handler:
  @override
  Future<void> handlePlatformMessage(String channel, ByteData data,
      ui.PlatformMessageResponseCallback callback) async {
    ByteData response;
    try {
      final MessageHandler handler = _handlers[channel];
      if (handler != null) {
        response = await handler(data);
      } else {
        ui.channelBuffers.push(channel, data, callback);
      }
    } catch (exception, stack) {
      ...
    } finally {
      callback(response);
    }
  }

Later, we get another call to SystemSound.playSound, and do the same thing again. Only this time, since we have filled the buffer for the SystemSound channel, we drain the buffer by calling the buffered callback with null.

From ChannelBuffers:
  void _onDropItem(_StoredMessage message) {
    message.callback(null);
  }

This is when the crash happens. We already called callback(null) on that callback! The Completer associated with that callback has already completed with null, but now we are calling completer.complete again, which is invalid if the Completer has already completed.

Since the framework-side BinaryMessenger also has the finally { callback(response); } logic, I believe the same bug would occur if the platform-side were to send unhandled messages to the framework side (i.e., the callback would be called twice).

@gaaclarke What do you think we should do about double-calling the callback?

@gaaclarke friendly ping. We will fix the missing handler issue in the Web engine. However, it will mask the other issue with double-completing the future. Would you like to use this issue to fix that? Or should we open a new issue?

Sorry, would you believe me if I told you I was thinking about it the past 6 days?  (you shouldn't)

we currently forward any unhandled platform calls to the plugin platform call handler, which then pushes any unrecognized platform calls to the channel buffer. However, in addition to buffering the call, it also passes null to the callback as a signal that the call was unrecognized

Yep, this appears erroneous.  The intention is only to call the callback when the message is handled, or discarded.  I can try to repro this in a unit test.

This is when the crash happens.

You are getting a crash?  That info was missing from the original report.
Thanks for the find.  Fixing it is at the front of my todo list.

I don't see this anymore, thanks @gaaclarke!

I still often see this error on the web.
I trying to master, dev, beta with the latest version.
channel_buffers.dart:144 Overflow on channel: flutter/platform.  Messages on this channel are being discarded in FIFO fashion.  The engine may not be running or you need to adjust the buffer size if of the channel.

@phamnhuvu-dev that isn't necessarily an error (depends on the semantics of the channel).  I'd file another bug is reproduction steps.

I am trying to develop web application with geolocation and webcam using flutter but getting this error. any one can you please help me
The following StateError was thrown during a platform message response callback:
Bad state: Future already completed
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 195:49 throw
dart-sdk/lib/async/future_impl.dart 42:79 complete
packages/flutter/src/services/binding.dart 176:18
dart-sdk/lib/async/zone.dart 1374:10 runUnaryGuarded
lib/_engine/engine/window.dart 331:23
lib/_engine/engine/window.dart 488:17
dart-sdk/lib/async/zone.dart 1439:54 runUnary
dart-sdk/lib/async/future_impl.dart 141:18 handleValue
dart-sdk/lib/async/future_impl.dart 682:44 handleValueCallback
dart-sdk/lib/async/future_impl.dart 711:32
_propagateToListeners
dart-sdk/lib/async/future_impl.dart 516:7 [_complete]
dart-sdk/lib/async/future.dart 315:15
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 50:19 internalCallback
═════════════════════════════════════════════════════════════════════════════════════════════════
═══

The same here, Im converting my app to web and this error(?) pops up every time when I push another page and every click on the buttons in the new page triggers this error.


Operation failed at marketplace/account/profile.jsf

Version Info
Version 18.1
Describe the bug
"Operation failed" message after attempting to enter marketplace/account/profile.jsf
How to Reproduce
Steps to reproduce the behavior:

Go to oscm-portal/marketplace/account/index.jsf
Click on Profile -> Show
See error

Observed behavior
After entered to the profile.jsf page, an error is thrown in the console "Parameter marketplaceId must not be null."
Expected behavior

The page should load correctly
No errors in the console

Screenshots

Additional context
N/Ahttps://app.zenhub.com/files/108258123/4a33db79-8e2e-4e61-94c7-42584b31661e/download

Whoops! SessionBean doesn't initialize correctly even when accessing with given marketplace ID in mId URL parameter. Obviously something got broken in the general init flow very recently. This could be caused from header or main templates, or from filter changes.
This issue is major and needs to be analysed carefully. The init logic is complex and any quick fix may cause more harm. It's probably slipped in very recently. At least the v18.1 tagged commit is definitely still working here. This also indicates that we need a UI test here.
In order to locate the causing code modification, I suggest to checkout the source from a last working state and see what is changed since then.


Continuous delivery (CD) feedback not yet woven in

We got some great feedback in the Google doc that was not woven into this CD entry. Copying and pasting in below. Please update entry accordingly.
Daniel Jones: I think somewhere in here it'd be great to call out specifically that the path to production (or an acceptance environment) must be fully automated, and also that there process changes involved to - for example, trunk-based development rather than feature branching.
Michael Foster: Agreed. Also, thoughts on referencing CI?  Or we could have a CI/CD definition?
Daniel Jones: I'd be open to referencing CI in the CD definition, and vice versa, in order to explain them via contrast. Any objections?

I can take it

With #67, I'm assuming this issue can be closed. Feel free to reopen if the CD conversation sparks back up again.


fix bug in concerning ContextImpl

NPE thrown when submitting a source because context is null

retest this please

retest please

retest this please


Request credentials for an os-climate bucket

Requesting credentials for github user: rainergo
Requesting credentials for the bucket: os-climate
Email address to send a credential download link<EMAIL_ADDRESS>Request checklist:

[x] User can establish connection with the bucket
[x] User can read files from the bucket

Hello,
Thank for you your interest in OS-Climate. @ryanaslett can you please add this user to the ODH please.
Evan

You have been added to the github organziation 'odh-env-users'. Once you accept the invite, you will be able to access the keys.
The keys are stored in openshift, you can login using your github account and should be able to see them here at this URL:
https://console-openshift-console.apps.odh-cl1.apps.os-climate.org/k8s/ns/sandbox/secrets/physrisk-s3-keys


Journal file

How can i disable the journal file, i try this without success

SQLiteConnection connection = new SQLiteConnection(fileDb);
connection.CreateCommand("pragma journal_mode=off;");

You need to Execute the command, not just create it:
connection.Execute ("pragma journal_mode=off;");


Doc: MP JPA/JTA updates for 2.0.x

Environment Details

Helidon Version: 2.0.x
Helidon MP

Problem Description
Need to include additional content for MP JPA/JTA documentation.
Specifically,
How to access databases
What is JPA
What is JTA
How to configure it
Use cases
Steps to reproduce
Existing doc is here:
https://helidon.io/docs/v2/#/mp/jpa/01_introduction

Hi Team,
I want to work on this. How to proceed ?
Thanks,
Sudip


Can't create a partial profile

I can create a new profile from scratch but I cannot create a partial profile.
Does this issue occur when all extensions are disabled?: Yes

VS Code Version: Version: 1.92.2 (fee1edb8d6d72a0ddff41e5f71a671c23ed924b9)
OS Version: Ubuntu 24.04 (OS: Linux x64 6.8.0-41-generic)

Steps to Reproduce:

Click bottom right "Manage" -> navigate through "Profile (Default) to "New Profile"
Click on any checkbox from "Choose what to configure in your Profile"
All checkboxes are now unchecks and validation warning shows up under Profile name "The profile should have at least one configuration."

Clicking directly within the checkbox only seem to highlight area directly around the checkbox. Clicking anywhere else in the settings checkboxes area highlights the whole settings area. (Hovering over options highlights specific lines.)
Inputting profile name or selecting "Copy from" work but I cannot profile. If I didn't click on any checkbox then all is fine.

/duplicate
https://github.com/microsoft/vscode/issues/224788
Sorry for breaking this experience. Please use the New Profiles UI as the workaround.


Reproduce summary figure

Reproduce this summary figure in python. Related to #1.

Due to the website changes, the link isn't working. Do you have a new one?

I updated files so that they include geographical (see /info/geo_lat and /info/geo_lon variables) and altitudinal (see /info/alt_dist/) distribution of meteors.

Due to the website changes, the link isn't working. Do you have a new one?

You can still access it here within the university network.

Done in #12.


Typo 'not' instead of 'no': Minor error log message typo - for people with grammar OCD.

Caused by: java.lang.IllegalStateException: There is not EC2 meta data available, because the application is not running in the EC2 environment. Region detection is only possible if the application is running on a EC2 instance
Refer to classes: org.springframework.cloud.aws.core.regionEc2MetadataRegionProvider:39, and org.springframework.cloud.aws.core.region.Ec2MetadataRegionProviderTest:57.

merged with #255


Feature request: multiple commands in tasks.json

Hello,
For now, tasks.json allows only one command to be set.
It would be great to be able to have multiple commands, one for each tool something like this:
{
    "taskCommands": [
        {
            "command": "npm",
            "isShellCommand": true,
            "suppressTaskName": true,
            "showOutput": "always",
            "args": ["run"],
            "tasks": [
                {
                    "taskName": "npm:test",
                    // Make this the default build command.
                    "isBuildCommand": true,
                    // Show the output window only if unrecognized errors occur.
                    "args": [
                        "debug:test"
                    ]
                },
 {
                    "taskName": "npm:test2",
                    // Make this the default build command.
                    "isBuildCommand": true,
                    // Show the output window only if unrecognized errors occur.
                    "args": [
                        "debug:test2"
                    ]
                }
            ]
        },
        {
            "command": "gulp",
            "isShellCommand": true,
            "suppressTaskName": true,
            "showOutput": "always",
            "args": [],
            "tasks": [
                {
                    "taskName": "gulp:test",
                    // Make this the default build command.
                    "isBuildCommand": true,
                    // Show the output window only if unrecognized errors occur.
                    "args": [
                        "debug:test"
                    ]
                }
            ]
        }
    ],
    "version": "0.1.0"
}

I hope you will take my request into consideration and hope this will help to enhance vscode.
Thank you in advance for your feedback.

Dups #981


Document how to upload image files via the Zulip API

It is possible to upload files via the API, and we'd like to document it. There's a test, test_rest_endpoint in zerver/tests/test_upload.py, that tests this functionality and gives you some guidelines for how it ought to work. It would be great if someone got this working and added example code to api/examples for doing this.
(This was added a few weeks ago as part of a project of being able to do end-to-end testing of upload functionality in CI, so the focus wasn't on documenting the feature).
As you can see in test_rest_endpoint:
result = self.client.post('/api/v1/user_uploads', {'file': fp}, **auth_headers)
That post method is a feature of the Django TestCase class which just does an HTTP post with appropriate authentication headers (via **auth_headers) and the file object passed as part of the request. You'll need to replace it with something similar, perhaps using the requests library.
For the API bindings, you'll probably want to do a Client._register to add a new function like Client.upload that does a POST to that URL and has a make_request method that does the right thing for python-requests.
Your endpoint might be something like /api/v1/user_uploads.
Part of #672.

(Had a typo in the issue number for what was fixed in what I just merged, so reopening)

@eeshangarg this might be good to add to your list.