ospray_create_library broken when including ospray as library

When moving from OSPRay 1.7.3 to 1.8.5, we now get these errors for ospray_install_library(), which is called by ospray_create_library():
 CMake Error at third-party/ospray/install/lib/cmake/ospray-1.8.5/macros.cmake:204 (install):
   install EXPORT given no DESTINATION!
 Call Stack (most recent call first):
   third-party/ospray/install/lib/cmake/ospray-1.8.5/macros.cmake:295 (ospray_install_library)
   src/ospray/CMakeLists.txt:71 (ospray_create_library)

It appears that we hit this because OSPRAY_CMAKECONFIG_DIR is not set (see macros.cmake line 205). I'm not sure we should need to define this, since we're not installing OSPRay cmake foo, rather just our own (or maybe we should be?).
If I set OSPRAY_CMAKECONFIG_DIR to a reasonable value, the cmake config succeeds, but at makefile generation I get errors about all our non-OSPRay components:
CMake Error: install(EXPORT "ospray_Exports" ...) includes target "gxy_renderer" which requires target "gxy_data" that is not in the export set.

 CMake Error: install(EXPORT "ospray_Exports" ...) includes target "gxy_renderer" which requires target "gxy_framework" that is not in the export set.

 CMake Error: install(EXPORT "ospray_Exports" ...) includes target "gxy_sampler" which requires target "gxy_data" that is not in the export set.

 CMake Error: install(EXPORT "ospray_Exports" ...) includes target "gxy_sampler" which requires target "gxy_framework" that is not in the export set.

It seems to me that the ospray_create_library() macro now has some OSPRay-only assumptions built into it, such that external components can no longer use it.

I emailed this issue to Jeff and Carson a while back, but adding it here so that this use case doesn't get lost. I'm not sure whether OSPRay claims to follow semantic versioning principles, but it is frustrating as a user for the behavior of install-exposed functionality (e.g. the macros included in lib/cmake/ospray-x.y.z) to change in a backward-incompatible way on a minor version increment. I understand that under the new cmake implementation, much has changed. I would appreciate if including libospray etc within another application via cmake find_target was included in your regression testing to catch cases like this, or if the breaking was intentional and the macros are now deprecated, that they be marked as such and that backwards-incompatible changes are saved for major releases (like the upcoming 2.0 :-) )

Here is a minimal reproducer that will succeed with OSPRay 1.7.x and fail with OSPRay 1.8.x.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.9)
project(cmake-reproducer VERSION 0.0.1)

find_package(ospray)
if (ospray_DIR)
  set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${OSPRAY_CMAKE_ROOT})
  include(macros)
  include(ospray_macros)
  include(ispc)
  include_directories(${OSPRAY_INCLUDE_DIRS})

  ospray_create_library( cmake-reproducer CmakeReproducer.cpp
                         LINK ${OSPRAY_LIBRARIES}
                         COMPONENT lib
                       )
endif(ospray_DIR)

CmakeReproducer.cpp:
#include <iostream>

#include <ospray/ospray.h>

void
force_ospray_library_load() {}

int initialize (int argc, char** argv)
{
  std::cout << "cmake reproducer initializer called with " << argc << " arguments\n";

  force_ospray_library_load();
  std::cout << "ospray library loaded\n";

  return 0;
}

Hi Paul,
Yes, semantic versioning is what represents our published public C-API: everything found in ospray.h follows this versioning scheme.
Once you start depending on our internals (CMake, C++, and ISPC), backward compatibility is much less stable as this is more difficult to guarantee. We use ospray_create_library() mostly to setup install target components correctly so our RPMs and installers contain the right division of installed contents, which is targeted at that use case only.
Consuming OSPRay itself does not require anything special with CMake in order to use, and we added modern CMake targets with v1.8.0 to make that even easier (usage documented here). We recommend that downstream projects use "plain CMake" as much as possible. The CMake targets we export are the most "future proof" way to accept OSPRay internals beyond the main ospray::ospray C-API target.
With this in mind, you can compile your reproducer with:
cmake_minimum_required(VERSION 3.9)
project(cmake-reproducer VERSION 0.0.1)

find_package(ospray REQUIRED)

add_library(cmake-reproducer CmakeReproducer.cpp)
target_link_libraries(cmake-reproducer ospray::ospray)

A separate issue is use OSPRay for our ISPC macros to compile for potentially N different architectures, and whether you depend on OSPRay's compiled in targets or are doing this all application-side (what I think Galaxy is probably looking for).
The easiest way to get at our internals from an install is to include ${OSPRAY_USE_FILE}, which looks like:
cmake_minimum_required(VERSION 3.9)
project(cmake-reproducer VERSION 0.0.1)

find_package(ospray REQUIRED)
include(${OSPRAY_USE_FILE})

add_library(cmake-reproducer CmakeReproducer.cpp)
target_link_libraries(cmake-reproducer ospray::ospray)

This will bring in the ispc and macros files that we use to encapsulate some of these things. I recommend that you use the ISPC targets compiled into OSPRay (that come into scope with ${OSPRAY_USE_FILE}) as you have to keep your targets compatible with whatever Embree was compiled with, which OSPRay takes care of.
However, if you want to have a different target list than what OSPRay was configured with (at your own risk), then follow the same procedure we do when configuring OSPRay based on what Embree we found at CMake time (code here).
Hope this helps,
Jeff

Jeff,
Thank you for the quick reply and the potential fix. I will verify that this works in the larger Galaxy build without unintended side-effects. Also, thank you for the tip about OSPRAY_USE_FILE, it is certainly our intent to use the same ISPC / Embree that OSPRay uses!
I am glad to hear that OSPRay does follow semantic versioning principles. Please accept a bit of feedback from an OSPRay customer: to us, everything that is deployed by make install is part of your interface, whether intentional or not, and this includes the cmake that is deployed in lib/cmake/ospray-x.y.z. Indeed, that is a customary spot for software to deploy helpful cmake scripts, so I am surprised that you characterize them as "your internals". You are making an affirmative decision to deploy them via install, after all :-) If they are only needed at OSPRay build time within the OSPRay cmake environment (which, by your discussion above, appears to be your intent), may I suggest removing them from the OSPRay install so that your customers do not inadvertently use them in a way you do not intend to support. My $0.02.
All best,
Paul

Yeah, I definitely hear you loud and clear. I mostly default to "the customer is always right", so feedback well taken. :)
What Galaxy depends on is really the infrastructure used to extend ospray::ospray_module_ispc from an install, which we have no documentation on. Simply documenting "this is how you get at our ISPC macros with the least likely chance of us breaking you" could have gone a long way here.
Given how much CMake refactoring that has been done for OSRPay v2.0 (what's on devel thus far), depending on our CMake is probably easier to keep stable between versions. So maybe this can be something to officially track in future releases (and document!).
What REALLY needs to happen way more than anything else: ISPC needs to have 1st-class integration into CMake so you can just add .ispc files to add_library() and add_executable() and not bother with CMake macros that do this manually. Similar work was done to do this with CUDA .cu files recently (done by the one and only @robertmaynard), so it's totally doable as long as someone actually sits down and does it. (!) Then everyone could benefit equally, not just OSPRay. :)
For now though, the contents of ispc.cmake and use of the ospray_add_library() (which does the cpp/ispc compile split, a terribly named macro) are the smallest necessary pieces to work with. Perhaps only working with ospray_ispc_compile() is even safer.

Thanks for the additional suggestions, we'll look to streamline our dependence on these. I appreciate that much of this is work-around to integrate ISPC into cmake... do they have a ticketing system where I could pester them instead of you? 🤔 😄 😉

Closing this here as ospray_create_library() was removed in v2.0.0-alpha.
The new ispc_target_add_sources() macro is much more flexible and minimally invasive (as well as better named).

Note that ispc_target_add_sources() appends sources already specified on the given target name, and can contain both C++ and ISPC source files (i.e. you can omit sources when creating the CMake target and specify all of them through this macro, if you so choose).


Set up CI with Azure Pipelines for Node.js application

[skip ci]

 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.:x: nishesh-goel sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

All Good


Parse until error, still retrieve parsed file info

Even when encountering an error, I'd like to be able to get the parsed file data up to that point. Perhaps this could be implemented as a configuration option, in which case the results of parse() would include an error key with the error data rather than actually throwing an error.

Hey @ericbiewener! We really appreciate you taking the time to report an issue. The collaborators
on this project attempt to help as many people as possible, but we're a limited number of volunteers,
so it's possible this won't be addressed swiftly.
If you need any help, or just have general Babel or JavaScript questions, we have a vibrant Slack
community that typically always has someone willing to help. You can sign-up here
for an invite.

https://github.com/babel/babylon/issues/347 would probably address your request in a more general way. I think it's a reasonable feature request, but it's hard to say if there is anyone interested in working on that at the moment.


theme: add type for component overrides

Hey, I just made a Pull Request!
Fixes #18422. This introduces a way to globally register component override keys through module augmentation. Since we've only done style overrides I figured we'd stick to that for now. If we at some point want to allow for prop and variant overrides I figured we could add a separate type that allows that to be augmented. Was striving to keep it simple for now.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

+1 to the suggestion of adding some docs, even if it's just something in this PR. I can run with that and up date the Aperture theme in the Demo site once this goes out in a next release and then we can point to that as a solid example 🚀

Dunno if docs are needed here tbh, the theme creation part is kind of supposed to just work, and on the declaration end we don't have docs and tbh dunno if we should at this point


Add links to videos to README

Add a couple links to videos to the README

LGTM

Ahh, I totally forgot that we had a link to the youtube playlist.
On Fri, Feb 24, 2017 at 1:25 PM, Doug Davis<EMAIL_ADDRESS>wrote:

@duglin commented on this pull request.
In README.md
https://github.com/kubernetes-incubator/service-catalog/pull/414#discussion_r103001405
:

@@ -38,6 +38,11 @@ services like message brokers that exists somewhere in a simple way:
application configuration primitives in Kubernetes: Services, Secrets, and
ConfigMaps.

+Video links:
I just don't think they should be spread out with some video links up top
and others down below. Just want them all in one spot - no opinion on where
in the doc.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes-incubator/service-catalog/pull/414#discussion_r103001405,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAWXmHdxKFxnEAScd4OxVOJ16GLa3B3gks5rfyCsgaJpZM4MLeJw
.

LGTM
@pmorie rebase needed

merging now


[Build] Building Ratex with PyTorch v1.12.0

PyTorch has just released v1.12.0 on their GitHub. As the latest stable version we might want Ratex to stick to this version for a while. Notice that if we want to use this version of PyTorch, the Install from PYPI solution in QUICKSTART.md does not seem to work right now because the latest libtorch version is already 1.13. This should work after PyTorch releases the stable libtorch v1.12, but right now if we want to use Ratex we need build PyTorch from source.
I tried to build and run Ratex with this version of PyTorch today. Here is the list of problems I have encountered and some of my fixes.
Build Setup

Ubuntu 18.04 with Anaconda 3 and CUDA 11.3.
Build PyTorch from source using v1.12.0 on GitHub, then build Ratex on top of it.

Issues and Fixes
Here I follow the steps in QUICKSTART.md.
1. Undefined symbol error when installing RAF.
Unfortunately I cannot find the original error message, but by looking at the name of the symbol the error should come from the linker when it tries to link RAF with CUDNN. I have found that build_third_party.sh uses the USE_CUDA env variable that was set to 0 when building PyTorch. If we don't unset this env variable, the RAF build won't use CUDA. RAF can be successfully built and imported after unsetting the env variable.
2. The patch file ./patches/apply_patch.sh no longer exists under ratex.
3. PyTorch codegen script location has changed.
/home/ubuntu/anaconda3/envs/ratex/bin/python3: Error while finding module specification for 'tools.codegen.gen_backend_stubs' (ModuleNotFoundError: No module named 'tools.codegen')
Failed to generate ATEN bindings: ['/home/ubuntu/ratex/ratex/scripts/generate_code.sh']

This file no longer exists. Looking at file names it has been moved to torchgen/gen_backend_stubs.py. Changing generate_code.sh to use the updated path instead.
4. Unsupported operators.
PyTorch seems to have changed or removed the support of max_unpool2d_backward and max_unpool3d_backward. The error message is:
+ python3 -m torchgen.gen_backend_stubs --output_dir=/home/ubuntu/ratex/ratex/scripts/../ratex/csrc --source_yaml=/home/ubuntu/ratex/ratex/scripts/../raf_native_functions.yaml --impl_path=/home/ubuntu/ratex/ratex/scripts/../ratex/csrc/aten_raf_type.cpp
Traceback (most recent call last):
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/ubuntu/ratex/pytorch/torchgen/gen_backend_stubs.py", line 557, in <module>
    main()
  File "/home/ubuntu/ratex/pytorch/torchgen/gen_backend_stubs.py", line 304, in main
    run(options.source_yaml, options.output_dir, options.dry_run, options.impl_path)
  File "/home/ubuntu/ratex/pytorch/torchgen/gen_backend_stubs.py", line 498, in run
    source_yaml, grouped_native_functions, backend_indices
  File "/home/ubuntu/ratex/pytorch/torchgen/gen_backend_stubs.py", line 143, in parse_backend_yaml
    use_device_guard=use_device_guard,
  File "/home/ubuntu/ratex/pytorch/torchgen/gen_backend_stubs.py", line 118, in create_backend_index
    ), f"Found an invalid operator name: {op_name}"
