{what}: mmap() failed to allocate thread stack: HPX(unhandled_exception)

Expected Behavior
"Hello World!"
Actual Behavior
asset-overflow@MontereyJack:~/IBJts/l337/build
$ cmake -DCMAKE_PREFIX_PATH=~/SDKs/hpx/build ..
-- The CXX compiler identification is AppleClang <IP_ADDRESS>60021
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Asio: /opt/homebrew/include (found suitable version "1.22.1", minimum required is "1.12.0")
-- Using system allocator.
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found Boost: /opt/homebrew/include (found suitable version "1.78.0", minimum required is "1.71")
-- Found Boost: /opt/homebrew/include (found suitable version "1.78.0", minimum required is "1.71") found components: context thread chrono atomic
-- Found Boost: /opt/homebrew/include (found suitable version "1.78.0", minimum required is "1.71") found components: filesystem
-- Found Hwloc: /opt/homebrew/lib/libhwloc.dylib
-- Found MPI_CXX: /opt/homebrew/Cellar/open-mpi/4.1.4/lib/libmpi.dylib (found version "3.1")
-- Found MPI: TRUE (found version "3.1")
-- MPI version:
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/asset-overflow/IBJts/l337/build
asset-overflow@MontereyJack:~/IBJts/l337/build
$ make all
[ 50%] Building CXX object CMakeFiles/l337.dir/main.cpp.o
[100%] Linking CXX executable l337
[100%] Built target l337
asset-overflow@MontereyJack:~/IBJts/l337/build
$ ./l337
{config}:
Core library:
HPX_AGAS_LOCAL_CACHE_SIZE=4096
HPX_HAVE_MALLOC=system
HPX_PARCEL_MAX_CONNECTIONS=512
HPX_PARCEL_MAX_CONNECTIONS_PER_LOCALITY=4
HPX_PREFIX (configured)=
HPX_PREFIX=
HPX_FILESYSTEM_WITH_BOOST_FILESYSTEM_COMPATIBILITY=OFF
HPX_ITERATOR_SUPPORT_WITH_BOOST_ITERATOR_TRAVERSAL_TAG_COMPATIBILITY=OFF
HPX_WITH_AGAS_DUMP_REFCNT_ENTRIES=OFF
HPX_WITH_APEX=ON
HPX_WITH_APEX_NO_UPDATE=OFF
HPX_WITH_ASYNC_MPI=OFF
HPX_WITH_ATTACH_DEBUGGER_ON_TEST_FAILURE=OFF
HPX_WITH_AUTOMATIC_SERIALIZATION_REGISTRATION=ON
HPX_WITH_COROUTINE_COUNTERS=OFF
HPX_WITH_DISTRIBUTED_RUNTIME=ON
HPX_WITH_DYNAMIC_HPX_MAIN=ON
HPX_WITH_GENERIC_CONTEXT_COROUTINES=ON
HPX_WITH_GOOGLE_PERFTOOLS=OFF
HPX_WITH_IO_POOL=ON
HPX_WITH_ITTNOTIFY=OFF
HPX_WITH_LOGGING=ON
HPX_WITH_NETWORKING=ON
HPX_WITH_PAPI=OFF
HPX_WITH_PARALLEL_TESTS_BIND_NONE=OFF
HPX_WITH_PARCELPORT_ACTION_COUNTERS=OFF
HPX_WITH_PARCELPORT_LIBFABRIC=OFF
HPX_WITH_PARCELPORT_MPI=ON
HPX_WITH_PARCELPORT_MPI_MULTITHREADED=ON
HPX_WITH_PARCELPORT_TCP=ON
HPX_WITH_PARCEL_COALESCING=ON
HPX_WITH_PARCEL_PROFILING=ON
HPX_WITH_SANITIZERS=OFF
HPX_WITH_SCHEDULER_LOCAL_STORAGE=OFF
HPX_WITH_SPINLOCK_DEADLOCK_DETECTION=OFF
HPX_WITH_STACKTRACES=ON
HPX_WITH_TESTS_DEBUG_LOG=OFF
HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION=OFF
HPX_WITH_THREAD_CREATION_AND_CLEANUP_RATES=OFF
HPX_WITH_THREAD_CUMULATIVE_COUNTS=ON
HPX_WITH_THREAD_DEBUG_INFO=OFF
HPX_WITH_THREAD_DESCRIPTION_FULL=OFF
HPX_WITH_THREAD_GUARD_PAGE=ON
HPX_WITH_THREAD_IDLE_RATES=OFF
HPX_WITH_THREAD_LOCAL_STORAGE=OFF
HPX_WITH_THREAD_MANAGER_IDLE_BACKOFF=ON
HPX_WITH_THREAD_QUEUE_WAITTIME=OFF
HPX_WITH_THREAD_STACK_MMAP=ON
HPX_WITH_THREAD_STEALING_COUNTS=OFF
HPX_WITH_THREAD_TARGET_ADDRESS=OFF
HPX_WITH_TIMER_POOL=ON
HPX_WITH_TUPLE_RVALUE_SWAP=ON
HPX_WITH_VALGRIND=OFF
HPX_WITH_VERIFY_LOCKS=OFF
HPX_WITH_VERIFY_LOCKS_BACKTRACE=OFF
HPX_WITH_VERIFY_LOCKS_GLOBALLY=OFF
Module coroutines:
HPX_COROUTINES_WITH_SWAP_CONTEXT_EMULATION=OFF
Module datastructures:
HPX_DATASTRUCTURES_WITH_ADAPT_STD_TUPLE=ON
Module serialization:
HPX_SERIALIZATION_WITH_ALL_TYPES_ARE_BITWISE_SERIALIZABLE=OFF
HPX_SERIALIZATION_WITH_BOOST_TYPES=ON
Module topology:
HPX_TOPOLOGY_WITH_ADDITIONAL_HWLOC_TESTING=OFF
{version}: V1.7.1 (AGAS: V3.0), Git: 3fe2356ff5
{boost}: V1.78.0
{build-type}: release
{date}: Jun 13 2022 22:50:09
{platform}: Mac OS
{compiler}: Clang version 13.1.6 (clang-13<IP_ADDRESS>.5)
{stdlib}: libc++ version 13000
{os-thread}: worker-thread#0
{what}: mmap() failed to allocate thread stack: HPX(unhandled_exception)
Steps to Reproduce the Problem
... Please be as specific as possible while describing how to reproduce your problem.
1.follow the exact instructions on the quickstart section of documentation webpage
2.build from source with cmake build instructions as follows:
cmake -DCMAKE_INSTALL_PREFIX=. -DHPX_WITH_CXX_STANDARD=20 -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=ON -DHPX_WITH_PARCELPORT_MPI=ON -DHPX_WITH_APEX=ON ..
then, per website instruction:
cmake --build . --target install
3.create hello world following all instructions (changing each of the "my_hpx_project" to "l337")
hpx source code was saved to a folder in my home directory as follows under :
~/SDKs/hpx
Specifications
... Please describe your environment

HPX Version: 1.7.1
Platform (compiler, OS): MacOS - Arm64 16gbRAM M1 chip 1TB storage, compiler = Clang version 13.1.6 (clang-13<IP_ADDRESS>.5)

sorry, after cmd+c interupt:
{stack-trace}: 11 frames:
0x10657cf58     : _ZN3hpx19termination_handlerEi [0x540] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx.1.7.1.dylib
0x19cca34a4     : _sigtramp [0x38] in /usr/lib/system/libsystem_platform.dylib
0x105512ba0     : _ZN3hpx14execution_base11this_thread7yield_kEmPKc [0x30] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx_core.dylib
0x1065174fc     : _ZN3hpx19runtime_distributed5startERKNS_4util8functionIFivELb0EEEb [0x324] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx.1.7.1.dylib
0x106519304     : _ZN3hpx19runtime_distributed3runERKNS_4util8functionIFivELb0EEE [0x20] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx.1.7.1.dylib
0x1063dd1b8     : ZN3hpx6detail3runERNS_7runtimeERKNS_4util8functionIFiRNS_15program_options13variables_mapEELb0EEES7_NS_12runtime_modeENS3_15unique_functionIFvvELb0EEESF [0x190] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx.1.7.1.dylib
0x1063dd640     : ZN3hpx6detail12run_or_startEbNSt3__110unique_ptrINS_7runtimeENS1_14default_deleteIS3_EEEERNS_4util21command_line_handlingENS7_15unique_functionIFvvELb0EEESC [0x88] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx.1.7.1.dylib
0x1063de624     : _ZN3hpx6detail12run_or_startERKNS_4util8functionIFiRNS_15program_options13variables_mapEELb0EEEiPPcRKNS_11init_paramsEb [0x944] in /Users/asset-overflow/SDKs/hpx/build/lib/libhpx.1.7.1.dylib
0x104d5d7e8     : _ZN3hpx4initENSt3__18functionIFiiPPcEEEiS3_RKNS_11init_paramsE [0x1b0] in /Users/asset-overflow/IBJts/l337/build/l337
0x104d5d294     : initialize_main [0x278] in /Users/asset-overflow/IBJts/l337/build/l337
0x10515108c     : 0   dyld                                0x000000010515108c start + 520
{what}: Interrupt: 2

Are you referencing the
hpx::cout << "hello" example?
What happens when you build hpx using c++ 17?
Have you also tried the latest version 1.8.0 ?
I also see you are on the M1 chip.
According to the docs, M1 (ARM) is not supported in hpx
https://hpx-docs.stellar-group.org/latest/html/manual/prerequisites.html

yes, the hello world example the documentation says to build.. stated every step i took .. also the settings i used.
I saw that in the documentation but tried it anyways, the M1 chip still runs programs that are intel based and x86 and x64 based so I figured it may just need some tweaks?
I noticed when I build hpx, no matter what compiler i state or CXX_STANDARD i use it still says "Using C++ 14" .. I showed in my steps above the args i passed for building hpx and i used CXX_STANDARD 20... it finds everything, and i went through and spent hours making tweaks and got it this far.. it gives quite a bit of info.. maybe someone could figure this out?

This is a known problem when using HPX on MacOS/M1 resources. We have not investigated as we don't have access to appropriate testing and development environments for this. Any help you may be able to provide would be highly appreciated.

for sure, i really want this library haha. I have a Dell R710 server right here at home on my desk which i have windows 10 pro installed so i can run VMs on it and i can use it for windows Dev, but I want to use my mac.. lol

as it's building it keeps throwing this warning:
"warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive library: ../../../lib/libhpx_include.a the table of contents is empty (no object file members in the library define global symbols)"

for sure, i really want this library haha. I have a Dell R710 server right here at home on my desk which i have windows 10 pro installed so i can run VMs on it and i can use it for windows Dev, but I want to use my mac.. lol

