"Failed to set power state" when multicam on NVIDIA Jetson TX2

Required Info

Camera Model
D400

Firmware Version
<IP_ADDRESS>

Operating System & Version
Ubuntu 18.04.4

Kernel Version (Linux Only)
4.9.140-tegra

Platform
NVIDIA Jetson TX2

SDK Version
2.34.1

Language
python

Segment
others

Issue Description
I am trying to connect 3 D435 cameras to an NVIDIA Jetson TX2 platform via a USB3 hub. If only 1 camera is connected, everything works fine, but when I connect the second one (and the third one) and try to launch the rs-multicam example (or some other code involving multiple cameras), I get a "Failed to set power state" error.
It doesn't seem to be related to the hub because it works fine on a Ubuntu 18.04 and 19.10 laptops. After lots of investigations, it also seems that this issue is not related to the hub nor the USB controller.
One easy way to reproduce is to connect 3 cameras and launch the realsense_device_manager.py script provided in the box dimensioner multicam python example.
Also, in realsense-viewer, if I try to open all Depth+RGB streams for the 3 cameras, some streams don't recieve any frames. This does not happen when using a laptop.
Any help would be appreciated !

There have been multicam problems reported recently with Jetson Xavier boards in regards to problems such as failure to set power state or cameras not being detected when more than one camera is attached.  So this case may be related.  An Xavier user recently offered details of a multicam workaround that he developed:
https://github.com/IntelRealSense/librealsense/issues/5828#issuecomment-622993107

Thank you for your quick reply ! I had a look to this workaround and it doesn't seems to work unfortunately. I am working at high resolution (1280x720 for depth, 1920x1080 for RGB).
I managed to have two cameras with both Depth and RGB at 1280x720. When I raise the resolution of one of them, the program gets stuck when starting the second camera. When I add a third camera, I get the power state error

Is your hub a powered hub (drawing from the mains power socket) or an unpowered one (connected to the TX2's USB socket) please?

The hub is unpowered. It doesn't seems to be related to the hub because everything works fine (3 cameras with high resolutions) on a "regular" laptop.

It is not unusual for a camera that works fine on a desktop or laptop to have problems on a single-board computer such as Jetson, which are typically "low power" devices because of their use in applications such as robotics.  So that does not necessarily rule out the hub as a problem, since if it is an unpowered hub then it is drawing its power from the low-power board's USB port instead of having its own independent strong power supply like it would if it were powered by the mains socket.

I'm aware of those power limitations, but still, after doing some power measurments and calculations, it seems that the USB port has enough power to power the 3 cameras. Still we'll try with a powered hub and keep you posted.

Thanks very much, I look forward to your update.  Good luck!

In the meantime, do you have any idea of other things we might look at if the problem isn't the hub ? Because if we observe the power used by the hub (and the cameras) and the power of the USB port, we should have more than enough !

As well as the volume of power supplied, the stability of the power supplied to the USB port can be a factor.  I once had a case where RealSense was used with an enterprise server with a 650W power supply and it still experienced disconnections.  RealSense cameras are sensitive to the state of the port, and mains-powered hubs can help to provide a more reliable power supply to the port on the hub than a port on a computer or an unpowered hub can.
I see that you have already tried starting with one just camera and then inserting the others into the hub one at a time.
A couple of long-shots that you could try with the USB cable are having the camera's USB cable plugged into the hub but unplugging and re-plugging the micro-end from the side of the camera ... and turning the micro-end upside down and plugging it back into the side of the camera (the micro-size end fits both ways on USB-C cables).
Also, have you tried inserting each camera on its own with no other cameras connected, to check whether any of the individual cameras have a problem?
You could also try swapping the USB cables around (e.g put the USB cable from camera 1 on camera 2, and the cable from camera 2 on camera 1).

Hi,
We've tried today with a powered USB hub and things didn't change at all. We also try the tricks you mentioned (turning the micro-end upside down). We notices some changes when we change the order in which the cameras are plugged into the hub (sometimes we can start only one pipeline, sometimes two, sometime three with very low resolutions), but we are still unable to make things work at high resolutions.
We checked cameras individually and with different cables to check if one of them has a problem, but it's not the case, everything works fine.

Thanks for trying everything.  Did you build Librealsense for your TX2 from source code or with the debian packages, please?
I was just thinking that if it was from source then you may be able to reduce the processing load on the TX2's CPU by building Librealsense with CUDA support to offload some of the work onto the GPU.
If you installed Librealsense using the debian packages then they would already contain CUDA support.

We've built Librealsense from source, but we already did it with CUDA support. This wasn't the issue.
However, we managed to solve our problem by deactivating the USB auto-suspend in the usbcore parameters. It seemed to have some issues with the uvcvideo driver. By being careful in the order the cameras are plugged in the hub and by applying the workaround you mentioned earlier, everything works !
FYI, in our case, the cameras need to be plugged in the hub in decreasing order regarding the serial number (highest SN in port 1, lowest SN in port 3). Then the cameras can be activated in any order. If we change the plugging order or we don't apply the workaround, we still get the failed to set power state error.

I'm very glad you found solutions for your problems!   Thanks very much for posting your findings here so that others can benefit from them.

You're welcome. Thank your for helping us through this.

Hello, I encountered the same problem in similar scenes.
Using USB-HUB to connect 3 cameras on TX2, USB-HUB has a separate power supply, an error occurs when using rs-multicam: ‘Failed to set power state’, SDK version is v2.32.1 (from the debian packages).
However, keeping the other hardware unchanged, use another TX2, which contains SDK version v2.29 (from source code), using rs-multicam can open 3 cameras.
The TX2 system is updated, I hope to use SDK v2.32.1 + (from the debian packages). Is there any suggestion?
Thanks

Hi @dongkaizhou   The RealSense developers have created improvements to how multicam is handled that should be available in an upcoming SDK release.  They may not fix a problem if it is related to a specific model of hub hardware but may help if the problem is related to rs2::pipeline.
https://github.com/IntelRealSense/librealsense/pull/6467
In the meantime, a RealSense user has suggested a workaround.
https://github.com/IntelRealSense/librealsense/issues/5828#issuecomment-622993107

It turns out that many users have this kind of problem,  look forward to the new SDK to solve this problem.

Hi @dongkaizhou   Have you had an opportunity to try the new SDK version 2.35.0 yet please and find whether it solved the errors mentioned in this case?

Hi, I try to install the new SDK version 2.35.0, but installed on TX2, how to ensure that v2.35.0 is installed in the following way?
If no version number option is specified, will other versions be installed, such as v2.34.1

Hi @dongkaizhou Have you had an opportunity to try the new SDK version 2.35.0 yet please and find whether it solved the errors mentioned in this case?
Hi, I try to install the new SDK version 2.35.0, but installed on TX2, how to ensure that v2.35.0 is installed in the following way?
If no version number option is specified, will other versions be installed, such as v2.34.1

Hi, I try to install the new SDK version 2.35.0, but installed on TX2, how to ensure that v2.35.0 is installed in the following way?
If no version number option is specified, will other versions be installed, such as v2.34.1

@dongkaizhou   My understanding is that if the above instructions are used then the version installed should be whatever the latest Debian package version is.  More information about DKMS package version numbers can be found in the link below.
https://github.com/IntelRealSense/librealsense/issues/2518#issuecomment-429647992

Thanks, I will pay attention to Debian package version, Where can I see the update time of all Debian package version?
Just now using camke\make to install SDK version 2.35.0 on my PC, and rs-mulicam can open two cameras without error.
But used SDK2.32.1 on tx2, opening multiple cameras failed. I just installed SDK2.32.1 on my PC. Using rs-mulicam to open the two cameras is also successful. Is it possible that sdk2.32.1 has also been partially modified recently? Or caused by the different compilation methods of tx2 and PC?

The link below explains that the DKMS packages are organised by Ubuntu distro instead of having a separate version for each individual SDK version.  So there is a DKMS package for Bionic, another for Xenial, etc.
https://github.com/IntelRealSense/librealsense/issues/5249#issuecomment-555606521
So my understanding is that there is not a version history for the DKMS packages, and that earlier packages are overwritten with the newer version and so keep the same filename.  The package for Xenial or for Bionic is installed by using the sudo add-apt-repository command provided in the installation instructions for Xenial (used with Ubuntu 16 LTS) or Bionic (used with Ubuntu 18 LTS).
I am also not aware of a formal information source for when a DKMS package has been updated.
You can upgrade only the librealsense2-dkms package specifically instead of upgrading all packages by using this instruction:
sudo apt-get --only-upgrade install librealsense2-utils librealsense2-dkms
Regarding multicam support, there are some known problems at the moment with camera detection in multicam setups on Jetson models.  The RealSense developer team has created improved multicam support, and this was successfully merged into the development branch of the SDK on 1 June 2020.  So it should be present in the next public SDK version.
The new multicam developments should help with multicam problems related to rs2::pipeline, though may not correct problems related to specific models of powered USB hub hardware.
In the meantime, a Jetson user has offered a workaround here:
https://github.com/IntelRealSense/librealsense/issues/5828#issuecomment-622993107

Thanks for your prompt reply, I just tried to update the SDK on Jetson TX2. Unfortunately, v2.32.1 is already the latest version, and it still fails when using rs-mulicam to open 2 cameras.
Can you help to update the DKMS packages as soon as possible? maybe many Jetson users have this problem.

2.32.1 does not contain the multicam improvements as it is an older SDK.  The SDK is now up to version 2.35.0 at the time of writing this.  The Debian packages may not be in sync with what the current SDK version is though.
I am not on the Developer team (I am Support) and so cannot influence the timing of when the Debian packages are updated.  The developer team are very aware of issues with multicam though, and the new improvements were created to try to resolve some of those problems.
Until the multicam improvements are available for users to test, the workaround link posted above remains the best available solution for Jetson users to try.

OK, hoping that Debian packages will be updated soon and will continue to test this issue.
Thank you.

IT looks as though at the time that David's message was written, it was suggesting to compile SDK version 2.33.1 from source.

So if you can install SDK from source, it is the best choice?

Ideally, if you are installing on Jetson Nano then I would recommend using JetsonHacks' most recent Nano guide, which uses Debian packages:
https://www.jetsonhacks.com/2019/12/22/install-realsense-camera-in-5-minutes-jetson-nano/
If you need to install the SDK on Nano from source though then Intel's own Jetson installation documentation recommends using the "backend" method of installation.  It requires an internet connection to perform the installation but is not dependent on Linux versions or kernel versions and does not require patching to be performed.
https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md

Instructions for installing the 2.35.0 SDK source with the backend method are in the link below.
https://github.com/IntelRealSense/librealsense/issues/6512#issuecomment-638705506

Seeing this, Intel and Nvidia both recommend Debian installation.
Unfortunately, the SDK3.35.0 is compiled and installed on TX2, and it is still not possible to open the two cameras using rs-mulicam, but it is ok on the PC. It should be related to the Jetson tx2 environment.
Thanks

On the powered hub that I have, there is a USB connector on the side of the hub that is separate from the hub's main ports.  This port is for a USB lead that goes from the hub port to a USB port on my computer.  If I unplug this lead from the computer's USB port then the USB devices that are plugged into the hub no longer work.
If you have a similar cable on your powered USB hub, I wondered if you could make sure that it is plugged into a USB port on the Jetson TX2 that you are using, and not your other Jetson TX2, which you mention in this comment:
https://github.com/IntelRealSense/librealsense/issues/6395#issuecomment-635071929
I could see a possible situation where the cable connecting the hub to the computer might be plugged into the other TX2 board that is not powered up when you are using the TX2 that will not detect the computers.  And so although the cameras are attached to the hub, the TX2 that returns the failed to set power state error does so because the hub's hub-to-computer USB cable is not plugged into it.
I have assembled together a rough diagram to illustrate what I am describing above.   :)