AssertionError: Found an invalid operator name: max_unpool2d_backward
Failed to generate ATEN bindings: ['/home/ubuntu/ratex/ratex/scripts/generate_code.sh']

My dirty solution is to directly remove them from Ratex:

Comment out the corresponding lines in raf_native_functions.yaml;
Comment out their corresponding functions in ratex/csrc/aten_raf_type.cpp;
In ratex/lazy_tensor_core/csrc/ops/max_unpool_nd_backward.cpp, comment all but the default case in the first function.

5. Function override error
Some functions in PyTorch TensorImpl are no longer marked virtual so we cannot override them. The error message is:
In file included from /home/ubuntu/ratex/ratex/ratex/lazy_tensor_core/csrc/aten_ltc_bridge.cpp:16:0:
/home/ubuntu/ratex/ratex/ratex/lazy_tensor_core/csrc/tensor_impl.h:43:19: error: ‘at::IntArrayRef torch_lazy_tensors::LTCTensorImpl::sizes() const’ marked ‘override’, but does not override
   at::IntArrayRef sizes() const override;
                   ^~~~~
/home/ubuntu/ratex/ratex/ratex/lazy_tensor_core/csrc/tensor_impl.h:45:11: error: ‘int64_t torch_lazy_tensors::LTCTensorImpl::dim() const’ marked ‘override’, but does not override
   int64_t dim() const override;
           ^~~
/home/ubuntu/ratex/ratex/ratex/lazy_tensor_core/csrc/tensor_impl.h:47:11: error: ‘int64_t torch_lazy_tensors::LTCTensorImpl::numel() const’ marked ‘override’, but does not override
   int64_t numel() const override;
           ^~~~~
/home/ubuntu/ratex/ratex/ratex/lazy_tensor_core/csrc/tensor_impl.h:49:8: error: ‘bool torch_lazy_tensors::LTCTensorImpl::is_contiguous(c10::MemoryFormat) const’ marked ‘override’, but does not override
   bool is_contiguous(at::MemoryFormat memory_format) const override;
        ^~~~~~~~~~~~~
/home/ubuntu/ratex/ratex/ratex/lazy_tensor_core/csrc/tensor_impl.h:51:11: error: ‘int64_t torch_lazy_tensors::LTCTensorImpl::size(int64_t) const’ marked ‘override’, but does not override
   int64_t size(int64_t d) const override;

I simply remove the override keywords from Ratex's function declarations in ratex/lazy_tensor_core/csrc/tensor_impl.h.
6. Packages glob2 and filelock are not installed when using build_ratex.sh.
build_ratex.sh does not seem to install these two packages automatically. Must install them before importing Ratex. With the fixes above Ratex builds with PyTorch v1.12.0.
7. Running the LeNet example.
The LeNet example cannot be run because the shape of the input data tensor becomes [0] right after input.to("lazy") is called. Error message is:
/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: libc10_cuda.so: cannot open shared object file: No such file or directory
  warn(f"Failed to load image Python extension: {e}")
