Multi-factor Configuration Issue

Hi all,
How do I disable the multi-factor authentication entirely on FusionAuth? When the multi_factor_configuration property is omitted, the multi-factor policies and authenticator settings are enabled by default shown in the screenshot below.

Set multi_factor_configuration.login_policy = "Disabled"
The default is enabled, so it has to be configured as disabled.
Hope that helps!

Hi @matthewhartstonge, thank you for getting back to me!
I've tried setting it to Disabled as shown below:
multiFactorConfiguration: [
  {
    loginPolicy: "Disabled",
  },
],

However, this error appears on the pipeline:
Error: Incorrect attribute value type

on cdk.tf.json line 802, in resource:
802:         "multi_factor_configuration": [
803:           {
804:             "login_policy": "Disabled"
805:           }
806:         ],

Inappropriate value for attribute "multi_factor_configuration": element 0: attributes "authenticator", "email", and "sms" are required.

How can this be fixed?

I can confirm that the HCL version of the multi_factor_configuration block works as expected, but the JSON translation throws a validation error.

@mmanes how would you specify the details for email sms and authenticator?
I'd still argue its broken because you cant expect a list in either 3 of them but further configuration settings like enabled = true

@Aaron-Ritter I agree that it is odd that those fields are defined as Lists with maxItems: 1 instead of single blocks. For now you can use something like this to configure all of the MFA methods:
multi_factor_configuration {
  login_policy = "Enabled"
  authenticator = [
    {
      enabled = true
    }
  ]

  email = [
    {
      enabled = true
      template_id = fusionauth_email.test.id
    }
  ]

  sms = [
    {
      enabled = true
      template_id = "1f1c84b0-e222-fb02-d70b-910c770495c3"
      messenger_id = "0e0f3f56-1e99-4c28-b3be-f7ff557b78a1"
    }
  ]
}