Thank you very much for describing it with vivid pictures. I have tested this situation many times, and there are many attempts to connect the HUB to TX2. I have considered and tested the situation you described.
The tested situation is as follows:

The HUB has no external power supply and is connected to TX2 USB3.0.
HUB external power supply, connect with TX2 USB3.0.
HUBs of different manufacturers use the above method to connect TX2 USB3.0.

One interesting thing, when I plugged two cameras into the HUB, I connected the Hub to TX2. When trying to turn on the camera using rs-mulicam, the error ‘failed to set power state’ is reported; when using realsense-viewer to turn on one camera first, and then turn on the second camera, both cameras can be turned on.

Looking at the log information generated when using the RealSense Viewer, there are two interesting things:

No data to return (-21) suggests that the IMU of one or both of the D435i needs to be calibrated.
-. The errors about synthetic stream, control_transfer returned and out of frame resources all suggest that the USB is having problems communicating with the camera.

It may be a situation that improves in the new SDK 2.35.2 with the multicam improvements, if the fault is not with the particular model of USB hub.
Do you get less errors in the Viewer if you only have the Depth streams activated?

HI, there is failed

There is failed 'UNKNOWN in rs2 get option range... option: sharpness get data usb failed. error: RS2 USB STATUS IO'

@dongkaizhou   Could you try updating your camera firmware to 5.12.5 please?   You can do this by going to the 'More' option at the top of the RealSense Viewer's options side-panel and selecting 'Update to recommended firmware' from its menu.

Yes, update FW to 5.12.02, but the failed is exist.

The newest firmware is 5.12.5.  You mentioned above that you updated to 5.12.02.  Can you confirm please that you have tried 5.12.5

Hi, the main problem is the SDK-V2.32.1 version of TX2. I look forward to the Debian version update. If there is an update, please inform me. I am busy with other things recently.
Thaks.

Okay, thanks very much.

@dongkaizhou   A new ROS wrapper version 2.2.14 has now been released that supports librealsense SDK 2.35.2.
https://github.com/IntelRealSense/realsense-ros/releases/tag/2.2.14

Case closed due to no further comments.  @dongkaizhou please create a new GitHub issue if you still have problems when you return to RealSense work.  Thanks!

I had a similar problem on Raspberry Pi OS, using pyrealsense2 and the D435i
I was opening two pipelines, one for the camera and one for the IMU. Starting the camera didn't give any problems, but when starting the IMU, right after, there was an error message "failed to set power state".
After may software and hardware attempts, I solved it in a trivial way... I added 500ms pause between the two startings. You might do a similar thing if you have more than one device.
Good luck!


[Feature Request] Sync.changes for specific object.

it might be hard to understand flow I'm trying to achieve, but let me try to explain :)
Flow (pseudo code):
let context = dataStack.newBackgroundContext() // allocate context

let newMO = MO(inContext: context) // create new NSManagedObject
newMO.somePropery = "TEST" // assign new value

let newMOJSONRepresentation = newMO.hyp_dictionary() // convert whole object to "JSON"

// send just created objects representation to server
Server.sendObject(newMOJSONRepresentation) { updatedJSON: JSON in
    // server returns new data. Data is for this particular object.
    Sync.changes(updatedJSON, object: newMO) // apply returned data to object
}

Problem:
there is no way of doing this in vanilla Sync.
I managed to implement this by copying whole Sync.changes wrapping it in performIn..., removing DATAFilter.changes lookup and just doing newMO.sync_fillWithDictionary but it looks messy.
Challenges:
Server.sendObject is escaping so NSManagedObjectContext needs to be retained. Its unclear where to get entityName from...
Thoughts:
Maybe my thinking is completely wrong and I'm doing something Im not supposed to?

@RolandasRazma Great suggestion! I of course see how this could be useful.

I really need to remove this
let context = dataStack.newBackgroundContext() // allocate context

Background contexts are really meant to be used using performBlock or performBlockAndWait

@RolandasRazma there's already this
let userJSON = JSON["user"]
user.hyp_fill(with: userJSON)

From Sync's dependency SYNCPropertyMapper.
I think it would fill your needs. Let me know otherwise.


Configure tekton in alibaba

/hold this does not work because tekton is installed individually and not part of the platform.
It would need to have the tekton values in the top level
pvc:
  size: 20Gi

requires https://github.com/jenkins-x/jx/pull/4154


Fix: Type Form spinner on success/fail

Fixes https://github.com/tendermint/vue/issues/5

Wrong PR


odgi bin should output detailed nucleotide positions for each path

Currently, for each bin, for each path, we only give the range of nucleotides for the specific bin.
Which could be 20-30000. But positions 45-123 could be in another bin. To have a more detailed positioning, odgi bin should output these ranges for each bin in a JSON array instead of giving a summarized range.
@JervenBolleman @josiahseaman

This will give us the possibility to bring in exact annotation via e.g. a SPARQL query.

@JervenBolleman Assuming we would integrate the annotation as paths in the graph. Would that help you somehow? Make things harder?
We would need to fetch the metainformation of each e.g. gene. Because we already know all bins which are covered by that gene.

Thinking about it, we should always put the ranges into the the JSON. Because the annotation might change and we will be more flexible.


Updating characteristic Active to 0

i keep getting this error message?
16/02/2022, 17:27:24] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 17:27:24] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 17:27:26] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 17:27:27] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 17:37:27] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 17:37:27] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 17:37:29] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 17:37:29] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 17:47:29] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 17:47:29] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 17:47:31] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 17:47:32] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 17:57:32] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 17:57:32] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 17:57:34] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 17:57:35] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 18:07:35] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 18:07:35] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 18:07:37] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 18:07:37] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 18:17:37] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 18:17:37] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 18:17:39] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 18:17:39] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 18:27:39] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 18:27:39] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 18:27:41] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 18:27:41] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 18:37:41] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 18:37:41] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 18:37:43] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 18:37:43] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 18:47:43] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 18:47:43] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 18:47:45] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 18:47:45] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 18:57:45] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 18:57:45] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 18:57:47] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 18:57:47] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 19:07:47] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 19:07:47] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 19:07:49] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 19:07:49] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 19:17:49] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 19:17:49] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 19:17:53] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 19:17:53] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 19:27:53] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 19:27:53] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 19:27:56] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 19:27:56] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 19:37:56] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 19:37:56] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 19:37:59] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 19:38:00] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 19:48:00] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 19:48:00] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 19:48:03] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 19:48:03] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 19:58:03] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 19:58:03] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 19:58:06] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 19:58:06] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 20:08:06] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 20:08:06] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 20:08:09] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 20:08:10] [Miele@home] Waschmaschine: Updating characteristic Active to 0.
[16/02/2022, 20:18:10] [Miele@home] Waschmaschine: Updating characteristic Active to 1.
[16/02/2022, 20:18:10] [Miele@home] Trockner: Updating characteristic Active to 1.
[16/02/2022, 20:18:12] [Miele@home] Trockner: Updating characteristic Active to 0.
[16/02/2022, 20:18:12] [Miele@home] Waschmaschine: Updating characteristic Active to 0.

I do not classify this as an error, but it is indeed awkward somehow the device seems to send on off signals continuously.
Is this still an issue?

yes constantly. have deactivated it now times.


Syntax color for YAML seems to be off

I noticed with the latest Update to Seti Syntax YAML colors seem to all be the same except for integers, is this how the theme is now, or is a bug?

can you also add a Theme setting for highlight color?

I don't have anything specific in for YAML highlight yet, so I'll take a look at adding that next.