raf starts...
Epoch 0/9
----------
Traceback (most recent call last):
  File "lenet.py", line 167, in <module>
    main()
  File "lenet.py", line 153, in main
    train("lazy", model_mnm, image_datasets)
  File "lenet.py", line 77, in train
    outputs = model(inputs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/ratex/utils/utils.py", line 49, in _timer
    return func(*args, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/ratex/jit/script.py", line 276, in wrapper
    ) = convert_module_to_raf(module, shape_n_dtype, args)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/ratex/utils/utils.py", line 49, in _timer
    return func(*args, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/ratex/jit/script.py", line 181, in wrapper
    value = wrapped_func(module, shape_n_dtype, args)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/ratex/jit/script.py", line 208, in convert_module_to_raf
    model = raf.frontend.from_pytorch(cloned_module, {"input0": shape_n_dtype})
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/raf/frontend/pytorch.py", line 156, in from_pytorch
    scripted_model = trace_model(model, shape_dict)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/raf/frontend/pytorch.py", line 107, in trace_model
    scripted_model = inner(model, shape_dict)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/raf/frontend/pytorch.py", line 99, in inner
    scripted_model = torch.jit.trace(model, tuple(example_inputs)).eval()
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/jit/_trace.py", line 759, in trace
    _module_class,
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/jit/_trace.py", line 974, in trace_module
    argument_names,
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1118, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/raf/frontend/pytorch.py", line 52, in forward
    out = self.model(*inputs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1118, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "lenet.py", line 34, in forward
    out = self.conv1(x)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1130, in _call_impl
    return forward_call(*input, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1118, in _slow_forward
    result = self.forward(*input, **kwargs)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/conv.py", line 457, in forward
    return self._conv_forward(input, self.weight, self.bias)
  File "/home/ubuntu/anaconda3/envs/ratex/lib/python3.7/site-packages/torch/nn/modules/conv.py", line 454, in _conv_forward
    self.padding, self.dilation, self.groups)
RuntimeError: Expected 3D (unbatched) or 4D (batched) input to conv2d, but got input of size: [0]

Right now I don't have any idea about why this is happening. Running native PyTorch on CPU produces the correct outputs. Any suggestions are welcome.

Thanks for the investigation. It's indeed helpful!
I believe (1) should not be an issue, and (2) was removed by me intentionally exactly for supporting PT v1.12.
3-5 are indeed the compatibility issue that we should fix, and your fixes mostly make sense to me.
6 is straightforward.
7 needs more investigations.
I'll firstly create a nightly docker image with PT v1.12 release, and we could create a branch for all fixes. Once all fixes are finalized, we could just tag the nightly image as the latest one. Since then, Ratex supports PT v1.12 stable release.

Docker image has been pushed for testing: metaprojdev/ratex:ci_gpu-pt1.12


Prevents comments from shifting when the card text is edited

Using offset and length to save the range of text on which a user has commented is fragile. If we have to change the underlying text, the offset will no longer specify the correct range of text. We explored adjusting the offsets to match, but that problem is intractable.
Instead, we’re going to rely on the contents of the highlighted text to calculate the underline range by searching the card text. This will always match the correct range unless the annotated text itself has changed. In that case, however, the comment may no longer be applicable, so we’ll “detach” it from the card (no underline) and display it with the original highlighted text.
The only tradeoffs are that we will have to require the selection to be unique within the card, and if we later change the card to make a range non-unique, we’ll accept that the selection will always be displayed on the first instance. It is a fair assumption that a comment on one instance of a substring on a given card will not be completely irrelevant if tied to another instance of the substring on the same card.

[x] Calculate block_index, start, and length by searching for original_highlighted_text in the card contents
[x] Prevent readers from creating a comment thread with a non-unique selection
[ ] Display comment threads whose selection has been edited as “detached”

@mariehooper Making progress! Any thoughts on the warning text? Right now I’ve got it working with only my localization key displayed.
I don't want to be so technical as “Please select a unique substring” ... And I don’t think “Please select more” conveys enough about the requirement... But we are trying to be concise...


Missing getter/setter for RootMotionView properties

The property RootMotionView::animation_path defined in the api.json uses accessors get_animation_path, set_animation_path, but these functions are not present in the api description. there is a similar issue with the following properties:

cell_size
color
radius
zero_y

This seems to be because RootMotionView is registered as an editor-only class with a somewhat unconventional pattern: it's registered as core class, then disabled, and re-enabled in the editor:
https://github.com/godotengine/godot/blob/690c00d52261ab3132c520ddb317dd1c4e5f23b1/scene/register_scene_types.cpp#L477-L478
https://github.com/godotengine/godot/blob/690c00d52261ab3132c520ddb317dd1c4e5f23b1/editor/editor_node.cpp#L5870
This was done on purpose by @reduz in https://github.com/godotengine/godot/commit/c633b770cb6.
ClassDB::get_method_list() ignores disabled classes, while ClassDB::get_property_list() doesn't, which is why properties end up listed but not the methods. Not sure if that's a bug or just a design quirk from this weird pattern.

@akien-mga I don't know if we changed this for extensions but on a broader discussion, I don't think we should filter out editor only classes, maybe just flag them in the api.json. We need those classes in order to make plugins that add features for the editor. I guess we just need to figure out a good way to prevent those classes from being used in runtime as they will give an error.
To this particular problem, I wonder why its done this way? Sounds like Reduz only did the trick so he could debug an in editor issue and should probably have reverted it.

To this particular problem, I wonder why its done this way? Sounds like Reduz only did the trick so he could debug an in editor issue and should probably have reverted it.

RootMotionView is an editor-specific helper node, but as it's a node it's something which you place in your scene tree directly - and thus it needs to be registered in core. It's the only component which is like this in Godot AFAIK.

Excuse me for necroposting, but descriptions for RootMotionView members are up from 3.3 to present (4.0). I don’t know what issue/PR is associated as I haven’t searched deeply.


Feature request: QR code base contact

User scans the QR code of other user or place and that makes an entry in the database about that contact. Just a rough idea

QR codes are great at preserving anonymity but if we could make it more friction-less so users don't need to do anything... Maybe qr codes can be used by nhs, to get confirmed cases to scan them to let the app know this case is real and not prank?

Another benefit of QR code is that both parties won't need a smart phone to
register a contact. One can simply scan anothers qr code and it will be
taken as a contact between the two users at that location and time.
On Tue, Mar 24, 2020, 18:11 8lenka8<EMAIL_ADDRESS>wrote:

QR codes are great at preserving anonymity but if we could make it more
friction-less so users don't need to do anything... Maybe qr codes can be
used by nhs, to get confirmed cases to scan them to let the app know this
case is real and not prank?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/memiah/contact-tracer/issues/4#issuecomment-603378229,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABVDYA6M2F7UHYMDRZQ7F5LRJDSVBANCNFSM4LSJSHVQ
.

Hi folks, please see #10, we're doing exactly this.

We are focused on BLE by now, same thing but no need from interaction, we get time , rssi (signal streght) and UUID from the other app

Cool, @cmorillo! Consider us friends- you get interaction-free traffic, but we get download-free traffic. Hopefully we can combine data + forces one day. Keep us in mind :)


Carousel responds to changes in viewport width but not viewport height

There may be cases when height media queries cause the carousel's width to change (for example if a sidebar is removed below a certain height and the carousel expands to take up the remaining width). I would argue that slick.js should respond to this. I can create a pull request for this if the main author(s) agree. Something like the below code:
$(window).on('resize.slick.slick-' + _.instanceUid, function() {
            if ($(window).width() !== _.windowWidth || $(window).height() !== _.windowHeight) {
                clearTimeout(_.windowDelay);
                _.windowDelay = window.setTimeout(function() {
                    _.windowWidth = $(window).width();
                    _.windowHeight = $(window).width();
                    _.checkResponsive();
                    _.setPosition();
                }, 50);
            }
        });

You might want to try Flickity. Flickity uses the size and positioning you set with your own CSS. It listens to the window resize event and resizes accordingly. So you can use media queries no problem. See this demo: http://codepen.io/desandro/pen/QwBKzw

+1 for this enhancement and thanks, @maxhartshorn :)
I'm using Slick with iframe videos and need to make sure the whole video is visible regardless of both height and width considerations.
I'm using media queries to do this but without this enhancement it's easy to run into situations where the video width changes while the height remains the same, clipping content in the process.


Add $ by default to ignored_next_char

Hey,
just a small suggestion I think it's very common in shell scripting to double quotes variables like $var
AFAIK there's should not be any consequences for other filetypes so why not having it by default

ahh, this is quite annoying for latex, but good to know why it was done.


Bug 1952049: Move helm CRD from v1beta1 to v1

Additional change to https://github.com/openshift/api/pull/907, which should already be addressing structural changes to the CRD.
/assign @sttts

/hold
this is not necessary (and potentially even harmful) for the API deprecation alert.


Corrected folder name in cd command

@rahulva-msft
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@rahulva-msft - can you help us advance this again PR that's assigned to you?  Should the change be made or discarded?
IMPORTANT: When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
Thanks, PR review team

#sign-off


Fix search

closed by #13, though we should re-point to homebrew/brew.sh as the remote theme if/when https://github.com/Homebrew/brew.sh/pull/479 is merged.


Update CONTRIBUTORS.md

@Bikram-ghuku I have sent you an invitation to the organisation. Please remember to set your membership as public, and feel free to contribute to any other of our repositories 🙂


Add use of cryptography

As discussed during the arch meeting. We make it official that the Compliant Kubernetes project recommends ECRYPT-CSA's cryptographic recommendations. This is what we mandate at Elastisys. We need this for fulfilling various data protection controls, as shown in the docs.

@llarsson Looks good. I committed all your suggestions.

I know I was a bit late to the party here, but wouldn't it have been awesome with an example command that shows how one does this to comply with this standard? Especially since we write text like "when generating {SSH/GPG} keys, see ..." and then there's not examples to be found?

@llarsson "Ask and you shall receive."
https://github.com/elastisys/compliantkubernetes/pull/540


1.26 AMI nodes fail to join the cluster

What happened:
1.26 AMI Nodes fail to join 1.26 clusters. In both scenarios of upgrading from 1.25 to 1.26 and new clusters starting fresh with 1.26
What you expected to happen:
The nodes to join the cluster
Anything else we need to know?:

Using manged node groups.
The exact same Terraform deployment configuration works on 1.25. The only thing changed is the version for cluster/ami which triggers the failure on both upgrades and new clusters.
VPC DHCP domain name is in the format: ec2.internal acmedev.com

Environment:

AWS Region: us-east-1
Instance Type(s): m6a
EKS Platform version: "eks.1"
Kubernetes version: "1.26"
AMI Version: amazon-eks-node-1.26-v20230406
Kernel (e.g. uname -a): Linux ip-10-100-13-0.ec2.internalacmedev.com 5.10.173-154.642.amzn2.x86_64 #1 SMP Wed Mar 15 00:26:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Release information (run cat /etc/eks/release on a node):

BASE_AMI_ID="ami-099e00fe4091e48af"
BUILD_TIME="Thu Apr  6 01:36:39 UTC 2023"
BUILD_KERNEL="5.10.173-154.642.amzn2.x86_64"
ARCH="x86_64"

I believe the change in cloud-provider from aws to external has created an issue where our hostname for the kubelet is different between 1.25 and 1.26. This causes the aws iam authenticator node bootstrap logic to fail to register with the cluster because the hostname in the requests are not the same.
hostnamed logs are the exact same on 1.25 and 1.26 nodes, including the "warning"
Apr 13 13:55:48 ip-10-100-13-0 systemd-hostnamed: Changed pretty host name to 'ip-10-100-13-0.ec2.internal acmedev.com'
Apr 13 13:55:48 ip-10-100-13-0 systemd-hostnamed: Changed static host name to 'ip-10-100-13-0.ec2.internalacmedev.com'
Apr 13 13:55:48 ip-10-100-13-0 systemd-hostnamed: Changed host name to 'ip-10-100-13-0.ec2.internalacmedev.com'
Apr 13 13:55:48 ip-10-100-13-0 cloud-init: Apr 13 13:55:48 cloud-init[2209]: util.py[WARNING]: Failed to non-persistently adjust the system hostname to ip-10-100-13-0.ec2.internal acmedev.com

We are not changing any of the kubelet arguments from their AMI defaults. The only thing we are doing is adding some labels/taints to the nodes via the managed node group terraform resources. No hostname overrides.
Apr 13 13:55:53 ip-10-100-13-0 kubelet: I0413 13:55:53.946396    2944 flags.go:64] FLAG: --cloud-provider="external"
Apr 13 13:55:53 ip-10-100-13-0 kubelet: I0413 13:55:53.946638    2944 flags.go:64] FLAG: --hostname-override=""

Pertinent messages that indicate node join failures.
Apr 13 13:55:54 ip-10-100-13-0 kubelet: I0413 13:55:54.192348    2944 kubelet_node_status.go:669] "Recording event message for node" node="ip-10-100-13-0.ec2.internalacmedev.com" event="NodeHasNoDiskPressure"
Apr 13 13:55:54 ip-10-100-13-0 kubelet: I0413 13:55:54.192745    2944 kubelet_node_status.go:669] "Recording event message for node" node="ip-10-100-13-0.ec2.internalacmedev.com" event="NodeHasSufficientPID"
Apr 13 13:55:54 ip-10-100-13-0 kubelet: I0413 13:55:54.193204    2944 kubelet_node_status.go:70] "Attempting to register node" node="ip-10-100-13-0.ec2.internalacmedev.com"
Apr 13 13:55:54 ip-10-100-13-0 kubelet: E0413 13:55:54.765164    2944 controller.go:146] failed to ensure lease exists, will retry in 200ms, error: leases.coordination.k8s.io "ip-10-100-13-0.ec2.internalacmedev.com" is forbidden: User "system:node:ip-10-100-13-0.ec2.internal" cannot get resource "leases" in API group "coordination.k8s.io" in the namespace "kube-node-lease": can only access node lease with the same name as the requesting node
Apr 13 13:55:54 ip-10-100-13-0 kubelet: I0413 13:55:54.765885    2944 csi_plugin.go:913] Failed to contact API server when waiting for CSINode publishing: csinodes.storage.k8s.io "ip-10-100-13-0.ec2.internalacmedev.com" is forbidden: User "system:node:ip-10-100-13-0.ec2.internal" cannot get resource "csinodes" in API group "storage.k8s.io" at the cluster scope: can only access CSINode with the same name as the requesting node
Apr 13 13:55:54 ip-10-100-13-0 kubelet: E0413 13:55:54.766850    2944 kubelet_node_status.go:92] "Unable to register node with API server" err="nodes \"ip-10-100-13-0.ec2.internalacmedev.com\" is forbidden: node \"ip-10-100-13-0.ec2.internal\" is not allowed to modify node \"ip-10-100-13-0.ec2.internalacmedev.com\"" node="ip-10-100-13-0.ec2.internalacmedev.com"
Apr 13 13:55:54 ip-10-100-13-0 kubelet: I0413 13:55:54.969984    2944 kubelet_node_status.go:70] "Attempting to register node" node="ip-10-100-13-0.ec2.internalacmedev.com"
Apr 13 13:55:54 ip-10-100-13-0 kubelet: E0413 13:55:54.972246    2944 kubelet_node_status.go:92] "Unable to register node with API server" err="nodes \"ip-10-100-13-0.ec2.internalacmedev.com\" is forbidden: node \"ip-10-100-13-0.ec2.internal\" is not allowed to modify node \"ip-10-100-13-0.ec2.internalacmedev.com\"" node="ip-10-100-13-0.ec2.internalacmedev.com"