Thanks, sadly this does not work.
 Error: Too many list items

   with fusionauth_tenant.fusionauth-2id-online,
   on tenant.tf line 1, in resource "fusionauth_tenant" "fusionauth-2id-online":
    1: resource "fusionauth_tenant" "fusionauth-2id-online" {

 Attribute supports 1 item maximum, but config has 2 declared.

And i tried to add you trick above with defining it as a list with one item multi_factor_configuration [{ ... }] too.
Error: Argument or block definition required

   on tenant.tf line 368, in resource "fusionauth_tenant" "fusionauth-2id-online":
  368:   multi_factor_configuration [{

 An argument or block definition is required here. To set an argument, use the equals sign "=" to introduce the argument value.

I think its a clear giveaway that the IDE with Terraform and HCL compatibility can't autocomplete this either, that this needs to be implemented differently in the provider.

If you can post your full multi_factor_configuration block, I may be able to help further. But from the error message, it looks like you may have it defined like this:

multi_factor_configuration [{

This should not be a list, and instead be multi_factor_configuration {, while the authenticator, email, and sms elements need to be lists, each containing a single configuration block.
I can confirm that the configuration I posted above applies successfully for me.
Unfortunately, changing this syntax now would break existing configurations.

this is the configuration
resource "fusionauth_tenant" "fusionauth-tenant2" {
  name                               = "tenant2"
......
  multi_factor_configuration {
    login_policy = "Enabled"
    authenticator = [
      {
        enabled = true
      }
    ]

    email = [
      {
        enabled = true
        template_id = fusionauth_email.two-factor-authentication.id
      }
    ]
  }
}

which causes this issue:
 Error: Too many list items

   with fusionauth_tenant.fusionauth-2id-online,
   on tenant.tf line 1, in resource "fusionauth_tenant" "fusionauth-2id-online":
    1: resource "fusionauth_tenant" "fusionauth-2id-online" {

 Attribute supports 1 item maximum, but config has 2 declared.

This multi_factor_configuration [{ is just something i tried because of your earlier comment to rule it out.

I can confirm that the HCL version of the multi_factor_configuration block works as expected, but the JSON translation throws a validation error. However, this should work:
"multi_factor_configuration": [{
    "login_policy": "Disabled",
    "email": [],
    "sms": [],
    "authenticator": []
}]

Ok, that multi_factor_configuration block works for me, so I think your latest error is from something else in the fusionauth_tenant resource.
Do you have any duplicate entries in the tenant? Or, if you can post the entire resource block, I can test it on my side.

thats it! thanks a lot @mmanes!
I actually had the multi_factor_configuration already in the configuration 🤦, but the IDE did not complain about the duplicated configuration and overlooked it myself too with the config is already being very big.

No problem, glad you got it working!

@mmanes i'd argue to re-open it for two reasons:

multi_factor_configuration has no example configuration https://registry.terraform.io/providers/fusionauth/fusionauth/latest/docs/resources/tenant
The IDE is not able to autocomplete the multi_factor_configuration content so i'd argue it needs a fix in some way


Proposal: Replace integers with floats

Add support for accepting float values to player balance

Floats should never be used for storing player balance. What you want is decimals, not floats. This can be achieved simply by multiplying the number by a constant float when displaying money.
This can be implemented in a similar way as monetary units.

isn't this duplicate of #69 anyway?

isn't this duplicate of #69 anyway?

Yes, it is already mentioned in https://github.com/cooldogedev/BedrockEconomy/issues/76


White-Oak/qml-rust

Is there any relation to White-Oak/qml-rust? is this a parallel project with the same aims? Wouldn't it be good to join your forces?
I'd love to see good,stable Qt5/QML bindings for Rust - but developing 2 different in parallel is a bit much of a needless effort?
Don't get me wrong, this is just a qustion.

@nerdoc as you can see, this one (qmlrs) is no longer actively mantained.
qml-rust is more advanced, it supports qt objects bindings (so things like slots and signals are possible).
It is also based on different bindings.
I am (the author of qml-rust) in no relation to this project, or to its author.

@White-Oak

it supports qt objects bindings (so things like slots and signals are possible)

Does this mean that your goal is full qt support?

Thanks.


[incubator/kafka] offsets and transaction log topics' replication factor hardcoded to 1

Is this a BUG REPORT or FEATURE REQUEST? (choose one):
FEATURE REQUEST
Version of Helm and Kubernetes:
helm: 2.6.2
k8s: 1.7.5
Which chart:
incubator/kafka
What happened:
Inside the docker image, the file /opt/kafka/config/server.properties contain:
############################# Internal Topic Settings  #############################
# The replication factor for the group metadata internal topics "__consumer_offsets" and "__transaction_state"
# For anything other than development testing, a value greater than 1 is recommended for to ensure availability such as 3.
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

Both replication factors are hardcoded to 1 and is not being replaced by the "Replicas" variable in values.yaml
What you expected to happen:
I expect the replication factor to be changed depending on the value I assign to the variable Replicas (or some other variable).
Anything else we need to know:
Normally the settings are being overriden in the command part of statefulset.yaml
        command:
        - sh
        - -c
        - "./bin/kafka-server-start.sh config/server.properties --override zookeeper.connect={{ .Release.Name }}-zookeeper:2181/ --override log.dirs={{ printf "%s/logs" .Values.DataDirectory }} --override broker.id=${HOSTNAME##*-}"

It would be great if there's an "additionalParameters" variable to append to the command.

@charlesverdad we've provided the ability to set configuration overrides in the chart now which should allow you to change these values -- can you check that it satisfies the concerns you've posted here?


Hover tooltip for terminal links is occluded when link is in first line

Testing #23129

Expected: tooltip appears below text instead of above.
--

VSCode Version: Code - Insiders 1.11.0-insider (a35c7da7b8f324c1e8cc7830173418e392542f6d, 2017-03-28T12:40:24.966Z)
OS Version: Darwin x64 16.4.0
Extensions: none

Duplicate https://github.com/Microsoft/vscode/issues/23485


Marker label and marker click tolerance

I have two questions regarding markers on the map.
I am adding markers to the map with as a features with text label:
var features = new Features();
foreach (var point in points)
            {
                var feature = new Feature
                {
                    Geometry = point.Location, // type of Point
                    ["Type"] = "Point"
                };
                feature.Styles.Add(new LabelStyle { Text = point.Name});
                features.Add(feature);
            }

After that I add features to the layer:
Layer layer = new Layer("pointlayer")
            {
                Name = layername,
                DataSource = new MemoryProvider(features),

                Style = new SymbolStyle
                {
                    SymbolScale = 0.4,
                    Fill = new Brush(Mapsui.Styles.Color.Red),
                    Outline = { Color = Mapsui.Styles.Color.Black, Width = 2},
                    SymbolOffset = new Offset(0, 40),
                }
            };

I add layer to InfoLayers. So now, I can catch the click/tap on the point.
My first question: Is it possible to hide labels until Resolution is lower then x? And vice versa.
My second question: I want markers to be small. But then, they are hard to tap/click on. Is it possible to 'widen' clickable area?

Hi I try to use MinVisible and MaxVisible :
feature.Styles.Add(new LabelStyle { Text = point.Name, MinVisible = 0, MaxVisible = 4 });
And this is not working
But when I add features to the layer and I add MinVisible and MaxVisible that works well
@MaticDiba & @pauldendulk Do you see the same thing ?

First, thanks for the answer above.
But I also have the same problem as @Wil69.  I tried this before and throught that this is not the correct solution.
Regarding second item. I guess adding transparent outline to the symbol, wouldn't work the same as with the image?

Be careful: theResolution isn't in Google zoom levels (2^n). So check the possible resolutions for your map. Normally Resolution for maps in Mapsui (using OSM and so on) is in meters per pixel at equator. So 4 is a very huge zoom factor.

Yes, I chose the right resolution. As Wil69 said, it does work with layer (if I set the style to the layer) and it shows the markers at the right resolution. But if I set that style to the feature, it doesn't work.
example:
var feature = new Feature
                {
                    Geometry = point.Location,
                    ["Type"] = "point"
                };
                feature.Styles.Add(new LabelStyle { Text = point.Name, MaxVisible =x });

Hi @charlenni , I try with the same value for both cases ....

@Wil69 The MinVisible and MaxVisible filtering on features is indeed not applied. I added this in a recent commit.

@MaticDiba I assume a wide transparent outline would work. Outlines do not apply to bitmap symbols though.

Great for the fix with new commit. Although few days ago I tried to go to version 1.4.4 from 1.4.2 but the map with Osm layer was responding really slowly. I didn't have much time to investigate this issue, so I just reverted back to 1.4.2.

Yes, this is different issue that needs to be fixed. I now do not run on the ui thread when not needed, this might have an effect.

This should be fixed in 1.4.7.


Maintain SERAC_VERSION and create a changelog

TPL updates for LiDO usually mean sudden breaking changes. There have been some discussions in LiDO about wanting a Serac version to help ease the transition of Serac updates. Though I am not sure how much of a time sink this would become, as Serac is currently still a fast moving target.
Having clear versions would also be nice to do before adding the Serac package to Spack CI https://github.com/LLNL/serac/issues/906

Since Serac updates often we could adopt a versioning system with YYYY-MM-DD like RAJA: https://github.com/LLNL/RAJA/blob/develop/CMakeLists.txt#L17-L19
Or the more common MAJOR.MINOR.PATCH system like BLT: https://github.com/LLNL/blt/blob/develop/RELEASE-NOTES.md?plain=1#L17


test_e2e with ip family IPv6 and IPVS backend fails

test_e2e with ip family IPv6 and IPVS backend fails
+==========================================================================================+
Test Report from running test "-i ipv6 -b ipvs" on 3 clusters.
+==========================================================================================+
[ INFO ] Summary report from cluster "1" in directory: "/tmp/pa/ipv6/ipvs-1"
Ran 313 of 7069 Specs in 683.235 seconds
FAIL! -- 304 Passed | 9 Failed | 0 Pending | 6756 Skipped
[ INFO ] Summary report from cluster "2" in directory: "/tmp/pa/ipv6/ipvs-2"
Ran 313 of 7069 Specs in 692.035 seconds
FAIL! -- 304 Passed | 9 Failed | 0 Pending | 6756 Skipped
[ INFO ] Summary report from cluster "3" in directory: "/tmp/pa/ipv6/ipvs-3"
Ran 313 of 7069 Specs in 691.901 seconds
FAIL! -- 304 Passed | 9 Failed | 0 Pending | 6756 Skipped
Occurrence      Failure
3   [FAIL] [sig-network] Services [It] should have session affinity work for NodePort service [LinuxOnly] [Conformance]
3   [FAIL] [sig-network] Services [It] should have session affinity timeout work for NodePort service [LinuxOnly]
3   [FAIL] [sig-network] Services [It] should be able to update service type to NodePort listening on same port number but different protocols
3   [FAIL] [sig-network] Services [It] should be able to switch session affinity for NodePort service [LinuxOnly] [Conformance]
3   [FAIL] [sig-network] Services [It] should be able to create a functioning NodePort service [Conformance]
3   [FAIL] [sig-network] Services [It] should be able to connect to terminating and unready endpoints if PublishNotReadyAddresses is true
3   [FAIL] [sig-network] Services [It] should be able to change the type from ExternalName to NodePort [Conformance]
3   [FAIL] [sig-network] DNS [It] should work with the pod containing more than 6 DNS search paths and longer than 256 search list characters
3   [FAIL] [sig-network] Conntrack [It] should be able to preserve UDP traffic when server pod cycles for a NodePort service
+
The following test cases are currently skipped in order to make the github e2e_test succeed:
GINKGO_SKIP_ipv6_ipvs_TEST="should have session affinity work for NodePort service
|should have session affinity timeout work for NodePort service
|should be able to update service type to NodePort listening on same port number but different protocols
|should be able to switch session affinity for NodePort service
|should be able to create a functioning NodePort service
|should be able to connect to terminating and unready endpoints if PublishNotReadyAddresses is true
|should be able to change the type from ExternalName to NodePort
|should be able to preserve UDP traffic when server pod cycles for a NodePort service
|should function for endpoint-Service: udp
|should function for service endpoints using hostNetwork
|should support basic nodePort: udp functionality
|should function for node-Service: http
|should update nodePort: http
|should function for pod-Service: udp
|should function for node-Service: udp
|should function for multiple endpoint-Services with same selector
|should check kube-proxy urls
|should work after the service has been recreated
|should update nodePort: udp
|should be able to change the type from ClusterIP to ExternalName
|should create endpoints for unready pods
|should be able to change the type from NodePort to ExternalName
|should provide DNS for pods for Subdomain
|should provide DNS for services
|should provide DNS for the cluster
|should run through the lifecycle of Pods and PodStatus
|should function for endpoint-Service: http
|should function for pod-Service: http"

/assign


Why does removing a transform fix a lot of our issues?

We've closed #255 by removing a transform - which fixes lots of other issues 🎉 but before we merge and release this we'd like to know and document why we do/don't need transformations.
This issue can be closed when we have at least full documentation (and ideally also know what change in brainrender, vedo or vtk made the transform redundant).
https://github.com/marcomusy/vedo/releases/tag/v2022.3.0 is a suspect, but @IgorTatarnikov and I couldn't understand why any of the changes between this and the previous release in vedo/volume.py would affect our code. It seems there are minor changes around how BaseVolume::getDataArray (now BaseVolume::tonumpy) handles the axis ordering, but these are not sufficient to explain why we don't need this z-axis flip, as we expect this function to behave the same way it did before despite the changes. 🤔
We ran git diff b340375 f0254ff vedo/volume.py (commits refer to vedo v2022.3.0 and the previous release).

To document this slightly better, part of the output of the git diff command above is
##########################################################################
 class BaseVolume:
     """Base class. Do not instantiate."""
-    def __init__(self, inputobj=None):
+
+    def __init__(self):
         self._data = None
         self._mapper = None

@@ -93,8 +97,19 @@ class BaseVolume:
         when all your modifications are completed.
         """
         narray_shape = tuple(reversed(self._data.GetDimensions()))
-        narray = utils.vtk2numpy(self._data.GetPointData().GetScalars()).reshape(narray_shape)
+
+        scals = self._data.GetPointData().GetScalars()
+        comps = scals.GetNumberOfComponents()
+        if comps == 1:
+            narray = utils.vtk2numpy(scals).reshape(narray_shape)
             narray = np.transpose(narray, axes=[2, 1, 0])
+        else:
+            narray = utils.vtk2numpy(scals).reshape(*narray_shape, comps)
+            narray = np.transpose(narray, axes=[2, 1, 0, 3])
+
+        # narray = utils.vtk2numpy(self._data.GetPointData().GetScalars()).reshape(narray_shape)
+        # narray = np.transpose(narray, axes=[2, 1, 0])
+
         return narray

which doesn't explain why there would be a change in the axis ordering?

Before and after have the same call to np.transpose for the first three axes...

I got some more insight into this today. It seems that the apply_transform function is acting differently depending on the mesh. When I run:
from brainrender import Scene
from brainrender.actors import Neuron, Cylinder
import numpy as np

angle = np.pi / 2
rot_matrix = [[np.cos(angle), 0, np.sin(angle)], [0, 1, 0], [-np.sin(angle), 0, np.cos(angle)]]

# Create a brainrender scene
scene = Scene(title="neurons")

# Rotate the root mesh
root_copy = scene.actors[0]._mesh.clone()
scene.add(root_copy.apply_transform(rot_matrix))

# Add a neuron from file
neuron = Neuron("examples/data/neuron1.swc")
scene.add(neuron)

# Rotate the neuron
neuron_copy = neuron._mesh.clone()
scene.add(neuron_copy.apply_transform(rot_matrix))

# Add a brain region
th = scene.add_brain_region(
    "TH",
    alpha=0.4,
)
scene.add(th)

# Rotate the brain region
th_copy = th._mesh.clone()
scene.add(th_copy.apply_transform(rot_matrix))

# create and add a cylinder actor
actor = Cylinder(
    th,  # center the cylinder at the center of mass of th
    scene.root,  # the cylinder actor needs information about the root mesh
)
scene.add(actor)
# Rotate the cylinder
actor_copy = actor._mesh.clone()
scene.add(actor_copy.apply_transform(rot_matrix))

# Render!
scene.render(axes=2)

I get:

Everything rotates correctly except for the Cylinder object, for some reason it snaps to the origin. Changing the rotation matrix to be [[1,0,0,0], [0,1,0,0], [0,0,1,0], [0,0,0,1]] has everything stay in place and overlap except the cylinder:

I think this was causing some elements to end up out of position when this line runs.

Hi with these fixes in brainrender mega-fix branch most mesh-related examples work with minor issues on vedo 2023.5.0+dev26a:
diff --git a/brainrender/actor.py b/brainrender/actor.py
index b3f9cf8..c8bef43 100644
--- a/brainrender/actor.py
+++ b/brainrender/actor.py
@@ -45,7 +45,7 @@ def make_actor_label(
             color = [0.2, 0.2, 0.2]

         # Get mesh's highest point
-        points = actor.mesh.points().copy()
+        points = actor.mesh.vertices.copy()
         point = points[np.argmin(points[:, 1]), :]
         point += np.array(offset) + default_offset
         point[2] = -point[2]
@@ -64,12 +64,12 @@ def make_actor_label(

         # Mark a point on Mesh that corresponds to the label location
         if radius is not None:
-            pt = actor.closestPoint(point)
+            pt = actor.closest_point(point)
             pt[2] = -pt[2]
             sphere = Sphere(pt, r=radius, c=color, res=8)
             sphere.ancor = pt
             new_actors.append(sphere)
-            sphere.computeNormals()
+            sphere.compute_normals()

     return new_actors

@@ -159,7 +159,7 @@ class Actor(object):
         """
         Returns the coordinates of the mesh's center
         """
-        return self.mesh.points().mean(axis=0)
+        return self.mesh.center_of_mass()

     @classmethod
     def make_actor(cls, mesh, name, br_class):
@@ -218,7 +218,7 @@ class Actor(object):
             f"[{orange}]center of mass:[/{orange}][{amber}] {self.mesh.center_of_mass().astype(np.int32)}"
         )
         rep.add(
-            f"[{orange}]number of vertices:[/{orange}][{amber}] {len(self.mesh.points())}"
+            f"[{orange}]number of vertices:[/{orange}][{amber}] {self.mesh.npoints}"
         )
         rep.add(
             f"[{orange}]dimensions:[/{orange}][{amber}] {np.array(self.mesh.bounds()).astype(np.int32)}"
diff --git a/brainrender/actors/cylinder.py b/brainrender/actors/cylinder.py
index 715b268..0c1d222 100644
--- a/brainrender/actors/cylinder.py
+++ b/brainrender/actors/cylinder.py
@@ -20,7 +20,7 @@ class Cylinder(Actor):

         # Get pos
         if isinstance(pos, Mesh):
-            pos = pos.points().mean(axis=0)
+            pos = pos.center_of_mass()
         elif isinstance(pos, Actor):
             pos = pos.center
         logger.debug(f"Creating Cylinder actor at: {pos}")
diff --git a/brainrender/actors/points.py b/brainrender/actors/points.py
index 5568c09..22cbd08 100644
--- a/brainrender/actors/points.py
+++ b/brainrender/actors/points.py
@@ -140,7 +140,7 @@ class PointsDensity(Actor):
         volume = (
             vPoints(data)
             .density(dims=dims, radius=radius, **kwargs)
-            .c("Dark2")
+            .cmap("Dark2")
             .alpha([0, 0.9])
             .mode(1)
         )  # returns a vedo Volume
diff --git a/brainrender/actors/ruler.py b/brainrender/actors/ruler.py
index f4a98f9..735cec5 100644
--- a/brainrender/actors/ruler.py
+++ b/brainrender/actors/ruler.py
@@ -37,7 +37,7 @@ def ruler(p1, p2, unit_scale=1, units=None, s=50):
     dist = mag(p2 - p1) * unit_scale
     label = precision(dist, 3) + " " + units
     lbl = Text3D(label, pos=midpoint, s=s + 100, justify="center")
-    lbl.SetOrientation([0, 0, 180])
+    # lbl.SetOrientation([0, 0, 180])
     actors.append(lbl)

     # Add spheres add end
diff --git a/examples/cell_density.py b/examples/cell_density.py
index fcfa2bf..2a97fa7 100644
--- a/examples/cell_density.py
+++ b/examples/cell_density.py
@@ -27,7 +27,7 @@ def get_n_random_points_in_region(region, N):
     Z = np.random.randint(region_bounds[4], region_bounds[5], size=10000)
     pts = [[x, y, z] for x, y, z in zip(X, Y, Z)]

-    ipts = region.mesh.inside_points(pts).points()
+    ipts = region.mesh.inside_points(pts).vertices
     return np.vstack(random.choices(ipts, k=N))

diff --git a/examples/screenshot.py b/examples/screenshot.py
index 6fd7e46..efe6b50 100644
--- a/examples/screenshot.py
+++ b/examples/screenshot.py
@@ -32,7 +32,7 @@ camera = {
     "focalPoint": (7718, 4290, -3507),
     "distance": 40610,
 }
-zoom = 1.5
+zoom = 2.5

 # If you only want a screenshot and don't want to move the camera
 # around the scene, set interactive to False.
diff --git a/examples/user_volumetric_data.py b/examples/user_volumetric_data.py
index 3dd1c32..ddfd7f8 100644
--- a/examples/user_volumetric_data.py
+++ b/examples/user_volumetric_data.py
@@ -74,7 +74,7 @@ transformed_stack = source_space.map_stack_to(target_space, data)

 # 3. create a Volume vedo actor and smooth
 print("Creating volume")
-vol = Volume(transformed_stack, origin=scene.root.origin()).smooth_median()
+vol = Volume(transformed_stack).smooth_median()

I suggest to try out this vedo version as it will be released soon, and leaving aside the alignment issues in the volumetric examples just for the moment as they may need some extra work.

Sounds good. Thanks for your input! I've added these changes to the compatibility-with-vedo-2023.5.0+dev26a branch.

Nice! Adding volume.permute_axes() also fixes the volume examples in compatibility-with-vedo-2023.5.0+dev26a branch:
diff --git a/benchmark/bm_cells.py b/benchmark/bm_cells.py
index 6170d8e..4af2f5f 100644
--- a/benchmark/bm_cells.py
+++ b/benchmark/bm_cells.py
@@ -19,7 +19,7 @@ def get_n_random_points_in_region(region, N):
     Z = np.random.randint(region_bounds[4], region_bounds[5], size=10000)
     pts = [[x, y, z] for x, y, z in zip(X, Y, Z)]

-    ipts = region.mesh.insidePoints(pts).points()
+    ipts = region.mesh.inside_points(pts).coordinates
     return np.vstack(random.choices(ipts, k=N))

diff --git a/benchmark/bm_napari.py b/benchmark/bm_napari.py
index d802d45..7968ed8 100644
--- a/benchmark/bm_napari.py
+++ b/benchmark/bm_napari.py
@@ -21,7 +21,7 @@ for reg in regions[:400]:
 surfaces = []
 for act in scene.clean_actors:
     surfaces.append(
-        (act.points(), act.faces(), np.ones(len(act.points())) * 0.5)
+        (act.vertices, act.cells, np.ones(len(act.vertices)) * 0.5)
     )

 # render stuff in napar
diff --git a/benchmark/timer.py b/benchmark/timer.py
index e6eb560..2422a9d 100644
--- a/benchmark/timer.py
+++ b/benchmark/timer.py
@@ -37,7 +37,7 @@ class SceneContent:
         )
         for act in self.scene.clean_actors:
             try:
-                points = len(act.points())
+                points = act.npoints
             except AttributeError:
                 points = 0
             actors.add(
@@ -71,7 +71,7 @@ class Timer:
         points = []
         for act in self.scene.clean_actors:
             try:
-                points.append(len(act.points()))
+                points.append(act.npoints)
             except AttributeError:
                 pass
         tot_points = sum(points)
diff --git a/examples/add_cells.py b/examples/add_cells.py
index 42dcfb3..a52b0c5 100644
--- a/examples/add_cells.py
+++ b/examples/add_cells.py
@@ -22,7 +22,7 @@ def get_n_random_points_in_region(region, N):
     Z = np.random.randint(region_bounds[4], region_bounds[5], size=10000)
     pts = [[x, y, z] for x, y, z in zip(X, Y, Z)]

-    ipts = region.mesh.inside_points(pts).points()
+    ipts = region.mesh.inside_points(pts).coordinates
     return np.vstack(random.choices(ipts, k=N))

diff --git a/examples/user_volumetric_data.py b/examples/user_volumetric_data.py
index ddfd7f8..19b18e1 100644
--- a/examples/user_volumetric_data.py
+++ b/examples/user_volumetric_data.py
@@ -74,7 +74,8 @@ transformed_stack = source_space.map_stack_to(target_space, data)

 # 3. create a Volume vedo actor and smooth
 print("Creating volume")
-vol = Volume(transformed_stack).smooth_median()
+vol = Volume(transformed_stack).permute_axes(2, 1, 0)
+vol.smooth_median()

 # 4. Extract a surface mesh from the volume actor
diff --git a/tests/test_points.py b/tests/test_points.py
index 5191566..d6a6800 100644
--- a/tests/test_points.py
+++ b/tests/test_points.py
@@ -19,7 +19,7 @@ def get_n_random_points_in_region(region, N):
     Z = np.random.randint(region_bounds[4], region_bounds[5], size=10000)
     pts = [[x, y, z] for x, y, z in zip(X, Y, Z)]

-    ipts = region.mesh.inside_points(pts).points()
+    ipts = region.mesh.inside_points(pts).coordinates
     return np.vstack(random.choices(ipts, k=N))


Prevent invoke item multiple times

@serenaz : PR passed checklist review. Please review for technical accuracy, etc. Note that the changes here appear at least partially to overlap changes in PR 886. All yours to approve/merge whenever ready.

@QuinnRadich : Reassigning to you as new owner.  PR passed checklist review. Please review for technical accuracy, etc. Note that the changes here appear at least partially to overlap changes in PR 886. All yours to approve/merge whenever ready.


The strikethrough syntax doesn't follow the GFM spec

After running the test script against the GFM spec, I found out that markdown-it parses strikethrough tags differently:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 7716

.
~~Hi~~ Hello, world!
.

Hi Hello, world!

.

error:

<s>Hi</s> Hello, world!

As you can see, markdown-it parses them as <s>. However, GFM suggests that they should be parsed as .
It is worth noting that tables are also getting parsed differently:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src line: 3352

.
| abc | defghi |
:-: | -----------:
bar | baz
.

abc
defghi

bar
baz

.

error:

abc
defghi

bar
baz

GFM suggests that table cells alignment should be done by the align attribute, markdown-it uses inline style instead. However, the align attribute is obsolete and there is some talk about replacing it by inline style (https://github.com/github/cmark-gfm/pull/86).
If you're okay with that, I'll open a pull request to fix the strikethroughs issue.

IMO if anyone wish exact GFM support, https://github.com/npm/marky-markdown will be more suitable.
Strike and table extensions were taken from GFM at the moment of creation (as de-facto standard), and syntax should be the same (while output layon differs by reasons above). But this package is focused on CM + flexibility, not on blind following of every new GFM feature. So, core rules stays intact, and all mods are injected via plugins.
If you wish some concrete actions from our side, please be more specific.

Strike and table extensions were taken from GFM at the moment of creation

@puzrin If this is the case then, I think it's better to leave it as is, until the GFM spec becomes stable enough (since it's clearly not currently).

If you wish some concrete actions from our side, please be more specific.

Well, GFM is the second most common flavor of markdown, is very reasonable to request official support for it, but since markdown-it is so flexible, this won't be a big deal for developers.

a preset like this:
require('markdown-it')('cmark-gfm')

would be easy to implement and wouldn't be too out of place imho

@iMrDJAi thank you for understanding. Let's close this issue. But feel free to add new details, issue can be reopened anytime when more reason appears. Or create  a new one.


If you leave "Hard" filter for too long, the timing starts to act strangely

Fixed? if not what is too long?


Updated TLS deprecation and specially the behavior for SMTP

Many customers ate opening ticket asking what will happen to mailflow without TLS, will it be allowed or not. As we do not have any article to clarify the same, though of adding it here.

Duplicated information. Instead, use a link to the TLS deprecation information in the Technical Reference Details article.

@arindamthokder Please look into the suggestion and update accordingly. Thanks

I am sorry, but I am not able to find any other link to the TLS deprecation information where it's mentioned that after deprecation, Non-TLS connection will continue to work. Can someone share the link please.


 Did you even MAKE one?!

I noticed it, I mean to be fair, I think it is still in WIP


Remove use of flavors from allocated hosts serialization

Need to update some unit tests in other modules as well

@bratseth please take a look again


Solve I101 and I201 format bug

I101: The names in your from import are in the wrong order.
I201: Missing newline between sections or imports.
All this according with 'flake8-import-order'

This is from a flake8 extension, right? Mind adding that extension to Travis and Docker?

This change should include whatever requested this change.. otherwise it's really strange


How to download  the descriptive data you generated using gpt-4v model?

How to download  the descriptive data you generated using gpt-4v model?

We will upload the pkl files shortly and notify you in this issue. Please allow a few days for this. Thank you for your patience and understanding~

Hi, thanks for your work.  Is that pkl file uploaded?  @jokester-zzz

Hi @xiaodongww, the .pkl files are uploaded, you can download from this link.😋


[HOLD] [$1000] Web -  Compose Box - In Minimize window one chat goes to the list of chats

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

Action Performed:
Precondition - Must be already logged in to Expensify. Browser window must be fully maximized.
Should be two chats on the list + Concierge

Click on one chat first
Minimize the window as much as possible
Maximize the window
Click another chat
Minimize window

Expected Result:
When minimizing the window, the chat must stay in the browser to continue the conversation with the selected user.
Actual Result:
One chat stays active while minimizing the window, but the second chat exits to the list of all chats and there is no possibility to chat with the selected user anymore.
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: Yes
Email or phone of affected tester (no customers): any
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation

https://user-images.githubusercontent.com/93399543/166109848-d3fe8ac5-22a2-4e4d-ae43-9d708b812f0c.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause (Exploratory)
Slack conversation:
View all open jobs on GitHub

Yeah this is a bit weird. The state that keeps track of the chat selector when collapsing the window to something minimized should prioritize showing the chat itself first instead of the selector if it both were visible before the resizing.

Upwork Job

Proposal
When dispatching a reset action we are not checking against correct history to find the drawer state and also on web default status is closed therefore we are setting the drawer state to open when navigating to report. As soon as we resize the window, it shows the drawer because of drawer state is open.
https://github.com/Expensify/App/blob/283569c7cffcf72053f97346e614af71556eef4f/src/libs/Navigation/CustomActions.js#L101-L113
-const hasDrawerhistory = _.find(state.history || [], h => h.type === 'drawer');
+const hasDrawerhistory = _.some(history || [], h => h.type === 'drawer');
 if (!hasDrawerhistory || currentState.type !== 'drawer') {
     history.push({
         type: 'drawer',

         // If current state is not from drawer navigator then always use closed status to close the drawer
-        status: currentState.type !== 'drawer' || currentState.default === 'open' ? 'closed' : 'open',
+        status: 'closed',
     });
 }

More about it here https://github.com/Expensify/App/issues/8657#issuecomment-1107802797. It will fix that issue too.

@mdneyazahmad
I'm not board with this idea. Can not confirm that this is the root cause either.
-        status: currentState.type !== 'drawer' || currentState.default === 'open' ? 'closed' : 'open',
+        status: 'closed',

Looking for a better proposal thanks!

@Santhosh-Sellavel This is the exact reason for the issue. As I have said this may not be the final code that we will use. We may refactor it. currentState.default is closed on large screen so when that code executes it pushes drawer status open. It does not affect large screen because of drawerType is permanent. But as soon as it is resized drawer is opened.
If you try to reproduce the bug. You will notice that it works on alternate resize and that is because it is not checking against the correct history.

Please check more thoroughly, the problem might be with currentState.default, but I'm not on board with setting closed  straight it may lead to regression.

This also works currentState.type !== 'drawer' || currentState.default === 'open' || currentState.default === 'closed' ? 'closed' : 'open'

This also works currentState.type !== 'drawer' || currentState.default === 'open' || currentState.default === 'closed' ? 'closed' : 'open'

It's literally the same thing,

This is same thing therefore I hardcoded it. If I have a better proposal I will post. Thank you for your review.

No overdue

No overdue, waiting to see if there are other proposals.

Doubled!

Not overdue

I'm not on board with setting closed straight it may lead to regression.

@Santhosh-Sellavel , do you know of a specific regression this may cause? can you elaborate a bit more on this? thanks.  I'm not very familiarized with the drawer behaviour.

@aldo-expensify
No, I don't know any specific regression, just an initial hunch since setting only closed to a possibility of 'open'/'closed' sounds really weird.

No new proposals so far, I'll try to give it some time this week to investigate the proposal.

No update yet

Changing this to weekly as I don't see it as a main use case. I haven't been able to put time on it yet.

Doubling in that case @aldo-expensify and creating the job post again as Upwork closed it automatically - New doubled Upwork post

Proposal
https://user-images.githubusercontent.com/25520267/174448989-b9795d9c-d9a2-4b65-a6e7-68f133777a76.mp4
As you can see in the video above, I inspecting the history change. The first object is the current route, and after I select another chat, it adds a new history with the type drawer and the status is open. It's correct cause we toggle the drawer and the drawer will add or remove the drawer history base on the default status. But on our web, we don't need drawer status to change.
In my video, there's also another bug. The history when I navigate back to the page is not in the correct order. That's because we missing 1 history route because it's replaced by the drawer and been deleted if the default drawer status is the same as the target drawer status.
In my opinion, drawer history is only useful in mobile layout states. Because there's the place where the drawer will be toggled back and forth.
Solution
As I mention before we don't need to add drawer history on the web App.
https://github.com/Expensify/App/blob/5b0cd481c87e89772f7d21fdbad6bf815b495b15/src/libs/Navigation/CustomActions.js#L106-L113
+        if (isSmallScreenWidth && (!hasDrawerhistory || currentState.type !== 'drawer')) {
            history.push({
                type: 'drawer',

                // If current state is not from drawer navigator then always use closed status to close the drawer
                status: currentState.type !== 'drawer' || currentState.default === 'open' ? 'closed' : 'open',
            });
+        } else {
+            history.push({
+                type: 'route',
+                name: newScreenName,
+            });
        }

The drawer history is only needed when on a mobile layout as I mentioned before, so adding isSmallScreenWidth that passes when calling pushDrawerRoute and using it when we need to add the drawer history. Other than isSmallScreenWidth we don't need the drawer history, so instead we add the route history.
Result
https://user-images.githubusercontent.com/25520267/174449963-f6419906-6d45-4fcc-9d54-18c8dad734bc.mp4

As I mention before we don't need to add drawer history on the web App.

@mollfpr Where did you mention earlier?

It's correct cause we toggle the drawer and the drawer will add or remove the drawer history base on the default status. But on our web, we don't need drawer status to change.

@Santhosh-Sellavel

Okay cool, I thought you proposed elsewhere.

@mollfpr a couple of questions:

I'm guessing isSmallScreenWidth is checked using some hardcoded number of pixels?
Before, when !hasDrawerhistory || currentState.type !== 'drawer' was false, we didn't do anything. With your change, we would be pushing history.push({type: 'route', name: newScreenName}); if that check is false (no matter the screen size), Is this intended?

The proposal seems to be solving one, but I would like take more time on reviewing this one.
@aldo-expensify

Thanks @Santhosh-Sellavel , I'll try testing it soon

Not overdue

@aldo-expensify Mostly looks good works as expected for me. Have you tested this one?

@Santhosh-Sellavel I gave it some time today, but I'll have to continue tomorrow

So... I reviewed this today and indeed @mollfpr 's proposal seems to fix:

Buggy history. Reproduced this by:

Login using an accounts that have a few conversation (i.e. 4 conversations)
Open the first, then the next, then the next, then the next (consecutively)
Start using the "Back" functionality of the browser... it won't go back one by one, but instead, it will skip some.

Bad behaviour described in this GH issue

The only thing I that remains a bit unclear is how you are get isSmallScreenWidth. In my case I tested using
const initialDimensions = Dimensions.get('window');
const isSmallScreenWidth = initialDimensions.width <= variables.mobileResponsiveWidthBreakpoint;

but maybe there is a better way :)

Great! Mind making a proposal here @mollfpr? I've invited you @Santhosh-Sellavel for eventual C+ payment

@MitchExpensify submitted, thanks!

Will raise the PR today, sorry for the late response.

The PR is in review.

Reviewed the PR today, looks fine and I couldn't reproduce the regression mentioned here. I requested a second pair of eyes to review in slack just to be safe!

PR merged

I'm leaning towards a revert here, but open to other opinions. I have been discussing with @parasharrajat for a while how we should not be editing the CustomActions file (it's kind of "tech debt" at this point) and should start looking into a more maintainable solution. Is anyone opposed to a plan where we...

Revert the linked PR
Pay everyone for this investigation
Add this issue out to our "wish list" of navigation issues (since it seems like it's not a very urgent issue)
Figure out a better long term fix here

And was chatting with @aldo-expensify that maybe a good first step is preventing the CustomActions file from being changed further and officially deprecating it and any method like we did for DeprecatedAPI.
Changes to the core navigation really need to be discussed at a high level with the internal team so we can agree on the best code patterns to use. These small changes make it difficult to put together a list of all known issues and eventually work on a design that does everything we want it to do.

On hold, not overdue

Does it look like we ran into a regression here @aldo-expensify ?

Nop, the PR was reverted with this other https://github.com/Expensify/App/pull/10101 to look for a more holistic/long term solution, so it should have caused a regression.. the issue described in this GH issue is still happening, but it is of very little priority

got it! Paying based on this comment

Confirming in #contibutor-management what price that should be

Any update @MitchExpensify!

Bumped the Slack thread here for a buddy check.

Offer sent on the new Upwork post @Santhosh-Sellavel, mind applying for payment @mollfpr - Thank you

@MitchExpensify I already got the contract, just waiting to end the contract. Thanks!

Ah I thought the old expired job took the old contract with it, thanks for correcting me. On the old contract, it appears we've already paid out to you @mollfpr - Is that the case?

@Santhosh-Sellavel I've paid you using the old contract, no need to accept the new offer

@MitchExpensify Yup, it’s already paid.

Awesome! Looks like we are set here, thanks for your patience everyone!

I'll end both contracts now too

Done :)


unable to run

running this from Windows 10 1903 using the Azure CLI I get the following error, verified Python 2.7 exists
bash: az: command not found

Subscription ID = Redacted
Azure Resource Group Filter =
Terraform Resource Type Filter =
Get Subscription Policies & RBAC = no
Extract Key Vault Secrets to .tf files (insecure) = no
Fast Forward = no
Validate Only = yes
Debug = no

python2.7 ../../scripts/az2tf.py -s SubScription>&1 | tee -a import.log
bash: python2.7: command not found

Unable to get around this issue.

you may need to alias "python2.7" to python - assuming the "python" command is how you get to python 2.7 on your machine.  Note the "bash: az command not found" - that needs to be fixed as well before this tool has any chance of working.  (VirtualBox and a Linux VM maybe?)

checked in my powershell screen, typed in Python and it showed version 2.7.16 as the current version. So it looks like the alias is already set as is.
Ran the script in the linux subsystem (ubuntu) and recieved the following output:
Subscription ID = Redacted
Azure Resource Group Filter =
Terraform Resource Type Filter =
Get Subscription Policies & RBAC = no
Extract Key Vault Secrets to .tf files (insecure) = no
Fast Forward = no
Validate Only = yes
Debug = no

python2.7 ../../scripts/az2tf.py -s =Redaxted>&1 | tee -a import.log
Traceback (most recent call last):
  File "../../scripts/az2tf.py", line 4, in <module>
    import requests
ImportError: No module named requests
ImportError: No module named requests
Error in az2tf.py

Note that Terraform --version spits out 0.12.9

Had to install Requests and Adal both it seems. It seems to be running right now though. I think my issue running wihtin PowerShell was that it was launching Git Bash and failing in that and not actually in PowerShell itself. I am going to remove GitBash and see if that works as well. I will report back when its done, may be worth adding a line or two to check for pip and Requests/Adal as well.

Looks like that worked! Thank you!


Revert "Added about myself"

Reverts evilseye/Zoop-Hacktoberfest#51

@khushbooshakya you have previously contributed to this repo, doing the same thing again can lead your profile to labelled as spam in Hacktoberfest!


[Add]conditional tag and part name tooltip

Coverage remained the same at 83.358% when pulling 4c26eab5de0731d73cf4b70609cf07452b02cd28 on ShinjiTanimoto:tooltip into 5dfacba5e17dce06517ca2b45b2e686a9d579341 on shirasagi:master.

Coverage decreased (-0.003%) to 83.349% when pulling c501f7865e5e84e5c63334abea8ace85456df20c on ShinjiTanimoto:tooltip into d7adc9a080174de620cd06e153a3630b1a198844 on shirasagi:master.


Fixing pagination ( Go to page functionality)

Added node Installation link for windows users in Readme.md

Now able to jump to desire page using "Go to page"
used debounceSearch and it updates after 500ms after user enters input (page number)

Handling edge cases
if user enters values less than 1

it updates to 1 and page 1 is displayed

similarly with input greater than totalPages

fixes #135

It runs every 500ms, which is bad for performance. I think there is a better way out there to fix it.  Thank you for your work but sorry I can't approve this.

In InputNumber component, the debouncedSearch variable will not cause the useDebounce function to run every 500ms . Instead, it will cause debouncedSearch to update with the latest inputValue after 500 milliseconds have passed since the last change to inputValue

Sorry, my bad. But we can get similar result with following code -
`
const [inputValue, setInputValue] = useState(props.value.toString());
const validateAndUpdate = () => {
let num: number = parseInt(inputValue);
if (!isNaN(num)) {
num = processNumber(num, props.min, props.max);
setInputValue(num.toString());
props.onChange(num);
}
};
const firstTime = useRef(true);
useEffect(() => {
if (firstTime.current) firstTime.current = false;
else validateAndUpdate();
}, [inputValue]);
`
It uses useRef hooks to prevent flickering, which you now face in the Go to page box with your implementation.

made the suggested change
now using useRef

made the changes
thank you for your review


Gulp Header Bug

Chris,
I have a noticed that the minified CSS file includes both the full and min banners. The problem is this section of the code in the gulp file is not working properly:
.pipe(postcss([
			minify({
				discardComments: {
					removeAll: true
				}
			})
		]))

I ended up using the package gulp-strip-css-comments and replacing the above code with:
var strip = require('gulp-strip-css-comments')

.pipe(strip({ preserve: false }))

Fixed with v2.2.5. All files now get only the skinny banner. cssnano refuses to strip out special comments (ones prefixed with a !) as they're often used for licensing information.


DNN-9019: New Eventhandler subscriber added to handle profile updates

portalsecuritytest code should not be in PR

I will submit PR for this JIRA


208 replace home image, rescale, add horz scaling to "My Drains"

Pull Request for issue https://github.com/sfbrigade/adopt-a-drain/issues/208
I only replaced one image as the other one was barely visible... I attached a screenshot.
Thanks!

Coverage remained the same at 98.491% when pulling 0ca06832ec21f9571ffef3f89997722d06b64187 on 208-replace-home-imgs-and-rescale into 2067ab0926c9c5a1bf90257f1911604e7657a8e5 on production.

hey @jafowler49 is that the public works logo i sent you? if so, it's the wrong one! sorry. the correct one looks like this: http://sfpublicworks.org/
blue square...

Attached is probably higher resolution than you need.
John Seagrave  | Engineering Associate
Hydraulic Engineering  |  Public Works  |  City and County of San Francisco
1680 Mission St |  San Francisco, CA 94103   |<PHONE_NUMBER> |  john.seagrave<EMAIL_ADDRESS>From: Jean Walsh<EMAIL_ADDRESS>Sent: Thursday, April 20, 2017 3:38 PM
To: sfbrigade/adopt-a-drain
Cc: Subscribed
Subject: Re: [sfbrigade/adopt-a-drain] 208 replace home image, rescale, add horz scaling to "My Drains" (#237)
hey @jafowler49https://github.com/jafowler49 is that the public works logo i sent you? if so, it's the wrong one! sorry. the correct one looks like this: http://sfpublicworks.org/
blue square...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/sfbrigade/adopt-a-drain/pull/237#issuecomment-295947769, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AJPX27yzLkr9RhSbMSpK6VImVXb2YKbaks5rx944gaJpZM4NDpbp.

Just added a new SFDPW jpg that John sent, and kept the old SF PUC logo. They aren't vector based, but they are high resolution so I think they scale ok.

Coverage remained the same at 98.491% when pulling c8115de3043c45f23252e171bb7c66f87d3edb14 on 208-replace-home-imgs-and-rescale into 2067ab0926c9c5a1bf90257f1911604e7657a8e5 on production.

Coverage remained the same at 98.491% when pulling 08ce10d2a7b48893d7d7daffad62bd006a747531 on 208-replace-home-imgs-and-rescale into 2067ab0926c9c5a1bf90257f1911604e7657a8e5 on production.

:+1: :+1: this looks good.


Add support of exportable subflow (phase3)

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

Proposed changes

This PR implements the phase3 implementation of exportable subflow.
It replaces phase1 and phase2 PR.
Appreciate it if you could look over it, give it a try and give feedback.
Checklist

[x] I have read the contribution guidelines
[x] For non-bugfix PRs, I have discussed this change on the forum/slack team.
[x] I have run grunt to verify the unit tests pass
[ ] I have added suitable unit tests to cover the new/changed functionality

Coverage decreased (-0.01%) to 77.507% when pulling cdd88b72ba0e5d5099a0d9783fcd43ddc094ab8c on node-red-hitachi:export-subflow-phase3 into 6912dec166e23e38d9fc1e0a626512b4ca988358 on node-red:dev.

Having not looked at this feature for a while, I am reviewing it with a fresh set of eyes.

Difference between exporting flows and exporting subflows

This is introducing a different way to export subflows that gives a different form of JSON that cannot be imported in the 'normal' way. I'm am very concerned about the confusion this can cause. I don't think the design has considered this enough.
In an ideal world, we would modify the main flow file format to use the same JSON format - nesting subflow nodes inside the subflow object. That would allow these subflows to be imported/exported in the same way as everything else. But that is not a change we can do in 1.x - that would be a 2.x change. I know you have a requirement for having this feature in 1.x, so we need to find a way to make this easy to use without confusing users.

Sealed subflows

In the current implementation, if I tick the 'sealed' option in the subflow properties:

I can still edit the subflow contents
if I do a normal export of a flow with an instance of the subflow, the subflow template does not get included in the export. This will cause confusion with users - they expect an exported flow to include everything they need.

I know an earlier design had a custom export dialog with all of the subflow options presented at that point in time. I suggested moving them to the subflow properties dialog as they are all properties of the subflow that should be in the main edit dialog. The 'sealed' option doesn't really fit that pattern - the option should only apply to what is exported when the subflow is exported. I assume the encryption options would have to be applied similarly - at export time, not before. But again, this comes back to the confusion over exporting a flow and exporting a subflow.

Importing a subflow

The design note talks about a 'import new node' dialog - but I cannot see that anyway in the UI. Does it reuse the existing "Import flow" dialog and it now handle these new forms of subflow being imported?
I assume importing the JSON for an Exported Subflow with sealed=false, results in exactly the same result as importing a subflow that has been exported in the normal way?

What is a subflow, and flow and a node module

This feature is breaking the clear difference between what a flow is and what a node module provides.
I think getting to the point where a node can be implemented as a flow under the covers will be a good end goal. For the end-user, it appears just like a node and is listed in the palette manager as an npm module they have installed.
But this feature only goes half way. It lets a user add a node by importing JSON - and that JSON is stored in their flow file. It is not a module they have installed. I have expressed my concern over using the palette manager for listing imported subflows before. That concern is still there.
Now we have the flow outliner I think that should be used to allow the user to remove an imported subflow from their flow. Double-clicking on its entry to open its edit dialog and clicking the delete button.
Next steps
The reason for splitting the implementation into phases was so that we could make smaller changes that can be more easily reviewed - and to ensure the design is right at an early stage. As this PR implements all three phases, it is proving quite hard to review.  It is very hard to pick apart the bits that are good to move forward with and the bits that need reworking.
I need to spend some more time thinking about how to move forward. I think I may have to cherry-pick your commits to try to recreate the separate phases of implementation so we can make some progress.

I think I may have to cherry-pick your commits to try to recreate the separate phases of implementation so we can make some progress.

As this PR is a single commit implementing everything, I haven't been able to step through to understand the different phases.
I have spent a lot of time trying to find a way to move forward with this. I had hoped to provide some ideas to help the conversation before I go on vacation.
One of the challenges is that the design note does not describe the uses for this feature. That makes it hard to validate any proposed changes against the actual requirements (and a lesson we should learn for future design notes).
So, whilst this may feel like a backwards step, I feel the need to go over the basic requirements for the feature so we can make sure we're solving the right problems. It also helps to find the right way to present this feature to the user and also how we will describe it in the documentation.
If I had to describe the problem this feature is trying to solve, I think it is:
Requirement 1: Provide a way for a user to create and share a new node that can be imported into the editor without having to publish it to npm.
We can already do that with subflows today: a user can export a subflow and share it. Why is that not good enough? Because the user can freely see/edit/modify the internals of a subflow. This brings us to the next requirement:
Requirement 2: The new node, implemented as a subflow, appears like any other node in the palette. It's internals cannot be edited or viewed by the user who imports it.
This gives us a clear difference between a subflow imported as you can today and what this feature would like to provide. That suggests (using the concept from the current implementation), all subflows exported using this new feature would be sealed. If you wanted to share a non-sealed subflow, then you can use the export options already available. Q: Does this make sense?
So, my suggestion is we change the language we are using for this feature. "Exporting" subflows is something users can already do - this is something different.
What if we call this new feature "Publishing" subflows?
By using a different term, it helps the user understand it is a different action to what they are used to doing.

Export: A user wants to share a subflow with someone who should be able to edit the internal flow.

Export the subflow using the Export options already available in the editor
the subflow can be imported, edited, exported - exactly what can be done today

Publish: A user wants to share a subflow so that it appears as a regular node and its internals cannot be edited

Publish the subflow to create a thing (I'll come back to what that thing is in a moment)
2.That thing can be shared with other users and added to the editor.

What is the thing that gets published?
Option 1 - tgz
Given a free choice, I'd say that should be a tgz that is a proper node module (including package.json) that could be published to npm and npm installed. That would make for a clear difference between a subflow that has been exported and one that has been published.
We could remove the need to publish to npm if there was a way in the palette manager to upload a tgz file directly. I could still distribute the tgz file just as easily as some JSON, and it would keep the clear difference between what is a node (that is installed into the runtime) and what is a flow (that is owned by the user and imported/exported).
The problem with this approach is the same with any solution using custom nodes - if I share the flow with someone, I need to also make sure they have the custom nodes as well. If those custom nodes are not on npm, then the user is responsible for managing the dependencies.
Option 2 - json
This is the approach of the current proposal. The "published" subflow is JSON in a different format to the normally exported subflow format.
It gets imported into the users flows and stored in their flows. If they start a new project or delete their flow file, any subflow-nodes imported this way will be gone.
It will mean when I export a flow, the subflows will be included (but I still need to make sure any dependencies on npm nodes are known about)
Can we find a way to make tgz work?
May major concern is this feature confuses the difference between the flows owned by the user and the nodes they have installed in the palette. If we can go straight to creating a proper node module from the subflow and remove the need to publish to npm, does that satisfy the requirements?
Can we find a way to make the tgz approach work? What else would be needed to support that? Exporting as JSON feels like a temporary solution until we support npm packaged subflows - can we jump over the temporary solution and do it right first time? Or are there reasons for having the JSON export format that I have overlooked?
What role does nodegen play?
The vision for nodegen was to find a way to integrate it into the editor - a custom nodegen sidebar that lets you generate tgz for Function nodes ... and subflows. That is still in the backlog and is still something to look at.
What if we don't hardcode publishing subflows as a core editor feature, but do the work to create the nodegen sidebar plugin which would expose the features needed? That would also solve the problem we have that many commercial users who embed custom versions of Node-RED may not want the publishing feature for their scenarios... they just don't install the nodegen plugin.
If we were to go down this route it would involve:

Add extra meta data options to the subflow node (version/license/description... could all still be added to the subflow object in the core)
Implement the ability to load nodes implemented as subflows into the runtime
Add option to palette manager to upload tgz file directly
Create nodegen plugin that adds a custom sidebar to expose nodegen options - focussed on Function nodes and Subflows.

Ok Nick, this sounds like a crazy departure from what we've discussed...
Yes. But sometimes you need to think through the crazy ideas to help get to the right answer. I'm not suggesting this is the right answer, but for the requirements as I've understood them, it feels like a better user experience to me.
But this needs discussing.  I'm aware I may be missing requirements for the feature.

So when you say install a tgz. Is this different from npm install ? Is the tgz here not a real npm ?
Re the steps 1) would the extra metadata not be the same as required by nodegen so all part of the plugin ?
I also think that using nodegen (the plugin path) also helps make it clear to the user that this is a different process and will produce a different  thing for the end user.
It also opens up the possibility for other publish like plugins for completely different future thought paths.

So when you say install a tgz. Is this different from npm install ? Is the tgz here not a real npm ?

The tgz would be a valid npm module - the output of npm pack, or a manually downloaded tarball from the registry.

Re the steps 1) would the extra metadata not be the same as required by nodegen so should be all part of the plugin ?

If you were the author of a subflow that you publish to npm, you would not want to have to fill-in all of that meta data every time you want to publish an update. The only place to store the meta data is in the flow file with the original subflow. I also think there is merit in having some of that metadata tied to the subflow even when sharing the subflow in the 'traditional' way by exporting its JSON.

I also think that using nodegen (the plugin path) also helps make it clear to the user that this is a different process and will produce a different thing for the end user.

That is why I'm interested in exploring this option to see if it meets the requirements. It removes, for me, the confusion over the different types of 'exporting a subflow' we would otherwise have.

Tgz = npm. Great.
Metadata - true. But could the plugin be (maybe) like the dashboard base node ? Not visible but in the flow so able to hold data in its own right.

I have just raised a design PR for adding the ability to upload tgz files via the /nodes admin api (and via the editor UI) - https://github.com/node-red/designs/pull/35
I think this will be a useful feature to have regardless of where this discussion around subflows goes - I'm just keen to get as many pieces of the puzzle in place so we can make the right decisions here.

This gives us a clear difference between a subflow imported as you can today and what this feature would like to provide. That suggests (using the concept from the current implementation), all subflows exported using this new feature would be sealed. If you wanted to share a non-sealed subflow, then you can use the export options already available. Q: Does this make sense?

Yes. These are our requirements for Exportable SUBFLOW.

So, my suggestion is we change the language we are using for this feature. "Exporting" subflows is something users can already do - this is something different.
What if we call this new feature "Publishing" subflows?

No problem with changing the terminology.
Though, we may have a problem with our understanding of English terms meaning😀.

What is the thing that gets published?
Option 1 - tgz
...
Option 2 - json
...
This is the approach of the current proposal. The "published" subflow is JSON in a different format to the normally exported subflow format.
It gets imported into the users flows and stored in their flows. If they start a new project or delete their flow file, any subflow-nodes imported this way will be gone.
It will mean when I export a flow, the subflows will be included (but I still need to make sure any dependencies on npm nodes are known about)
Can we find a way to make tgz work?

As for Option 1(tgz), the original plan we discussed was to handle it in the second step.
https://github.com/node-red-hitachi/designs/blob/subflow2npm/designs/subflow-to-npm/README.md
I think it's fine to implement only this one, or consider JSON export later.

What role does nodegen play?
The vision for nodegen was to find a way to integrate it into the editor - a custom nodegen sidebar that lets you generate tgz for Function nodes ... and subflows. That is still in the backlog and is still something to look at.

In my opinion, there is no need to use nodegen for this purpose. Simply prepare a package skeleton and run the npm command to create tgz.
Also, in some cases, we  needs to be able to operate only in  Node-RED editor, as we may not want to expose the command line to users in a PaaS environment.

But, I think the JSON format is easier in terms of sharing (e.g. in development phase).
During development can the existing export functionality be used ?

we may not want to expose the command line to users
There should be no need, just as with installing nodes that calls npm behind the scenes. npm must still be available to the system for us to call but the UI would do it, not the user.

The intention of integrating nodegen was so the the command line was not exposed - and we also get to export function nodes - and by doing so we may identify common bits of packaging UI that are needed for both, as they both result in a packed tgz.

The intention of integrating nodegen was so the the command line was not exposed - and we also get to export function nodes - and by doing so we may identify common bits of packaging UI that are needed for both, as they both result in a packed tgz.

I don't understand the benefits of using nodegen.
Here are my basic assumptions:

generate metadata and associated files,
generate tgz (npm pack).

I don't think that (1) can be made common because  generated files are different in purposes.
Therefore, if there is a possibility, it is (2), but I can't see the usefulness of using nodegen instead of directly calling  npm.

Hi, this feature is a game changer for many ! when can we expect to have this feature added please? 🙏
We are ready to contribute with testing,..

@izabela-g which part specifically? From the discussion you can see the direction we plan to take. There is a draft PR #2690 that adds support for npm modules that are implemented as a subflow. That is the PR that is the focus of the current work in this area.
It may be easier for us to have a chat on slack (#dev on https://nodered.org/slack) to help understand who the 'we' is and what you are able to help with.


Automatically expand single-thread TopDownView

Automatically expand a TopDownView that contains information about
a single thread instead of having to manually "Expand Recursively".
This was done mainly for the "TopDown (Selection)" tab which is
populated with data from a single thread and required a second user
action to expand the report. The rationale here is that if the user selects
samples, they want to have a look at the breakdown, not only the top level
node which would show "100%".
b/235482436

But even if there is a single top-level node, the tree can be huge and overwhelming. It can still have hundreds or thousands of node. We easily end up in the situation where the user has to collapse it again to actually start looking at the tree step by step from the top. A compromise would be to expand automatically node by node while there is a single child, and stop at the first node that has multiple children.

But even if there is a single top-level node, the tree can still be huge and overwhelming. It can still have hundreds or thousands of nodes. We easily end up in the situation where the user has to collapse it again to actually start looking at the tree step by step from the top. A compromise would be to expand automatically node by node while there is a single child, and stop at the first node that has multiple children (with this node expanded).

@dpallotti , @florian-kuebler , I think that in the majority of cases, expanding recursively is the better default. See go/stadia-orbit-topdown-selection for more context. The main point against stopping-at-the-first-node-that-has-multiple-children is that, in practice, we see that a thread could have all its workload in one child node, while having negligible work performed in its sibling nodes, making this approach not very useful. We could see a collapsed node responsible for 95% of the CPU time for example, which leaves the user needing to manually expand the node to get useful information.

Also note, that selection can be done on the "all threads" bar, or from the tree-views ("select these callstacks"), in which case you could have more than one thread.

That's not a problem, this works with the current change as the CallTreeView is aware of the number of threads that are involved. If more than one, then the default is to collapse.

The main point against stopping-at-the-first-node-that-has-multiple-children is that, in practice, we see that a thread could have all its workload in one child node, while having negligible work performed in its sibling nodes, making this approach not very useful. We could see a collapsed node responsible for 95% of the CPU time for example, which leaves the user needing to manually expand the node to get useful information.

But expanding the whole tree is still way too much. It's basically saying that you always only care about the very first chain of nodes. As soon as you don't, you have to collapse the tree again before you can do anything.
I added a suggestion in the document, but I can quickly repeat it here: only expand at most one child, and only expand it if its "Of parent" percentage is above a threshold, which could be something between 50% and 80%.
This should fit what you want to achieve here: immediately show what is a clear main offender.


How to get details of remainders?

I am trying gcalcli agenda --detail_reminders but I am only getting the remainders not their details. Also the date of the remainders is wrong.

As with your other issue, I am not able to reproduce on the current master.  The syntax of the detail stuff in a bit in flux.  Here's my experience using current master on python3.5
(venv) jcrowgey@tsuga:~/src/gcalcli$ gcalcli  add
Title: test
Location: anywhere
When: tuesday
Duration (minutes): 30
Description: a test event
Enter a valid reminder or '.' to end: 5m sms
Enter a valid reminder or '.' to end: 10m email
Enter a valid reminder or '.' to end: .
(venv) jcrowgey@tsuga:~/src/gcalcli$ gcalcli agenda --details=reminders

Mon Sep 03           Labor Day

Tue Sep 04  12:00am  test
                     Reminder: sms 5 minutes
                     Reminder: email 10 minutes

So I think I need a bit more detail in order to be of service to you.


identify numeric columns

Describe the new feature:
This is useful to gather all numeric columns into a list so that later we can apply any transformation on them in one-liner style. For example, fill NAs in the numeric columns by their means.
What is the current outcome?
Module nominal already has method identify_nominal_columns to find nominal columns. I follow its style and added to my fork a method identify_numeric_columns, but it seems I cannot make a pull request yet because there is another request pending. Can @shakedzy accept my previous pull request?
Is it backward-compatible?
Should be no problem, as it is independent from others.

Nice idea, both this one and the missing values. I've add a new method, identify_columns_by_type which is more general, and now identify_nominal_columns and identify_numeric_columns are shortcuts to it.


fs: Document fs_open and fs_seek flags

Descriptions of fs_open flags have been added and descriptions of
whence options to_fs_seek have been moved, to make them visible
in html documentation.
Signed-off-by: Dominik Ermel<EMAIL_ADDRESS>

Btw. I appreciate suggestions how to group flags within documentation, so that they would have dedicated sections instead of being grouped under "File section: Defines" .


add eslint

why
Currently lots of type ambiguity, this should make development more strict.
what changed
Added and fixed many types, removed any casting.
test plan
Run evals to ensure no logic has been damaged, otherwise npx eslint . should return 0 errors.

Merging into eslint-final to unify changes with other branch


MVP

### Business
- [ ] Legal Entity
- [ ] === **Demo apps**
- [ ] MVP: Demo Chat application
- [ ] === **Features**
- [ ] REST API
- [ ] WASM plugins
- [ ] === **Promotion**
- [ ] Site
- [ ] Documentation
- [ ] === MVP+
- [ ] Federation
- [ ] NOCODE: must be possible to define a projection as VIEW MyVew AS SELECT a,b,c FROM sys.WLog WHERE ....
- [ ] Async projections
- [ ] Lazy projections
- [ ] PLog: cleanup, ring

Migrated to https://github.com/orgs/voedger/projects/11/views/9


Windows GUI: Build for ARM64 PC

Depends on:

[x] https://github.com/MediaArea/MediaInfoLib/pull/2161

Note:

If there is any condition where InfoTip needs libcurl then we need an ARM64X version of libcurl. If not, it should work as it is or we can use an ARM64EC version of libcurl for native code.
The ARM64 is not added to all-in-one installer. It should be either added or there should be a way to direct ARM64 users to the correct installer or else they will have broken shell integration. Maybe time for an online stub installer?

Windows i386 -> i386 installer
Windows x64 -> x64 installer
Windows 10 ARM64 -> i386 installer
Windows 11 ARM64 -> ARM64 installer
Other Windows -> unsupported

why not the at x64 installer?

Windows 10 does not have x64 emulation on ARM64. It is Windows 11 exclusive.

a check that it is not Windows 10 (and leave if it is) should be added to the ARM64 installer, shouldn't it?

ARM64 installer checks for ARM64 and Windows 11 oninit and aborts if any condition not met. Should be good enough?
https://github.com/cjee21/MediaInfo/blob/033545d35b196d92e8ac9686b76f9850dd7ffd1d/Source/Install/MediaInfo_GUI_Windows_ARM64.nsi#L123-L132

ARM64 installer checks for ARM64 and Windows 11 oninit and aborts if any condition not met. Should be good enough?

It is! I missed it, thanks for having done it before I ask.

I edited my proposal. Windows 10 ARM64 shell extension support is not a big need IMO, @cjee21 only if you are super motivated to do it...

Very low market share. Probably extinct soon. So nah... :p
Or we can get the Qt x64 and ARM64 to build and post it to the Store replacing the current very outdated UWP version (I got 2022 version from store?) and it will serve Windows 10 ARM64 as well as users who can only install apps from Store. Qt one is now quite close to VCL in features compared to UWP/wx. It is also probably easier to put Qt one in Store as it does not attempt to write registry entries for shell extensions.

Very low market share. Probably extinct soon. So nah... :p

OK, so let's keep with the i386 offer in the case of Windows 10 ARM64 and we don't really care.

Or we can get the Qt x64

Another topic but for the moment I am more in the mood of keeping VCL. It may change, I still need to think about it. But most of the remaining work does not depend on that, so you can go with it whatever is my future choice.

Very low market share. Probably extinct soon. So nah... :p

I edited again my proposal and now it is relatively small amount of remaining work, @cjee21 would you mind to manage that?

The Qt x64 one is more or less ready for the Store. The fully native Qt ARM64 one needs an ARM64 build of Qt WebEngine and Graph/FFmpeg plugins which is not something I can do. That's all for Qt.

I edited again my proposal and now it is relatively small amount of remaining work, @cjee21 would you mind to manage that?

Remains the stub installer right? I am not sure if I can manage to do that. Firstly, it requires knowing the URLs of the installers. Second, I just started doing NSIS this year and have no idea how to make a downloader yet. 😅

Firstly, it requires knowing the URLs of the installers. Second, I just started doing NSIS this year and have no idea how to make a downloader yet. 😅

Not difficult but fair, you already did a lot, we'll check.

But at some point we may want to let the user enter a URL in the GUI (feature requested by several users) so we'll need to add libcurl to the DLL called by the GUI, we'll do it.

@JeromeMartinez I pasted a url in the "File name" field of Windows File open dialog and it loads in MediaInfo 😆

It is hidden for the moment, people usually don't try that and ask for a more obvious interface.

Tried on Qt one and it appears to work but since Qt one produces blank output when passing urls in command line, it also produces blank using the file open dialog.

I tried making a full stub installer and it appears to work.

Go, PR :).
The hybrid stub version should be even easier.

Checked https://mediaarea.net/download/snapshots/binary/mediainfo-gui/20241205-2/MediaInfo_GUI_24.11.20241205_Windows_ARM64.exe
Looks okay other than MediaInfo_WindowsShellExtension.dll not digitally signed.

@JeromeMartinez So left the testing of ARM64 installer and after that if it is working fine, dealing with the combined installer and making a version-less stub.

@rednoah please test this ARM build, especially the Windows Explorer integration (shell extension and tooltip).

@rednoah please test this ARM build, especially the Windows Explorer integration (shell extension and tooltip).

Link no longer exists. Try this one: MediaInfo_GUI_24.11.20241205_Windows_ARM64.exe

Nice work! I can confirm that it works on my arm64 machine.


[BACKEND] Append '\0' for __assertfail's str param

print strings that don't end with '\0' may cause invalid mem access

I'm confused about the PR. Can you provide a reproducer and explain in detail?

This actually makes plenty of sense to me.  What are you confused about @Jokeren ?  :)

I thought a string should come with a '\0' by default and will be set automatically.

I guess the problem is that we write bytes instead of a real "string".

I guess the problem is that we write bytes instead of a real "string".

Yeah, I think MLIR/LLVM is not adding it for us automatically.


Components

In this PR I;
Add components and the respective styles to set up the bookstore

Hi @LeslieAine 😊,
While you made a great effort in this project, I cannot proceed to review your code.
Invalid Code Review Request 🛑 💀
You have submitted a project, that doesn't have an updated README file, kindly update the readme with Microverse template
Your Code Review Request will be marked as invalid in your Dashboard, so please submit a new one once you are ready 🙏
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

Invalid Code Review Request does not count into the code reviews limit.


Support gz compressed images

This is not part of the PDS spec, but sometimes PDS images are gzip compressed to save space.  Planetary image should be able to open these.  Assume the filenames end with .gz.

I have accepted this merge request, nice work @bvnayak and great feedback @wtolson.


[QUESTION] Any possibility to adapt it to linaria?

@Viperwow linaria can be used in conjunction with postcss to support tailwind directive @apply.
The syntax will look like like the image bellow.

This is close enough to what I'm looking for! Thanks!


Treatment of array holes?

I accidentally (then purposefully) changed the behavior of array holes when migrating the proposal to this repo. Before, we performed a Has check before Get, and if the key did not exist, we skipped this element. Now, we unconditionally call Get.
This has the following side-effect:
[1, 2, /* hole */, 4].groupBy(v => {
  return v <= 2;
});

// { true: [1, 2], false: [undefined, 4] }
// Previously, would have been { true: [1, 2], false: [4] }

We've explicitly transformed a hole into an undefined in the false grouping.

ES6 methods like find do the same, unconditionally calling Get. However, flat/flatMap went back to the ES5 behavior of skipping holes.

This was discussed here: https://github.com/tc39/proposal-flatMap/issues/29
https://github.com/tc39/proposal-flatMap/issues/29#issuecomment-317562784 is indeed the post-ES6 behavior, but flatMap is a special case due to https://github.com/tc39/proposal-flatMap/issues/29#issuecomment-317561783.
I think that [1, 2, /* hole */, 4].groupBy(grouper) and [1, 2, undefined, 4].groupBy(grouper) should be equivalent. Holes shouldn't be a thing and we should pretend they aren't one, whenever we can.

We should treat holes as undefined here.
IIRC flatMap skips holes because flat eliminates them and map skips them, and we wanted flatMap(x => y) to be equivalent to .map(x => y).flat(), which is a line of reasoning which does not apply here.

I think having holes that move around and reorder in the grouped output is... confusing


Auto dedent else in an if..else block

Discussed in https://github.com/microsoft/pylance-release/discussions/3804

Originally posted by drorata December 22, 2022

Following the request from https://github.com/microsoft/vscode-python/issues/481 by @brettcannon
Environment data

Language Server version: v2022.12.20
OS and version: macos 13.1
Python version (& distribution if applicable, e.g. Anaconda): 3.11

Code Snippet

if __name__=="__main__":
    print("foo")  # 1
else:  # 2
    pass

After No.1, typing else starts right below the p. Once else: is typed, the editor doesn't de-intent the line and I have to do it manually.
Repro Steps

Create a new file and start typing.

Expected behavior
The else: is supposed to be de-indented one level.
Actual behavior
else: stays below the previous line (which belongs to the if part)

Logs

Experiment 'pythonaacf' is active
Experiment 'pythonSurveyNotificationcf' is active
LSP Notebooks experiment is enabled
LSP Notebooks interactive window support is enabled
Python interpreter path: ~/.poetry_envs/foo-cv-BPVTkgqj-py3.11/bin/python
> poetry env list --full-path
cwd: .
> ~/.pyenv/versions/3.10.4/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.pyenv/versions/3.11.1/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> conda info --json
> ~/.pyenv/versions/3.7.13/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.pyenv/versions/3.9.13/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> . ~/.poetry_envs/foo-cv-BPVTkgqj-py3.11/bin/activate && echo 'e8b39361-0157-4923-80e1-22d70d46dee6' && python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/printEnvVariables.py
> ~/.poetry_envs/username-cv-lqqRfM4F-py3.11/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.poetry_envs/fast-api-sql-example-hJw5i7sx-py3.11/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.poetry_envs/foo-cv-BPVTkgqj-py3.11/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.poetry_envs/kumsitz-lib-iVmOjJvt-py3.10/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.poetry_envs/pyspark-playground-Dg6oNfQx-py3.10/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.poetry_envs/stocks-playground-bIdRsd_o-py3.10/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> /usr/bin/python3 ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> /opt/homebrew/bin/python3 ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> /opt/homebrew/bin/python3.11 ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
> ~/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
[ERROR 2022-11-23 8:14:35.526]: [Error: Command failed: /Users/username/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
/bin/sh: /Users/username/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python: No such file or directory

	at ChildProcess.exithandler (node:child_process:408:12)
	at ChildProcess.emit (node:events:526:28)
	at maybeClose (node:internal/child_process:1092:16)
	at Socket.<anonymous> (node:internal/child_process:451:11)
	at Socket.emit (node:events:526:28)
	at Pipe.<anonymous> (node:net:687:12)] {
  killed: false,
  code: 127,
  signal: null,
  cmd: '/Users/username/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py'
}
Starting Pylance language server.
Extension search path: /Users/username/.vscode/extensions
> ~/.poetry_envs/foo-cv-BPVTkgqj-py3.11/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/linter.py -p flake8 /opt/homebrew/bin/flake8 --max-line-length=120 ./foo_cv/__init__.py
cwd: .
##########Linting Output - flake8##########

> ~/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
[ERROR 2022-11-23 8:14:37.540]: [Error: Command failed: /Users/username/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py
/bin/sh: /Users/username/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python: No such file or directory

	at ChildProcess.exithandler (node:child_process:408:12)
	at ChildProcess.emit (node:events:526:28)
	at maybeClose (node:internal/child_process:1092:16)
	at ChildProcess._handle.onexit (node:internal/child_process:302:5)] {
  killed: false,
  code: 127,
  signal: null,
  cmd: '/Users/username/.local/share/virtualenvs/test-project-GV0hGqPR/bin/python /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/get_output_via_markers.py /Users/username/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/interpreterInfo.py'
}
> /opt/homebrew/bin/black --diff --quiet ./foo_cv/__init__.py.fcaa6f612d7121d453663cbc59080266.tmp
cwd: .
Extension search path: /Users/username/.vscode/extensions
> ~/.poetry_envs/foo-cv-BPVTkgqj-py3.11/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/linter.py -p flake8 /opt/homebrew/bin/flake8 --max-line-length=120 ./foo_cv/__init__.py
cwd: .
##########Linting Output - flake8##########

> ~/.poetry_envs/foo-cv-BPVTkgqj-py3.11/bin/python ~/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/testing_tools/run_adapter.py discover pytest -- --rootdir . -s --cache-clear tests
cwd: .

I don't really know what is test-project-GV0hGqPR nor where is it coming from. Maybe that's a hint for the problem.

This actually seems to be working for me. When typing the ':' it works.

@drorata what are your user settings?
They should have these:
  "[python]": {
    "editor.formatOnType": true
  },
  "python.languageServer": "Pylance",

I have just added in a workspace the settings suggested by @rchiodo and restarted VScode. Then I recorded the following:
https://user-images.githubusercontent.com/2905978/210727994-68627e7a-a259-4bdd-9eb6-b37a5cc39efd.mov
So, it doesn't seem to do the trick...

I wonder if something else is taking over formatting. What other extensions do you have installed?

Is there a way to exctarct a full list of installed extensions?

From the command line:
code --list-extensions

It'd probably be better to just disable everything, then reenable python and pylance and see if it works.

I tried to disable all extensions and then enable "Python" + "Pylence". Note that a few other extensions were enabled as well by doing so (e.g. Jupyter related). In any case, this didn't solve the problem.
The installed extensions are:
bierner.markdown-mermaid
bpruitt-goddard.mermaid-markdown-syntax-highlighting
bungcip.better-toml
christian-kohler.path-intellisense
eamodio.gitlens
gera2ld.markmap-vscode
hediet.vscode-drawio
IronGeek.vscode-env
James-Yu.latex-workshop
kenhowardpdx.vscode-gist
mechatroner.rainbow-csv
ms-azuretools.vscode-docker
ms-python.isort
ms-python.python
ms-python.vscode-pylance
ms-toolsai.jupyter
ms-toolsai.jupyter-keymap
ms-toolsai.jupyter-renderers
ms-toolsai.vscode-jupyter-cell-tags
ms-toolsai.vscode-jupyter-slideshow
ms-vscode-remote.remote-containers
ms-vscode-remote.remote-ssh
ms-vscode-remote.remote-ssh-edit
ms-vscode-remote.remote-wsl
ms-vscode-remote.vscode-remote-extensionpack
ms-vscode.remote-explorer
njpwerner.autodocstring
PKief.material-icon-theme
rebornix.ruby
redhat.vscode-yaml
stkb.rewrap
streetsidesoftware.code-spell-checker
vstirbu.vscode-mermaid-preview
wholroyd.jinja
wingrunr21.vscode-ruby
yzhang.markdown-all-in-one

@rchido curious, is this behind an experiment or available to all users?

@rchido curious, is this behind an experiment or available to all users?

We discussed this yesterday in standup and it might be affected by an experiment. It isn't listed here:

But @luabud thought it might be enabled with just a flag somewhere else. I don't see it in any of our package.jsons though.
@drorata can you try setting this flag and see if it has any effect?
  "python.experiments.optInto": [
    "All"
  ]

That should turn on whatever experiment may be making this not work.

Thanks @luabud, it looks like this code here is the culprit:
https://github.com/microsoft/vscode-python/blob/e6b27521746af44e26f054122c0f22efbf80ce73/src/client/activation/node/analysisOptions.ts#L63
This only works if the user is in the experiment too. Switching this to the python repository, That code should be checking if it gets the default value or if the user supplied it and only using the experiment value if the user didn't supply it.


RisingWave Dashboard loads very slowly

How do I build RisingWave Dashboard myself ？

RisingWave Dashboard loads very slowly

This might be caused by failing to fetch data from the Prometheus server. Would you mind telling how you launched the cluster? If you're using RiseDev, do you also specify prometheus in the corresponding profile section in risedev.yml?

How do I build RisingWave Dashboard myself ？

You can turn ENABLE_BUILD_DASHBOARD_V2 on with ./risedev configure.

cd risingwave-demo/docker
docker-compose up -d

按照文档https://www.risingwave.dev/docs/current/risingwave-docker-compose/启动的集群

I’ll take a look

Version 0.18 does not have this problem


Multiethnic terms from the datasets page and Explorer

Right now if you go into dev (which has schema 4 datasets), you can filter datasets by Self-Reported Ethnicity to include multiethnic terms.

We plan to filter these out on GE. Is it correct to include these in the datasets page and/or Explorer?

Closing this out. Per discussion, we want to retain multiethnic terms on the datasets page + explorer


Rewrite mockgyver from gen_fsm to gen_statem

gen_fsm replaced with gen_statem.
There is no proper code documentation for gen_statem callback functions yet.

Solved in #19, thanks for the assistance!


schedule create?

Hey guys...
I have a question about schedule jobs in Qstash:
https://docs.upstash.com/qstash/features/schedules
The CronJobs is create only with API REST
"curl -XPOST
-H 'Authorization: Bearer XXX'
-H "Content-type: application/json"
-H "Upstash-Cron: * * * * *"
-d '{ "hello": "world" }'
'https://qstash.upstash.io/v1/publish/https://example.com'"
because is not possible with SDK?
or is possible but I didn't find it?
API doc has (get, list and delete only):
https://docs.upstash.com/qstash/openapi#tag/Schedules

@JonhnyDev
it's a field called cron
client.publish({
  // ...
  cron: "* * * * *"
})

And the api docs for schedules don't include this, because you create a schedule, by publishing a regular message and adding the Upstash-Cron header.
I'll make that more clear in the future, thanks for the feedback.

Working, Thank you

I see it became this now:
  return await client.schedules.create({
    cron,
    destination: url,
  });


Create image sensors

I want to create an image entity for any images that are present in a delivery.

This isn't possible with the way the integration works as the image requests need to be authenticated and would take too much work.


Update s3 to 2.11.6

Updates software.amazon.awssdk:s3 from 2.11.4 to 2.11.6.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk", artifactId = "s3" } ]

labels: library-update, semver-patch

Closed in favor of #60


feat(atenlib): test random ops

Check shape and dtype only for ops that are known to be indeterministic.
Also added the skip_if mechanism to skip tests based on environment.

I removed merge at lgtm because there seems to be more comments to address

I think I addressed everything.


Onboarding sign up screen updates

Prior to thinking about larger order changes I'd like us to ship the following two smaller changes

[ ] Change copy from current to Set up your Artsy account
[ ] Have the keyboard called up at this screen with the cursor blinking in the name field
[ ] Create emphasis on the selected field by making the rule black while selected
[ ] Change input label text in ArtsyGrayMedium when input is selected

@mennenia @alloy if this represents more than a few days work then I say we table it in favor of a larger shift in onboaring. I'm making some assumptions about the sizes of these changes being small so if I'm wrong on that let me know.

Sounds good!
It should be fine to go into 3.1.0. I won't be able to get it in for today's 3.0.2 deadline I think.

Actually done earlier with some of the other 3.0.2 tickets - can have a shot at this, to see if we can ship it today and get some more data.


Issue #27: Support for arrays

I added conversion for all array types and I tried to cover the same tests that existed for the arrays.

@rofr Can be reviewed.

Great, can't wait to try this out, I already have a use case!


SAML2P authentication in .NET Core

Hello,
is there any implementation of SAML2P in .NET Core?
I would like to use the SAML2P as the Identity Provider on my project that is running on .NET Core.
Thank you.

@brentschmaltz is this related to the saml2 support coming in WsFed?

If you're looking for SAML2-P support in ASP.NET Core, then you should look at: https://github.com/Sustainsys/authservices. They are working on a SAML2-P authentication middleware for ASP.NET Core.

@Tratcher Saml2 support is about tokens and wsFed. Samlp usually refers to Saml protocol which is in someways similar to OIDC or WsFed but much richer.
We do not have a POR for Samlp.

There are no plans to support it at this time due to lack of demand.
Can you share info on what service it is that requires SAML2P?

Closing because there are no plans to implement this.