If you're interested in investigating, I'd start with replacing the alloc_stack function for the M1 based platform (see here: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/coroutines/include/hpx/coroutines/detail/posix_utility.hpp#L80-L122) to rely on some other, possibly more compatible way of allocating stack segments. Obviously, the related free_stack functions et.al. (in the same file) would have to be touched as well.

for sure, i really want this library haha. I have a Dell R710 server right here at home on my desk which i have windows 10 pro installed so i can run VMs on it and i can use it for windows Dev, but I want to use my mac.. lol

If you're interested in investigating, I'd start with replacing the alloc_stack function for the M1 based platform (see here: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/coroutines/include/hpx/coroutines/detail/posix_utility.hpp#L80-L122) to rely on some other, possibly more compatible way of allocating stack segments. Obviously, the related free_stack functions et.al. (in the same file) would have to be touched as well.

sounds, good.. will do, and will update .. thank you guys

for sure, i really want this library haha. I have a Dell R710 server right here at home on my desk which i have windows 10 pro installed so i can run VMs on it and i can use it for windows Dev, but I want to use my mac.. lol

If you're interested in investigating, I'd start with replacing the alloc_stack function for the M1 based platform (see here: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/coroutines/include/hpx/coroutines/detail/posix_utility.hpp#L80-L122) to rely on some other, possibly more compatible way of allocating stack segments. Obviously, the related free_stack functions et.al. (in the same file) would have to be touched as well.

hmm. i wonder also if i pass the tcmalloc or mimalloc at build?.. it's been running "system" even though i have the other 2 (and jemalloc as well)

More background and possible fix: this refers to Boost.Context lately being fixed for MaxOS/M1.
Could you please retry using a recent version of Boost and  setting -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=On. That will make HPX rely on Boost.Context instead of our own implementation of context switching.

More background and possible fix: this refers to Boost.Context lately being fixed for MaxOS/M1.
Could you please retry using a recent version of Boost and setting -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=On. That will make HPX rely on Boost.Context instead of our own implementation of context switching.

Ok, I take that back. You already use this setting. In this case, the allocation of the stack is done here: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/coroutines/include/hpx/coroutines/detail/context_generic_context.hpp#L91-L102, in case you want to play with it.

More background and possible fix: this refers to Boost.Context lately being fixed for MaxOS/M1.
Could you please retry using a recent version of Boost and setting -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=On. That will make HPX rely on Boost.Context instead of our own implementation of context switching.

Ok, I take that back. You already use this setting. In this case, the allocation of the stack is done here: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/coroutines/include/hpx/coroutines/detail/context_generic_context.hpp#L91-L102, in case you want to play with it.

yes, thank you, I'm digging into this right now.. while digging i'm trying to run it with -DHPX_WITH_MALLOC=tbbmalloc, and may try the other malloc settings as well (i have them all so ill try)
and will be looking into the stack allocation as i do that.

@Sr-316 I think the allocator libraries have no relation to the issue at hand as mmap is a kernel API. The used allocator library might start being significant (performance wise) only if you replace the mmap with some [m|c]alloc as done here for non-Posix systems. In fact, it might already be sufficient to extend the #if defined(_POSIX_VERSION) to additionally exclude M1 systems.

ahh ok, I understand..
ill check that out.

@Sr-316 I think the allocator libraries have no relation to the issue at hand as mmap is a kernel API. The used allocator library might start being significant (performance wise) only if you replace the mmap with some [m|c]alloc as done here for non-Posix systems. In fact, it might already be sufficient to extend the #if defined(_POSIX_VERSION) to additionally exclude M1 systems.

"In fact, it might already be sufficient to extend the #if defined(_POSIX_VERSION) to additionally exclude M1 systems."
sorry, how would I go about doing this? I am not THAT seasoned and don't want to start making tweaks and .. yea u know.

after switching the the latest checkout, and rebuilding with:
"cmake -DCMAKE_INSTALL_PREFIX=. -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=On -DHPX_WITH_CXX_STANDARD=20 -DHPX_WITH_PARCELPORT_MPI=ON -DHPX_WITH_APEX=ON .."
 The used allocator library might start being significant (performance wise) only if you replace the mmap with some [m|c]alloc as done here for non-Posix systems. In fact, it might already be sufficient to extend the #if defined(_POSIX_VERSION) to additionally exclude M1 systems.

"In fact, it might already be sufficient to extend the #if defined(_POSIX_VERSION) to additionally exclude M1 systems."
sorry, how would I go about doing this? I am not THAT seasoned and don't want to start making tweaks and .. yea u know.

Currently, the allocation is either done through the posix mmap or by calling calloc here:
https://github.com/STEllAR-GROUP/hpx/blob/9b2a825ddd2493bbdb6b1fa1267307e3fbd7c60e/libs/core/coroutines/include/hpx/coroutines/detail/context_generic_context.hpp#L93-L100
. If you had the appropriate preprocessor macro that is pre-defined while compiling on M1 systems (invoke clang -dM -E -x c /dev/null to see those) you could change that to  #if defined(_POSIX_VERSION) && !defined(WHATEVER_M1_SPECIFIC_PREPROCESSOR_MACRO) to force it using the calloc instead.

#if defined(_POSIX_VERSION) &&
!defined('__ARM_ALIGN_MAX_STACK_PWR 4')
#else
void* limit = std::calloc(size, sizeof(char));
if (!limit)
throw std::bad_alloc();
#endif
??

#if defined(_POSIX_VERSION) &&
!defined('__ARM_ALIGN_MAX_STACK_PWR 4')
#else
void* limit = std::calloc(size, sizeof(char));
if (!limit)
throw std::bad_alloc();
#endif

If at all, then this would probably be:
#if defined(_POSIX_VERSION) && !defined(__ARM_ALIGN_MAX_STACK_PWR)

However I doubt that this constant is something specific for MacOS/M1. Can you post the output of clang -dM -E here?

I think using
#if defined(_POSIX_VERSION) && !(defined(_CPU_AARCH64_) && defined(_OS_DARWIN_))

might be a good candidate, ut I'm just guessing here.

running this one right now, will update after

From your list of predefined macros, I'd start trying:
#if defined(_POSIX_VERSION) && !(defined(__ARM_ARCH) && defined(APPLE))

From your list of predefined macros, I'd start trying:
#if defined(_POSIX_VERSION) && !(defined(__ARM_ARCH) && defined(APPLE))

k running it now

wait so should I be commenting out the:
void* limit = posix::alloc_stack(size);
posix::watermark_stack(limit, size); "

this pops up multiple times throughout the last build step (cmake --build . --target install) :
not sure if that provides any insight
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: archive library: ../../../lib/libhpx_async_local.a the table of contents is empty (no object file members in the library define global symbols)

new error:
asset-overflow@MontereyJack:~/IBJts/l337/build
$ make all
[ 50%] Building CXX object CMakeFiles/l337.dir/main.cpp.o
[100%] Linking CXX executable l337
[100%] Built target l337
asset-overflow@MontereyJack:~/IBJts/l337/build
$ ./l337
libc++abi: terminating with uncaught exception of type std::runtime_error: mmap() failed to allocate thread stack
libc++abi: terminating with uncaught exception of type std::runtime_error: mmap() failed to allocate thread stack
libc++abi: l337(15812,0x102e48580) malloc: Heap corruption detected, free list is damaged at 0x60000162c000
*** Incorrect guard value: 0
terminating with uncaught exception of type std::runtime_error: mmap() failed to allocate thread stack
libc++abi: terminating with uncaught exception of type std::runtime_error: mmap() failed to allocate thread stack
l337(15812,0x102e48580) malloc: *** set a breakpoint in malloc_error_break to debug
libc++abi: terminating with uncaught exception of type std::runtime_error: mmap() failed to allocate thread stack
libc++abi: terminating with uncaught exception of type std::runtime_error: mmap() failed to allocate thread stack
on this build, I had changed the context_generic_context.h  back to :
#if defined(_POSIX_VERSION) && !(defined(CPU_AARCH64) && defined(OS_DARWIN))
after realizing i had commented out the following 2 lines..

This is not a new error, it's still the old one. In order to better understand what needs to be done, I'd suggest you read up on C/C++ preprocessing and conditional compilation. Also, the suggestion I made should work (i.e. using the __ARM_ARCH and APPLE macros).

YES! i finally got it!
was looking on docker thinking about how I could maybe run it on a different architecture image and noticed the architectures used and the ARM64_ARCH_8  popped up, and it clicked..
darwin architecture = arm64_arch8
looked again at my preprocessor definitions and then realized which it was..
#if defined(_POSIX_VERSION) && !(defined(ARM64_ARCH_8) && defined(APPLE))


XHR calls is not showing in the developer tools Nework tab

Describe the bug
Hi,
with the latest Lens application (Lens: 5.2.x) , i am not able to see the xhr calls in the network tab of developer tools.
Though the following info has been added in console :
[JSON-API] request POST http://<IP_ADDRESS>:49742/api/stack
But, this doesn't help much during dubugging and making postman calls for debugging.
Please share if there is any workaround or i need to make any change  to get the xhr network calls?
To Reproduce
Steps to reproduce the behavior:

Open Lens application
Open developer tools
Go to networks tab
on changing the extension tab you will not see xhr requests made

Expected behavior
On the Developer tools networks tab, xhr calls should show like it was showing in the older versions (e.g 5.1.3 etc)
Screenshots
Environment (please complete the following information):

Lens Version: 5.2.5
OS: OSX
Installation method : used latest dmg

Logs:
When you run the application executable from command line you will see some logging output. Please paste them here:
Your logs go here...

Kubeconfig:
Quite often the problems are caused by malformed kubeconfig which the application tries to load. Please share your kubeconfig, remember to remove any secret and sensitive information.
your kubeconfig here

Additional context
Add any other context about the problem here.

Closing this because we are now using node-fetch which cannot log requests to network tab (since 5.2.0).


Empty .map pipeline never completes

I have a pipeline task that's like Pipeline(broker, produces_array).map(another_task) but it never completes when I want using task.wait_result if produces_array returns an empty list

I think if you just bail here when len is 0, it would work:
https://github.com/taskiq-python/taskiq-pipelines/blob/ba056d7bfc0c46ea1235323c93ed6ec09b64ed41/taskiq_pipelines/steps/mapper.py#L109-L111


Coverage badge fixed

Coverage decreased (-0.01%) to 97.89% when pulling 46ed057ad6d69709254be6520fe86eb4c7ea667f on smarek:coverage into 449dd6b6a415e37c5cf8962e647f11a83021d6e2 on onelogin:master.


Fuzzy search (ctrl-p) much slower after most recent update

Issue Type: Bug
Fuzzy search seems a lot slower since the most recent update. Can take upwards of 30 seconds to a minute to fuzzy find a file, when before it would take less than 10 seconds with an average of 3 to 4 seconds.
VS Code version: Code 1.44.1 (a9f8623ec050e5f0b44cc8ce8204a1455884749f, 2020-04-11T01:48:12.622Z)
OS version: Windows_NT x64 10.0.18363

System Info

Item
Value

CPUs
Intel(R) Core(TM) i9-9940X CPU @ 3.30GHz (28 x 3312)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
63.71GB (37.24GB free)

Process Argv
.

Screen Reader
no

VM
0%

Extensions (12)

Extension
Author (truncated)
Version

copy-relative-path
ale
0.0.2

vscode-svgviewer
css
2.0.0

git-diff-and-merge-tool
dav
1.0.1

vscode-eslint
dba
2.1.3

gitlens
eam
10.2.1

beautify
Hoo
1.5.0

cpptools
ms-
0.27.0

vscode-gn
npc
1.1.0

vscode-icons
vsc
10.1.1

vscode-jumpy
wma
0.3.1

clang-format
xav
1.9.0

material-theme
zhu
3.2.5

@roblourens Did anything change here? (/cc @bpasero)

Can you update to 1.44.2 and let me know whether it's any different? There was a search-related issue fixed but not sure whether it's the same.

No that didn't fix it. I have a repro between two devices, one running 1.44.2 and one running 1.43.1 and the difference is quite apparent

There haven't been any other search related changes lately. Do any tips in here sound relevant? https://github.com/microsoft/vscode/wiki/Search-Issues Is MsMpEng.exe using all your cpu?

Just checked and MsMpEng.exe isn't using an abnormal amount of cycles. My workspace is very large (It's the Chromium repo) however that's the case on both devices. The one running 1.43.1 is actually much less powerful than the one running 1.44.2, however the fuzzy search is resolving on that device in 1/3 of the time.

Is there anything else I can check or test that would be useful here?

Is rg.exe using high CPU the whole time? Or what is? Or could it be a disk bottleneck?

Nothing stands out as using high CPU, rg spikes initially on both devices but then uses minimal cycles or the process exits. Nothing stands out in terms of consuming heavy CPU. Disk read/write never breaks 10% on either device. I also just confirmed that downgrading to 1.43.1 on the offending device solves the issue


Remove reference to a service account on auto-generation

Having the spec.serviceAccount.name while spec.serviceAccount.generate is set to true
is confusing in the samples, while the name is not used anywhere. And a autogenerated name will be used for
a service account creation.

@zhangtbj can u review this tomorrow your morning pls

/lgtm
/approve


[BUG] Docs build not triggered and reported for PRs

Describe the bug
Doc builds are not triggered for PRs in this repo.
I believe it is related to out-of-sync webhook or some missing permission as described in :
https://docs.readthedocs.io/en/latest/pull-requests.html#troubleshooting
I don't have sufficient permissions in Ouranosinc organization to do the sync myself or check current permissions for readthedocs.
https://readthedocs.org/dashboard/pavics-cowbird/integrations/146170/

Not sure what's not working, I see the last build was 30 mins ago here https://readthedocs.org/projects/pavics-cowbird/builds/

By the way, @fmigneault you are admin of the pavics-cowbird on RtD.

The latest build was triggered manually by me. Indeed, I have sufficient rights to modify settings on RtD, but the 'sync' button under  https://readthedocs.org/dashboard/pavics-cowbird/integrations/146170/ returns an insufficient permissions.
I think this is because permissions are checked against the Github organization where the integration is placed.

Oh, I do not have that sync button on RtD side.  Can you make me also admin on RtD side then?  I also made you admin on this cowbird repo side, hope it helps.

@tlvu Done. I think it should have sent you a notification or email.

@fmigneault I did not get notification.  But anyways, I re-clicked on the re-sync integration webhook at https://readthedocs.org/dashboard/pavics-cowbird/integrations/.  Let me know if it solves your problem.

Fixed. Was triggered automatically in PR #7.
Can you also update (approve?) the configuration change for codacy to generate the code analysis via Github App?
Thank you @tlvu

Can you also update (approve?) the configuration change for codacy to generate the code analysis via Github App?

Already done :D

Already done :D

Amazing! Thanks again.


Failed to Dockerize

Description
Version: v2.7.0
Environment: Mac Os, 1.13
Reproduces: always
Hello,
There already was an issue called Failed to Dockerize which has been solved, but I've run into a different problem with dockerizing the goyave-template. It's important to note that everything works if it's running without Docker.
When I start a server, running inside a container, and I call /hello endpoint I get curl: (52) Empty reply from server response. When I start server just running by go run goyave-template, and I call /hello endpoint I get Hi! response.
I tried put logging inside Start function and I can see that the server is running. What interesting is that if I put logging inside the SayHi I got nothing in the terminal. So I suspect that the handler isn't even called. Also, I tried to use a closure. No success.
I haven't tried my Dockerize method with the prev version v2.2.0 in which the original issue was reported.
All files such as config.json, docker-compose and Dockerfile, are copy&paste in this description.
How it occurred
Ghosts-MacBook-Pro-2:goyave-docker ghost$ curl -I localhost:8080/hello
curl: (52) Empty reply from server

Expected result:
Based on the documentation, it should return Hi! message.
How to reproduce
This is my docker-compose.yml file:
version: '3.2'

services:
  api:
    container_name: goyave_docker_api
    build: .
    ports:
      - 8080:8080

  vgo:
    container_name: goyave_docker_vgo
    image: golang:1.13
    volumes:
      - .:/app
    working_dir: /app

This is my Dockerfile:
FROM golang:1.13-alpine3.11 as builder

WORKDIR /app

COPY . .

RUN CGO_ENABLED=0 GOOS=linux go build -mod=vendor -o api

FROM alpine:3.11

WORKDIR /app

RUN apk add --no-cache tzdata
RUN apk add --no-cache ca-certificates

ENV TZ Europe/Prague

COPY --from=builder /app/api ./api
COPY resources /app/resources
COPY config.json ./config.json

EXPOSE 8080

ENTRYPOINT [ "./api" ]

This is my config.json file:
{
    "appName": "goyave-docker",
    "environment": "localhost",
    "domain": "",
    "maintenance": false,
    "host": "localhost",
    "port": 8080,
    "httpsPort": 8081,
    "protocol": "http",
    "tlsCert": "",
    "tlsKey": "",
    "debug": false,
    "timeout": 10,
    "maxUploadSize": 10,
    "defaultLanguage": "en-US",
    "dbConnection": "none",
    "dbHost": "<IP_ADDRESS>",
    "dbPort": 3306,
    "dbName": "goyave",
    "dbUsername": "root",
    "dbPassword": "root",
    "dbOptions": "charset=utf8&parseTime=true&loc=Local",
    "dbMaxOpenConnections": 20,
    "dbMaxIdleConnections": 20,
    "dbMaxLifetime": 300,
    "dbAutoMigrate": false
}

In the config.json, I changed host key from <IP_ADDRESS> to localhost.
Then I run:

docker-compose run --rm vgo go get && go mod vendor to create the vendor folder
docker-compose up -d --build to build an image a run a server

Just to be sure, are you using curl from your host or from your container? Your config shows that your application is listening on localhost (or <IP_ADDRESS>) meaning that the it is only accessible from inside the container.
You have to change the host config entry to <IP_ADDRESS> if you want your application to be accessible from anywhere.

Hi,
oh my god, you're right. So far, I didn't have to set up the address, because it's handled by framework itself.
Thanks a lot 👍 You can close this issue.

Take a look at this gist. It's a way of auto-restarting your application when you modify a file. It's especially useful for development!


Deprecate delay for apple search ads method SDK-884

Deprecate delay for apple search ads method SDK-884

@adrianyg7, @echo-branch, why it was deprecated? Is the a new way to track Search Ads in Cordova app?

@adrianyg7, @echo-branch, why it was deprecated? Is the a new way to track Search Ads in Cordova app?

@romandragan +1

@romandragan +1

This was deprecated cause it does not work. The issue is that Apple Search Ads must be checked early in the application lifecycle to properly be handled by Branch.  This is not possible with Cordova's slow startup time.
The current way to handle this is making the equivalent call from within the iOS native code. In a future release, we plan on enabling it via a config file so early lifecycle settings can be properly handled by Cordova.

This was deprecated cause it does not work. The issue is that Apple Search Ads must be checked early in the application lifecycle to properly be handled by Branch.  This is not possible with Cordova's slow startup time.
The current way to handle this is making the equivalent call from within the iOS native code. In a future release, we plan on enabling it via a config file so early lifecycle settings can be properly handled by Cordova.

@echo-branch, thank you, it would be super cool to have it as automated things configured via config, so it would be not necessary to edit delegate source every time.

@echo-branch, thank you, it would be super cool to have it as automated things configured via config, so it would be not necessary to edit delegate source every time.


[Polymetis] General Cartesian Control Issues

Type of Issue
Select the type of issue:

[X ] Bug report (to report a bug)

Description
Given how clean and well maintained this repo is (thank you!); I’d really like to use it for a large data collection project which requires 6 dof control through oculus based teleoperation.
However, I’ve generally been struggling to use polymetis for Demo collection through it’s Cartesian control features. For these experiments I’ve been using the Cartesian impedance controller.
To formalize what I’m seeing, I’ve plotted the desired trajectory (black) versus the achieved trajectory (red). The robot gets the desired pose every 1/hz seconds (in this case, hz is 20). I’m happy to share the code for this experiment if it would be helpful.
As you can see in the plots below, position mapping is pretty sub par, and orientation matching is very troublesome. I have noticed that switching from an impedance controller to set_ee_pose makes orientation control much more accurate, but not position control.

On a side note, there is significant drooping when doing delta control (Ie. next_pos = curr_pos + action, even with the gravity compensation on). I believe the issue has been even worse since I’ve switched to a robotiq gripper. It would be really cool if the controller accounting for which gripper is being used.
Things I’ve tried
Tuning the gains helps, but at a huge cost to smoothness. I can see that maybe this is an inherent problem, but I’ve discussed the issue with other labs who use alternative controllers and it is significantly better on their end (granted, a lot messier!).
Switching from a Cartesian impedance controller to using set_ee_pose helps (mostly just with orientation matching), but it is extremely jerky in movement.
For the drooping behavior, using next_pos = desired_curr_pos + action instead helps, but creates other issues.
Checklist

Significant arm dropping (with default and robotiq gripper)
Position and orientation matching is poor

There are definitely some orientation tracking issues in the default controllers right now. The hopefully-nice thing about the Polymetis design is that you can hotswap any (sufficiently performant) PyTorch policy. If possible, would you mind pointing to the implementations better-tracking controllers? You can try implementing them as Torch policies, and we'd be happy to also try them out / potentially merge them in as defaults.
For gripper drooping -- just a quick check to make sure you updated the end-effector inertia parameters in Franka Desk.

Hi @AlexanderKhazatsky! Just wanted to add that the Cartesian Impedance controller we provide is a local feedback controller that might lead to awkward joint poses (thus affecting accuracy) when executing large trajectories. An IK planner would be ideal for these kind of situations. We plan to add a decent default IK planner to the RobotInterface, but you might need to implement your own IK and use joint position control for these trajectories for now.
Regarding the drooping, updating the end-effector parameters as @1heart mentioned would definitely help, but you should still control it with "next_pos = desired_curr_pos + action" if possible. As long as there is a tiny bit of error in the tracking, they WILL accumulate over time (and most likely droop) if your control scheme is "next_pos = curr_pos + action". What "other issues" are you getting when you do "next_pos = desired_curr_pos + action"?

Firstly, I just wanna say that you guys are the best - thank you so much for consistency responding both promptly and thoroughly.
Other Controllers: It looks like one of them uses the built in franka impedance controller, another (which I unfortunately am not allowed to share) uses libfranka + zmq + protobuf, and another one is FrankaPy.
EE Inertia Parameters: I didn't know about this, thanks I'll try this!
IK Planner: I see, thank you for the info! Out of curiosity, what's the timeline on releasing this controller? Furthermore, do you have any IK for franka that you recommend? I saw there was one built into Polymetis, but I wasn't sure how to make it take current joint positions into account. Without this, it seems to be outputting joint configurations that are not nearby.
Delta Control Issues: When controlling with "next_pos = desired_curr_pos + action", the robot tends to get stuck around the edges of the control space. I think this is because it begins requesting unreachable positions. However, this can probably be fixed by clamping next_pos within the limits as defined by the robot. Additionally, I found this control format to get jammed much more frequently (probably for a similar reason of "current_pos" drifted into an invalid zone, then not being able to return to valid state spaces).
General Comment: For robot learning research there’s a large demand for robot controllers that can be updated in the manner described above. For example pose control with small pose changes at a frequency of ~10 hz (with impedance to avoid breaking things). If you guys could make a controller specifically for this framework (which I believe it sounds like you're doing?), it would be a lifesaver!

On another note, it might be helpful to have a function like get_desired_ee_pose which returns the desired pos clamped into state space or something. Ie. Just a func which you could use for next_pos = desired_curr_pos + action that doesn’t cause the issues. Or are the issues not happening on your side when you go outside boundaries?

Thank you for your kind words!
Unfortunately we don't have a timeline for a built-in IK planner yet. The inverse kinematics implementation we currently include in Polymetis only solves for a joint pose given a target end effector pose (instead of a full trajectory), the API of which is documented here. Not sure how much this will help, but by specifying rest_pose as the current pose, the result should be as close as possible to the current joint pose within the null space, while achieving the desired EE pose.
I don't think I understand why the controller will request unreachable positions when given "next_pos = desired_curr_pos + action". We have no issues (either getting stuck or "jamming") while executing small motions in this exact manner when using our teleoperation stack.
We're not "clamping" the desired pos within the Cartesian impedance controller at all. We only have safety controllers at the robot client side that prevents the EE from going outside a certain bounding box by applying forces. However, I agree that it will be helpful to include certain internal controller states (such as desired pose) within the returned state. No timeline can be promised as of now, but I made an issue to keep track of it: #1285.
We will be continuously trying to improve the "move to" and "impedance control" methods, and I believe it should require very minimal wrapping from the user to go from there to the delta position control method you're using right now, so I don't see a pressing need to provide something less general like that natively, but I wouldn't mind to be convinced otherwise.

@AlexanderKhazatsky to be clear, our Cartesian impedance controller is reimplemented directly from the built-in libfranka impedance controller iirc (specifically, this file). It's possible there's an error on our end, or there's some other difference -- can we pin down exactly what the diff between running libfranka vs. ours?

Using polymetis IK: I did this yesterday and had some success with it! However, I don’t think it’s designed for consecutive calls, because it frequently moves to joint limits unnecessarily. I imagine there are IK solvers which try to keep joints near center to avoid hitting locks. Do you happen to have any recommended solvers? I’ve heard good things about dm_control IK.
Controller requesting unreachable positions: Imagine I keep moving the robot forward. Eventually curr_pos will be like [10000, 0, 0]. At least on my end sending such requests locks up the robot. On a separate, even when doing joint control using polymetis IK (which I imagine doesn’t return invalid joint configurations, this happens:
https://user-images.githubusercontent.com/30299984/179118993-993c2e1c-76b6-4d71-8132-67c02b4b52dd.MOV
Internal Controller States: Thank you!!
Delta Controllers: I completely agree that minimal wrapping is required to do this. I think my main reason for asking was so that the repo has a well maintained and tested controller for settings like the one I would like to use polymetis for (Ie. Things like live demo collection, or running R

Re: IK - We've been using trak-ik with moderate success in some experiments, but  it is also not well designed for continuous motions.
Re: Controller requesting unreachable positions - You should be able to define your own state space by clamping the desired positions manually before sending them to Polymetis, which should not have that much of a difference from running into the lower level EE position constraints. We don't provide this natively because the desired range of motion varies between different experiment setups, and again would require very minimal wrapping from the user to do. Again I stress that getting rid of the drooping will be physically impossible if you are running "next_pos = curr_pos + action", even in simulation.
Re: Standardizing delta controllers - I think what we're providing with start_cartesian_impedance is already a standardized way of stabilizing around an EE pose, and the delta controller you want should literally be as simple as updating the desired pose value. I would say that the main issue with the status quo is the lack of IK planning which leads to awkward joint positions and thus inaccurate control, which we will be focusing our efforts in this workstream on.

Controller requesting unreachable positions: Alright, I’ve realized that if I do this it actually completely solves this issue, thank you for the insight :)
Cartesian Impedance: Yes, I fully agree that the Cartesian impedance controller would be perfect for this type of use case, and that was my original hope.
Currently the Cartesian impedance controller shows promise for sure (smooth xyz control, although arguably could be more accurate). However, its faulty orientation matching is practically unusable (the performance difference between this and something like set_ee_pose suggests that surely there must be some type of bug or bad parameter).
Let me know if it would be helpful to share the code for the above plots. I’m currently blocked by this issue, so I’d be happy to help fix it :)

We actually have some "soft" safety controllers which push the end-effector within a predefined volume, in addition to the "hard" limits. They have tunable parameters if that helps.
Yes, would you mind sharing the code? That would be helpful. In addition, if you have a particular controller you prefer, you can just directly implement it in Torch and try it out, or modify the current Cartesian impedance controller.

Sounds good! Also, I realized that I only get this joint locking issue when doing IK + joint impedance, and not when I do cartesian impedance directly. So I wonder if there is some safety constrains I have to watch out for that is usually taken care of under the hood with cartesian impedance control.
Here's the script. Let me know if you have any questions!
`from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
from polymetis import RobotInterface
from misc import euler_to_quat, quat_to_euler
import numpy as np
import torch
import grpc
import time
robot = RobotInterface(ip_address="localhost")
Define Getter Functions
def get_ee_pos():
pos, quat = robot.get_ee_pose()
return pos.numpy()
def get_ee_angle():
pos, quat = robot.get_ee_pose()
quat = quat.numpy()
angle = quat_to_euler(quat)
return angle
Define Update Pose Functions
def reset_robot():
reset_joints = torch.Tensor([0., 0,  0, -0.5 * np.pi, 0,  np.pi/2, 0.])
robot.move_to_joint_positions(reset_joints)
def update_pose_cartesian(pos, angle, hz=20.):
desired_pos = torch.Tensor(pos)
desired_quat = torch.Tensor(euler_to_quat(angle))
try: robot.start_cartesian_impedance()
except grpc.RpcError: pass

try: robot.update_desired_ee_pose(desired_pos, desired_quat)
except grpc.RpcError: pass

time.sleep(1 / hz)

def update_pose_joint(pos, angle, hz=20.):
desired_pos = torch.Tensor(pos)
desired_quat = torch.Tensor(euler_to_quat(angle))
current_joints = robot.get_joint_positions()
desired_joints = robot.robot_model.inverse_kinematics(
    desired_pos, desired_quat, rest_pose=current_joints)

try: robot.start_joint_impedance()
except grpc.RpcError: pass

try: robot.update_desired_joint_positions(desired_joints)
except grpc.RpcError: pass

time.sleep(1 / hz)

Plotting Functions
def figure_eight_func(t):
y = np.sin(t).reshape(-1, 1)
x = (np.sin(t) * np.cos(t)).reshape(-1, 1)
z = (np.cos(t) * np.cos(t)).reshape(-1, 1)
value = np.concatenate([x,y,z], axis=1)
return value
def figure_eight(t, scale, origin):
value = figure_eight_func(t) * scale
plot_origin = figure_eight_func(0) * scale
shifted_value = value - plot_origin + origin
return shifted_value
def create_plot(scale, origin):
fig = plt.figure()
ax = plt.axes(projection="3d")
t = np.linspace(0, 2*np.pi, 50)
desired_traj = figure_eight(t, scale, origin)
ax.plot3D(desired_traj[:, 0], desired_traj[:, 1], desired_traj[:, 2], 'black')
return ax
Control Func
def examine_control(scale=None, update_pose_func=None, test_orientation=False, step_size=0.05):
reset_robot()
pos_origin = get_ee_pos()
angle_origin = get_ee_angle()
if test_orientation:
    ax = create_plot(scale, angle_origin)
else:
    ax = create_plot(scale, pos_origin)

t = 0
max_t = 2 * np.pi
traj = []

while t < max_t:

    # Get Pose #
    achieved_pos = get_ee_pos()
    achieved_angle = get_ee_angle()

    if test_orientation:
        traj.append(achieved_angle)
        desired_angle = figure_eight(t, scale, angle_origin).flatten()
        update_pose_func(pos_origin, desired_angle)
    else:
        traj.append(achieved_pos)
        desired_pos = figure_eight(t, scale, pos_origin).flatten()
        update_pose_func(desired_pos, angle_origin)

    # Update Time #
    t += step_size

traj = np.array(traj)
ax.scatter3D(traj[:, 0], traj[:, 1], traj[:, 2], c='r', alpha=0.3)
plt.show()
#plt.savefig('tracking_plot.png')

THINGS TO TRY
examine_control(scale=0.3, update_pose_func=update_pose_cartesian, test_orientation=True)
examine_control(scale=0.3, update_pose_func=update_pose_joint, test_orientation=True)
examine_control(scale=0.3, update_pose_func=update_pose_cartesian, test_orientation=False)
examine_control(scale=0.3, update_pose_func=update_pose_joint, test_orientation=False)
examine_control(scale=0.5, update_pose_func=update_pose_cartesian, test_orientation=True)
examine_control(scale=0.5, update_pose_func=update_pose_joint, test_orientation=True)
examine_control(scale=0.5, update_pose_func=update_pose_cartesian, test_orientation=False)
examine_control(scale=0.5, update_pose_func=update_pose_joint, test_orientation=False)
`

I am currently trying to improve the current EE tracking as we are also experiencing similar issues internally.
However, I took a quick look at your script and noticed that you are calling start_cartesian_impedance and start_joint_impedance every timestep, which is not necessary and will slow down your timesteps since you are sleeping for a fixed amount of time.
Basically start_X_impedance sends a controller to Polymetis, and update_desired_X updates the desired states for that controller once it's running in Polymetis. (Sorry the documentation is not there yet, which will be worked on once the feature set is more stable)

The reason for those lines are that the impedance control dies periodically. When there is already an impedance controller running it causes an error promptly (which the try except block catches). In practice this has been a decent solution, but lmk if you have a better one!

try this:
try:
    robot.update_desired_X(...)
except grpc.RpcError:
    robot.start_cartesian_impedance()
    robot.update_desired_X(...)

Building off of this, I've had a great deal of success with the dm_robotics 6 dof control procedure in simulation, and I think it could be worthwhile for us to set this up together for Polymetis:
https://github.com/deepmind/dm_robotics/blob/48d5f0bfd76ad497faabd5823a25d89d4526b92e/py/moma/effectors/cartesian_6d_velocity_effector.py
Or alternatively, something like this:
https://github.com/deepmind/dm_control/blob/main/dm_control/utils/inverse_kinematics.py

One thought, could it partially be due to the default Kp values? Which I think are currently [150, 150, 150, 10, 10, 10]
I could be wrong, but this puts significantly more weight on position matching than orientation matching?

Sorry for the late response, but I'm working on some exciting changes that will bring the Cartesian tracking error down to less than 5mm and 3 degrees for position and orientation respectively. Will update this issue once the PRs are merged.
The translational gains and rotational gains operate on different units and thus differ drastically in scales. In fact, the value of 10 for the rotational gain already feels a lot stiffer than 150 for the translational gain. If you want to get into the math, 1cm (0.01m) positional error * 150 gain = 1.5 N force, while an approximately similar 3 degrees (0.05 rad) of orientation error * 10 gain = 0.5 N*m torque. That's 5 N force at the end of a 10cm (0.1m) long gripper.
The features I'm working on right now involves using IK to improve the position/orientation matching, so will definitely also look into dm_control and see if it improves upon our current implementation. Thanks!

Can’t tell you how happy I am to hear this! Do you have an estimate of when I can expect this :)
As for the IK, I posted a wrapper that abstracts away most of the troubles in another issue.
On another note, I found a lab with high quality orientation control on the franka, and figured I’d share their tips and tricks. All credit goes to Minho Heo.
“ Hi Sasha,
The impedance controller offered by Polymetis is not backed by OSC. You can take a look at the default controller they offer here https://github.com/facebookresearch/fairo/blob/main/polymetis/polymetis/python/torchcontrol/policies/impedance.py
I would recommend first trying the default controller they offer and see if the quality of the controller's rotation matches your requirements. In our case, since we needed complex manipulation, the controllers they offered were not enough, so we ported OSC from perls2.
If you want to port perls2 to Polymetis, the procedure you have to take is

You have to modify perls2 controller to follow torchcontrol interface like this https://github.com/facebookresearch/fairo/blob/main/polymetis/polymetis/python/torchcontrol/policies/impedance.py#L76

Basically define "forward" method (def forward(self, state_dict: Dict[str, torch.Tensor]) -> Dict[str, torch.Tensor]:), and compute joint torques here.

You have to modify/annotate all the code of your controller (and the method they are calling) to use Torch tensor, not Numpy array (which perls2 is using). This is because Polymetis JIT compiles everything and sends it to the real-time-capable workstation connected to the robot.

Note that the OSC controller requires more heavy computation, so you might encounter "communication_constraints_violation" errors. This is because your workstation could not compute torques using OSC in the robot's control loop interval (which is 1000Hz).
To handle this, we used some tricks. We repeated the same joint torques computed by OSC N times (our case 4) and only computed torques every N step.
Also, you might have to use a "good enough" CPU for a real-time-capable workstation (more than 4.6 GHz CPU speed).
If you have more questions, please feel free to ask!
Best,
Minho Heo”

I can't promise anything but hopefully very, very soon :). If you're building from source and would like to test out the current state, the branch is right here.
Also thanks for sharing the solutions other people are using, it's super helpful for development!

End-effector tracking improvements has been merged to main and uploaded to anaconda cloud!
Closing the issue now, feel free to reopen if you are still experiencing issues with the end-effector accuracy.

Could you share the inertial fields that you use for the franka when the robotiq gripper is mounted?

https://github.com/frankaemika/external_gripper_example/blob/master/panda_with_robotiq_gripper_example/config/endeffector-config.json works pretty well

Thank you!!


fix: destroy with no bundling

Fixes https://github.com/jetbridge/cdk-nextjs/issues/175
it works :)

@onhate, from build logs:
::error::Files were changed during build (see build log). If this was triggered from a fork, you will need to update your branch.

Try running yarn build, then pushing changes. That should fix issue.
For forks, projen CI template requires you to run yarn build for any doc changes (and function/class signature changes).


--clip-containing-box

I'm trying to clip out a section of a tileset (as opposed to clipping a bounding box around a tileset).
I tried inverting the box by swapping min and max values with --clip-bounding-box=60,60,-30,30, but I only get "Did not read any valid geometries".
Can we have a --clip-containing-box? Or can --clip-bounding-box be 'fixed' to handle this mild abuse of it's functionality?

There is not currently a way to invert the clipping like this. I can't prioritize this right now but will keep it on the list of future feature requests.


Cannot show gif pictures on idea 2021

It just showed my local gif locations.

Hmm, that is curious I have a couple of questions.

Can you give me information about your IDE? You can find it in Help -> About.
Here is mine as an example

IntelliJ IDEA 2021.3 RC (Ultimate Edition)
Build #IU-213.5744.202, built on November 24, 2021
Licensed to Alex Simons
Subscription is active until February 20, 2022.
Runtime version: 11.0.13+7-b1751.19 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 5.4.0-90-generic
GC: G1 Young Generation, G1 Old Generation
Memory: 8192M
Cores: 12
Registry:
    ide.color.picker.new.pipette=true

Non-Bundled Plugins:
    one.util.ideaplugin.screenshoter (1.7.1)
    io.unthrottled.theme.randomizer (0.2.1)
    io.acari.normandy.progress.bar (1.9.11)
    com.markskelton.one-dark-theme (5.4.0)
    com.jetbrains.ChooseRuntime (1.2)
    com.fwdekker.randomness (2.7.3)
    io.acari.DDLCTheme (21.0.0)
    io.unthrottled.amii (0.13.0)
    String Manipulation (<IP_ADDRESS>.1)
    IdeaVIM (1.8.1)
    Pythonid (213.5744.202)
    MavenRunHelper (<IP_ADDRESS>.3)
    UsefulActions (2.4)

Kotlin: 213-1.5.10-release-949-IJ5744.202
Current Desktop: ubuntu:GNOME

Are there any gifs in C:\Users\yourName\AppData\Roaming\Jetbrains\amiiAssets\visuals\ ?

1、IntelliJ IDEA 2021.2.2 (Community Edition)
Build #IC-212.5284.40, built on September 14, 2021
Runtime version: 11.0.12+7-b1504.28 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1955M
Cores: 8
Registry: ide.balloon.shadow.size=0
Non-Bundled Plugins: Statistic (4.1.7), com.jetbrains.CyanTheme (1.2), com.markskelton.one-dark-theme (5.4.0), com.hiberbee.intellij.hiberbee-theme (2<IP_ADDRESS>2), net.antelle.intellij-xcode-dark-theme (1.2.4), de.ax.powermode (100.001), com.jetbrains.darkPurpleTheme (1.2), GsonFormatPlus (1.6.1), org.sonarlint.idea (<IP_ADDRESS>716), jd-intellij (0.8.1), CheckStyle-IDEA (5.57.2), com.godwin.json.parser (1.4.2), ink.organics.pojo2json (1.1.0), net.vektah.codeglance (1.5.4), io.unthrottled.amii (0.13.0), com.alibaba.p3c.smartfox (2.1.1), OdpsStudio (3.7.1), com.codota.csp.intellij (4.2.10), com.thvardhan.gradianto (4.4), some.awesome (1.14), com.baomidou.plugin.idea.mybatisx (1.5.1), izhangzhihao.rainbow.brackets (6.21), cn.cloud.auto.restful.tool (1.4.4), me.jinghong.restful.toolkit (1.0.0), SequenceDiagram (2.1.3), com.bruce.intellijplugin.generatesetter (2.8), cn.yiiguxing.plugin.translate (<IP_ADDRESS>), zielu.gittoolbox (212.8.1)
Kotlin: 212-1.5.10-release-IJ5284.40
2、There are gifs in my directory

Also when I click the directory, it shows the information of the gif

Thank you for supplying this information. I'll look into a fix later this week. I suspect it has something to do with the 汉字 or the ' in your path, thanks!

Chinese can be excluded.

The new release works! Thanks very much~


correction sub-component path in windows when import to ngModule #1719 #1736

Due to ast-tool had been re-located. I closed PR #1736. and create a new PR.
this PR is to fix issue #1719.
Fix https://github.com/angular/angular-cli/issues/1719

@hansl LGTM

Please rebase after and add a unit test please.

@hansl can you have a look again?

LGTM. Thanks!


Adding Facebook Authentication

Description
@Abidsyed25 I have added the Facebook Authentication using Firebase.Make sure to allow Authenication of Fcebook in firebase. Kindly review this.
Fixes:  #200

Type of change

[ ] 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

Checklist:

[ ] I have made this from my own
[x] I have taken help from some online resourses
[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
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

ATTACH SCREEN-SHOTS / DEPLOYMENT LINK

@Abidsyed25 Kindly review the PR as the Gssoc is about to end in some days.


Event emitter is not capturing event with args on nested functions

Introduction
We are currently expanding our tests in hoprnet/hoprnet#2077 to include arguments to verify the proper emitting of the events in our contracts. In the past, we only verified that the events were called, but did not make sure that the arguments were indeed being passed properly.
When implementing .withArgs in hoprnet/hoprnet@58d2c88, the following error was thrown by<EMAIL_ADDRESS>when running hardhat test
.
This was unlikely as a quick console.log on both contracts and tests showed parameters were indeed being passed properly. My guess was that waffle-chai wasn't picking up events on nested calls, as I couldn't find any test that could verify this. Thus, I created #536, trying to replicate the error without success. Unfortunately, our contracts are on solidity ^0.8 so that might not be an effective way to replicate the issue.
Expected behavior
Given the following tests where the contracts had been mocked via ethers deployments.createFixtures, as seen here, verifying the emitting of a specific event using .withArgs should pick up the event with the proper arguments, as previously done successfully here.
await expect(channels.connect(accountA).fundChannelMulti(ACCOUNT_A.address, ACCOUNT_B.address, '70', '30'))
      .to.emit(channels.connect(accountA), 'ChannelUpdate')
      .withArgs(
        ACCOUNT_A.address,
        ACCOUNT_B.address,
        createMockChannelFromMerge(
          await channels.channels(ACCOUNT_AB_CHANNEL_ID),
          createMockChannelFromProps({
            balance: BigNumber.from(70)
          })
        )
      )

The smart contract function looks as follows:
 /**
     * @dev Funds channels, in both directions, between 2 parties.
     * then emits {ChannelUpdate} event, for each channel.
     * @param account1 the address of account1
     * @param account2 the address of account2
     * @param amount1 amount to fund account1
     * @param amount2 amount to fund account2
     */
    function fundChannelMulti(
        address account1,
        address account2,
        uint256 amount1,
        uint256 amount2
    ) external {
        require(amount1.add(amount2) > 0, "amount must be greater than 0");
        token.safeTransferFrom(msg.sender, address(this), amount1.add(amount2));
        if (amount1 > 0){
          _fundChannel(account1, account2, amount1);
        }
        if (amount2 > 0){
          _fundChannel(account2, account1, amount2);
        }
    }

which in turn calls the actual event emitter function _fundChannel:
/**
     * @dev Funds a channel, then emits
     * {ChannelUpdate} event.
     * @param source the address of the channel source
     * @param dest the address of the channel destination
     * @param amount amount to fund account1
     */
    function _fundChannel(
        address source,
        address dest,
        uint256 amount
    ) internal {
        _validateSourceAndDest(source, dest);
        require(amount > 0, "amount must be greater than 0");

        (, Channel storage channel) = _getChannel(source, dest);
        require(channel.status != ChannelStatus.PENDING_TO_CLOSE, "Cannot fund a closing channel");
        if (channel.status == ChannelStatus.CLOSED) {
          // We are reopening the channel
          channel.channelEpoch = channel.channelEpoch.add(1);
          channel.ticketEpoch = 0; // As we've incremented the channel epoch, we can restart the ticket counter
          channel.ticketIndex = 0;

          if (channel.commitment != bytes32(0)) {
            channel.status = ChannelStatus.OPEN;
          } else {
            channel.status = ChannelStatus.WAITING_FOR_COMMITMENT;
          }
        }

        channel.balance = channel.balance.add(amount);
        emit ChannelUpdate(source, dest, channel);
    }

Current behavior
The test currently fails, showing an AssertionError: Specified args not emitted in any of 2 emitted "ChannelUpdate" events. The event is clearly fired, but the arguments are not being picked up.
Possible solution
No current solution as #536 is passing.
Steps to reproduce
Within hoprnet/hoprnet@58d2c88, run yarn test:contracts test/HoprChannels.spec.ts. Within the current repository, I've been unable to replicate the error, although might be a disparity in solidity versions.
Additional information
Removing the .withArgs would return the test to green. This is relevant for in hoprnet/hoprnet#2078

Not a proper fix but some non waffle code that can match:
export const containsEvent = (receipt: any, instance: Contract, eventName: string, eventArgs: any[]) => {

    let res = false;

    let events = receipt.events
        // Only relevant address.
        .filter((x: Event) => x.address.toLowerCase() === instance.address.toLowerCase())
        // Parse Events.
        .map((e: Event) => { return instance.interface.parseLog(e); })
        // Only relevant event name.
        .filter((x: LogDescription) => { return x.name == eventName; });

    events.forEach((event: LogDescription) => {
        const inputParamTypes = event.eventFragment.inputs;
        const isMatch = event.args?.reduce((acc: boolean, currentValue: any, currentIndex: number) => {
            let localRes;
            if (inputParamTypes[currentIndex].type === 'address') {
                localRes = ethers.utils.getAddress(currentValue) === ethers.utils.getAddress(eventArgs[currentIndex]);
            } else if (inputParamTypes[currentIndex].type === 'uint256') {
                localRes = currentValue.eq(eventArgs[currentIndex]);
            } else {
                localRes = currentValue === eventArgs[currentIndex];
                console.log(`${eventName} arg ${currentIndex} ${currentValue} === ${eventArgs[currentIndex]}  ${localRes}`);
            }
            return acc && localRes;
         },  true);

         if(isMatch) {
             res = isMatch;
         }
    });

    return res;
}

Why this works and waffle's doesn't is that the event names are not coming from ethers, you have to parse with the Contract's interface first, and then the names are present and filterable:
.map((e: Event) => { return instance.interface.parseLog(e); })

I'm short for time but in maybe a month if this is not fixed I might be able to submit a pull request with a more internal waffle correction, are you guys accepting external pull requests?

@0xjjpa @NoahMarconi Is this still an issue for you?
Not sure what to do, given that:

https://github.com/TrueFiEng/Waffle/pull/536 is passing
our contracts are on solidity ^0.8
Waffle is on ^0.8 as well and the test is still passing

My workaround solved my use case. I haven't had to test a scenario like this since and don't know if it's been handled by the lib or not.
The problem I note above is when the event is from another contract and does not appear in the calling contracts interface.

The problem I note above is when the event is from another contract and does not appear in the calling contracts interface.

I see. In this case, you do it like this: (where library is the contract containing the events definitions and emitting them)


Can you provide a guide to use this?

Hi, can you please update the readme with detailed instruction using this package? Thank you.

Done! Thank you for send request


added ability to set initial active tab

added initialActiveTab property to the Tabs component, in order to be able set initial active tab other than first one

Thank you @zarezadeh !
I merged your PR. I did change two things thought:
initialActiveTab has been renamed to defaultValue to be more consistent to the React API.
As the Tab component has a name, and as this name is passed on the onChange callback, I preferred to instead of the index of the tab.
Check out this diff if you want to update your code :
- <Box flexDirection="column" initialActiveTab={1}>
+ <Box flexDirection="column" defaultValue="bar">
    <Box>
      <Text>
        {this.state.activeTab === 'foo' && 'Selected tab is "foo"'}
        {this.state.activeTab === 'bar' && 'Selected tab is "bar"'}
        {this.state.activeTab === 'baz' && 'Selected tab is "baz"'}
      </Text>
    </Box>

    <Tabs onChange={this.handleTabChange}>
      <Tab name="foo">Foo</Tab>
      <Tab name="bar">Bar</Tab>
      <Tab name="baz">Baz</Tab>
    </Tabs>
  </Box>

This has been released in 4.1.0

Thanks @jdeniau for your quick update
I will update my code with your suggestion, thanks again


Avatar Tool Settings dont save  / gone after Unity restart

I only copy certain things over from avatar to avatar and since the newest version 1.0 the settings dont save.

Potentially fixed


adding increase / decrease  functions

****This PR is based on PR no. 91 , once it's  merged will update

two view functions created :

increase quantity : which increases the product quantity by one when pressing on the + button from the supplier html page
decrease quantity: lowers the products quantity by one when pressing on the + button from the supplier html page

one test has been created for each function .

added two buttons to the supplier html file
closed #104

Please squash extra commits like 1
Add images about the progress if you can

@thetaxas2468
spot on with the comments, was thinking the same

Why would you use create method since there is save product method that is created
fixture from conftest.
no need to import it also, since its in the project file.

do tell if any help is needed.

Squash your commits 1 and last one and rebase on upstream/main since your first commit is merged
increase and decrease functions is on views but where do we use them in the front

91 is merged, please rebase on top of  main and possibly squash the commits, it'll make it much easier to review. I believe we would be able to merge it today as Karam provided a lot of good feedback.

You have the same problem as lior had in his closed PR about linkedin,check it out(the problem is about your commit maybe you have done commit --amend at the start or you have squashed your commit with the merged commit)


Create a mechanism for enumerating grammar mistakes

References #34
Integrate a method for counting the number of grammar errors.
Definition of Done: This task is done when the extension accurately counts the number of grammar errors present in an email

Extension accurately displays number of grammar mistakes
[t:20]


Nostr compatibility

After messaging with @gabohbeaumont , I'm happy to share my thoughts about the topic of making Mintter compatible with the basics of the nostr protocol, specially the ideas he already had in mind, such as embedding nostr notes as part of Documents (quoting?) or taking advantages of his network effect in form of comments or any other interactions between the 2 protocols. I'll focus on the first one for this issue.
One of the characteristics of nostr is that there is nothing that ensures the reliability of the data in the network. That's why I think that, from Mintter perspective and for this specific case, nostr should be considered as an ephemeral database.
It appears to me that this characteristic directly confronts the local-first policy of Mintter and its focus on the long term availability of the data, but I don't consider it as an issue or downside for an integration between the 2 protocols, just something to be always considered for design.
There is a lot of note types, and the bast majority of them are not related to user messages, I recommend as a first approach to only be compatible with "kind 1" notes (https://github.com/MintterHypermedia/mintter/issues/1455) and will try to explain some options for including them in documents:
URI Scheme
The protocol defines the way to work with specific URI scheme (https://github.com/nostr-protocol/nips/blob/master/21.md)
nostr:note1fntxtkcy9pjwucqwa9mddn7v03wwwsu9j330jj350nvhpky2tuaspk6nqc

The URI is an encrypted hash with the real public key and id of the note and (optionally) a list of relays where (potentially) this note can be found (https://github.com/nostr-protocol/nips/blob/master/19.md).
Any client with permissions to open this scheme will be able to open the note. This string can be parsed in the view just by removing the protocol section.
note1fntxtkcy9pjwucqwa9mddn7v03wwwsu9j330jj350nvhpky2tuaspk6nqc

Pros
Easy implementation and maintenance
Cons
As mentioned above, this is not compliant with the local-first policy. The note might disappear from the network at any moment, and even if some relays still stores it, the user might be out of their rage.
Raw Note
A raw nostr note can be included as part of the document, so there is no necessity for the user to access the resource or even be connected to the internet. Notes can be independently verified by using secp256k1 with sig and pubkey:
{
"id": "4376c6...3ed6a65",
"pubkey": "6e46842...15deee93",
"created_at":<PHONE_NUMBER>,
"kind": 1,
"content": "Walled gardens became prisons, and nostr is the first step towards tearing down the prison walls.",
"tags": [],
"sig": "908a15e46...6f009262"
}

A new type of Block can be implemented to make this note accessible for the user.
Creator: 6e46842...15deee93

"Walled gardens became prisons, and nostr is the first step towards tearing down the prison walls."

You might have noticed the only information about the creator is the public key. Mintter would need to access the network  to obtain a new note kind with creator's profile, with the exact same the disadvantages mentioned above for notes. My suggestion is to make all references to secondary notes a URI Scheme link.
Creator: nprofile1elfc...a8qzvjptg

"Walled gardens became prisons, and nostr is the first step towards tearing down the prison walls."

Mintter will require to dynamically calculate the bech32 scheme to make it compatible with clients, but that's something can be calculated offline.
Pros

It works offline and does not depend on the network.
The document contains all the critical information and context.

Cons

Complex implementation
References to other notes will require specific solutions

References to other notes
A note can reference other notes in different ways. There are 2 basic cases:

User mentions: The user can mention other users (https://github.com/nostr-protocol/nips/blob/master/27.md) as part of the message. The same solution mentioned above for creator's pubkey might also work for this case.

Creator: npub10elfc...a8qzvjptg

"Hello @nostr:nprofile1qqs...g49ehqj6f9dh"

Re-posts: The user can re-post other notes (https://github.com/nostr-protocol/nips/blob/master/18.md) with or without a comment about it. This is a very specific case where maybe part of the context will be lost but, as mention above, obtaining other notes will lead to the same problems. When a nostr client can't find a re-posted note, a visual feedback is displayed together with a URI Scheme link. I consider it a "fair enough" solution.

Creator: npub10elfc...a8qzvjptg

"This is true"

nostr:note1f8c8ba...4cf5dfb43f4d

Insert Notes
It's really difficult for a nostr user to spot and obtain a raw note. Usually, everyone works with bech32 or id and leave to the client the job of finding it out.
To help in UX, I propose to create a new command to insert nostr notes. The user will input the id/bech32 of the note and Mintter will do its best to obtain the note.
Workflow

The user types the /nostr command and a new nostr block appears in the document
The user inputs the note id or bech32 string.
If it's an id, Mintter should have a  static list of trustable relays to connect and try to find the note
If it's a bech32 string, Mintter will connect to the included list of relays, if the note is not found, the logic can fallback to step 3.
The note will be inserted into the document.

Further Considerations

What should Mintter do if the note can't be found?
Is it okay to include external dependencies to work with nostr logic?
What happens to the insert command if Mintter is offline?

There is a lot of note types, and the bast majority of them are not related to user messages, I recommend as a first approach to only be compatible with "kind 1" notes (https://github.com/MintterHypermedia/mintter/issues/1455) and will try to explain some options for including them in documents:

Another interesting option would be to use highlights or quoting (kind9802), this is a new nip that is not yet merge in the main, but it is widely used in the ecosystem (highlighter.com , habla.news , coracle , and amethyst implement it) This kind allows to highlight a range of text, as described here: https://github.com/nostr-protocol/nips/blob/adedce709433887d1f36b24723d70ba4a253c946/84.md Being ideal for any application that wants to author text fragments, among others.

The protocol defines the way to work with specific URI scheme (https://github.com/nostr-protocol/nips/blob/master/21.md)
nostr:note1fntxtkcy9pjwucqwa9mddn7v03wwwsu9j330jj350nvhpky2tuaspk6nqc

The URI is an encrypted hash with the real public key and id of the note and (optionally) a list of relays where (potentially) this note can be found (https://github.com/nostr-protocol/nips/blob/master/19.md).

The nip19 entities that store information about relay hints are not the note1... but the nevent1... you can check it here and you can also use a debuggin tool that I recommend to use during the development process https://nak.nostr.com/ Here you can enter anything related to nostr to make a breakdown of it, as well as all the nip19 entities.
Another debugging tool that can be useful is https://nostrdebug.com/ to check notes on relays and other utilities.

References to other notes
A note can reference other notes in different ways. There are 2 basic cases:
* User mentions: The user can mention other users (https://github.com/nostr-protocol/nips/blob/master/27.md) as part of the message. The same solution mentioned above for creator's `pubkey` might also work for this case.

Creator: npub10elfc...a8qzvjptg

"Hello @nostr:nprofile1qqs...g49ehqj6f9dh"

You are mixing old and new standards here, the URI scheme is standardised by using only the nostr: prefix. (not @nostr:)

Insert Notes
It's really difficult for a nostr user to spot and obtain a raw note. Usually, everyone works with bech32 or id and leave to the client the job of finding it out.
To help in UX, I propose to create a new command to insert nostr notes. The user will input the id/bech32 of the note and Mintter will do its best to obtain the note.
Workflow
1. The user types the /nostr command and a new nostr block appears in the document

2. The user inputs the note id or bech32 string.

3. If it's an id, Mintter should have a  static list of trustable relays to connect and try to find the note

4. If it's a bech32 string, Mintter will connect to the included list of relays, if the note is not found, the logic can fallback to step 3.

5. The note will be inserted into the document.

There is another consideration that may increase the rate of missing notes found:
Workflow
 1. The user types the command /nostr and a new nostr block appears in the document.

 2. The user enters the id of the note or the string bech32.

 3. If it is an id, Mintter should get the author's list of preferred relays (kind10002 and kind3) and preferably search in these relays.

 4. If it is a bech32 string with relay hints, Mintter will connect to the included list of relays; if the note is not found, the logic can go back to step 3.

 5. The note will be inserted into the document.

Also, a good way to try to improve the rate of lost notes found is that when mintter finds a note it re-broadcasts it to a list of trusted relays.
In any case, good proposal to join mintter and nostr, I'll keep an eye out if I can help in any other way.

using only the nostr: prefix. (not @nostr:)

Yeah this was a very bad way to try to show how it will look like on the interface, not a real example 😅


[GearsAPI] Add support for check and changing password and configuring 2FA

Password change is already merged. Closing in favor of https://github.com/CartoDB/cartodb/issues/14425


improve install instructions

added info on autotools and info regarding judy

 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.


[BUG] Storybook example for ProductCardHorizontal has bug for hover links

Describe the bug
Storybook -> ProductCardHorizontal -> Common [OK]

Storybook -> ProductCardHorizontal -> With 2 Pictures [button hover background bug]

Buttons are next to each other and hovers all green (color--primary)
How to reproduce
Steps to reproduce the behavior:

https://storybook.storefrontui.io/?path=/story/organisms-productcardhorizontal--common
https://storybook.storefrontui.io/?path=/story/organisms-productcardhorizontal--with-2-pictures

Expected behavior

Should links 'save for later and 'add to compare' be primary text color instead of primary background color ?
Should links be positioned one by one instead next to each other ?

Code examples
Story examples for templates #actions

common

          </template>
          <template #actions>
              <SfButton
                class="sf-button--text desktop-only"
                @click="$emit('click:add-to-wishlist')"
                style="margin: 0 0 1rem auto; display: block"
              >
                Save for later
              </SfButton>
              <SfButton
                class="sf-button--text desktop-only"
                @click="$emit('click:add-to-compare')"
                style="margin: 0 0 0 auto; display: block"
              >
                Add to compare
              </SfButton>
          </template>

with 2 pictures

        <template #actions>
          <div>
              <SfButton
                class="sf-button--text color-primary desktop-only"
                style="padding-bottom: 1rem"
                @click="$emit('click:add-to-wishlist')"
              >
                Save for later
              </SfButton>
              <SfButton
                class="sf-button--text color-primary desktop-only"
                @click="$emit('click:add-to-compare')"
              >
                Add to compare
              </SfButton>
          </div>
          </template>

I think "with 2 pictures" should have #actions slot example same as common story example
I can fix this.

@daksamit Yes you are right. I assign it to you. Thanks for noticing.


Unable to log HTML elements

I have an MVC4 site with a controller action that has [ValidateInput(false)] and
Exception filter as below, in the exception Message I have HTML tags.
When an exception is thrown inside that action, elmah does not log the exception.
Elmah throwing an exception about "a potentially dangerous request....."
public class CustomExceptionFilterAttribute: HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
ErrorSignal.FromCurrentContext().Raise(filterContext.Exception);
}
}
is there any workaround to log HTML elements in Elmah ?

This is a duplicate of #217.


Click states of Mac

Updates how clicking is done in Mac.
Single click type clicks get a click state of 1
Double click type clicks get a click state of 2
Triple Click type clicks get a click state of 3
Simply clicking something 3 times doesn't mean that it's a "triple click". In this case, calling click with a click number of 3 would result in 3 clicks of click state 1.
https://developer.apple.com/documentation/coregraphics/cgeventfield/kcgmouseeventclickstate?language=objc
This fixes #370

I noticed the #358 also exists. However, that solution won't work if you are doing multiple clicks of different things in rapid succession. There is a difference between clicking things multiple times and "double" and "triple" clicking something.

Ok, so you inspired me to look into this further and i believe i found a solution that works for my mac.  Try out my branch, https://github.com/asweigart/pyautogui/pull/375 and let me know if it works for you.

Hey! Sorry, it took so long for me to get back. I tried your branch and it works for me. Thanks!


update champ scroll rate to account for the 4 hellhounds

i would rather add the hellhounds as minions and roll the correct scroll drop rate on their table


Support for shared private Google sheet as reference CSV

e.g.
>>> import requests
>>> response = requests.get('https://docs.google.com/spreadsheets/d/REDACTED-REDACTED/edit?usp=sharing')
>>> response.status_code
200
>>>

https://newbedev.com/python-download-files-from-google-drive-using-url


proc.require() doc

Sorry, I wrote some doc only afterward.
I don't know why Git says  src/FuseProcess.ts was modified again - if needed, just c/p the help-text and "refuse" this PR.
Please, do not hesitate to rephrase, reformat, etc.

Cool, thanks i will merge it soon, after editing a bit =)

Indeed, after I changed as we need the module's FuseBox export to access the "files" from the bundle. I would still wait for the resolution of the export stuff before finalizing the arguments - I have the impression it would change a lot.
Here, I changed also the callback given to require for it not to be a function but an options object (with the callback) to let expansions possible

There are some conflicts.

Replaced by https://github.com/fuse-box/fuse-box/pull/546


add fiber to libraries.htm

No need here either, this file is going to be automatically generated really soon (probably this week).


Add support to automatic/on prompt collapsing/expanding multiple layers of a JSON

As it is, you need to manually collapse every item of the read object. This can become a chore really quickly if you have a large object with several properties or indexes in arrays.
This issue aims to have options/buttons to remedy this problem.
The button version of this implementation could have two options: one for collapsing/extending the next layer and one toggle button to collapse/extend all layers.
The options menu of this implementation would offer a checkbox to auto-collapse all layers upon loading and a dropdown menu to select which layer you would like to collapse all content to. The reason for layered collapsing is because usually the first 1 or 2 layers of a JSON will always be the same (data/message/response) and not worth collapsing further down.

From the README:

Ctrl-clicking (Command-clicking on MacOS) on the '-' or '+' will, rather than toggling the item you're clicking on, instead open or close every item immediately contained within this one, which makes it very easy to see a list of the properties of an object, or the members of an array.

Does that do what you want?

Does that do what you want?

Nope.

The button version of this implementation could have two options: one for collapsing/extending the next layer and one toggle button to collapse/extend all layers.

The idea was to have [+] and [-] buttons to expand or collapse a whole level of indentation and the other to collapse/extend the entire JSON to the minimum/maximum.
Either way, I'm gonna close this issue as I just ended up using a GUI tool like Postman, no longer use the extension and see no reason to get you to work on a feature I have no intention of using anymore.


Mach-O takes a long time for initial open

Opening the file causes a UI hang for ~1 minute before analysis starts
Repro steps:

Download https://folivora.ai/releases/BetterTouchTool.zip
Extract BetterTouchTool.app/Contents/MacOS/BetterTouchTool
Open it in binja
Notice the UI hangs on open

Most of the time is spent in type library code

This should be largely fixed as of 4.3.6564 its at least 500% faster


simplify getitem, fixing shape error in case of object dtype

might have slight performance penalty

should fix #236

ok, this  reverses a change made in 185153f775bc1cb229351047a3b4b84a78b03232, which consists of a bunch of performance related fixes...

@arjenve: the problem was in the if number.shape - number would not be a numpy object if array was of object type..I don't see another way to fix this than using new_quantity (well copying its code verbatim); is this ok (with the call)?


Add the Mirror node

This node should take in vector data, a boolean for "Mirror X", and a boolean for "Mirror Y". The centre of transformation should probably be around the pivot (indicated in the document with a blue circle inside another blue circle).

If both mirror x and y are active, 4 copies of the vector data will be output. The default values should be true for mirror x and false for mirror y. This is similar to the mirror node in blender.
A guide to the node system can be found https://github.com/GraphiteEditor/Graphite/blob/master/node-graph/README.md - if you have any questions please ask in the discord chat.
Steps:

Define a new node that just outputs the vector data that has been input (to ensure nodes are set up properly). This is similar to the circular repeat node.
Compute the pivot position of the vector data using the appropriate function. You can log this to ensure that it is correct.
Clone the subpaths in the vector data and mirror all of the positions around the computed pivot. You may need to modify the bézier_rs library and the VectorData struct.

Hey, I'd like to work on that issue :)

@unholyleona If you need any help, feel free to submit a draft PR.

@skoriop please comment "Ok" so I can assign you to this issue.

Ok


About how to help merge PRs

Hi @m-novikov , is there something I can do to help merging PRs more efficiently? Please let me know if you have any feedback or suggestions :)

This mostly question of my personal time :) I'll plan to review and merge it by the end of this week.
I also wanted to ask what is your use case for the project, because I plan to introduce some changes while working on #42

I merged a couple some PRs, please rebase existing to the latest main.

This mostly question of my personal time :) I'll plan to review and merge your PRs by the end of this week. As I don't have too much time and don't want to block you I'll probably add comments and merge them regardless creating follow up issues. I also wanted to ask what is your use case for the project, because I plan to introduce some changes while working on #42

I already understand your situation, I also work here on weekdays, so my PRs will be quite a lot :)
My use case is to parse real-world SQL files then do some analysis on the parse tree. So I'd like to make contributions to make it support as more PostgreSQL grammar as possible, and produce better parse tree and less parse errors.
And by now, I mainly follow the grammar defined in PostgreSQL's docs.
By the way, the ideas described in #42  are great, I fully support such a plan.

Hi @m-novikov
I just rebased #40 and #41 , please help review again at your convenient, thanks!


Complete form component

Currently implemented as separate forms due to lack of inputs[] and buttons[] arrays support


net: ipv6: tcp: unexpected reply to malformed HBH in TCP/IPv6 SYN

If Zephyr receives TCP/IPv6 SYN with malformed Hop-by-Hop having wrong length, it replies with ICMPv6 Destination Unreachable (Port unreachable). Since the length of Hop-by-Hop option is wrong, Zephyr should instead send ICMP parameter problem message or silently drop the packet.
Note that it this packet is dropped for ICMPv6 and UDPv6.
bad-hbho-len.pcap.gz

@rmstoi can you check this one, I fixed the TCP option calc len which hopefully fixes this.

@jukkar I checked it still fails. The problem is that unknown option 0x42 in HBH has wrong length, and because of this packet must be dropped.

We can have this for 2.0 so adjusting target.


Add Keycloak for user-management/security

-create roles
-create users
-add securityconfig in java project

basic config done another issue will come for securing the api calls


Macos release setup

Codecov Report

Merging #3 into master will increase coverage by 0.17%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master       #3      +/-   ##
==========================================
+ Coverage   87.71%   87.89%   +0.17%
==========================================
  Files           8        8
  Lines         342      347       +5
==========================================
+ Hits          300      305       +5
  Misses         42       42

Impacted Files
Coverage Δ

HCalculator/Views/ContentView.swift
83.10% <100.00%> (+0.46%)
:arrow_up:

HCalculator/Views/HButton.swift
100.00% <100.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 7c8b707...4ccee01. Read the comment docs.


Add Podspec for Cocoapods

Tested working using local path reference in Podfile. (pod 'XMLParsing', :path => '/path/to/XMLParsing')
TODO (Before merge):

[ ] Update version in Podspec if necessary
[ ] Verify/Update deployment targets (what about tvOS? watchOS?)

TODO (After merge):

[ ] Add a new tag for initial release (Matching Podspec version)
[ ] pod spec lint to verify it works
[ ] pod trunk push to publish to cocoapods (Will need to pod trunk register if you've never published to cocoapods before)

Any update on when this will be released as a Pod? I am considering making this a dependency of another project. If anyone needs assistance feel free to let me know.


CFBundleDisplayName can't handle UTF-8

when CFBundleDisplayName is NOT English, ipa.info[:CFBundleDisplayName] failed:
[!] undefined method []' for #<AppInfo::Parser::InfoPlist:0x00007fcc01131e90> (NoMethodError) 	from /private/var/root/project/iOS/fastlane-kit/GeneralFastfile.rb:16:in chdir'
from /private/var/root/project/iOS/fastlane-kit/GeneralFastfile.rb:16:in get_ipa_info' 	from Fastfile:202:in block (2 levels) in parsing_binding'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/lane.rb:33:in call' 	from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:49:in block in execute'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:45:in chdir' 	from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:45:in execute'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane' 	from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/command_line_handler.rb:36:in handle'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/commands_generator.rb:108:in block (2 levels) in run' 	from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in call'
from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in run' 	from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in run_active_command'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in run!' 	from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in run!'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/commands_generator.rb:349:in run' 	from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/commands_generator.rb:41:in start'
from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in take_off' 	from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.130.0/bin/fastlane:23:in <top (required)>'
from /usr/local/bin/fastlane:22:in load' 	from /usr/local/bin/fastlane:22:in '

Sorry, i wrote incorrect usage, for your case, you can call ipa.info.display_name etc which i was wrapped ones. Anyway if you want call unwrapped key, try ipa.info.info['CFBundleDisplayName'](no symbol key accepted). i will solve in next version.
Thanks for feedback.

Fixed and released v1.1.1

Fixed and released v1.1.2

Reopen if any issues


Jenkins

For the weekly GPU job on main, run pip install -U . to upgrade any dependencies. This matches how our cpu tests work, grabbing the most recent versions of our dependencies (rather than relying on cached dependencies)

As part of this PR, we're dropping support for torch version 1.12.0, owing to issue #162. that bug should be fixed in subsequent releases.


All not implemented methods should raise exceptions

I don't think it is a good idea to pretend that not implemented methods work and simply return a dummy value, e.g. null.
Methods like
@Override
public CallableStatement prepareCall(String sql) throws SQLException {
    System.err.println(" ********************* not implemented @ " + DebugPrinter.getFileName() + " line " + DebugPrinter.getLineNumber());

    return null;
}

should be converted to
@Override
public CallableStatement prepareCall(String sql) throws SQLException {
    throw new UnsupportedOperationException("Not implemented yet");
}

Reasoning: it's way easier to debug. I just tracked down a NullPointerException because a prepared statement was null altough it should not have been. An exception about the method not being implemented would have helped.

+1
I can implement this change if desired.

@jhannes Go ahead! 👍

Raising exceptions for most unimplemented methods is a good plan, however I think that there might be a few that are harmless - maybe status methods that return something useless rather than a valid status??
That is, I think that I occasionally see "not implemented" flash by but they don't seem to have any effect on the application (and, of course, I don't have any examples to hand).
Should be obvious if such cases exist, but it does make these changes more than a find/replace or sed substitution.

@ergouser I've worked my way through ResultSet. There are a number of methods in ResultSet where the spec allows for SQLFeatureNotImplementedException, and I've used that in these cases. I've left a few  warnings, for example for getTimestamp(int, Calendar).
Luckily all the updateXXX could be corrected with some editor shortcuts. :-)
Feel free to chip in on methods that should behave differently.

@jhannes Looks good.  I was thinking of methods like that and setFetchSize where ignoring the failure is (mostly) harmless.

I have added implementation or exception for pretty much everything now. I've added TODOs for all remaining System.err lines. I think the issue can be closed, but I'd like a review from @donv, @ergouser and @githubnemo first.
To review:

TODOs saying "Evaluate if implementation is sufficient" - delete the comment and System.err if you think so
All 67 TODOs if there's anything especially strange
"throw new UnsupportedOperationException" (I have not updated SQLDroidClob, so there are 30 places where I added this). Are there any places where a noop would be better?

I don't have time to test this or build the tests, but I just hate to see the amount of effort expended in that method and then it just throws...
Blob:   	public byte[] getBytes(long pos, int length) throws SQLException {
add:
if (pos >= b.length ) {

 throw new SQLException("pos must be < blob length");

}
if (length > b.length ) {

 throw new SQLException("length must be < blob length");

}

Replace:
  throw new UnsupportedOperationException("getBytes implementation only supports return full byte array");

//not horribly efficient for a very large blob, but it should return a value
byte[] tmp = new byte[length];
System.arraycopy(b, pos, tmp, 0, length);
return tmp;

@ergouser Good idea, although it's not really part of this bug. :-) I've added assertions to a test and your implementation.
System.arraycopy may be slow for large values, but there is no other way to create a new byte array, so this has to be the implementation

There seem to be a few methods in Blob that would not be difficult to implement, but probably best left for another time.  Unrelated: there's enough activity that I'm starting to feel guilty about neglecting the non-Android portion.  The version I'm using works well, indeed I use the code as much off-Android as on, but it's been a while since I updated my installation.  I seem to be the only person who really cares about desktop platforms, but in fact SQLDroid is about the best JDBC driver for SQLite on any platform.

@ergouser Let's leave the Blob implementation for another issue.
I think most of the activity is my frequent commits, so I wouldn't feel too guilty if I were you. :-)
However, I think you just blew my mind: Do you use SQLDroid on non-Android Java implementations as well? That's awesome! How do you do it?

It uses JNA and the native code provided by SQLite.
Basically, build a jar, say "SQLDroidCompat.jar" from:
compat/android
add that, the jna.jar and the appropriate .so, .dll, etc.for you platform from the SQLite website to your project (as well as the SQLDroid jar).
I've used it on Windows (32 & 64) and Linux. We generate code that works on pretty much any platform, including Android.  Any JDBC driver should work, but using the same driver ensures compatibility.

This is a great feature and should be documented and linked from the README.  Can you do that @ergouser ?  Any format will do, but I think I would prefer a Markdown (.md) file in a doc folder.
Build instruction, a simple example, and a link to where one can get the jna.jar should do it.

I've created a new issue (#73) to track this.  I won't have time for it for a little while, but I'll try to get back to it whenever I can.


Health pack esp color won't change and is always 255, 0, 0, 255 (Red)

Fedoraware Version Date: April 5 2022 10:56:21
Config used:
https://files.catbox.moe/rtaxom.fed
It works with any config, maybe
Description:
Health pack esp color won't change and is always (255, 0, 0, 255) (Red)
Steps to reproduce:

[✔] I am able to consistently reproduce this error

Steps to reproduce the behavior:

Make a config
Change the health pack esp color to any other color other than red
Save config
Load config
Health pack esp color will be still red

Additional context

[✔] I have included the steps to reproduce to the best I am able to share.

Please upload the config not to catbox.moe whatever tf that is.

It is literally on catbox

Fixed