On the 1.25 nodes using cloud-provider=aws we can see the logs like:
Apr 12 15:14:31 ip-10-100-12-210 kubelet: I0412 15:14:31.176819    2906 server.go:993] "Cloud provider determined current node" nodeName="ip-10-100-12-210.ec2.internal"

https://github.com/kubernetes/kubernetes/blob/v1.26.2/cmd/kubelet/app/server.go#L989 which does not contain the acmedev.com appended to it.
The nodename returned in 1.25 aligns with with the templated private DNS name returned from the https://github.com/kubernetes-sigs/aws-iam-authenticator/tree/master that allows bootstrapping nodes. Since we are not using the aws cloud provider in 1.26 we might be getting back a different value for nodename which does not align.
Since the change to the cloud-provider=external I beieve we are returning the hostname that we would get from hostname or uname -n  e.g. ip-10-100-13-0.ec2.internalacmedev.com which does not align with what is returned from the EC2 api when getting the private DNS name for auth. Our node config in the aws-auth cm is standard:
  mapRoles: |
    - "groups":
      - "system:bootstrappers"
      - "system:nodes"
      "rolearn": "arn:aws:iam::1234567890:role/role-name"
      "username": "system:node:{{EC2PrivateDNSName}}"

@watkinsmike are you using managed nodegroups?

@watkinsmike are you using managed nodegroups?

yes

Is it intentional that the DHCP domain-name is ec2.internal acmedev.com (with a space character between ec2.internal and acmedev.com?
Something does seem awry in the authenticator, anyway. I'm looking into it. If you'd like to email me your nodegroup ARN, that would help<EMAIL_ADDRESS>

Is it intentional that the DHCP domain-name is ec2.internal acmedev.com (with a space character between ec2.internal and acmedev.com)?

It was intentional when it was created many years ago, but I can only guess at the reason right now. It does seem like the space separated domain name is supported by AWS for creating /etc/resolv.conf but not entirely sure about the usage of the internal domain and the published domain pattern.

Something does seem awry in the authenticator, regardless. I'm looking into it. If you'd like to email me your nodegroup ARN, that would help<EMAIL_ADDRESS>
Done!

I'm able to reproduce the issue, and have a hunch about the cause. At this point, I don't have a workaround. I'll update here as I learn more. 👍

My current understanding is:
When you use a custom domain-name in the DHCP option set of your VPC, cloud-init will set /etc/hostname on the instance to $HOSTNAME.$DOMAIN, where HOSTNAME is either an IP-based (ip-x-x-x-x) or resource-based (i-abcdefg123) name, and DOMAIN is your domain-name.
Kubelet will try to create a Node object using that value; but, the aws-iam-authenticator server running in the control plane will associate the incoming request with the username system:node:$PRIVATE_DNS_NAME, where PRIVATE_DNS_NAME is the instance's PrivateDnsName (from the EC2 DescribeInstances API). So, the request will be rejected as unauthorized, and the node will never join the cluster.

In my repro, nodes will join the cluster if you set your VPC's enableDnsHostname to false. This results in the EC2 API returning your custom domain in the instance's PrivateDnsName, and things work as expected.
I believe this wasn't necessary in 1.25, because kubelet's in-tree cloud provider would use the PrivateDnsName from EC2 to determine the hostname, not /etc/hostname, etc.

@watkinsmike I've got a fix up in #1264 .  Sorry for the hassle!
If you run custom AMI nodegroups, you can mitigate this in your user data by adding --hostname-override to --kubelet-extra-args like I've done in the PR description.

We are also impacted by this.
Any thoughts on the potential conflict with the CIS Benchmark for EKS v1.2.0 - 3.2.8 Ensure that the --hostname-override argument is not set

@AndreiBanaruTakeda the CIS recommendation isn't unreasonable, but I wouldn't consider this a critical tenant. The text previously read:

Some cloud providers may require this flag to ensure that hostname matches names issued by the cloud provider. In these environments, this recommendation should not apply.

That being said, I'm looking into ways to address this elsewhere -- it's not ideal for every node to address this individually with --hostname-override.

Hi !
I'm piggy-backing on this issue just to tell you that we faces this issue today despite the fact that we do not have any custom DHCP domain name configuration on our cluster. I managed to make the nodes join the cluster by adding --hostname-override=${HOSTNAME}.<region>.compute.internal to the kubelet args.
I'm currently trying to find way to make that solution permanent because we have a spot instance managed node group

It sounds like your OS is not using a fully-qualified domain name as the hostname, which will also cause this issue due to mismatch between the Node object name and EC2's PrivateDnsName. AL2 (like RHEL/CentOS) uses FQDNs by convention; and the official EKS AMI from Canonical uses FQDNs as well (despite the fact that Debian variants do not).
What AMI are you using, @pnpn?

@cartermckinnon
Thanks for replying :) We tried to use the amazon-eks-node-1.26-v20230411 AMI (ami-0b0000562f9e47337),  we do not use any custom AMI for the cluster.

Not that I know of, I will check but I think we have a setup that is quite classic.

@cartermckinnon
I looked and I didn't find anything that would override the hostname of the machines, I wanted to clarify that this is not a brand new cluster but one we upgraded everytime there was a new version from 1.21 and we only encountered this issue when we tried to upgrade fron 1.25 to 1.26. I'll try to do some tests on my own this week-end to see if I can find anything (or at least a satisfaying workaround) :)

@cartermckinnon
We're also running into this issue similar to @pnpn. Using the same amazon-eks-node-1.26-v20230411 AMI, no custom domain names on the nodes, upgrade from 1.25 to 1.26

The v20230501 release has started now, and it includes changes in #1264 that should fix this issue. New AMIs should be available in all regions late tonight (PDT).

I'm facing same issue with EKS managed AMI : ami-0bc4534a93057f9fb... EKS: 1.27 (Latest)
I've also disabled DNS hostname in VPC level and launched new EKS cluster (1.27) error is still same.
Relaunched the after enabling VPC DNS hostname and I'm using default DHCP set in AWS, no custom domain.
Error Logs: Aug 4 2023
Aug 04 18:56:15 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:15.163680 2998 csi_plugin.go:913] Failed to contact API server when waiting for CSINode publishing: Unauthorized
Aug 04 18:56:16 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:16.156733 2998 csi_plugin.go:913] Failed to contact API server when waiting for CSINode publishing: Unauthorized
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:17.177825 2998 csi_plugin.go:913] Failed to contact API server when waiting for CSINode publishing: Unauthorized
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:17.266792 2998 kubelet_node_status.go:352] "Setting node annotation to enable volume controller attach/detach"
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:17.267838 2998 kubelet_node_status.go:669] "Recording event message for node" node="ip-10-10-4-144.ec2.internal" event="NodeHasSufficientMemory"
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:17.267880 2998 kubelet_node_status.go:669] "Recording event message for node" node="ip-10-10-4-144.ec2.internal" event="NodeHasNoDiskPressure"
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:17.267895 2998 kubelet_node_status.go:669] "Recording event message for node" node="ip-10-10-4-144.ec2.internal" event="NodeHasSufficientPID"
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: I0804 18:56:17.267922 2998 kubelet_node_status.go:70] "Attempting to register node" node="ip-10-10-4-144.ec2.internal"
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: E0804 18:56:17.343482 2998 controller.go:146] "Failed to ensure lease exists, will retry" err="Unauthorized" interval="7s"
Aug 04 18:56:17 ip-10-10-4-144.ec2.internal kubelet[2998]: E0804 18:56:17.343876 2998 kubelet_node_status.go:92] "Unable to register node with API server" err="Unauthorized" node="ip-10-10-4-144.ec2.internal"
@cartermckinnon
Contributor
Author
cartermckinnon commented now
@jitensingh12 Please open a new issue with the details of your environment and what error you're encountering.

This merged PR is not the right place to report a new issue. Please open a new issue.


disabled but still selectable

Hello,
it happens if the component is disabled and multi mode is disabled also,
the options menu will still open if I click on the name of the selected option.
(is not opening if I click other elements like the arrow which Is ok)

Thanks, I'll take a look at this and try to get a minimal reproduction (even better if you can get one, using CodeSandbox) 🙂

sorry codesanbox is not free anymore (only for private boxes)

Fixed in v0.5.1


Can we use mutil hotword with different callback?

I see that Snowboy can use mutil model and each model have their callback. Does Sonus can do the same?

In a round-about way, yes. Sonus doesn't surface the last hotword with final results of an utterance, but you could do something like:
let lastKeyword = null

sonus.on('hotword', (index, keyword) => {
    lastKeyword = keyword
})

sonus.on('final-result', result => {
    if(lastKeyword == 'something'){
        //do something
    } else {
        //some other logic
    }
})


Added note for GCP quota limit

Fixes Issue #669
Add a warning note related to GCP Quota for the free tier users.

I have the same issue. I made for 2 controllers and 2 workers. But is there any solution to increase the quota?

Same here


[R4ML-226] ml.preprocess should detect the empty df after na removal

Developer's Certificate of Origin 1.1
   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

Build triggered.

Unit test failed.

retest this please

Build triggered.