+1 this looks even worse with the default theme of blue...everything is blue (see issue #6 )

+1 requesting yaml highlights

This looks like a duplicate of issue #6. But yeah, I'd love a little more highlighting to help me spot typos. 👍


[build:windows]: Error becuase "ERROR" macro inteferes with enum class in "log.h"

Where?
src/core/include/growl/core/log.h
#pragma once

namespace Growl {

enum class LogLevel { DEBUG, INFO, WARN, ERROR, FATAL };

}

ERROR is defined in "wingdi.h" (Windows SDK) as a macro, so the enum class clashes names.
I really don't know which fix is the best but i did two workarounds:

Rename ERROR in the LogLevel enum class (need to change a lot of files)

#pragma once
namespace Growl {

enum class LogLevel { DEBUG, INFO, WARN, ERR, FATAL };

}

#undef ERROR if the platform is windows (may cause further problems using windows API)

#pragma once
#ifdef _WIN32
#undef ERROR
#endif
namespace Growl {

enum class LogLevel { DEBUG, INFO, WARN, ERROR, FATAL };

}

Interesting, thanks for reporting - I actually didn't see this error when building on Windows, not sure why that is. Would renaming that enum class to be CapitalCase (e.g. Error vs ERROR) resolve your error? That would probably be more consistent with our other enum classes to be honest.


android: Make release and debug app build coexist in the same phone.

Screenshot:

Thanks @jainkuniya ! This is helpful for distinguishing the versions.
Making the icon red could be good too. We should make sure that the color isn't the only difference -- e.g., keep the "DEBUG" word there too -- because many people see colors differently, and in fact seeing red and green as very similar is especially common.
(But as it is I'm already happy to merge as soon as #2743 is ready.)

Possibly a combination - a big red banner of Debug :)

Here is a nice icon:

Updated icon.

BTW @borisyankov just curious to know on which software/site have you created this nice icon 😅

Do we need to have an actual APK compiled for this to work?
Do we not want to just configure the run-android command to use a different suffix?
https://github.com/facebook/react-native/blob/fdce93845514a781d01da8cc2c944dbb571f3012/local-cli/runAndroid/runAndroid.js#L453

I tried --appIdSuffix [string] and unfortunately this looks to be just a hint to the runner what to start, and not what I had hoped for - changing the suffix of the running app.

Merged this yesterday as 0d16b604b. Thanks again @jainkuniya !
Before merging, I made a few changes:

squashed together the commits that fixed where things were broken from previous commits
simplified to not change our real MainActivity, just make an alias
revised and added comments.

Do take a look at that commit and its ancestors.


API endpoint - Get a role's Administrator

[User Story]
Hierarchical approval

Epic Title
Hierarchical approval #118

User Story Title
Api Endpoint Get a Role's Administrator

T-shirt size: S(mall), M(edium), L(arge)
S

Story Points - Fibonacci (1,2,3,5,8,13)
3

User Story
[Value Statement] "As a user of NEXT, I want to browse through the list of my direct reports and my manager and their manager up until I reach the CEO/top manager of my organization, so I can utilize this hierarchy in my hierarchical approval."

Description
Implement capability to browse a role's administrator

Business Need (the why):
Having access to a role's administrator will help with implementing hierarchical approval for a user.

Details
Create API endpoints for getting a role's administrator.

Additional User Story
linked

Acceptance Criteria/Tests
The list of tests or criteria to be used to validate the story has been completed. May still need UAT or SIT / integration testing with other stories.

Failure
if any, fold in negative tests

Definition of Done
e.g.Passes all regression tests, Passes testing per acceptance criteria, Approved by UI team, Able to show feature in demo

Architectural/System or Component Impacts
This will be in Sanic and may utilize already existing apis

Updated title to match the body of this issue...
Chris says a role admin is slightly different than a role owner.  Admin has the power to add tasks to a role.  We aren't dealing with Tasks until V2 at the earliest.


Workaround llvmlite being incompatible with current llvm - Bug #49

Docker installation is broken. This fixes it.
Fixes #49
My change to requirements.txt will also affect users who do not use docker. It might be better to make that change only for docker? Up to you to see.
Please modify my changes as you see fit.

Hi, I've quietly followed the discussion and I believe this is a good workaround. Thanks!
To protect yourself, the project, and users of Mycroft technologies we require a Contributor Licensing Agreement (CLA) before accepting any code contribution. This agreement makes it crystal clear that along with your code you are offering a license to use it within the confines of this project. You retain ownership of the code, this is just a license.
Please visit https://mycroft.ai/cla to initiate this one-time signing.

Looks good and building fine.
Big thanks for the fix Ben!

Thanks goes to @JasonGhent and @Motoma


Fix documentation for Vault authorize endpoint

I guess it should be 301 instead of 302 in the documentation:
https://github.com/apideck-libraries/openapi-specs/blob/b2d6b9981ded08b996a7ec69e986b3c39d26c739/vault.yml#L2506

I think it would be more standard compatible if it returns 302.
RFC 6749

@elsmr @nicklloyd any thoughts?

Thanks for the feedback @AliKhalili! The team will have a look.

Hi @AliKhalili, the OAuth spec you linked says

While the examples in this specification show the use of the HTTP 302 status code, any other method available via the user-agent to accomplish this redirection is allowed and is considered to be an implementation detail.

So I would think 301 is fine? I'm just a bit hesitant making this change, as it's possible our users are relying on the current status code.

Ah but our description is indeed saying 302, while our implementation is 301. I will take fix that :smile: thanks for reporting 👍


Demo environment: Specify specific version of Maildev container

Currently the latest version is getting pulled in. What happens if the remote container is updated while I'm resetting the demo environment as part of a live demo and a non-functional image gets pulled down?
https://github.com/atc0005/brick/blob/788cfbe0e0282ceaf8db8c87f209b68017580c0d/contrib/demo/scripts/04-setup-env.sh#L41

https://hub.docker.com/r/maildev/maildev/tags

- sudo docker run --rm --detach --name maildev -p 1080:80 -p 1025:25 maildev/maildev
+ sudo docker run --rm --detach --name maildev -p 1080:80 -p 1025:25 maildev/maildev:1.1.0


Validate scalar metadata is scalar

Previously we only validated metadata is of the correct type for
DataFrame/Series/Index. This allowed a bug in quantile, where the
output would be a Scalar, but the metadata would be a Series. This
fixes that bug, and adds validation in the Scalar constructor.
Fixes #1640.

One thing I forgot to mention in the issue, .quantile will return a Series if the argument to Series.quantile is array-like. So s.quantile([.25, .75]) returns a Series where the index is [.25, .75]. I just skimmed through your fix, and it looks like it should handle that case, right?

Correct. We have tests for that too: https://github.com/dask/dask/blob/master/dask/dataframe/tests/test_dataframe.py#L667.

Has this fix been merged into 0.13.0 yet? I notice an error when I try the following:
ql = df.trip_distance.quantile([0, 0.1, 0.2])
df = df[df.trip_distance<ql[1]]

This errs out with ValueError: Metadata inference failed in gt.


[5.3] Remove a duplicate $this->initialRules = $rules;

I found out that initialRules is set in the constructor. But it is also being set by setRules($rules)
That's why I don't think this line needs to stay in the constructor

Going to leave for now because I'm doing a bunch of work for 5.4.


发现旷视用这个代码做商业应用，请问是否授权?

围观。。

围观+1

旷视也是git clone 再修改么

围观+2

这有点牛皮了。。。

围观~

围观吃瓜

旷视也是git clone 再修改么

为什么要用个“也”字？：-）

话说这篇论文不是旷世发表的么

This project is published under MIT license, which means anyone could use this project for commercial use without limitation, including the (direct) permission of the author.
All the user (Face++, in this case) needs to do is to provide the same copyright notice and permission notice in this project.

+1


122 job messages

Sorry, missed putting my comments in the review, tested it out and checked the changes. Looks good to me


Add ability to change post flair

Likely identical to the way userFlair is defined, just the same for postFlair. Config generator will also need to be updated.
There's also the question of what to do with the existing clearPostFlair property. Does it get deprecated? If not, which one takes priority?

clearPostFlair is fine to stay, because some people will still want it to clear.

clearPostFlair is fine to stay, because some people will still want it to clear.

Should I also add a clearUserFlair toggle? That might be the most elegant solution, since that would make the PostFlair and UserFlair configs match up.

Implemented as of commit c2b2a227cd1f068253b35ce7b82509c426e83121


repo: Yaml cleanups

This is an initial cleanup PR ahead of addressing https://github.com/envoyproxy/pytooling/issues/267 to resolve https://github.com/envoyproxy/envoy/issues/23348 and https://github.com/envoyproxy/envoy/issues/22222
Signed-off-by: Ryan Northey<EMAIL_ADDRESS>
Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

/assign @ggreenway

/retest


The Arabian message is shown for byte size unit when I set language to Korean

Describe the bug
The Arabian message is shown for byte size unit when I set language to Korean, as following screenshots.
To reproduce
Steps to reproduce the behavior:

Change language to Korean.
See any folder or files.

Expected behavior
Korean unit should be shown otherwise English would be better alternative.
Screenshots

System Information

OS Version: [Windows 10 20H2 19042.746]
App version: [e.g. v1.3.0]

The Arabian message is shown for byte size unit when I set language to Korean

That should be fixed with #4006. It will be available in the next update.


Created voterEmailAddressSignIn API Endpoint so we can verify a login secret key. Added link_to_sign_in email templates.

👍


Add "allowSyntheticDefaultImports" compiler option

Fixes #762.
Edit: Please bump the version of ntypescript to > 20151126.

released and updated typescript : https://github.com/TypeStrong/atom-typescript/releases/tag/v7.13.0 :rose:

Thanks! =)