Build success.
All unit tests passed.

merged and closing now


geom_text results in error with TimeStamp data type

I am trying to plot text by date as follows:
p = ggplot(aes(x = 'Date', y = 'Price', color = 'Type', label = 'Unit'), data = df) + geom_text()

but, I am receiving this error:
TypeError: unsupported operand type(s) for *: 'datetime.timedelta' and 'float'

I am having the same problem. I tried setting the xlim separately, but I still get the error.

Hey thanks for submitting an issue. Can you provide a reproducible example?

I submitted this issue before the re-write.  This new exception appears to be purposefully raised.
from ggplot import *

df = meat[meat.date.dt.year == 2012]
p = ggplot(df, aes(x = 'date', y = 'beef', label = 'beef')) \
    + geom_text()

Exception: Can't do geom_text with a x-axis that is a date


Problem upgrade to 1.7

IMPORTANT: Before you create an issue, please take a look at our Issue Reporting Guide.
Briefly summarize your issue:
Hi,
I find the authentication method is changed in 1.7. This introduces a lot of trouble to integrate the upgraded SDK on our device. Originally, our device use the Companion site method to authenticate the device. But now the SDK changed to CBL. This will require us to do a lot of code change if we want to upgrade the SDK. Why not make this as a option, so that different devices can use different method?
Thanks
What is the expected behavior?

What behavior are you observing?

Provide the steps to reproduce the issue, if applicable:

Tell us about your environment:

What version of the AVS Device SDK are you using?
  <x.y.z>

Tell us what hardware you're using:

[ ] Desktop / Laptop
[ ] Raspberry Pi
[ ] Other - tell us more:

Tell us about your OS (Type & version):

[ ] Linux
[ ] MacOS
[ ] Raspbian Stretch
[ ] Raspbian Jessy
[ ] Other - tell us more:

Hi @subjectxbj,
We switched to CBL for internal reasons, but you are free to implement authentication in the companion site method by implementing AuthDelegateInterface.
Fede


Always float label on mwc-select

Is your feature request related to a problem? Please describe.
A useful option would be to always float label on mwc-select. A blank or empty string is a valid and useful value to have as an mwc-select option. However, you may want the user to view 'None' rather than simply a blank option. For example:
<mwc-select label="filled">
  <mwc-list-item selected value="">None</mwc-list-item>
  <mwc-list-item value="0">Item 0</mwc-list-item>
  <mwc-list-item value="1">Item 1</mwc-list-item>
  <mwc-list-item value="2">Item 2</mwc-list-item>
  <mwc-list-item value="3">Item 3</mwc-list-item>
</mwc-select>

At the moment this would cause the non-floating label 'filled' to overlay on top of the display value 'None' (not good). Taken from API - NOTE: The label will not float if the selected item has a falsey value property (in this case value of "" would be falsey).
Describe the solution you'd like
A boolean property alwaysFloatLabel.
Describe alternatives you've considered
No other solution possible other than to have a blank display value which some may consider not user friendly or intuitive.
Additional context
Add any other context or screenshots about the feature request here.

tracking b/178730083

tracking b/178730083

Spoke to design and they said that if there is no content the label should not be able to float in the select, so we will not be adding functionality in our component. Perhaps achievable via subclassing our component, but it is not a use case we will offer support


Performance Benchmarks

Benchmarks need to be added to the project so that we can gauge the effectiveness of changes as they relate to file processing. A static file created for Reading and Writing a file by running a large file (~9,999) of Entries through the library. Utilizing a mock data file performance benchmarks should be reproducible and dependable. Performance benchmarks are key to future development decisions such as validation and parallel processing of batches.

Add a performance benchmark test of the file utilizing Benchmarks and Tutorial
Default Read performance test should mimic example use cases. Read from disk.
Read performance should also test file loaded into memory and then passed as a Reader to ach.Read() to negate any disk I/O discrepancies. This mimics a streaming read.
Write performance are separate benchmarks from the read.
Default Write performance test should mimic example use cases. Write to disk.
Write performance should also test file written into memory to mimic a streaming write (DB or API)
Generate several large mock ach files. #165 100, 500, 2k, 5k, 10k What is the scaling performance of the library O(n)?
Add PPROF to generate a call graph to visualize bottlenecks.
Update documentation on how to run the performance benchmarks.
Add current performance benchmarks to the projects Readme. Include machine statistics and test file information.
Add benchmark test to Travis CI build file.

For reference, NACHA states there are about ~4 million ACH files processed each day by the entire economy, so that should be our upper bound. We likely don't need to optimize further if we can process 4mil files in an hour.
Source: https://www.nacha.org/news/nacha-reports-strong-ach-volume-growth-nearly-7-percent-q3-2018

I think we can close this.  @wadearnold ?

I agree
On Thu, Nov 29, 2018, 4:43 PM Brooke Kline<EMAIL_ADDRESS>wrote:

I think we can close this. @wadearnold https://github.com/wadearnold ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/moov-io/ach/issues/166#issuecomment-443035994, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AACA3Sc4cMkYXQBIpjCtoVeCscU6LwAFks5u0HE2gaJpZM4TRIrK
.


[Feature request] Union type operator that prefer narrow types over wide ones

Suggestion

🔍 Search Terms

narrow, types, type, wide. narrowing
✅ Viability Checklist

My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion

When | type operator is used to alternate types sometimes it is useful alternate its behaviour i.e. prefer more narrow type than more wide (to better understand look at example below). Something like const but not so strict. This type of behaviour will require to implement handilg for both sides of expression.
📃 Motivating Example

This feature will help to better reflect dependency of one field on another (when both field are optional, but if one specified,  other should be too).
💻 Use Cases

Lets imagine (btw it is real world example) that we want autoconfigure navbar according to config of web app router. So when navTitle property is there and containg a string we are intrested in that element i.e. it will be placed on navbar with lable contained in navTitle property. And it shoud lead to somewhere, right? But to where? To figure it out we should know path. Thus navTitile property is dependent on path (which is optional by default in angular). OK! That is not a difficult issue:
type Router = {path?: string, data?: any}

type RouterWithNavTitile = (RequiredProps<Router, "path"> & {navTitle: string})
type CustomRouterConfig = Router | RouterWithNavTitile
export type RequiredProps<T, P extends keyof T> = Omit<T, P> & Pick<Required<T>, P>

const test1: RouterWithNavTitile = {navTitle: "asd"}

const test: CustomRouterConfig[] = [
  // all works as expected
  {path: "asd"},
  {navTitle:"asd", path:"asd"},
  // here is error. yeap. when navTitle present, path should be too but it is not here
  {navTitle:"asd"},
  {foo: "asd"}
]

Solution looks pretty good. Unless you are figurring out, that we should place all additional data into data property (this is angular way). Lets try:
type RouteWithNavTitle = RequiredProps<Route, "path"> & {data: {navTitle: string}}
type RouteWithOptionalNavTitle = Route | RouteWithNavTitle

const test: RouteWithOptionalNavTitle[] = [
  // woops! No error! Path is required and not present! And no error
  {
    data: {
        navTitle: 'asd'
    }
  }
]

Why? That why! Route | RouteWithNavTitle will always resolve to Route since RouteWithNavTitle is narrowed Route (remeber data property? in route it is any but in RouteWithNavTitle it is narrowed to {navTitile: string}). Typescript will always prefer wider types for compatibility reasons. It is not always convinent as in considired example.
You may argue: "there is an const expressions". Yes. But they are too strict.
To solve the preoblem i suggest |& operator which is more like regular | but will prefer narrow types when possible (when shape of object satisfy narrowed variant i.e. it can be assigned to more narrow variant).  It will require to implement handling of both sides of expression (in this example for Route and RouteWithNavTitle).
P.S. Thank you very much for reading this. Leave your comments for me to understand if i missed something or explained wrong.

I'm confused about the problem with the angular-style example, though. As far as I can tell, the only reason that the error goes unnoticed is that both Router and RouterWithNavTitle have a property named data and Router's data: any. If you change the name or give a real type to Router.data the problem goes away.
I guess that |& is intended to solve this problem, but you need to add an explanation of how it handles any, which isn't, strictly speaking a 'narrow' or 'wide' type -- more of a type that disables type checking.

@sandersn

If you change the name or give a real type to Router.data the problem goes away.

I can't do either of these.
Any actually is the widest type because we can assing any value to it.
Handling Any
Lets consider two situatuins: assing and use.
Assign:
Assignation should be handled by typescript as follows:

Assume that value belongs to more wide type
Figure out which type is more narrow (RouteWithNavTitle in our case)
Compute the difference between narrow and wide type and provide list of fields, types of which differs (path, data)
Select these fields from value and try to assign to more narrow type (with only these fields left:
Pick<RouteWithNavTitle, 'path'|'data'>)
In the simplest case (more complicated variant in examples bellow): If at least one field is assignable (i.e. hits), we consider value as more narrow type (thus producing errors if present)

Note: type of missing fields is unknown
Example 1 (data field provided and hits, path is missing; same would be for data with optional navTitle):

type RouteWithNavTitle = RequiredProps<Route, "path"> & {data: {navTitle: string}}
type RouteWithOptionalNavTitle = Route |& RouteWithNavTitle

const test: RouteWithOptionalNavTitle[] = [
// at first, `test` considered as Route
// Then difference between Route and RouteWithNavTitle is computed.
// Fields, type of which differs, are: `path`, `data`.
// Selecting `path` ('cause missing, type is `unknown`) and `data` field of `test` variable and trying to assign to
// Pick<RouteWithNavTitle, "path"|"data">
// `data` property hits. Now consider `test` as `RouteWithNavTitle `
// Produce error that no `path` field present
  {
    data: {
        navTitle: 'asd'
    }
  }
]

Example 2 (data field provided but misses):

type RouteWithNavTitle = RequiredProps<Route, "path"> & {data: {navTitle: string}}
type RouteWithOptionalNavTitle = Route |& RouteWithNavTitle

const test: RouteWithOptionalNavTitle[] = [
// at first, `test` considered as Route
// Then difference between Route and RouteWithNavTitle is computed.
// Fields, type of which differs, are: `path`, `data`.
// Selecting `path` and `data` field of `test` variable and trying to assign to
// Pick<RouteWithNavTitle, "path"|"data">
// `data` property misses.
// No hits at all, so it is defently not a RouteWithNavTitle
  {
    data: {
        foobar: 'asd'
    }
  }
]

Note: if required field is missing, produce error; if optional field is missing, consider as wider type if assignable
Example 3 (path required and provided, data is optional and missing):

type RouteWithNavTitle = RequiredProps<Route, "path"> & {data?: {navTitle: string}}
type RouteWithOptionalNavTitle = Route |& RouteWithNavTitle

const test: RouteWithOptionalNavTitle[] = [
// at first, `test` considered as Route
// Then difference between Route and RouteWithNavTitle is computed.
// Fields, type of which differs, are: `path`, `data`.
// Selecting `path` and `data` (`data` is `unknown` bacause not present)
// field of `test` variable and trying to assign to
// Pick<RouteWithNavTitle, "path"|"data">
// `path` property hits. But `data` misses
// So consider `test` as Route, because `data` is optional
  {
    path: "foobar"
  }
]

Use:
Inside function assume that routerConfig is Route, unless accessing differencing fields. To access these fields developers must provide type guard for them (and typescript should force them to do so)
type RouteWithNavTitle = RequiredProps<Route, "path"> & {data?: {navTitle: string}}
type RouteWithOptionalNavTitle = Route |& RouteWithNavTitle

functions foobar(routerConfig: RouteWithOptionalNavTitle ) {
  // Error: path is optional in `Route`
  routerConfig.path;
  // Error: Provided only in RouteWithNavTitle. Please, use type guard to check if property is present
  routerConfig.data.navTitle;

 if (routerConfig.data.navTitle) {
    // its ok. Inside this branch assumes that `routerConfig` is `RouteWithNavTitle`
    routerConfig.data.navTitle;
    routerConfig.path;
  }

}

Why is "|&" rather than any other symbol? Thats because on provider side (i.e. variable declaration) this behaves like "&" or more close to function overloads sorted from most narrow to most wide (tryes to assign to more narrow type, if fails, go to the next more wide one, Just like for function overloads). While on consumer side more like "|" forcing to implement runtime typecheck in favor of some side of this composit type

Hm, It seems I have found analogue to this feature in zig-lang. It is called tagged union. Works like enum with set of additional fields which depends on current enum value.
Ref: https://ziglang.org/documentation/master/#Tagged-union

Use case which I have mentioned above highlights, that tagged unions are useful to provide typesafe configuration and express dependency of one field over another


Restart unpacking process?

Hello,
I had unpackerr unpacking but there was an permission issue when trying to move the unpacked file back to the download location. Is there a way to force unpackerr to unpack this download again? Is there a database where all completed items are stored?
Thank you!

Figured out that restarting the service is enough!


[Microservices] Using Nest.js to build a simple microservice architecture

Proposed title of article
Using Nest.js to build a simple microservice architecture
Proposed article introduction
Building huge applications in JavaScript requires dynamic programming, especially when the application grows uncontrollably. New features and updates are released each day and may require the developer to fix the bugs to maintain the code.
To achieve this, new developers are needed to be added to the project, which even makes tasks complex. The structure of modules and packages cannot downsize to simplify the application.
To run the application smoothly, it is important to break down a large homogenous structure into small independent pieces of programs. Such complexities are easily solved when JavaScript applications are built on microservices. In this article, we will build a simple microservice architecture using Next.js.
Key takeaways
At the end of the article, the reader will be able to:

understand the benefits of using the Nest.js framework in microservices
create different microservices that interact with each other
use Backend For Frontend (BFF) service to merge data from different microservices and return it back to the client

References
https://docs.nestjs.com/microservices/basics

Unfortunately, this topic appears to be covered here https://www.section.io/engineering-education/building-nest-js-application-using-redis/ Feel free to suggest another topic. Thanks


fix: fall detection bugs

Hello @bhavikapanara! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file src/ambianic/pipeline/ai/pose_engine.py:

Line 63:80: E501 line too long (92 > 79 characters)
Line 89:80: E501 line too long (89 > 79 characters)
Line 95:80: E501 line too long (108 > 79 characters)
Line 124:80: E501 line too long (82 > 79 characters)
Line 127:80: E501 line too long (90 > 79 characters)
Line 130:80: E501 line too long (98 > 79 characters)
Line 147:50: E231 missing whitespace after ','
Line 147:67: E231 missing whitespace after ','

Hello @bhavikapanara! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file src/ambianic/pipeline/ai/fall_detect.py:

Line 35:80: E501 line too long (106 > 79 characters)
Line 36:80: E501 line too long (107 > 79 characters)
Line 94:1: W293 blank line contains whitespace
Line 97:1: W293 blank line contains whitespace
Line 100:1: W293 blank line contains whitespace
Line 103:1: W293 blank line contains whitespace
Line 174:80: E501 line too long (90 > 79 characters)
Line 175:80: E501 line too long (91 > 79 characters)
Line 188:80: E501 line too long (274 > 79 characters)
Line 191:80: E501 line too long (88 > 79 characters)
Line 193:80: E501 line too long (144 > 79 characters)
Line 194:80: E501 line too long (82 > 79 characters)
Line 195:80: E501 line too long (83 > 79 characters)
Line 197:80: E501 line too long (85 > 79 characters)
Line 200:80: E501 line too long (89 > 79 characters)
Line 202:80: E501 line too long (145 > 79 characters)
Line 203:80: E501 line too long (84 > 79 characters)
Line 204:80: E501 line too long (84 > 79 characters)
Line 206:80: E501 line too long (85 > 79 characters)
Line 210:80: E501 line too long (86 > 79 characters)
Line 211:80: E501 line too long (88 > 79 characters)
Line 213:80: E501 line too long (93 > 79 characters)
Line 213:91: E202 whitespace before ')'
Line 217:80: E501 line too long (137 > 79 characters)
Line 221:49: E221 multiple spaces before operator

In the file src/ambianic/pipeline/ai/pose_engine.py:

Line 63:80: E501 line too long (92 > 79 characters)
Line 89:80: E501 line too long (89 > 79 characters)
Line 95:80: E501 line too long (108 > 79 characters)
Line 124:80: E501 line too long (82 > 79 characters)
Line 127:80: E501 line too long (90 > 79 characters)
Line 130:80: E501 line too long (98 > 79 characters)
Line 147:50: E231 missing whitespace after ','
Line 147:67: E231 missing whitespace after ','

In the file tests/pipeline/ai/test_fall_detect.py:

Line 223:1: E302 expected 2 blank lines, found 1
Line 224:80: E501 line too long (118 > 79 characters)
Line 235:1: W293 blank line contains whitespace
Line 242:16: E201 whitespace after '('
Line 242:54: E202 whitespace before ')'
Line 246:1: W293 blank line contains whitespace

Comment last updated at 2020-12-18 19:58:05 UTC

@bhavikapanara could you please clean up the code to mute these pep8 warnings.


tests: Fix unstable tests test_read_index_when_transfer_leader_1 and test_thread_pool_shutdown_when_idle

Signed-off-by: linning<EMAIL_ADDRESS>
What have you changed?
Fix unstable test:
fix #7082 test_thread_pool_shutdown_when_idle: this test failed because the thread pool did not shutdown immediately after the configured time, but the test did take in count of the task process time, this pr fix it by first wait the task finish and have a more relax check.
fix #5163 test_thread_pool_shutdown_when_idle: this test failed because can not transfer leader, which happened because read index may propose an empty entry and the transferee did not have new enough log + leader can not receive MsgAppendResponse because filter, this pr fix it by skip MsgAppendResponse in filter.
What is the type of the changes?

Bugfix (a change which fixes an issue)

How is the PR tested?

Unit test
Integration test

Does this PR affect documentation (docs) or should it be mentioned in the release notes?
No
Does this PR affect tidb-ansible?
No

/merge


Error for the mod

When I start the game with the mod installed, the game freezes and doesn't work anymore
Log:
[I]: Commence the Nep log for RB3
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[E]: GL error: 0x0506
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024
[I]: Resolution: 0 x 0, shadow size: 1024

Can you attach your nep.ini file as well?

I am so sorry for this late response I was not able to respond yesterday, Github does not allow the ini file type so I will just Post all of my settings here, thank you for your help by the way.
// 1.0 = Render at window/screen size. Higher numbers produce smoother image, but values above 2.0 are not recommended
Resolution scaling: 2.0
// Exact rendering width & height - will be used instead of scaling multiplier if width & height are non-zero
Render width: 0
Render height: 0
// Only for RB1 & RB2 || Yes = Unlimited FPS, No = Default 60 FPS cap. Disable if experiencing weird teleporting in-game (thanks PhyreEngine)
FPS Unlock: Yes
// 1 = No VSync, 2 = VSync, 3 = Adaptive VSync (Recommended)
VSync type: 3
// Yes = Simple gray outlines, No = Default textured outlines
Simple outlines: No
Outlines intensity: 0.2
// 1.0 = 1024x1024, 2.0 = 2048x2048, etc.
Shadow resolution: 1.0
Shadow blur: 1.0
// Bloom intensity has the most effect, reasonable values are up to ~1.2
Bloom intensity: 0.6
Bloom contrast: 2.0
Bloom softness: 10.0
Bloom samples: 5
// Avoids problems (such as broken Live2D CG) with certain drivers by disabling some functionality
Safe mode: No
// 0: Off, 1: Errors, 2: Warnings, 3: Information, 4: Verbose
Log level: 3
// Mod functionality switches
Enable resolution control: Yes
Enable new FXAA and bloom: Yes
Enable outline control: Yes
Enable shadow control: Yes
Enable anisotropy: Yes
Enable VSync control: Yes
Enable texture compression: Yes
Enable memory optimization: Yes

The config file seems fine.
Are you using Steam or GoG version, and are they up-to-date?
What's the exact title of your game window? For example, here's the one I'm working with:

I am using the steam version and I've made sure they're up to date.
Here's the title of my game window. Would the game be causing problem because of my language options?

Language is definitely the issue here - this mod is looking for the game window by its English title.
Try using the .dll attached below, I updated it to use a different search method.
neptastic_117_wnd_class.zip

Alright thank you so much!

Does the fix work for you? If so, I'll update the downloadable version.

Sorry for the late reply again and yes it definitely worked thanks for your help.


4.0.0-beta01 gradle sync failed

change version to v4.0.0-beta01，then sync failed , What else do I need to do?