FlashDeviceTest#set_screen_flash_and_capture_successfully() Failing on Pixel2API28 emulator

This test is failing consistently on the Pixel2API28 emulator during presubmit. For example, see here:
https://github.com/google/jetpack-camera-app/actions/runs/8461046229/job/23180220350

This is due to FlashDeviceTest not having the WRITE_EXTERNAL_STORAGE permission. See relevant logcat:
03-27 18:04:04.357  2324  2337 E DatabaseUtils: Writing exception to parcel
03-27 18:04:04.357  2324  2337 E DatabaseUtils: java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=3021, uid=10067 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
03-27 18:04:04.357  2324  2337 E DatabaseUtils: 	at android.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:706)
03-27 18:04:04.357  2324  2337 E DatabaseUtils: 	at com.android.providers.media.MediaProvider.enforceWritePermissionInner(MediaProvider.java:712)
03-27 18:04:04.357  2324  2337 E DatabaseUtils: 	at android.content.ContentProvider$Transport.enforceWritePermission(ContentProvider.java:515)
03-27 18:04:04.357  2324  2337 E DatabaseUtils: 	at android.content.ContentProvider$Transport.insert(ContentProvider.java:260)
03-27 18:04:04.357  2324  2337 E DatabaseUtils: 	at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:152)
03-27 18:04:04.357  2324  2337 E DatabaseUtils: 	at android.os.Binder.execTransact(Binder.java:731)
03-27 18:04:04.359  3021  3052 D CameraXCameraUseCase: takePicture onError: androidx.camera.core.ImageCaptureException: Failed to write to MediaStore URI: null

After fixing the permission issue, the camera HAL seems to crash on this device when trying to take a picture with the rear camera flash. I'm seeing the same stack trace as mentioned in b/195122056. I've skipped the test on this emulator for now.


feat: add recursive delete to Firestore class

Fixes #746.
This PR adds recursive delete functionality to the top level Firestore class in a method that recursively deletes all documents and subcollections at and under the specified level. If any delete fails, the promise is rejected with an error message containing the number of failed deletes and the stack trace of the last failed delete. The provided reference is deleted regardless of whether all deletes succeeded.
Example:
// Recursively delete a reference and log the references of failures.
const bulkWriter = firestore.bulkWriter();
bulkWriter
  .onWriteError((error) => {
    if (
      error.failedAttempts < MAX_RETRY_ATTEMPTS
    ) {
      return true;
    } else {
      console.log('Failed write at document: ', error.documentRef.path);
      return false;
    }
  });
await firestore.recursiveDelete(docRef, bulkWriter);

@thebrianchen how exactly does this work? What is docRef referring to? How would you delete an entire collection?

will this work with collections that have queries?
@schmidt-sebastian
const bulkWriter = firestore.bulkWriter();
bulkWriter.onWriteError(() => true);
await firestore.recursiveDelete(firestore.collection('Things').where('UserId', '==', id), bulkWriter);

No, unfortunately it won't. The underlying implementation issues a "key only query" to recursively list all documents in the collection. This query is limited and does not support any additional constraints.


Update README.md

callback URL updated.
have to pass ORDER_ID in URL param

Why is ORDER_ID Required on callback_url?
The callback URL is a POST method URL which has all the information regarding transaction including ORDER_ID.

paytm needs unique ORDERID for every request.. basically you have to create order in backend so it's not good to create/update order every time.  (if user cancel payment, close the tab or etc..)
in this case
generate unique ORDERID  every time and pass particular  order_id in  param (ORDER_ID)
i guess thats good regarding that case

Doesn't make sense - you have to send order id for each payment request, you send order id along with other information e.g. amount. when you get a callback it reaches the controller via POST method which will have required information.
I am pretty much sure you have miss understood the documentation - try integrating the way its documented - if you encounter error then raise a issue or raise a pull request fixing that issue
Peace.


Responsive-table it's bad when has some blank fields

I have a table with class="responsive-table"
When I have blank fields, the table looks bad.

While clearly not a permanent fix, what about adding   to the empty columns?

Good idea ! Works fine.
Hopefully the fix will come soon.

I have a fix that involves adding a before element with a non breaking space '\00a0'

Fixed in 7114660

Thanks,
When can I download the fix?


@conda-forge-admin, please add user @drbixx

Additional comment:
No response

Closed in favor of #8


Pressing Enter doesn't work on Delete disks dialog

Storage Explorer Version: 1.10.0
Platform/OS: Windows 10
Architecture: x64
Commit: f06deb7a6
Regression From: Not a regression
Steps to reproduce:

Expand 'Disks' node -> Open one resource group.
Create a new disk from a local VHD file.
Select the created disk then click 'Delete'.
On Delete dialog, press Enter directly -> Check the result.

Expect Experience:
The Enter key works well and the selected disk can be deleted successfully.
Actual Experience:
Nothing happens after pressing Enter on Delete dialog.

Fix merged into master


Thanks to cyclops, i have now use...

Thanks to cyclops, I have now use cyclops-react to write my code.  I need parallel converting hundards of microfost excel xsl files to xlsx format files in order to later process by java. The following code is just doing this thing, and i feel comfortable by using cyclops-react.
LazyFutureStream<File> xlsStream = LazyReact.parallelBuilder(8 + 1)
                .async()
                .of(new File("../2016-04").listFiles(File::isDirectory))
                .peek(aDir-> System.out.println("Dir:" + aDir.getName()))
                .map(aDir->aDir.listFiles(aFile->aFile.getName().toLowerCase().endsWith(".xls")))
                .map(ListX::of)
                .flatten();
xlsStream.peek(aXlsFile-> System.out.println("Begin Convert:" + aXlsFile.getName() + "..."))
                .map(ExcelUtils::convertXlsToXlsx)
                .peek(aXlsxFile-> System.out.println("    Converted:" + aXlsxFile.getName()))
                .futureOperations()
                .toList()
                .thenAccept(aFileList-> System.out.println("Over! All Converted[" + aFileList.size() + "] XLS Files to XLSX Files"));

Nice :)


F8 - Cheat Menu Hotkey stopped working with latest release

##Note
Do not report bugs while using this mod with the experimental branch, this mod is not updated in response to experimental branch updates, it is only updated for stable branches.
Describe the bug
F8 no longer works with latest update.  Menu bar item works though
Logs
Please provide a log file from the directory %USERPROFILE%\Documents\Captain of Industry\Logs
22-09-22_00-13-46_3522.log

I cannot reproduce. Sometimes issues with function keys are caused by the "F Lock" key. Can you check that toggling that key does not resolve your issue.

Yep, that's what it was...not sure why that was off...maybe the damn cat.  Thanks


Microchatbots 1.0.0

Issue description
Initial release should at least Telegram and Google Chat support.

@timyates Please review this project code.  Send PRs with any suggestions

Done in https://github.com/micronaut-projects/micronaut-chatbots/releases/tag/v1.0.0


Simulator is buying orders in the price of the next day instead of the same day

Dear Catalyst Maintainers,
Before I tell you about my issue, let me describe my environment:
Environment

Operating System: (Windows Version or $ uname --all)
Windows 10
Python Version: $ python --version
3.5
Python Bitness: $ python -c 'import math, sys;print(int(math.log(sys.maxsize + 1, 2) + 1))'
64
How did you install Catalyst: (pip, conda, or other (please explain))
pip

Now that you know a little about me, let me tell you about the issue I am
having:
Description of Issue
It seems that the simulator is buying / selling my orders in the price of the next day instead of the same day.
Bittrex prices
ZCL - 2018.1.1 - 0.00754999
ZCL - 2018.1.2 - 0.006336961
ZCL - 2018.1.3 - 0.00710002

What did you expect to happen?
In handle_data , data.current_dt is equal to 2018.01.01 23:59:00.
I check data.current(asset, "price"), and I get the price of 2018.1.1.
I use order_percent and , I expect the simulator to buy the coin in the price of 2018.01.01.

What happened instead?
The simulator actually buys the coin in the price of 2018.01.02.

Here is how you can reproduce this issue on your machine:
Reproduction Steps

run_algorithm with 10 btc and Bittrex exchange
In handle_data - run order_percent(symbol("zcl_btc"), 1.0)
In the next iteration, check context.portfolio.portfolio_value
portfolio_value should be approximately 8.393336455

What steps have you taken to resolve this already?
I debugged the code, I found out every_bar is first calling blotter.get_transactions and after that it is calling handle_data.
This means dt_to_use changes between my handle_data to get_transactions.
I validated my assumption that the price used really is the price of the next day.
Anything else?
Thank you for this tool!

I noticed there is also a value called context.current_day which is always 1 day before data.current_dt.
Using it doesn't solve the problem because order_percent(...,1.0) uses data.price of the next day so the amount bought is wrong.

Hi, We have an issue opened similar to what you are experiencing. We will post our conclusions there.
Thanks for issuing this!

Looking at #348  , someone suggested that instead of using daily interval just change your code to support minute interval and everything will work as expected.
So my problem is solved 😄


Issue while uploading csv/excel file in Apache Superset

Test Excel.xlsx
Test Data.csv
Hi Team,
I am very new to Apache superset and trying to learn basic functionality which critical to learn for upcoming opportunity in my project but I am getting below error while using CSV or Excel using a datasource and getting below error :
Error :
{"errors": [{"message": "can only concatenate str (not "list") to str", "error_type": "GENERIC_BACKEND_ERROR", "level": "error", "extra": {"issue_codes": [{"code": 1011, "message": "Issue 1011 - Superset encountered an unexpected error."}]}}]}
Also I am getting this ERROR when I select "Upload a CSV option": Failed to fetch schemas allowed for csv upload in this database! Please contact your Superset Admin!
Fix I tried : Superset has its own DB name "examples" which is postgresql and I enabled CSV upload from there. Also its not even uploading very clean excel with just 5 to 6 records. I have attached sample csv and excel file for reference.
I have installed Apache Superset on my MAC using below steps :
1.Mac OSX
Install Docker for Mac, which includes the Docker engine and a recent version of docker-compose out of the box.
Once you have Docker for Mac installed, open up the preferences pane for Docker, go to the "Resources" section and increase the allocated memory to 6GB. With only the 2GB of RAM allocated by default, Superset will fail to start.