The 4.0.0-beta01 version no longer contains the sketch-animated module. It has been split. Please check the change log and readme to change the dependency.

您的来信已收到


Lookup API does not return anything

The URL used to fetch data in checkForUpdateFromAppStore does not seem to produce any result.
{
 "resultCount":0,
 "results": []
}

However, if I append the parameter country=no, I get what I expect.
{
 "resultCount":1,
 "results": [{<data about my application>}]
}

Hi fabiocody,
Thank you for reaching out and bringing this to our attention. Apologies for the delay in responding. Our team will review this issue promptly.
We appreciate your patience and understanding. If you have any additional details that could help, please feel free to share them here.
Best regards,
Filip

Hi @fabiocody,
This should be fixed with the https://github.com/infinum/ios-prince-of-versions/pull/52 PR.


added part3d virtual domain type

Feature added as per discussion with John.
Updated only examples/geometry_sweep.py to use this in the geometry showcase.

Thanks, @donjan , this looks great!


CentileChart stories crashing on fontSize

Start up Storybook and visit the Centile Chart > With Height And No Data story.
It crashes with an error:
TypeError: Cannot read properties of undefined (reading 'fontSize')
    at CentileChart (http://localhost:6006/src_CentileChart_CentileChart_tsx-src_testParameters_measurements_prematureGirlOverThreeHeigh-603ab9.iframe.bundle.js:830:41)
    at renderWithHooks (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:49742:18)
    at mountIndeterminateComponent (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:53506:13)
    at beginWork (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:55019:16)
    at beginWork$1 (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:60858:14)
    at performUnitOfWork (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:59992:12)
    at workLoopSync (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:59898:5)
    at renderRootSync (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:59866:7)
    at recoverFromConcurrentError (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:59282:20)
    at performConcurrentWorkOnRoot (http://localhost:6006/vendors-node_modules_storybook_addon-essentials_dist_actions_preview_mjs-node_modules_storybo-286a48.iframe.bundle.js:59182:22)

I think we are not passing referenceTextStyle in the styles hardcoded here? https://github.com/rcpch/digital-growth-charts-react-component-library/blob/live/src/testParameters/styles/tanner3Styles.ts. They perhaps need regenerating?

@eatyourpeas I'm very new to this code so this might be a silly question but could we call makeAllStyles from the stories to avoid getting out of sync in the future?

Loving the chromatic thank you @mbarton
The RCPCHChart component is really a wrapper for the CentileChart and SDSChart components. The styles are created before the RCPCHChart component is instantiated because the theme or custom style props passed in from the user need to be converted into the style object (using makeAllStyles) before passing into whichever chart is then rendered.
So best of all would be to remove all the stories in there currently for SDSChart and CentileChart and have a library of examples all using RCPCHChart instead. Within the RCPCHChart folder we would have the docs (as they are now), and then subfolders for each of the different chart types, measurement methods, sexes and references. Perhaps a preterm section for each also.


Map Flags System

Previously in nZombies Original, this was simply known as "Flags". It only supported doors and spawnpoints. However, in Unlimited this will be turned into a fully-fledged system that supports hooking into using custom handlers to do any type of function on a group of entities whenever their flag is opened. Any entity can be enabled for any handler, and any entity that has been enabled can add any flags.
A core feature of the new system is that an entity may have multiple flags. In this case, it will activate when any of its flags is opened. This is useful for rooms that may have two entrances, where opening either should activate the spawnpoints.

[x] Map Flags tracker
[x] Adding custom handlers
[x] Enabling entities
[x] Adding flags to entities
[x] Removing flags from entities
[x] Support for adding/tracking multi-flag
[ ] Opening a Map Flag
[ ] Handling opening of entities with multiple flags (so that they only open once)

The system also adds an ease-of-use Panel that lets you edit any entity that has been enabled for Map Flags, without any implementation at all.

[x] "nzu_MapFlagsPanel" Panel type
[x] Context-menu Property on any entity

The Map Flags panel looks like this:

The panel is filled with a list of all flags currently on any existing entity in the map. You can use the text field at the bottom to add a new flag to the list (only locally) which will be included in PANEL:GetSelectedFlags() (to be used by the tool/property/anywhere the panel is used). You cannot remove a flag, however clicking Refresh will remove any flags that are not on an existing entity, so flags can be removed by removing the flag from all entities that may have it (or removing the entities themselves).
You can select multiple lines using Ctrl or Shift, which lets you select multiple flags. There is an internal networking limit of 255 flags (can always be upped if needed).

For context, the Spawnpoint Creator Tool:

And the property:

The Property is accessible through the Context Menu (C -> Right-click entity) on any entity that has had ENTITY:EnableMapFlags called (both client and server).


DbHelper: Script execution security related issue in the company (XJNEN)

SELECT C.COLUMN_NAME AS ColumnName
, CONVERT(BIT, COALESCE(TC.is_primary, 0)) AS IsPrimary
, CONVERT(BIT, COALESCE(TMP.is_identity, 1)) AS IsIdentity
, CONVERT(BIT, COALESCE(TMP.is_nullable, 1)) AS IsNullable
, C.DATA_TYPE AS DataType
, CONVERT(INT, COALESCE(TMP.max_length, 1)) AS Size
, CONVERT(TINYINT, COALESCE(TMP.precision, 1)) AS Precision
, CONVERT(TINYINT, COALESCE(TMP.scale, 1)) AS Scale
FROM INFORMATION_SCHEMA.COLUMNS C
OUTER APPLY
(
SELECT 1 AS is_primary
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
ON TC.TABLE_SCHEMA = C.TABLE_SCHEMA
AND TC.TABLE_NAME = C.TABLE_NAME
AND TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
WHERE KCU.TABLE_SCHEMA = C.TABLE_SCHEMA
AND KCU.TABLE_NAME = C.TABLE_NAME
AND KCU.COLUMN_NAME = C.COLUMN_NAME
AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY'
) TC
OUTER APPLY
(
SELECT SC.name
, SC.is_identity
, SC.is_nullable
, SC.max_length
, SC.scale
, SC.precision
FROM [sys].[columns] SC
INNER JOIN [sys].[tables] ST ON ST.object_id = SC.object_id
WHERE SC.name = C.COLUMN_NAME
AND ST.name = C.TABLE_NAME
) TMP
WHERE
C.TABLE_SCHEMA = 'dbo'
AND C.TABLE_NAME = 'Analog';

The code has been checked-in to the master branch. This will be a part of version >= v1.9.4.


Deploy to Amazon ECR

Some services such as AWS Lambda and AWS SageMaker allow using container images but only from ECR.
Addressing this issue will likely enable running makes on serverless platforms.
https://docs.aws.amazon.com/AmazonECR/latest/public/what-is-ecr.html

Closing due to:

AWS Lambda only supports private ECR registries
Nix build can't run on AWS lambda limitations, such as privilege, pseudoterminal and read-only fs


Change all staging URLs

We decided not to care about typescript for this release. and open an issue to fix the error there.


Better handling of special annotations when None

@h-mayorquin after discussion with Sam we think that this is a better behavior:

return None if the annotation key is not present
if setting an special annotation to None, remove if it's present

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (6bb3e93) 88.31% compared to head (d14e0ab) 88.34%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #253      +/-   ##
==========================================
+ Coverage   88.31%   88.34%   +0.02%
==========================================
  Files          10       10
  Lines        1729     1733       +4
==========================================
+ Hits         1527     1531       +4
  Misses        202      202

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

This makes sense to me @alejoe91 @samuelgarcia
I mentioned something along these lines here:
https://github.com/SpikeInterface/probeinterface/pull/252#issuecomment-1921115880
Maybe some principle is that None and "" and the empty string should not be treated as equal? But I see that we probably did this because then we need more complicated handling when printing those values such as in the __repr__ that uses get_title.


App rejected from store during upload

Describe the bug
My Framework includes amplify-swift which in turn depends on aws-crt-swift
The built app works on device in Debug and Release.
During upload to TestFlight the following error appears:
The app references non-public symbols in Payload/appnew.app/Frameworks/.....MyFramework: _CCCryptorGCMAddAAD, _CCCryptorGCMFinalize, _CCCryptorGCMSetIV (ID: 18f105e0-1452-4a69-b9ee-...)
Steps To Reproduce
Steps to reproduce the behavior:
1. Archive app and upload to App Store
2. See error

Expected behavior
App should upload
Amplify Framework Version
2.21.1
Amplify Categories
API
Dependency manager
Swift PM
Swift version
5.9
CLI version
11.1.1
Xcode version
Version 15.0.1 (15A507)
Relevant log output
<details>
<summary>Log Messages</summary>

INSERT LOG MESSAGES HERE

```
Is this a regression?
No
Regression additional context
No response
Platforms
No response
OS Version
iOS 17.0.1
Device
iPhone 13 pro
Specific to simulators
No response
Additional context
Xcode Version 15.0.1 (15A507)

Thanks for opening this @mkrn. We're investigating.

Thanks @atierian
I suspected it's because of using openssl here https://github.com/awslabs/aws-crt-swift/blob/main/Source/LibCrypto/shim.h  which may have triggered the requirements for encryption documentation in France, but removing France from countries where app is available didn't solve it.

Do you have any other logs or messages that suggest it's coming from aws-crt-swift? If so, please include it here. I'm not seeing anything in the messages you provided that suggest it's coming from aws-crt-swift.
From what I can tell, the /LibCrypto/shim.h you linked above is only included when built on Linux. [reference]
I think this is most likely coming from aws-c-cal, an upstream dependency of aws-crt-swift.

Downgrading solved it! Thanks.   FYI going forward it may be an issue in new versions

Glad to hear, thanks for confirming! And yes, this is just a workaround until we can resolve the issue on newer versions. We'll update this issue with any news.

I'm having some difficulties reproducing this. Can you please include some more details:

Which targets are you linking to your app target? You can find these under Your App Target > General > Frameworks, Libraries, and Embedded Content

Which platforms does your app support, and what are the deployment targets?

How are you uploading to AppStoreConnect? If you're doing the standard Archive + Distribute through Xcode, which option did you select here?

Adding some notes for reference.

Link all Amplify Swift products to app target.
Build app and navigate to build folder.
Run for f in $(find . -name "*.o"); do echo "dumping $f"; objdump -t $f | grep CCCryptor; done

dumping ./AwsCEventStream.o
dumping ./libtommathAmplify.o
dumping ./AWSAPIPlugin.o
dumping ./AwsChecksums.o
dumping ./AWSPolly.o
dumping ./AmplifyBigInteger.o
dumping ./AWSPinpointPushNotificationsPlugin.o
dumping ./Amplify.o
dumping ./AwsCHttp.o
dumping ./CoreMLPredictionsPlugin.o
dumping ./OrderedCollections.o
dumping ./AWSTranslate.o
dumping ./AwsCSdkUtils.o
dumping ./SQLiteObjc.o
dumping ./AwsCPlatformConfig.o
dumping ./AWSLocation.o
dumping ./XMLCoder.o
dumping ./InternalAWSPinpoint.o
dumping ./AWSTranscribeStreaming.o
dumping ./Logging.o
dumping ./ClientRuntime.o
dumping ./AppSyncRealTimeClient.o
dumping ./AwsCIo.o
dumping ./Starscream.o
dumping ./AWSCloudWatchLoggingPlugin.o
dumping ./AWSPinpoint.o
dumping ./AwsCCommon.o
dumping ./AWSPinpointAnalyticsPlugin.o
dumping ./AWSRekognition.o
dumping ./AWSPluginsCore.o
dumping ./AWSCloudWatchLogs.o
dumping ./SQLite.o
dumping ./AmplifySRP.o
dumping ./AWSTextract.o
dumping ./AwsCAuth.o
dumping ./DequeModule.o
dumping ./AWSS3StoragePlugin.o
dumping ./AWSCognitoAuthPlugin.o
dumping ./AwsCCompression.o
dumping ./AWSComprehend.o
dumping ./AWSLocationGeoPlugin.o
dumping ./AWSClientRuntime.o
dumping ./AWSS3.o
dumping ./AmplifyUtilsNotifications.o
dumping ./AWSDataStorePlugin.o
dumping ./AwsCCal.o
0000000000000000         *UND* _CCCryptorCreateWithMode
0000000000000000         *UND* _CCCryptorFinal
0000000000000000         *UND* _CCCryptorGCMAddAAD
0000000000000000         *UND* _CCCryptorGCMAddIV
0000000000000000         *UND* _CCCryptorGCMFinal
0000000000000000         *UND* _CCCryptorGCMFinalize
0000000000000000         *UND* _CCCryptorGCMSetIV
0000000000000000         *UND* _CCCryptorRelease
0000000000000000         *UND* _CCCryptorUpdate
dumping ./AWSPredictionsPlugin.o
dumping ./AwsCommonRuntimeKit.o
dumping ./AWSCognitoIdentity.o
dumping ./AWSCognitoIdentityProvider.o
dumping ./Collections.o

@mkrn could it be that your app target's scheme > Archive > Build Configuration is set to Debug instead of Release? That's the only way I can reproduce what you're seeing.

@atierian Archive is release, just retried with the new version it is happening still when trying to upload. 2.19.0 not

Thanks for confirming the Build Configuration. Can you please answer the questions from the previous comment? That information will help in reproducing the issue. Thanks!

I have just experienced this after updating from 2.18.2 to 2.2.21 when uploading an archive via xcrun altool --upload-app.
We link against the package from another Swift Package via our Package.swift.

My app includes my framework which in turn uses Amplify via Package Manager

Uploading using XCode Archive + Distribute through Xcode=> TestFlight & App Store option
Platforms & Deployment targets:

Thanks for the details @mkrn.
And thanks @maxchuquimia for letting us know that you're also experiencing this. You mentioned:

We link against the package from another Swift Package via our Package.swift.

Can you tell me some more about how this is setup -- is your app target dynamically linking a framework that contains Amplify?

I was able to reproduce by including Amplify (+ plugin targets) in a framework and linking that framework in my app target. We're continuing to investigate.
Two workarounds that are known at this time:

Use Amplify Swift <= 2.19.0
Statically link Amplify targets against your app instead of embedding them in a framework first.

linking related issue in aws-crt-swift

https://github.com/awslabs/aws-crt-swift/issues/206

Can you tell me some more about how this is setup -- is your app target dynamically linking a framework that contains Amplify?

Our app's Xcode project target doesn't contain all our app's code. Instead, we have a local Swift Package MyApp with our code (main scene, AppDelegate etc). The classes from MyApp are then used when our app launches.
MyApp's Package.swift is what defines our dependency on Amplify:
products: [
    .library(
        name: "MyApp",
        type: .dynamic,
        targets: [
            "MyApp
        ]
    ),
],
dependencies: [
    .package(url: "https://github.com/aws-amplify/amplify-swift", exact: "2.18.2"),
    ...
]

Thanks @maxchuquimia. type: .dynamic linking is similar to using a wrapper .framework here in that the unused non-public symbols are being included in the framework within the app bundle.
The underlying cause has been addressed in aws-c-cal / aws-crt-swift and we're working on getting those updates into Amplify Swift. Here's the PR for reference:

https://github.com/aws-amplify/amplify-swift/pull/3333

We'll update here once this is merged and Amplify Swift has been released. Thanks to both of you for reporting this and your assistance in reproducing it.

Amplify Swift 2.21.3 was released with a fix resolving this issue.
Thanks again to both of @mkrn  and @maxchuquimia for reporting this!


Authoring: Instead of a dialog box, Sounds On/Off should be a toggleable menu item

Change Sounds menu item at bottom of Edit menu to Settings. Selecting Settings brings up dialog box with sound toggling option.

Actually a better idea might be to change the text of the Sounds menu item to "Sounds On" and make it a JCheckBoxMenuItem instead of a JMenuItem. The checkbox menu item would be selected by default and the sounds would be on.

wjtm/sound_toggle merged into master on 11/17/1. Deleted wjtm/sound_toggle.


Deprecate RPL

RPL is no longer interest of Zephyr community. We already sent mail to mailing list for new maintainer. Also informed about this in Zephyr Networking Forum. No response received so far. So deprecating RPL.

Codecov Report

Merging #10679 into master will increase coverage by 0.15%.
The diff coverage is 66.66%.

@@            Coverage Diff             @@
##           master   #10679      +/-   ##
==========================================
+ Coverage   53.08%   53.24%   +0.15%
==========================================
  Files         214      214
  Lines       25828    25828
  Branches     5695     5695
==========================================
+ Hits        13712    13753      +41
+ Misses       9807     9760      -47
- Partials     2309     2315       +6

Impacted Files
Coverage Δ

subsys/net/ip/rpl.h
58.06% <66.66%> (ø)
:arrow_up:

lib/posix/pthread_sched.c
41.66% <0%> (-20.84%)
:arrow_down:

lib/posix/pthread_mutex.c
77.77% <0%> (+1.38%)
:arrow_up:

lib/posix/pthread.c
80.36% <0%> (+12.32%)
:arrow_up:

lib/posix/pthread_cond.c
83.33% <0%> (+20.83%)
:arrow_up:

include/posix/posix_sched.h
100% <0%> (+100%)
:arrow_up:

lib/posix/pthread_barrier.c
100% <0%> (+100%)
:arrow_up:

Continue to review full report at Codecov.

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

please wait with deprecating, i will look at the rpl after ELCE2018

Ok.

please wait with deprecating, i will look at the rpl after ELCE2018

@jfischer-phytec-iot So, what are your plans about RPL?

@jfischer-phytec-iot: Ping again.
And let me actually approve this, to appreciate @rveerama1's efforts to move forward with this (i.e. making clear to any users that this library in Zephyr is unmaintained).

@jfischer-phytec-iot, you can revert this incase if you have proper plan how you are going to continue with RPL.

@nashif @tbursztyka ping

recheck


reassign base category after base category is renamed

Fixes #189

#200 should be merged first because it solves a bug. I will reopen this once that is merged.


Attachment - Change Playback speed option is missing in fullscreen mode

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.44-3
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/5042989&group_by=cases:section_id&group_id=292107&group_order=asc
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause Internal Team
Action Performed:

Open app
Navigate to any chat
Upload any video to the chat
Tap on the viedo preview
Tap on the fullscreen button
Tap on the video to reveal video controls buttons

Expected Result:
Change playback speed option should be available in the fullscreen mode
Actual Result:
Change playback speed option is missing in fullscreen mode
Workaround:
Unknown
Platforms:

[x] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/e4c20da7-e476-4d72-af70-f1a6441f0928

View all open jobs on GitHub

@johncschuster  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

I don't have an android phone so I'm not 100% sure what I would expect to see here, but I kinda don't expect to see a playback speed setting.
Have you seen one previously, @IuliiaHerets?

@IuliiaHerets bump on the question above!

@johncschuster To be honest, I'm not sure if it was present on Android, but it's present on iOS. I think the behavior should be the same.
https://github.com/user-attachments/assets/3fea254b-78a5-49f2-8f18-9f40b1325f13

Looks like we're still waiting on proposals for this one.

Bump

I’ve posted on Slack to get more eye

Bumped Slack again for proposals

Bumped again in Slack

Chatting about this in Slack

As discussed, I think we can close this issue


Revise Twitter linking to include official Symbol twitter account(s)

Links to the Twitter account presently point to @NEMOfficial rather than @thesymbolchain.  The |twitter| variable is defined in: source/_templates/include/social.html
Consider breaking this out into multiple official twitter variables - i.e. using a subset of these:
|twitterMain| https://twitter.com/thesymbolchain
|twitterSyndicate| https://twitter.com/SymbolSyndicate
|twitterLingFranc] https://twitter.com/aBermudaCompany
|twitterFushichou| https://twitter.com/TheFushichou
|twitterNEM| https://twitter.com/nemofficial
If opting to link to multiple twitter accounts, will also need to update all pages referencing the |twittter| variable:
https://github.com/symbol/symbol-docs/search?q=twitter

From the outside looking in, the NEM protocol is irrelevant and any links involving NEM should be removed.
LingFranc and Fushichou, which are not related to the development, should also be excluded.

From the outside looking in, the NEM protocol is irrelevant and any links involving NEM should be removed. LingFranc and Fushichou, which are not related to the development, should also be excluded.

Thank you for your response! I agree, the guide is a resource for Symbol end users and developers, and should stick to that scope. I was thinking of gaps I see in outsider visibility to the broader picture, but the website will be a better place for this to address this.