I2. Clone Superset's Github repository(Using GitHub)

Clone Superset's repo in your terminal with the following command:
$ git clone https://github.com/apache/superset.git
Once that command completes successfully, you should see a new superset folder in your current directory.
Any quick help will be highly appreciated!!!!
Warm Regards,
Gary
email id<EMAIL_ADDRESS>

Duplicate of #15692

looking into it.

Thank you @junlincc. I really need to get this fix by today. I really appreciate your help!!!

Closing since the duplicate ticket https://github.com/apache/superset/issues/15692 is closed as resolved


Template cleanup

Some general cleanup of the templates.

This really isn't necessary. There's already an established style - 4 spaces per indent, 1 css declaration per line.
Thanks anyway.


mailer smtp integration, priority headers, cleanup / refactoring, fixed broken logging

logger was imported on each individual file, and sometimes not imported (so no logging happened in certain instances). I refactored the logging to the logger levels are set once for the mailer in periodic.py, and that sets it everywhere else, and the one logger object is passed around where needed.

you can get flags, exclamation marks or stars on your emails depending on the client if you set the x-priority header, this is now available. (it required switching to ses send_raw_email).

smtp support is now emailed (send_raw_email from ses) but use the same MimeText email format as python smtplib which is convenient. We have private DLs in exchange, that require auth to send emails to. SES doesn't support this auth. Our lambda mailer will have access to our private VPC to talk to our smtp relay also: https://docs.aws.amazon.com/lambda/latest/dg/vpc.html#vpc-configuring .. so this is great. Now we can send tagging and other support emails to private DLs, which we couldn't before. also external emails (from SES) get tagged as [EXT] by our exchange, so not those don't get tagged like that anymore, since they come from inside (so to speak). smtp defaults to using ssl.

there were parts of the code that weren't referenced by anything (dead code). for instance there were two ses send mail methods in the code base (now there is one). I did various cleanup and removing unreferenced variables, etc.

the mailer code was confusing, 'Worker', 'Processor', process_data_message, send_resource_set_message, etc. I renamed from variables, functions and classes after I learned what they do. process_data_message -> process_sqs_messsage, Worker -> MailerSqsQueueProcessor. etc. One of the functions was over 50 lines, so I broke it up into smaller logical pieces so it's easier to think about.

Let me know if you want me to change anything!

thanks, still digging through this.
fwiw, logger importing separately is fine, thats how python logging works, it creates singletons behind the scenes, whether a message shows up is more about which log channel name is used and where in the hierarchy it is, and the relevant config on the hierarchy (the stdlib logging is kinda of log4j inspired for better or worse), but explicitly passing around log channels as params is a red-herring as its not the interface for that library.

yes, logging is a singleton, but if you set the level in multiple files it's likely to cause confusing behavior if people set it to different levels. also you can more easily transition to setting the log level in a config file on start with this method. (if someone wanted that).
I will note I was confused by worker.py and why it didn't output the logging information. I set a debugger in there, and manually did log.info('test'), and nothing printed out. The log object wasn't configured, and I believe if it's not configured (basicConfig) logs go nowhere? after my change worker.py prints to stdout.

Overall, this looks really good, thanks!

https://github.com/capitalone/cloud-custodian/issues/706


fix: inscriptions content url

This pr fixes blank inscriptions

LGTM @alter-eggo, but I don't really follow what's going on here. Could you provide a little bit more of an explaination?


Power BI template - 2nd version

Continue work of #980 implementing new data viz colors and adding more practical examples
Add link to cit dev hub
Work in progress

Continue work of implementing new data viz colors and adding more practical examples
Add link to cit dev hub

What is the status of this @BeckyBrekke ?

Duplicate(s) of #1018 and #1025 ?

There have also been requests about including icons in power bi themes, we should investigate some ways to include our Icons as well.
There are some suggestions on possible ways to achieve this, but they are somewhat dated:

https://community.fabric.microsoft.com/t5/Desktop/How-to-add-Custom-icons-for-conditional-formatting/td-p/1254808
https://blog.enterprisedna.co/add-custom-icons-to-power-bi-reports/

The most evolved service for creating PowerBI themes (that also includes icons) I have found is this: https://themes.powerbi.tips/themes/icons
I have only explored some of the free/open functionality, but it appears that this service use the most up to date methods for creating Power BI themes in json format.

@BeckyBrekke What is the status on this?

@BirteThornquist  It was never started since this was supposed to incorporate new/updated data viz colors, see description. https://github.com/equinor/design-system/issues/980

Duplicate(s) of #1018 and #1025 ?

Not duplicates - those are other purposed enhancements for EDS support in Power BI.

There have also been requests about including icons in power bi themes, we should investigate some ways to include our Icons as well.
There are some suggestions on possible ways to achieve this, but they are somewhat dated:

https://community.fabric.microsoft.com/t5/Desktop/How-to-add-Custom-icons-for-conditional-formatting/td-p/1254808
https://blog.enterprisedna.co/add-custom-icons-to-power-bi-reports/

The most evolved service for creating PowerBI themes (that also includes icons) I have found is this: https://themes.powerbi.tips/themes/icons I have only explored some of the free/open functionality, but it appears that this service use the most up to date methods for creating Power BI themes in json format.

This should be a separate issue I think @Hjaf is this is something we want to support. @BirteThornquist ?


[WIP] Refactor groups_integrations.py

This PR makes various changes to groups_integrations.py to make it more readable and maintainable.

Hello @bourque, Thank you for submitting the Pull Request !

In the file exoctk/contam_visibility/field_simulator.py:

Line 81:1: W293 blank line contains whitespace
Line 165:24: W503 line break before binary operator
Line 167:24: W503 line break before binary operator
Line 172:75: W504 line break after binary operator
Line 182:37: W504 line break after binary operator
Line 270:5: E265 block comment should start with '# '
Line 289:5: E265 block comment should start with '# '
Line 294:30: E226 missing whitespace around arithmetic operator
Line 313:5: E265 block comment should start with '# '
Line 348:5: E265 block comment should start with '# '
Line 357:22: E226 missing whitespace around arithmetic operator
Line 359:22: E226 missing whitespace around arithmetic operator
Line 391:5: E265 block comment should start with '# '
Line 402:5: E265 block comment should start with '# '
Line 422:39: E502 the backslash is redundant between brackets
Line 501:5: E265 block comment should start with '# '
Line 524:5: E265 block comment should start with '# '
Line 543:5: E265 block comment should start with '# '
Line 548:30: E226 missing whitespace around arithmetic operator
Line 567:5: E265 block comment should start with '# '
Line 602:5: E265 block comment should start with '# '
Line 611:22: E226 missing whitespace around arithmetic operator
Line 613:22: E226 missing whitespace around arithmetic operator
Line 644:5: E265 block comment should start with '# '
Line 655:5: E265 block comment should start with '# '
Line 671:39: E502 the backslash is redundant between brackets
Line 784:5: E265 block comment should start with '# '

In the file exoctk/contam_visibility/visibilityPA.py:

Line 141:26: E712 comparison to False should be 'if cond is False:' or 'if not cond:'

In the file exoctk/exoctk_app/app_exoctk.py:

Line 192:21: W605 invalid escape sequence '('
Line 192:25: W605 invalid escape sequence ')'
Line 192:57: W605 invalid escape sequence '\c'
Line 192:74: W605 invalid escape sequence '\e'
Line 198:46: W605 invalid escape sequence '('
Line 198:48: W605 invalid escape sequence '\l'
Line 198:56: W605 invalid escape sequence '\m'
Line 198:66: W605 invalid escape sequence '\h'
Line 198:79: W605 invalid escape sequence '\m'
Line 198:85: W605 invalid escape sequence ')'
Line 199:46: W605 invalid escape sequence '('
Line 199:48: W605 invalid escape sequence '\l'
Line 199:56: W605 invalid escape sequence '\m'
Line 199:66: W605 invalid escape sequence '\h'
Line 199:79: W605 invalid escape sequence '\m'
Line 199:85: W605 invalid escape sequence ')'
Line 200:46: W605 invalid escape sequence '('
Line 200:48: W605 invalid escape sequence '\l'
Line 200:56: W605 invalid escape sequence '\m'
Line 200:66: W605 invalid escape sequence '\h'
Line 200:79: W605 invalid escape sequence '\m'
Line 200:85: W605 invalid escape sequence ')'
Line 206:58: W605 invalid escape sequence '('
Line 206:62: W605 invalid escape sequence '\m'
Line 206:69: W605 invalid escape sequence '\m'
Line 206:75: W605 invalid escape sequence ')'
Line 516:42: E261 at least two spaces before inline comment
Line 522:1: E302 expected 2 blank lines, found 1
Line 527:52: E231 missing whitespace after ','
Line 532:69: E261 at least two spaces before inline comment
Line 532:69: E262 inline comment should start with '# '
Line 533:5: E265 block comment should start with '# '

In the file exoctk/forward_models/forward_models.py:

Line 20:1: E266 too many leading '#' for block comment
Line 39:1: E266 too many leading '#' for block comment
Line 41:1: E302 expected 2 blank lines, found 1
Line 76:41: W504 line break after binary operator
Line 77:17: E128 continuation line under-indented for visual indent
Line 79:5: E722 do not use bare 'except'
Line 116:79: W504 line break after binary operator
Line 117:71: W504 line break after binary operator
Line 278:44: E241 multiple spaces after ','
Line 311:57: E231 missing whitespace after ','
Line 325:9: E303 too many blank lines (2)
Line 326:33: E261 at least two spaces before inline comment
Line 327:39: E261 at least two spaces before inline comment
Line 327:40: E262 inline comment should start with '# '
Line 329:28: E261 at least two spaces before inline comment
Line 330:31: E261 at least two spaces before inline comment
Line 340:67: E226 missing whitespace around arithmetic operator
Line 349:64: E226 missing whitespace around arithmetic operator
Line 350:97: E502 the backslash is redundant between brackets
Line 352:35: E127 continuation line over-indented for visual indent
Line 357:32: E127 continuation line over-indented for visual indent
Line 357:48: E226 missing whitespace around arithmetic operator
Line 357:65: E502 the backslash is redundant between brackets
Line 358:74: E502 the backslash is redundant between brackets
Line 366:50: E226 missing whitespace around arithmetic operator
Line 376:17: E128 continuation line under-indented for visual indent

In the file exoctk/groups_integrations/groups_integrations.py:

Line 69:31: E226 missing whitespace around arithmetic operator
Line 69:43: E226 missing whitespace around arithmetic operator
Line 69:80: E226 missing whitespace around arithmetic operator
Line 91:37: E226 missing whitespace around arithmetic operator
Line 123:30: E226 missing whitespace around arithmetic operator
Line 123:45: E226 missing whitespace around arithmetic operator
Line 123:60: E226 missing whitespace around arithmetic operator
Line 146:42: E226 missing whitespace around arithmetic operator
Line 171:35: E226 missing whitespace around arithmetic operator
Line 171:79: E226 missing whitespace around arithmetic operator
Line 198:54: E226 missing whitespace around arithmetic operator
Line 198:60: E226 missing whitespace around arithmetic operator
Line 198:72: E226 missing whitespace around arithmetic operator
Line 198:84: E226 missing whitespace around arithmetic operator
Line 198:101: E226 missing whitespace around arithmetic operator
Line 219:43: E226 missing whitespace around arithmetic operator
Line 242:58: E226 missing whitespace around arithmetic operator
Line 276:47: E226 missing whitespace around arithmetic operator
Line 340:42: E226 missing whitespace around arithmetic operator
Line 380:55: E231 missing whitespace after ':'
Line 380:61: E226 missing whitespace around arithmetic operator
Line 381:55: E231 missing whitespace after ':'
Line 381:61: E226 missing whitespace around arithmetic operator
Line 427:53: E231 missing whitespace after ':'
Line 427:59: E226 missing whitespace around arithmetic operator
Line 460:5: E266 too many leading '#' for block comment
Line 481:5: E266 too many leading '#' for block comment
Line 481:5: E303 too many blank lines (2)
Line 500:5: E266 too many leading '#' for block comment
Line 524:50: E226 missing whitespace around arithmetic operator
Line 525:50: E226 missing whitespace around arithmetic operator
Line 532:64: E226 missing whitespace around arithmetic operator
Line 532:75: E226 missing whitespace around arithmetic operator
Line 533:59: E226 missing whitespace around arithmetic operator
Line 533:73: E226 missing whitespace around arithmetic operator
Line 534:59: E226 missing whitespace around arithmetic operator
Line 534:73: E226 missing whitespace around arithmetic operator
Line 576:17: E261 at least two spaces before inline comment

If you have not done so, please consult PEP8 and PEP257


[WIP] Refactored eval for multithreading

Issue: https://github.com/DiceDB/dice/issues/565
(Note: currently only supports the PING command)
Flow:

Introduced two functions Scatter and Gather for each command in the eval.
Each ShardThread will call the Scatter function of a command
The scatter function will return a response in the form of interface{} and an error
The response from eval in the form of ScatterResponse then passed till workers
Worker upon gathering a response from each shard then calls the Gather function for each command
The Gather function implements its own logic to build a client-required response

Combined efforts from @yashs360 and me 🚀

@pratikpandey21 @soumya-codes @JyotinderSingh ^^

Closing this as invalid. Opened another PR - https://github.com/DiceDB/dice/pull/634


Remove System.Reactive package

What does the pull request do?
Replaces System.Reactive package with internal helpers.
Why?
Problems with System.Reactive package:

It forces users to include WPF and WinForms packages on net6.0-windows builds, see https://github.com/AvaloniaUI/Avalonia/issues/9549
It bloats package size especially with AOT/R2R scenarios, as this dependency is full of generics https://github.com/dotnet/reactive/issues/1461#issuecomment-1005689785
Similarly to Linq it's just better to avoid abstractions like this, but in the PR I tried to replace with the same code.

Breaking changes

Any usage of ISubject in the public API was replace with IObservable or IObserver or pair of both, depending on the context.
Unit type usage was replaced with object type.
AvaloniaScheduler was moved to Avalonia.ReactiveUI package.
If developers rely on System.Reactive package, but didn't use ReactiveUI, they might need to include System.Reactive manually, as it won't be a transitive dependency anymore from avalonia.

Fixed issues
Fixes #9549

You can test this PR using the following package version. 11.0.999-cibuild0027802-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

Tested this PR and saw a nearly 20% dramatically size improvement on NativeAOT-ed CC.NetCore. Really impressive.

@hez2010 it should be even better together with another PR #9760. Unless you already have referenced specific packages instead of whole Avalonia.Desktop.

You can test this PR using the following package version. 11.0.999-cibuild0027846-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

You can test this PR using the following package version. 11.0.999-cibuild0027883-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

You can test this PR using the following package version. 11.0.999-cibuild0028427-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

Im wondering can we also remove the System.Reactive dependency from MiniMvvm and ControlCatalog?

You can test this PR using the following package version. 11.0.999-cibuild0028437-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

You can test this PR using the following package version. 11.0.999-cibuild0028439-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

You can test this PR using the following package version. 11.0.999-cibuild0028447-beta. (feed url: https://pkgs.dev.azure.com/AvaloniaUI/AvaloniaUI/_packaging/avalonia-all/nuget/v3/index.json) [PRBUILDID]

Why are the replacement helper classes internal? This PR breaks features as simple as AvaloniaProperty.Changed.Subscribe. @maxkatz6, please make Avalonia.Reactive.Observable and its dependencies public!
We could of course add the Reactive package to our application, but a) that defeats the purpose of this PR and b) new Avalonia developers aren't going to know which package to add.
For now I'll take a copy of the "internal" helper classes and put them in my own solution.

@tomenscape this PR is more about having a choice - to include or not System.Reactive.
In general, we don't want to maintain public reactive extensions by ourselves, even if it's couple of API methods like Subscribe, Select, Where...

I can see your concerns about the very low-level methods and classes. But please reconsider at least for the Observable.Subscribe and Observable.Select methods. These are used to listen for properties changing and to provide inline value conversion when binding in C#. Both are common activities that are no longer possible with vanilla Avalonia.
AvaloniaObjectExtensions.AddClassHandler is still public, so I don't see why these other two shouldn't be as well. Move them into the extension call and give them semantic names if you want, but please spare new developers the headache of trying to work out how to implement all this stuff.

AvaloniaObjectExtensions.AddClassHandler is still public

AFAIK, it doesn't conflict with reactive extensions.

But please reconsider at least for the Observable.Subscribe and Observable.Select methods

I see why Subscribe is needed for the developers, especially not as experienced, who don't know about reactive extensions much. That's something that we should revisit now...
But I don't see any reason to add public extensions for the Select method. Without full set of reactive extension (which we will not provide), this method isn't as useful. And with combination with Subscribe method you can simply do mapping in the subscribe handler.

Select statements can be sent straight back into Avalonia. Here's an example of how we use them to provide value conversion:
textBlock.Bind(Layoutable.WidthProperty, border.GetObservable(Visual.BoundsProperty).Select(r => r.Width));

The GetObservable and Select calls could be rolled up into a method with a signature similar to GetValueConversionObservable<TSource,TResult>(this AvaloniaObject, AvaloniaProperty<TSource>, Func<TSource,TResult> selector),


Fixes security issue with Avatar Edit Modal

Proposed Changes

Fixes #8915

@ohcnetwork/care-fe-code-reviewers
Merge Checklist

[x] Add specs that demonstrate bug / test a new feature.
[x] Ensure that UI text is kept in I18n files.
[x] Request for Peer Reviews
[x] Completion of QA

LGTM


TypeError in dPULearn fit function

Hi,
I got the following error message:

I have checked, there is no such argument in check_X function in _utils/check_data.py:

Thank you for bringing this issue to our attention. The error has been addressed in the latest version available on GitHub. We plan to release the updated pip version (0.1.3) at the beginning of January.


Optional Language Selection

Added an optional Param to both getMp3 and saveMp3  functions. Based on arguments array if an option's object it present it will adjust the translate language based on the tl property of the object. if none is supplied it will still default to Italian. read me has been updated to show usage.

@toddjudd  thank you so much in advance for your PR. Could you just remove the .mp3 file? Then I will approve and marge it!

@enricoaleandri You're very welcome, I've actually never done any collaborative work like this on Git hub, so I hope everything is up the expected standard. I've removed the .mp3 as requested, sorry for mistakenly adding that in the first place. Thanks for your original work on the project.

Thanks Tod It's just closed the Issue #3


<EMAIL_ADDRESS>Fix hash

Closes #171

All changes look good.
Wait for review from human collaborators.
chromium

[x] Description
[x] License
[x] Hashes
[x] Checkver
[x] Autoupdate
[x] Autoupdate Hash Extraction


Allow to copy SVG from details view

Done in https://github.com/mondeja/simple-icons-website-rs/commit/2e285e764430320871356a759c216832e41a7a07


Health Test in Boot ROM code for TRNG

Does Boot ROM code run health test for the TRNG interface to verify the NIST compliance.

We are not targeting enablement of ESV based on the updated specs released by NIST.  We have looked at our usages and there aren't any that require the ESV certification in 1.X programs.
The TRNG implementation in Caliptra is based on a 140-2 TRNG expectation.
That being said, we do have the health tests in the HW and they should run.


Set up Traction Contractor Credential Issuers for CSB/CDT

Note: this might need some refinement, couple TBDs
Checklist here can probably become some shared documentation for this type of onboarding in the future
Tracking tasks required to set up the Court Services Branch tenants that will be used for issuing the Contractor Credential and other decisions/TODOs
There will be 2 tenants:
CDT (this writes the Schema)

[x] Tenant name: BC Cyber Security and Digital Trust
[x] Technical contacts (Contact email in Tenant) (same for all envs):

Wade Barnes
Ivan Polchenko
Clecio Varjao

CSB (this creates the cred def based on CDT's schema)

[x] Tenant name: BC Court Services
[x] Technical contacts (Contact email in Tenant) (same for all envs):

Wade Barnes
Clecio Varjao
Michael Sakuraba

Tasks for setting up Issuer Tenants:
Note these can be tested out on the sandbox environment except that would use the BCOVRIN-TEST ledger and have automatic endorsement.

[ ] Review Traction environment docs

Development environment
For CDT Tenant

[x] Create request for Tenant in DEV Tenant UI.
This requires an IDIR to onboard. Traction Innkeeper (DITP team) will approve request for tenant creation.
Note: don't think we have devhub step by step docs on onboarding/creating a tenant? Maybe in-app and email instructions are enough.
[x]  Get approval back to email provided once DITP team approves. Use that 1-time password to create wallet (follow links in email)
[x] Save the wallet key in an agreed on secure location. Do not share with anyone!
TODO: Who should get this key/where to store?

Me (Wade) - We have a place we store these types of credentials.

[x] Log in with key and create API Key
See Integration Documentation for some details
[x] Become an issuer on Candy DEV. See docs
Not in those docs but this will require some async steps with Endorser
[x] Appropriate person who is the Candy Dev Endorser accepts connection
[x] Once connection is accepted request DID publishing
[x] Appropriate person who is the Candy Dev Endorser endorses that transaction and...
Note: in these cases are we adding the DID to the allow list in the Endorser
[x] Complete Issuer setup
[x] Add any necessary webhook endpoints back to the A2A app through the Tenant UI
[x] Through the Tenant UI create a schema with the schema def from the governance docs and keep the schema ID

For CSB Tenant

[ ] Do all the same steps as above except in the "create a schema" step, create a cred def based on the schema created by the CDT tenant

Test environment
For CDT Tenant

[ ] Create request for Tenant in TESTTenant UI.
This requires an IDIR to onboard. Traction Innkeeper (DITP team) will approve request for tenant creation.
[ ]  Get approval back to email provided once DITP team approves. Use that 1-time password to create wallet (follow links in email)
[ ] Save the wallet key in an agreed on secure location. Do not share with anyone!
[ ] Log in with key and create API Key
See Integration Documentation for some details
[ ] Become an issuer on Candy TEST. See docs
Not in those docs but this will require some async steps with Endorser
[ ] Appropriate person who is the Candy Test Endorser accepts connection
[ ] Once connection is accepted request DID publishing
[ ] Appropriate person who is the Candy Test Endorser endorses that transaction and...
Note: in these cases are we adding the DID to the allow list in the Endorser?
[ ] Accept the TAA for Candy Test
Note: is there anyone specific that must do this or other governance, what TAA acceptance type?
[ ] Complete Issuer setup
[ ] Add any necessary webhook endpoints back to the A2A app through the Tenant UI
[ ] Through the Tenant UI create a schema with the schema def from the governance docs and keep the schema ID

For CSB Tenant

[ ] Do all the same steps as above except in the "create a schema" step, create a cred def based on the schema created by the CDT tenant

Production environment
For CDT Tenant

[ ] Create request for Tenant in Prod Tenant UI.
This requires an IDIR to onboard. Traction Innkeeper (DITP team) will approve request for tenant creation.
[ ]  Get approval back to email provided once DITP team approves. Use that 1-time password to create wallet (follow links in email)
[ ] Save the wallet key in an agreed on secure location. Do not share with anyone!
[ ] Log in with key and create API Key
See Integration Documentation for some details
[ ] Become an issuer on Candy PROD. See docs
Not in those docs but this will require some async steps with Endorser
[ ] Appropriate person who is the Candy Prod Endorser accepts connection
[ ] Once connection is accepted request DID publishing
[ ] Appropriate person who is the Candy Prod Endorser endorses that transaction and...
Note: in these cases are we adding the DID to the allow list in the Endorser?
[ ] Complete Issuer setup
[ ] Add any necessary webhook endpoints back to the A2A app through the Tenant UI
[ ] Accept the TAA for Candy Prod
Note: is there anyone specific that must do this or other governance, what TAA acceptance type?
[ ] With the appropriate API calls in Swagger or with a script create a schema with the schema def from the governance docs and keep the schema ID
By policy this is not allowed to do in the Tenant UI in production

For CSB Tenant

[ ] Do all the same steps as above except in the "create a schema" step, create a cred def based on the schema created by the CDT tenant

For technical contacts, are we limited to a single contact, or can we have multiple?

@loneil, What documentation (steps) need to be followed in order to request the tenant for CSB.
cc @HemanthKona

@loneil, Once we have answers to enough of the questions to created the CDT tenants, we should walk through that together with @HemanthKona so he has an overview of what needs to be done with the CSB tenant.

There are no endorser rules configured for CANdy dev (or test); https://github.com/bcgov/dts-endorser-service/tree/main/configurations.  Which indicates they are using their default configuration of being configured per-connection, until we define and register the necessary rules to allow these new agents to write to the ledgers.

Details on defining and publishing rules can be found here; https://github.com/hyperledger/aries-endorser-service?tab=readme-ov-file#granular-configuration-of-auto-endorsement
The related API docs (for dev) can be found here; https://aries-endorser-service-dev.apps.silver.devops.gov.bc.ca/endorser/docs

For technical contacts, are we limited to a single contact, or can we have multiple?

On the actual Tenant record in Traction there's just the 1. It's set to the email who requested the tenant and that fills into a "Contact Email" that can be changed through the management UI after it's created if need be.

@loneil, What documentation (steps) need to be followed in order to request the tenant for CSB. cc @HemanthKona

It's self-serve so I think should prompted through well enough by just going to the Tenant UI and starting the process, then there's emails sent to the requester confirming with details about next steps, and an email saying what to do once the approval happens. We don't have step by step documentation for this on devhub, may want to add that, or maybe the process is self-documented enough.
There is an (old, doesn't include IDIR login) video here https://github.com/bcgov/traction/blob/main/docs/USE-CASE-ONBOARD.md showing both sides of the reservation process.
But yeah for this I'd say just go to the UI and start and follow from there (note in dev/test/prod an IDIR is a requirement to get started, not in sandbox)

@loneil, Once we have answers to enough of the questions to created the CDT tenants, we should walk through that together with @HemanthKona so he has an overview of what needs to be done with the CSB tenant.
Sounds good

There are no endorser rules configured for CANdy dev (or test); https://github.com/bcgov/dts-endorser-service/tree/main/configurations. Which indicates they are using their default configuration of being configured per-connection, until we define and register the necessary rules to allow these new agents to write to the ledgers.

Yeah this part  I wasn't sure of yet? Will the allow list for transactions here be on the DID, or specific to the particular schema or cred def.

There are no endorser rules configured for CANdy dev (or test); https://github.com/bcgov/dts-endorser-service/tree/main/configurations. Which indicates they are using their default configuration of being configured per-connection, until we define and register the necessary rules to allow these new agents to write to the ledgers.

Yeah this part I wasn't sure of yet? Will the allow list for transactions here be on the DID, or specific to the particular schema or cred def.

This is where I was going to start my work, fleshing out the rules for both agents and submitting a draft PR pending the details needed for the rules.

Draft rules with placeholders for the DIDs created here; https://github.com/bcgov/dts-endorser-service/pull/51

I've proposed some tenant names and technical contacts in the description.  Confirming a technical contact for CSB.

Draft rules with placeholders for the DIDs created here; bcgov/dts-endorser-service#51

For dev we usually have enabled auto-endorse once a connection is accepted, to facilitate independent development. test has been an ad-hoc process to validate with the issuer everything works as expected, prod uses rules. I'd be okay moving to a file-based ruleset for test as well, but am wondering whether we want that in dev or we should add a wildcard list there so we don't have to be on top of potentially a lot of requests.

Draft rules with placeholders for the DIDs created here; bcgov/dts-endorser-service#51

For dev we usually have enabled auto-endorse once a connection is accepted, to facilitate independent development. test has been an ad-hoc process to validate with the issuer everything works as expected, prod uses rules. I'd be okay moving to a file-based ruleset for test as well, but am wondering whether we want that in dev or we should add a wildcard list there so we don't have to be on top of potentially a lot of requests.

I'd like to see some rules defined.  I'm fine with opening it up with wild cards.  My thought with the rules is we have some structure and pattern established.  It makes sense for the rules to become more restrictive as they approach prod.

@esune, The discussion about the rules does raise a question though ...  What is the order of precedence given to the rules?  It's not explicitly defined in the documentation.  There is the global settings, per connection settings, and granular settings (rules).  I know the global settings take precedence over the per connection settings.  Do the per connection settings then take precedence over the granular settings (rules)?  I'm asking so we don't inadvertently break any of the existing agents we've configured with per connection settings.

@esune, The discussion about the rules does raise a question though ... What is the order of precedence given to the rules? It's not explicitly defined in the documentation. There are the global settings, per connection settings, and granular settings (rules). I know the global settings take precedence over the per connection settings. Do the per connection settings then take precedence over the granular settings (rules)? I'm asking so we don't inadvertently break any of the existing agents we've configured with per connection settings by introducing the rules.

When checking rules, the service will check if:

is it globally allowed
is it allowed for this connection
is it allowed by a configured "granular" setting (which could just have wildcards)

@Gavinok implemented the logic and should be able to
The idea with our deployments is that everything is set to deny-by-default and then allow as needed, either by using a granular rule OR allowing things on a per-connection basis.

Also 👍🏻 to proposed tenant names

@WadeBarnes As far as priority the following code handles the rejection or endorsement
https://github.com/hyperledger/aries-endorser-service/blob/unique-index-connection_id/endorser/api/services/auto_state_handlers.py#L309-L338
ENDORSER_AUTO_ENDORSE_TXN_TYPES > Allow List API (rules) > ENDORSER_REJECT_BY_DEFAULT

When checking rules, the service will check if:

is it globally allowed
is it allowed for this connection
is it allowed by a configured "granular" setting (which could just have wildcards)

Perfect, thanks for confirming @esune and @Gavinok

For the dev environment:
The CDT and CSB tenants have been created, and endorser rules (minus the cred-def rules) have been registered with the endorser.  The DIDs and schema have been written to CANdy dev.

CDT DID: https://candyscan.idlab.org/tx/CANDY_DEV/domain/34741
contractor-credential Schema: https://candyscan.idlab.org/tx/CANDY_DEV/domain/34742
CSB DID: https://candyscan.idlab.org/tx/CANDY_DEV/domain/34743

We were unable to write the CSB cred-def rules due to errors encountered in the Swagger UI when attempting to post the rule file.  @loneil will be following up on that.
We also did not write CSB's contractor-credential cred-def to the ledger.  Partly due to the above issue, but also due to the fact that the Tenant UI does not support creating a cred-def from another issuer's schema, for example creating the CSB contractor-credential cred-def from the CDT contractor-credential schema.
Ledger transactions were created through the tenant UI, endorser rules were registered by uploading the rules files through the endorsers swagger API.

@loneil, Do you want to try registering the endorser rules in dev again?

@loneil, Do you want to try registering the endorser rules in dev again?
This part's done in Candy DEV

We also did not write CSB's contractor-credential cred-def to the ledger. Partly due to the above issue, but also due to the fact that the Tenant UI does not support creating a cred-def from another issuer's schema, for example creating the CSB contractor-credential cred-def from the CDT contractor-credential schema. @loneil will follow-up on the steps needed to create the CSB cred-def from the CDT schema.

I was mistaken about this I think, tried it out on one of my Tenants and believe just the Copy Schema  From Ledger feature  should work the way we want. Can go into the tenant UI as CSB tenant and

in Schema Storage use the Copy
enter the CDT Contractor Cred schema ID
Once that copy is done, make a cred def from it on that new row (might need to refresh screen)\
Will need to pick a rev reg size and tag name

Will need to pick a rev reg size and tag name

rev reg size: 3000
tag: csb-dev

@WadeBarnes request from Kyle to do it with transcriber as the tag for lower envs too as when trying things out without OCA it will show "Csb Dev" as the credential name otherwise
Created a  RSDAVyaiUjFPCj245PoY3P:3:CL:34742:transcriber in the CSB tenant as well, mostly to test out current endorsement rules are all good from the start. Can remove if there's an issue

@loneil, Looking to the future the cred-def is not specific to transcribers, the same cred-def would be used for other contracted services such as interpreters.  So we should likely tag it as contractor or contractor-credential so it's more generic.  Agree csd-dev is not great.

@WadeBarnes - it depends on the use case, but in this case, I think the best solution would be to use different cred defs/tags for different purposes. For CSB, the next one would be "interpreter". There is certainly multiple ways to handle it though.

@WadeBarnes - it depends on the use case, but in this case, I think the best solution would be to use different cred defs/tags for different purposes. For CSB, the next one would be "interpreter". There is certainly multiple ways to handle it though.

If the credential has the same access "power" and attributes regardless of the type of contractor, then it would definitely be easier to have a more generic tag as Wade is suggesting so the application does not have to include role management and tracking when issuing/revoking. If there is some sort of access control based on the role the user has in the system then the separate tags would be easy to implement.

I think managing cred-defs that differ in no other way other than tag for different use cases will not scale well and will end up causing confusion, at least at the human (developer) level.  I can envision, even one of us, browsing the ledger and comparing the cred-defs and asking why there are two or more "identical" cred-defs.

@krobinsonca how many different types of contractors do we forecast will have access to the systems? With LCRB it's never going to be more than 3 (I think?) and it has some specific meaning since teh credentials indicate different roles. If there are no distinct roles in the application - see my comment above - we may still do separate creddefs, but it might not really be beneficial and will increase the credential handling logic on issuance/reissuance/revocation - that's the main concern.

If we do continue o use this pattern, we have to ensure we make a conscious effort to educate the product teams (there could be many all from different vendors) as to the nuances of the differences, and ensure we/they ensure the correct cred-defs are machine selected and not left up to the end user issuing the credential to select.

I'm thinking it would be a good idea to deep dive into the requirements that caused this pattern to emerge to determine whether it's actually an anti-pattern and if there is a better way to accomplish the same thing in a more scalable fashion that does not require multiple cred-defs to be written to the ledger unnecessarily.  I'm looking at this from a KIS and scalability perspective.


Simplify error handling

How action creators work, in particular error handling is a recurring issue (#157, #152, #127) we need to solve.
I think we should just go back to a simpler, explicit approach (Yahoo has some good examples):

No more dispatching ACTION_{type} errors
Don't wrap action creator functions in promises
Explicit error handling

var FooActionCreators = Marty.createActionCreators({
  createFoo(foo) {
    this.dispatch(Constants.RECIEVE_FOO, foo);

    FooAPI.createFoo(foo).catch((error) => {
      this.dispatch(Constants.RECIEVE_FOO_FAILED, foo, error);
    });
  }
});

As much as I'd like to have some automatic error handling/retrying I think we should get the simple case right first.

@oliverwoodings @dariocravero what do you think?

:+1: for a simplified approach. Clean stack traces are vital and even though we have some tracing right now the confusion it creates as to what actually originated the exception is enough to rethink what Marty is doing here.
Eventually the automated functionality could be provided through some syntactic sugar at some stage?

#166 should resolve this


bug fixed

Description of changes
Please provide a short description of the change or if the change is sufficiently described in the GitHub issue, provide a link to the issue.
How has this been tested?
Please describe the test strategy you followed. If not tested, please explain why.

[X] automated unit test
[ ] automated integration test
[ ] manual, exploratory test

In case of manual test, please document the test well including a set of user instructions and prerequisites. Each including an action, it's result, and where appropriate a screenshot.
Checklist before requesting a review

[X] My code is easy to understand
[X] My code follows the coding guidelines of this project
[X] My code fulfills all acceptance criteria
[ ] The test coverage (line and branch) is reasonably high, especially on Service classes and other classes with complex logic
[ ] I have made corresponding changes to the documentation or
the wiki/adr
[ ] I made no breaking changes in the database schema or if so, I will perform a database migration

Checklist for reviewer

The code is easy to understand
The code follows
the coding guidelines of
this project
The code is tested or if not, the reason is documented or discussed
The added and existing tests reasonably cover the code change
The code has no breaking changes in the database schema or if so, the assignee is aware of it and
will perform a database migration

Your code does not compile. Did you even run the tests??

yes, I run the tests


Detects iPhone XR simulator but not device

We have many users with iPhone XRs and while this module correctly detects an XR using the simulator it doesn't detect actual XR devices.  Unfortunately we personally do not have an XR device and cannot debug the issue, so we were hoping the issue could be debugged and fixed here instead.  Thanks!

released 1.0.2 to fix the problem


Recursive obfuscation support?

It would be nice if there was a command line flag to apply the obfuscator to a directory and all of it's sub directories. That way, I wouldn't have to call it on each folder separately.

Looks like i should make recursive directory compilation without flag like in other CLI tools like babel, typescript and others.

In 0.14.0 all directories will obfuscated recursively.
No release date - somewhere in january.

out in<EMAIL_ADDRESS>

Finally, I didn't understand, what I should write in my script to recursive directory obfuscation? I created this script in a root folder that contains folder Source with all scripts. Help please, what should I add to it?
var JavaScriptObfuscator = require('javascript-obfuscator');

var obfuscationResult = JavaScriptObfuscator.obfuscate(
'/Source',
{
    compact: true,

    controlFlowFlattening: true,
    controlFlowFlatteningThreshold: 0.75,

    deadCodeInjection: true,
    deadCodeInjectionThreshold: 0.5,

    debugProtection: true,
    debugProtectionInterval: true,
    disableConsoleOutput: true,

    identifierNamesGenerator: 'hexadecimal',

	log: false,

	renameGlobals: false,

    rotateStringArray: true,
    seed: new Date().getMilliseconds(),

    selfDefending: true,

    shuffleStringArray: true,

    stringArray: true,
    stringArrayEncoding: 'base64',
    stringArrayThreshold: 0.5,

	transformObjectKeys: true,

	unicodeEscapeSequence: false
});