Merge/align point clouds from different perspectives

CARLA version: 9.14
Platform/OS: Ubuntu 20.04
Hi, I'm looking to merge point clouds from multiple perspectives. There are a few issues that refer to this, but none of them result in a full description for how to accomplish this. Given a depth camera located in a vehicle and a depth camera located 300 m above a vehicle (and facing down), I'd like to get the corresponding point clouds aligned in the same frame so that the points that correspond to the same objects in the world line up.
My approach was to transform both point clouds to the world frame using .get_transform(). However, this does not result in aligned point clouds in the slightest (see screenshot). Any help is greatly appreciated. Code snippet below.

import glob
import os
import sys

try:
    sys.path.append(glob.glob('/opt/carla-simulator/PythonAPI/carla/dist/carla-*%d.%d-%s.egg' % (
        sys.version_info.major,
        sys.version_info.minor,
        'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])

except IndexError:
    pass
print('/opt/carla-simulator/PythonAPI/carla/dist/carla-*%d.%d-%s.egg' % (
        sys.version_info.major,
        sys.version_info.minor,
        'win-amd64' if os.name == 'nt' else 'linux-x86_64'))

import carla

import math
import random
import time

import matplotlib.pyplot as plt

import sensor # CARLA python script

import cv2
import numpy as np
import numpy.matlib

depth_images = []
aerial_depth_images = []

def save_depth_image(image):
  depth_images.append(image)
  image.save_to_disk('_out/depth/%06d.png' % image.frame, carla.ColorConverter.Depth)

def save_aerial_depth_image(image):
  aerial_depth_images.append(image)
  image.save_to_disk('_out/aerial_depth/%06d.png' % image.frame, carla.ColorConverter.Depth)

# taken from carla/Depreciated/PythonClient/carla/image_convertor.py
def to_bgra_array(image):
    """Convert a CARLA raw image to a BGRA numpy array."""
    if not isinstance(image, carla.libcarla.Image):
        raise ValueError("Argument must be a carla.libcarla.Image")
    array = np.frombuffer(image.raw_data, dtype=np.dtype("uint8"))
    array = np.reshape(array, (image.height, image.width, 4))
    return array

def depth_to_array(image):
    """
    Convert an image containing CARLA encoded depth-map to a 2D array containing
    the depth value of each pixel normalized between [0.0, 1.0].
    """
    array = to_bgra_array(image)
    array = array.astype(np.float32)
    # Apply (R + G * 256 + B * 256 * 256) / (256 * 256 * 256 - 1).
    normalized_depth = np.dot(array[:, :, :3], [65536.0, 256.0, 1.0])
    normalized_depth /= 16777215.0  # (256.0 * 256.0 * 256.0 - 1.0)
    return normalized_depth

def depth_to_local_point_cloud(image, color=None, max_depth=0.9):
    """
    Convert an image containing CARLA encoded depth-map to a 2D array containing
    the 3D position (relative to the camera) of each pixel and its corresponding
    RGB color of an array.
    "max_depth" is used to omit the points that are far enough.
    """
    far = 1000.0  # max depth in meters.
    normalized_depth = depth_to_array(image)

    # (Intrinsic) K Matrix
    k = np.identity(3)
    k[0, 2] = image.width / 2.0
    k[1, 2] = image.height / 2.0
    k[0, 0] = k[1, 1] = image.width / \
        (2.0 * math.tan(image.fov * math.pi / 360.0))

    # 2d pixel coordinates
    pixel_length = image.width * image.height
    u_coord = np.matlib.repmat(np.r_[image.width-1:-1:-1],
                     image.height, 1).reshape(pixel_length)
    v_coord = np.matlib.repmat(np.c_[image.height-1:-1:-1],
                     1, image.width).reshape(pixel_length)
    if color is not None:
        color = color.reshape(pixel_length, 3)
    normalized_depth = np.reshape(normalized_depth, pixel_length)

    # Search for pixels where the depth is greater than max_depth to
    # delete them
    max_depth_indexes = np.where(normalized_depth > max_depth)
    normalized_depth = np.delete(normalized_depth, max_depth_indexes)
    u_coord = np.delete(u_coord, max_depth_indexes)
    v_coord = np.delete(v_coord, max_depth_indexes)
    if color is not None:
        color = np.delete(color, max_depth_indexes, axis=0)

    # pd2 = [u,v,1]
    p2d = np.array([u_coord, v_coord, np.ones_like(u_coord)])

    # P = [X,Y,Z]
    p3d = np.dot(np.linalg.inv(k), p2d)
    p3d *= normalized_depth * far

    # Formating the output to:
    # [[X1,Y1,Z1,R1,G1,B1],[X2,Y2,Z2,R2,G2,B2], ... [Xn,Yn,Zn,Rn,Gn,Bn]]
    if color is not None:
        # np.concatenate((np.transpose(p3d), color), axis=1)
        return sensor.PointCloud(
            image.frame_number,
            np.transpose(p3d),
            color_array=color)
    # [[X1,Y1,Z1],[X2,Y2,Z2], ... [Xn,Yn,Zn]]
    return sensor.PointCloud(image.frame_number, np.transpose(p3d))

def main():
    actor_list = []

    try:
        client = carla.Client('localhost', 2000)
        client.set_timeout(2.0)

        world = client.get_world()

        blueprint_library = world.get_blueprint_library()

        bp = random.choice(blueprint_library.filter('vehicle'))

        if bp.has_attribute('color'):
            color = random.choice(bp.get_attribute('color').recommended_values)
            bp.set_attribute('color', color)

        transform = carla.Transform(carla.Location(x=109.502762, y=71.243790, z=0.600000), carla.Rotation(pitch=0.000000, yaw=-89.609253, roll=0.000000))

        # So let's tell the world to spawn the vehicle.
        vehicle = world.spawn_actor(bp, transform)

        actor_list.append(vehicle)
        print('created %s' % vehicle.type_id)

        # Get aerial and ground PC
        camera_bp_depth = blueprint_library.find('sensor.camera.depth')
        camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4))
        camera_depth = world.spawn_actor(camera_bp_depth, camera_transform, attach_to=vehicle)
        actor_list.append(camera_depth)
        print('created %s' % camera_depth.type_id)

        camera_bp_aerial_depth = blueprint_library.find('sensor.camera.depth')
        camera_transform = carla.Transform(carla.Location(x=1.5, z=300), carla.Rotation(roll=0, pitch=270, yaw=0))
        camera_aerial_depth = world.spawn_actor(camera_bp_aerial_depth, camera_transform, attach_to=vehicle)
        actor_list.append(camera_aerial_depth)
        print('created %s' % camera_aerial_depth.type_id)

        camera_depth.listen(save_depth_image)
        camera_aerial_depth.listen(save_aerial_depth_image)

        time.sleep(1)

        ### Get PC of pixels from aerial view in world frame ###
        aerial_pc = depth_to_local_point_cloud(aerial_depth_images[0]) # point cloud with positions of each pixel in camera frame

        # transform to world frame
        camera_2_world_aerial = camera_aerial_depth.get_transform().get_matrix()
        pc_points = aerial_pc.array
        pc_points = np.append(pc_points, np.ones((pc_points.shape[0], 1)), axis=1) # add extra column of 1s for homogenous transform
        pc_array = np.dot(camera_2_world_aerial, pc_points.T) # transform from camera to world
        aerial_pc._array = pc_array.T[:,:-1] # remove extra column of 1s

        aerial_pc.save_to_disk('aerial_pointcloud.ply')

        ### Get PC of pixels from ground view in camera frame ###
        ground_pc = depth_to_local_point_cloud(depth_images[0])

        # transform to world frame
        camera_2_world_ground = camera_depth.get_transform().get_matrix()
        pc_points = ground_pc.array
        pc_points = np.append(pc_points, np.ones((pc_points.shape[0], 1)), axis=1) # add extra column of 1s for homogenous transform
        pc_array = np.dot(camera_2_world_ground, pc_points.T) # transform from camera to world
        ground_pc._array = pc_array.T[:,:-1] # remove extra column of 1s

        ground_pc.save_to_disk('ground_pointcloud.ply')

    finally:
        print('destroying actors')
        camera_depth.destroy()
        camera_aerial_depth.destroy()

        client.apply_batch([carla.command.DestroyActor(x) for x in actor_list])
        print('done.')

if __name__ == '__main__':

    main()

@DSantosO not sure if you're still active with carla, but I saw that you were tagged in questions that were about aligning pointclouds. If you're able to help, I would greatly appreciate it!


Detect graphViz outside of -GraphVizPath

We have:
    $GraphVizPath = (
            'C:\Program Files\NuGet\Packages\Graphviz*\dot.exe',
            'C:\program files*\GraphViz*\bin\dot.exe',
            '/usr/local/bin/dot'
        ),

…which of course we can change.
Why not something like...
$isGraphviz =
    try {
        Get-Command dot -CommandType Application -ErrorAction Stop > $null
        $true
    catch {
        $false
    }

if (-not $isGraphviz) {
    $graphViz =
        Resolve-Path -Path $GraphVizPath -ErrorAction SilentlyContinue |
        Get-Item |
        Where-Object BaseName -eq 'dot' |   # PS -- don't need quotes here
        Select-Object -First 1
}

...so dot's path can be snagged straight from my env:\path without having to enter it in manually every time?  :)

That's a good idea.


Application lifecycle event don’t appear in Amplitude

Hi,
Ever since this change about session events. (thanks for the reactivity on that issue)
The Amplitude destination doesn’t receive anymore the events. Meaning they don’t appear in Amplitude at all
Events receiving in Segment

Only session events appearing in Amplitude

Workaround
For now I can fork and comment out AmplitudeSession.swift Line:151 to Line:169

Thanks

We made an update and reverted previous changes.  Please reach out to<EMAIL_ADDRESS>for assistance.


fix: React element error when opening modals

Fixes
Issue Number: n/a
wrapperElement as a ref would never trigger the useEffect

Nice! I can finally remove the console filter :+1:


Add Bead Sort Algorithm

please assign me this task

def bead_sort(sequence):
    if any(not isinstance(i,int) or i<0 for i in sequence):
        raise TypeErro('must be posetive integer')

    for _ in range(len(sequence)):
        for j,(rod_upper, rod_lower) in enumerate(zip(sequence, sequence[1:])):
            print(j,(rod_upper, rod_lower) )
            if rod_upper > rod_lower:
                sequence[j] -= rod_upper - rod_lower
                sequence[j+1] += rod_upper - rod_lower
            print(f"aaaa {j} : ",sequence)

    return sequence

I think it is too simple ....


repokitteh /retest seems to be broken

description
/retest seems to no longer work, instead gives the message
Cannot retry non-completed check: envoy-presubmit, please wait.

also doesnt seem to cope with restarting a test that has been cancelled due to timeout

This is due to the outage of AZP that doesn't report envoy-presubmit check status (but subchecks). #13744 should includes a workaround and for cancelled tests.


work on acados lateral MPC

Description Change lateral MPC formulation to be more efficient:

Use parameters instead of states for v_ego, rotation_radius.
Use partial condensing horizon 1 https://github.com/commaai/openpilot/commit/6729aa4e7e14f5c615b1a25d5263e4245d01e4b3

Verification
Comparing the output of ./profiler.py plannerd before and after these changes:
On my workstation the time spent in acados lateral MPC goes down from 8% to 7%, which is a 12 % speedup.
However, looking at the Jenkins timings there was no significant difference.
Timings on comma 2, latest Jenkins build master:
lateralPlan                             : [ 50.00937767 111.367656    23.552135  ]
                                          2.2273531199999996 0.13557882688246065

Run of this PR:
lateralPlan                             : [49.98976999 64.204296   39.126515  ]
                                          1.2840859199999999 0.0655169759648268

The diff.txt from test_process mostly contains very small differences (in the range of the precision of the solver).
Only surprise is that the exact zeros in the first call are not there anymore.
I thought f7df6ed460cde52e7d34bd1184e1f25c8898d3e8 would fix this, but didn't.

We should not forget to ensure our fork (https://github.com/commaai/acados/tree/cython2) is updated when this PR is merged so they don't go out of sync.

Rebased on master after https://github.com/commaai/openpilot/pull/23566 was merged to get better timings on Comma devices.
Comparing min exec. time with(out) the PR. On both comma 2 and 3 is > 10 % speedup similar to my machine.

Done here https://github.com/commaai/acados/commit/b1d46bd5bc134ada90a20a863aee3bed2bcd525b

@HaraldSchafer Are there any batch tests you want to run before merging?

If the timings are more consistent now, let's tighten the thresholds in selfdrive/test/test_onroad.py.

Not yet. The biggest inconsistency is from long, which is unchanged

I see, perhaps it would be nice to also have specific checks on the solver execution times for both lat and long.

I added those to CI today, but we still need to choose correct thresholds.


feat: export individual components to allow for tree shaking

I love this library, but I'm using it in a Chakra UI project and I don't need to extra weight of the radix ui dialog (9.5kb)
By exporting all individual components everything except Dialog can be imported, allowing bundlers to treeshake unused code and dependencies.

Would love to use cmdk + saas-ui!


🧑💻 : Show Score board after finishing game

In building block game, after user looses the game , it just asks for reset to restart the game, the score board in not displayed.
so i want to implement it
@iamrahulmahato please assign me this issue

✅ Details to Include When Taking the Issue:
Name : Meghana
Participant Role (Specify the Open Source Program name, e.g., GSSOC, Hacktoberfest, etc.): Gssoc-extd, hacktoberfest

Happy Contributing! 🚀
Wishing you all the best on your open source journey. Enjoy! 😎

Thanks for the opportunity @iamrahulmahato
Please assign me level 2

@iamrahulmahato done!! please check it and merge


Not detecting any installation

Issue description
On macOS 10.14.3, I am running pipenp install and it gives the error below. I am using pyenv and pyenv-virtualenv and everything was working before. Apparently it is looking for the Python version and stops at .DS_Store. Could anyone help me please?
Expected result
Describe what you expected.
Actual result
Traceback (most recent call last):
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 112, in get_versions
version = PythonVersion.parse(p.name)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 359, in parse
version_dict = parse_python_version(str(version))
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/utils.py", line 86, in parse_python_version
raise InvalidPythonVersion("%s is not a python version" % version_str)
pipenv.vendor.pythonfinder.exceptions.InvalidPythonVersion: .DS_Store is not a python version
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/bin/pipenv", line 11, in
load_entry_point('pipenv==2018.11.26', 'console_scripts', 'pipenv')()
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 764, in call
return self.main(*args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(args, **kwargs)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/cli/command.py", line 390, in shell
pypi_mirror=state.pypi_mirror,
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/core.py", line 2156, in do_shell
three=three, python=python, validate=False, pypi_mirror=pypi_mirror,
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/core.py", line 609, in ensure_project
validate=validate, skip_requirements=skip_requirements, system=system
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/core.py", line 294, in ensure_pipfile
project.create_pipfile(python=python)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/project.py", line 726, in create_pipfile
required_python = self.which("python", self.virtualenv_location)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/project.py", line 1083, in which
result = next(iter(filter(None, (find(finder) for finder in self.finders))), None)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/project.py", line 1083, in
result = next(iter(filter(None, (find(finder) for finder in self.finders))), None)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/pythonfinder.py", line 67, in which
return self.system_path.which(exe)
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/pythonfinder.py", line 54, in system_path
ignore_unsupported=self.ignore_unsupported,
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 451, in create
ignore_unsupported=ignore_unsupported,
File "<attrs generated init 75e45f144e3d5510d54dd5fca6730b98fa0220a9>", line 38, in init
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 116, in attrs_post_init
self._setup_pyenv()
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 196, in _setup_pyenv
version_glob_path="versions/", ignore_unsupported=self.ignore_unsupported
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 156, in create
sort_function=sort_function, version_glob_path=version_glob_path)
File "", line 17, in init
File "/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 114, in get_versions
entry = next(iter(version_path.find_all_python_versions()), None)
AttributeError: 'NoneType' object has no attribute 'find_all_python_versions'
Steps to replicate
Provide the steps to replicate (which usually at least includes the commands and the Pipfile).

$ pipenv --support
Pipenv version: '2018.11.26'
Pipenv location: '/usr/local/Cellar/pipenv/2018.11.26/libexec/lib/python3.7/site-packages/pipenv'
Python location: '/usr/local/Cellar/pipenv/2018.11.26/libexec/bin/python3.7'
Python installations found:

Hi! I am encountering the same issue. How did you solve this?

You probably should try reinstallingpipenv


Host it on free CDN

Hello Catalin,
I think it would be fantastic if you could host your plugin on CDNJS. It's reliable and fast. In my current project, only simple-hint.min.css is not hosted there actually. I would be grateful if you could host it there as well, and I think it'll benefit others too.
Here are the guidelines: https://github.com/cdnjs/cdnjs#adding-a-new-or-updating-an-existing-library.
Lemme know if I can help.
Cheers

Here you go http://www.jsdelivr.com/projects/simple-hint

Thanks @jimaek!
I'd like to host it on CDNJS, what do you think @catc ? Do you want me to help with this?

Sticking with JsDelivr for now...


Use collection class for counter collection operations

Moving the fix counts stuff to a collection class and then later the increment/decrement counter loops, if you merge #127. Then all significant counter behaviour is in a specific counter culture object and not in AR.
You could then test all the CC behaviour without requiring specific individual AR models for each scenario. Only those for actually testing the AR event hooks and transaction wrapper would a model be required. But I realise that is not necessarily a goal you had in mind.

I'm open to moving the remaining logic in counter_culture_fix_counts to another place. But I don't really see that we gain a lot by making this our own custom Collection class. It's simpler to just keep it as an Array.
Why don't we just move this remaining logic into the Reconciler? That seems to me where it logically belongs.

You could move it the reconciler but that would change its interface to a single counter to a counter collection concern in someway. But I was also going to move the array loops for the increment methods in the AR hooks into this collection class also.
I like custom collection classes. They give a tidy and powerful interface which is consistent and customisable.

I've updated now and moved all collection operations to the collection. Now all counter operations are outside or AR.

Thanks for the update. Having had some time to think about this more, I still don't think this logic belongs in a collection class. If you look at the Collection every single method there is either scaffolding for the custom selection or iterates over every single element. What that tells me is that the logic belongs in the individual element, not the collection.
I don't see a big gain in clarity here and so I don't think it's worth the extra complexity of a custom Collection class.

These methods iterate and filter the collection of counters, that is what collection methods do. The fact that they execute something on one or many of the collection members is really the point. You can't move this logic to the member because they are essentially applied to the whole or partial collection.
Think of AR itself. It has custom collection behaviour for records e.g. pluck, destroy_all etc., which iterate the collection and run behaviour on every member. That collection is its own class(es).
The logic which the member object needs it already has. The goal was to move the logic out of AR and into something the encapsulates the specific collection behaviour for objects controlled by the gem.
I don't see this as complex but just decomposition. The wins come with utility (I can use the counter collection behaviour independent of AR), clarity and easier changes and features later.

Going to leave some more comments to be more specific about what I mean.

With those two chunks removed from the Collection, there is really nothing left there but boilerplate code to support Enumerable. I don't see why we should add that, then.
To be clear: I'm in favor of moving this out from the ActiveRecord model. I just want it to live in different places.

@adzap I really appreciate your contribution here but I just don't think adding the concept of a Collection here improves the codebase. I'd be happy to accept a pull request that moves this logic into the Reconciler and Counter instead if you're willing to work on that. If not, we might just have to agree to disagree.
Thanks again for working on this!

@magnusvk I don't know if this is related, but my test suite breaks because destroy_all doesn't update the count:
i.e.
expect{ user.comments.destroy_all }.to \
  change{ user.comments_count }.from(N).to(0)

@djsegal I don't think it's related. Do you use transactional fixtures? That will not work as counter_culture updates counts after commit. This is documented in the Readme.
There is really no need for this test in your test suite. You are just duplicating existing counter_culture tests.

Going to close this as it's been a while since there was activity on this PR.


Claimbot - don't show thumbnail/images for NSFW content

Recently a claim showed up in the #content channel which had an NSFW thumbnail. In that case, the claim wasn't marked as NSFW, but this brings up a good point - we should not show thumbnails for claims marked NSFW.

this should be an easy change.

you almost got me there. I checked and I indeed had implemented that already. https://github.com/lbryio/lbry-wunderbot/blob/master/bot/modules/claimbot.js#L252
is that not working?

Didn't know it was implemented, cool! The recent example was not marked
properly.
On Wed, Mar 28, 2018, 6:18 PM Niko<EMAIL_ADDRESS>wrote:

you almost got me there. I checked and I indeed had implemented that
already.
https://github.com/lbryio/lbry-wunderbot/blob/master/bot/modules/claimbot.js#L252
is that not working?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/lbryio/lbry-wunderbot/issues/150#issuecomment-377056555,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHvpkYCwS-uhRfmqgXdjhGcTi_znSdi3ks5tjAw2gaJpZM4S-4i0
.

Closing this issue, as it seems to be resolved.


Concrete playback panics if rustfmt fails (modifies source code anyway)

I tried this code: The rectangle example in tests/cargo-kani/rectangle-example

using the following command line invocation:
cargo kani --harness stretched_rectangle_can_hold_original --enable-unstable --concrete-playback=inplace

with Kani version: 0.10.0 - commit a2ecd4b9de45404bb141e4bf98e6f9740761bf75
I expected to see this happen: Kani modifies the source code and exits gracefully (even if rustfmt failed)

Instead, this happened: Kani modifies the source code but reports an panic when calling rustfmt
INFO: Parsing concrete values from property `rectangle::verification::stretched_rectangle_can_hold_original.assertion.1` with description `assertion failed: larger.can_hold(&original)`.
INFO: Now modifying the source code to include the concrete playback unit test `kani_concrete_playback_stretched_rectangle_can_hold_original_14492733239164819185`.
Unrecognized option: 'unstable-features'
thread 'main' panicked at 'Failed to modify source code: Failed to rustfmt modified source code

Caused by:
    rustfmt exited with status exit status: 1', kani-driver/src/concrete_playback.rs:76:18
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Note for replication: use alias rustfmt='exit 1'


Fixed syntax errors, moved store connection closer to where results a…

…re used in DisplayPlaybook

Ha! I had fixed this one on my local and was going to PR it this morning. You beat me to it!


ClusterProxy.ResetAsync() needs to wait for all of the namespace resources to actually be removed

ClusterProxy.ResetAsync() initiates clearing of the default namespace and removal of other non-system namespaces (not being retained).
This looks to be working OK for the namespaces that are being deleted, but resources like deployments seem to be hanging around for a while in the default namespace (which can't be deleted).
We need a way to wait for the default namespace to actually be cleared.

This is being caused by the Helm secret:

[ ] We need to parse the app name from the secret name and then call helm uninstall to remove the app.

[ ] Config maps and secrets aren't deleted in general.

[ ] We'll also need to remove global cluster resources like RBAC bindings and CRDs etc.

[ ] Should we be using --cascade when deleting namespaced resources

[ ] Use kubectl api-resources to list all of the possible resource types and delete all of those in the default namespace.

Here's what we're going to do:

[ ] Non default namespaces will continue to be deleted as we already do.
[ ] For the default namespace, we'll:

[ ] Identify all known cluster resources
[ ] And then delete all of these in parallel
[ ] We're going to use kubectl on a master to do both of these for now

FIXED


Feature: Lazy Load Images

Description of issue:
This is a feature request to lazy load offscreen images. It can be done using the IntersectionObserver api so that images are only downloaded once they reach some distance from the viewport. This makes first render much faster as the browser only has to download visible images. It's especially useful in image-heavy apps like DRB or CPW.
There are many open source components our there that do this, and I would suggest looking at them to see if they can simply be imported, or at least learned from.
Common features:

Fallback to load everything for IE
Have an image placeholder for while the image is loading, in case the user scrolls too fast. This allows the layout to not jump when images come in.

Component in question (if applicable):

Image

We have some nice "decorative" icons that could be nice fallbacks here, or potentially we could use some of the CSS that @nypl-wluisi wrote for the SkeletonLoader here.

I imagine this is the most useful for book covers, so the book icon would probably be good!  Though it probably makes the most sense to pass in a fallback icon?

Moved to JIRA as DSD-91


Add null safety

It would be great to have null safety for this plugin (see migration guide).

Is this repo still active though?


Bug: keyd doesn't seem to handle backslash well inside overload

In short, if I try binding a = macro(\ ), or a = \, all is well. But if I try the same solution while also overloading the key, for example a = overload(shift, macro(\ )), then it seems to work fine, until you realise that hitting the a key and waiting results in a continuous stream of \, as though I kept the actual \ key depressed.

The behaviour doesn't seem to change when I change modifier, or key (in fact, I started out with the extra key that ISO keyboards have, but that is not the problem here).
I should also note that it's relatively easy to break this assignment, for example a = overload(shift, \ ) doesn't work at all.

I can't replicate this. What version are you running? (keyd -v)

The version is keyd v2.4.3 (5e4ef41).
Just to make sure: this faulty behaviour is triggered when hitting a once, releasing the key, and then waiting about a second without doing anything else.

I believe this has been fixed. Can you check whether or not this is still an issue on the latest commit?

You are perfectly right, I'm sorry. Thank you for your help!


go back to system pip when ubuntu:rolling moves to 23.04

f0400e63c40ba21a4062a36a72bbc4a3baefb792 manually upgrades pip because of https://github.com/h5py/h5py/issues/2240.
This upgrade will not be necessary anymore when ubuntu 23.04 will be released, and we should go back to using pip as provided by ubuntu.
However, this will most likely introduce issues with the new PEP 668
https://github.com/pypa/pip/issues/11776
https://github.com/pypa/pip/pull/11780
which would make the installation scripts here different from the ones in FEM on Colab, since we would need to provide an additional flag --break-system-packages every time there is a pip install.
The quickest way will probably be to delete the EXTERNALLY-MANAGED file to disable the new PEP 668 check.

Done in ece8970


Optimize for WC linear writes

Avoid holes or out of order writes to the command buffers to optimize
write combine bandwidth.

Can one of the admins verify this patch?

ok to test

Test summary for commit 98478d326abbb2f9fba05ebbb2da84879c873959
Driver commits used in build
CWPACK: amd-master 7387247eb9889ddcabbc1053b9c2052e253b088e
METROHASH: amd-master 3c566dd9cda44ca7fd97659e0b53ac953f9037d2
LLPC: dev e23176874d33ad107eacb871980b0bfebe8331da
SPVGEN: dev 79f8e32dd7242d7d34fa0074f761c9d794f11811
XGL: dev 5c3c2dd430222cdf1b46c9d385e9c6c5e89604e1
LLVM-PROJECT: amd-gfx-gpuopen-dev 0cb96bc82ca13e0fef3684a4ac8f6eff50bce257

CTS tests (Failed: 0/228128)Built with version <IP_ADDRESS>
Rhel 8.2, Gfx10
Passed: 31146/57032 (54.6%)
Failed: 0/57032 (0.0%)
Not Supported: 25886/57032 (45.4%)

Ubuntu 18.04, Gfx9
Passed: 31145/57032 (54.6%)
Failed: 0/57032 (0.0%)
Not Supported: 25887/57032 (45.4%)

Ubuntu 20.04, Gfx8
Passed: 31285/57032 (54.9%)
Failed: 0/57032 (0.0%)
Not Supported: 25747/57032 (45.1%)

Ubuntu 20.04, Gfx103
Passed: 34853/57032 (61.1%)
Failed: 0/57032 (0.0%)
Not Supported: 22179/57032 (38.9%)

Also, this is a very nice find in general, thanks! We tend to be very mindful of RMW over pcie but less so about WC efficiency.

Test summary for commit 37012064d32272d111733d46fbf155b45dbe1c54
Driver commits used in build
CWPACK: amd-master 7387247eb9889ddcabbc1053b9c2052e253b088e
METROHASH: amd-master 3c566dd9cda44ca7fd97659e0b53ac953f9037d2
LLPC: dev e23176874d33ad107eacb871980b0bfebe8331da
SPVGEN: dev 79f8e32dd7242d7d34fa0074f761c9d794f11811
XGL: dev 5c3c2dd430222cdf1b46c9d385e9c6c5e89604e1
LLVM-PROJECT: amd-gfx-gpuopen-dev 0cb96bc82ca13e0fef3684a4ac8f6eff50bce257

CTS tests (Failed: 0/228128)Built with version <IP_ADDRESS>
Rhel 8.2, Gfx10
Passed: 31146/57032 (54.6%)
Failed: 0/57032 (0.0%)
Not Supported: 25886/57032 (45.4%)

Ubuntu 18.04, Gfx9
Passed: 31145/57032 (54.6%)
Failed: 0/57032 (0.0%)
Not Supported: 25887/57032 (45.4%)

Ubuntu 20.04, Gfx8
Passed: 31285/57032 (54.9%)
Failed: 0/57032 (0.0%)
Not Supported: 25747/57032 (45.1%)

Ubuntu 20.04, Gfx103
Passed: 34853/57032 (61.1%)
Failed: 0/57032 (0.0%)
Not Supported: 22179/57032 (38.9%)


vectorDistance Snippet

Description

Added code snippet which calculates the distance between two vectors
PR Type

[x] Snippets, Tests & Tags (new snippets, updated snippets, re-tagging of snippets, added/updated tests)
[ ] Scripts & Website & Meta (anything related to files in the scripts folder, how the repository's automated procedures work and the website)
[ ] Glossary & Secondary Features (anything related to the glossary, such as new or updated terms or other secondary features)
[ ] General, Typos, Misc. & Meta (everything else, typos, general stuff and meta files in the repository - e.g. the issue template)

Guidelines

[x] I have read the guidelines in the CONTRIBUTING document.

Thanks for the contribution. Please move your snippet file inside the snippets folder.

snippet has been moved


Nesting limited objects under their parents in settings is unnecessary

It is not unnecessary, because an object may have more than one parent type. The current scheme allows configuring different limits per parent type.


RFC: faster rendering

Thanks for putting this code together! I learned a lot playing around with it :)
On my esp8266, it was a little too slow for my application, so I spent some time trying to make it faster. And there are good results! Keeping the existing bit glyph storage format, I was able to get it drawing 3x to 4x faster (depending on the characters tested with). The biggest optimization is that the new code assumes it's starting with a blank screen (it only calls framebuf.pixel to turn on pixels, and never to turn them off).
I also added a new storage format to font_to_py, that stores lines instead of pixels. The resulting pyfont files are basically the same size, at most maybe 5% bigger. Where this format really improves things is the rendering speed; on my board it is more than 10x faster than the original code.
This PR isn't quite ready for merging, I don't think, but if it's something you think you'd maybe like to include, I can work on cleaning it up. Mostly the readme files aren't up-to-sync with the code, and well, I changed the public API a bit.

It will be a few days before I will get a chance to review this but it sounds interesting., thanks for the PR.

You've clearly put a lot of work into this: I'm impressed and think the changes are well worth incorporating.
A consequence of assuming a clear screen is to preclude inverted text (black on white). Perhaps we can live with that, although someone might want to display text on, say, a filled rectangle. Is it worth devising a way of specifying inverted at runtime, so that the assumption for that string is that the screen is white?
I've not yet reviewed or tested the code in detail but I'd appreciate a little explanation regarding the line mapping (ideally via the docs updated to reflect your changes).
I'd like to see font_test.py updated to test line mapping as a minimum, and preferably your other new features. I don't know if you've looked at this test program but I found it vital in developing font_to_py as it demonstrates rendering on screen and is therefore device independent. I would like to use this to test the final version. I also think it has a role in demonstrating the library.
A couple of minor details re font_to_py.py:
On the Python font file format I suggest renaming from_bytes() to _from_bytes() to indicate that (like _char_bounds()) this function is for internal use, and placing it immediately below the rest of the code.
I assume that the screen output of font_to_py.py is for debugging purposes. In a final version I think it should produce minimal output along the lines of my original version.

Awesome, thanks for taking the time to review it! I've pushed a few more commits that (hopefully) address your comments:

A consequence of assuming a clear screen is to preclude inverted text (black on white).

Good point. I added a color parameter to the interface of writer, so that in such a case a user could set the color to 0 instead of the default of 1. (I only have a monochrome display but theoretically it should work with color/greyscale displays too)

I'd appreciate a little explanation regarding the line mapping

Sure. It seemed to me to fit in the DRIVERS.md doc, so that's where I added it, but please let me know if you think it should live elsewhere (or if anything is unclear / not as clear as it could be)

I'd like to see font_test.py updated to test line mapping.

Ah so that's what that was for! (Heh clearly I wasn't using it.) I added support for line mapping to the test_font and test_file methods. (Here you'll notice the line mapped storage format is far less efficient than the bitmapped format... luckily it's hard to tell on a modern machine :) I also added some CLI options to make the script a little easier to use. Please let me know if you think anything else should be added there!

On the Python font file format I suggest renaming from_bytes() to _from_bytes() to indicate that (like _char_bounds()) this function is for internal use, and placing it immediately below the rest of the code.

Good call, fixed. (I wasn't 100% sure where you wanted it moved to; I put it immediately above the _char_bounds function?)

I assume that the screen output of font_to_py.py is for debugging purposes. In a final version I think it should produce minimal output along the lines of my original version.

Woops yes, I removed the calls to display(), and also separated the line mapping debug output from the original display function.

GitHub seems to have scrambled my algebra in 1. above and offers no means of editing my post. Font sizes should read:
N * 8
N * 8 + p
N * 8 - q.

Hey sorry for the delay, busy weekend over here.

I suggest abandoning with an error message if the user issues incompatible arguments e.g. Lb, Lx

Good call, added some early exits.

I assume line mapping is compatible with bit reversal - have you tested this?

I'm not sure bit reversal makes any sense in the context of the line mapping format? If i'm understanding the original bit mapped code correctly, it stores one bit per pixel, and the reversal argument changes whether the parsing code should start from the most or least significant digit. This is done on a per byte basis, not a per row (horizontal mapping) or col (vertical mapping) basis. So, for that reason, without changing the storage format, the optimized drawing routines I added for bit mapping only support "normally" mapped vertical bitmapping, and reversed horizontal bitmapping. (Because it reads from memoryview entire rows/cols at once instead of going byte-by-byte). In Python those values come back as one giant base10 integer but what the format actually cares about is whether the individual binary digits are high or low (with the pixel position stored as the "index" into the binary number).
By contrast, in the line mapping format, we care about the actual base10 integer values, because they represent starting coordinates and line lengths. The starting coordinates are relative to (0,0) of the character (not the Writer/screen/framebuffer), and the line lengths are relative to the starting coordinates. All the lines are either horizontal and drawn from the starting coordinates to the right length pixels (for the horizontal line mapping) or vertical and drawn from the starting coordinates down length pixels (for the vertical line mapping). Perhaps if there are any big-endian platforms MicroPython runs on then that kind of bit reversal could make sense to support.

I suggest trying the following test cases where possible on a physical display

OK, I think everything appears to check out correctly. If I understood your equations correctly I chose 23, 24, and 25 size fonts. One thing I did notice is that when the writer's initial x position is set to a number greater than 0, new lines start over at 0 instead of the initial set position, however this behaviour matches the original code. Also, you may have noticed I got rid of the concept of margins - the original code was buggy on my hardware and I couldn't figure out what the intent was (admittedly I didn't put much effort into deciphering it).

Another thought on this. Renaming get_ch() to get_char() in the font files has the effect of forcing users to re-create all their font files and to modify their driver code. I think new font files should be a compatible superset of existing ones.

OK reverted that rename
On Fri, Jul 7, 2017 at 3:16 AM, Peter Hinch<EMAIL_ADDRESS>wrote:

Another thought on this. Renaming get_ch() to get_char() in the font
files has the effect of forcing users to re-create all their font files and
to modify their driver code. I think new font files should be a compatible
superset of existing ones.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/peterhinch/micropython-font-to-py/pull/3#issuecomment-313606604,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACdSLCDFgEIvkPE8r_6CZyx5xnY0_25Bks5sLdtagaJpZM4OExdt
.

Thanks for that. Another thought occurred to me. The change you made where a subsequent row is replaced by zero if it's identical to the previous one also results in an incompatible font file. I agree it's a clever change and driver support is easily implemented - I wish I'd thought of it!. But I do think font_to_py.py needs to be able to generate font files which are compatible with existing drivers.
I suggest we have a command line option (-o perhaps) to enable files to be created with the incompatible optimisations. Where this is specified I suggest that the "version = '0.2'" string be changed to "version = '0.3'". This approach brings the undoubted benefits of the changes you've made without affecting existing drivers or their documentation (the same command-line invocation will produce the same files as before). This is readily testable against my existing version using a file comparison utility.
You might like to check for incompatible command line options such as -L without -o (obviously the old format didn't support line mapping) and to adapt the help information to suit. I'd be grateful if you could review the changes you've made to identify any incompatibilities I've missed.
If you have another idea on how to address this issue by all means raise it.

Regarding the zero represents the previous row optimization, I actually couldn't think of how to implement that for the existing bitmap formats[0], so that size optimization is unfortunately only relevant for the new line mapping format. (Or perhaps fortunately, depending on your perspective - font_to_py still generates the same bitmapped font files as before. Rendering speed ups for the bitmapped font format all come from the changes to the Writer class.)
Regardless I think you raise a valid point about the font file version number, definitely that should be bumped for any line mapped font files. For bitmapped font files, the only difference is that there is no longer a guarantee of a sequential charset. Do you think the version number should still also be bumped for bitmapped fonts?
[0] How do you distinguish between the first 8 pixels (the first byte) just having no data to draw, vs having a special meaning? Initially I'd though using -1 would make more sense than 0, but memoryview is unsigned, so that was a dead end.

If I understand you correctly the implications of a non-sequential charset are that:

Fonts created with old command lines and accessed by old drivers will still work because of the index.
A file comparison of an old file and a new one generated from the same font and with the same command line may fail.

If I'm right about 1. the version number should be kept the same.
If I'm right about 2. this should be documented (perhaps in a footnote).
In my view an optimisation which primarily makes a reduction to flash file size is not a high priority: Flash is much more plentiful than RAM. It's entirely up to you if you want to do this. If you do go that route in V0.3 files consider this (apologies if you know this already).
There is no way of defining a byte with a special meaning without disallowing that byte as a character. -1 as a byte is 0xff so you'd have to disallow that. As I understand it a memoryview just provides a window onto a bytearray or bytes object and its sole purpose is to avoid needless copying. It's up to the user code to interpret the byte values as signed or unsigned.
I'm agnostic as to whether the optimisation justifies disallowing a character so long as the char chosen is seldom used, documented, and flagged up by the code if inadvertently specified. I leave that to you.
To add to my comment previously on incompatible command line options, another way to deal with this is to have the -L flag imply -o and state this on the -L help line. This avoids having to test it in code. All assuming we have a -o option: as I say it's up to you whether you want to optimise existing file formats. But please leave the binary format unchanged: I think its application is very limited and there is no merit in changing that.
Actually you've exposed an incompatibility in micropython. Under MicroPython:
MicroPython v1.8.7-893-g46b849a on 2017-06-22; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>> a = bytearray([0, 1, -1])
>>> a[2]
255
>>>

Under CPython 3.4.3:
>>> a = bytearray([0, 1, -1])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)

I'll raise an issue.

Sorry about the delay but I've been busy and also had a short holiday. I'm still struggling with the compatibility issue here. I converted the attached font using the same command line
$ ./font_to_py.py FreeSans.ttf 23 freesans.py

with my original version and with your latest code, then compared the two. The following differences concern me.

The max_width value is different.
The size of the font data is different. Not necessarily a problem but it puzzles me.
We have lost the max_ch() and min_ch() functions.
We seem to have lost the ability to define an error character which is the glyph displayed when an out of range value is presented to get_ch().

Whatever enhancements are available in V0.3 font files, I think it is necessary that V0.2 files are strictly compatible with those produced by my version. Otherwise, for myself and other users, drivers (in my case including two entire GUI's) will have to be re-tested and (potentially) docs amended.
By compatible I mean that invoking font_to_py with any valid set of arguments will produce a font file functionally identical to that produced by the old version when run with the same args. That doesn't mean the Python code must be identical character for character but the modules must have the same functions and the same inputs should produce the same outputs.
The ability to emit extended ASCII characters is great, but I can't see why we've lost the functionality in 3. and 4. above.
The alternative is for you to promote your fork which I will happily reference in my docs. Users then have a choice between compatibility and the very useful enhancements you have produced. Perhaps our solutions have diverged sufficiently that promoting your fork is the best answer. What's your view?
freesans.zip

I have updated README.md to include a recommendation to consider your fork for new projects.
One difficulty with open source projects is that it's impossible to estimate how many users your code actually has; font_to_py.py is crucial to a number of projects most of which are on GitHub. These would need modifying, presenting their users with a problem should they need to upgrade for (say) a bugfix release. Changing multiple font files is a chore, even if you have a record of how you built them initially.
So I concluded that the loss of font file compatibility was too high a price to pay for including your excellent enhancements. I should have thought this through much earlier in our discussion. My only excuse is preoccupation with other work. Please accept my apologies for this.


Update iOS release notes template.

Follow up to https://github.com/Azure/azure-sdk/pull/2984

@tjprescott @vcolin7 by the way I think we might have enough infrastructure in place now that we might be able to start automatically pulling the ios release notes. If you guys are interested in trying that out let me know and we can test it out.

@weshaggard definitely interested 😄

@tjprescott have a look at PR https://github.com/Azure/azure-sdk/pull/2995. That is the data that our automation was able to pull from the changelogs in for the ios repo. If that data looks about right then we need to update the ios.md template here to start pulling in the data from the ios.yml file that we can generate. Feel free to reach out to me and we can work through that together.

@weshaggard you mean #2997?  It looks correct to me!

Yes I did mean #2997. Please work with myself or @chidozieononiwu to get your MD template updated and we can then just start consuming the data from the ios.yml file.

I'm not sure who is working on the android release notes but we should be able to support them now as well.


Update ContractStore.walletConnected in AccountListener when the user disconnects the wallet

Issue https://github.com/OriginProtocol/origin-dollar/issues/823
Disconnecting your wallet in MetaMask resets your balance, but not your pending yield or lifetime earnings
and
I had the opposite experience today: my balance remained but the other two numbers were removed.
occurred because we were waiting until the fetch queries were completed in AccountListener after a wallet is disconnected.
A good way to reproduce some of this behavior is to connect the wallet first. Then, open Chrome DevTools -> Network -> set it to "offline" to force fetch queries to fail. And then, disconnect the wallet and see that "Pending Yield" still has the value set on the header.
A better approach is to update ContractStore and set ContractStore.walletConnected = false when useWeb3React tells us that the account is no longer active as soon as the user disconnects their wallet.

@sparrowDom Can we merge this PR?

yes thanks for nudge @franckc


AttributeError: 'str' object has no attribute 'year'

I do: empyrical.aggregate_returns(spy, convert_to=empyrical.YEARLY) where spy is just a Series of SPY which works with all the other empyrical functions.
I always get the following error:
    192         grouping = [lambda x: x.year, lambda x: x.month]
    193     elif convert_to == YEARLY:
--> 194         grouping = [lambda x: x.year]
    195     else:
    196         raise ValueError(

AttributeError: 'str' object has no attribute 'year'

Tis also happens with WEEKLY and MONTHLY.
Am I missing something or is this a bug?

@kmikael what's the dtype of spy.index?  It looks to me like you're passing data with an index of strings, but we're expecting a DatetimeIndex.

@ssanderson That was exactly it, thanks. I was reading csv files and not parsing the dates.


submit settlement to multiple targets at the same time

This PR implements the task 3 from: https://github.com/gnosis/gp-v2-services/issues/1407
Up until now, we had the option to submit settlements either to public mempool, Flashbots or Eden.
Now, we can submit settlement to multiple targets at the same time.
transaction_strategy is now a vector. If it contains DryRun option or if it contains several options where DryRun is one of them, then transaction_strategy is resolved to DryRun. In other cases it is resolved to other strategies or combination of other strategies.
Note that, since we support different additional_tip for eden and flashbots, submitted transactions to respective networks will have different hash (because additional_tip affects the gas_price of the submitted transaction). This is not an issue, they cant be both mined since they have the same nonce.
Test Plan
Manual test with Flashbots and Eden options passed. The plan is to extensively test and monitor the changes on staging.

Codecov Report

Merging #1509 (44e4055) into main (a7915d1) will decrease coverage by 0.00%.
The diff coverage is 19.04%.

:exclamation: Current head 44e4055 differs from pull request most recent head 7afa465. Consider uploading reports for the commit 7afa465 to get more accurate results

@@            Coverage Diff             @@
##             main    #1509      +/-   ##
==========================================
- Coverage   66.63%   66.63%   -0.01%
==========================================
  Files         163      163
  Lines       31496    31533      +37
==========================================
+ Hits        20988    21012      +24
- Misses      10508    10521      +13


✨[Feature] Negative padding in aten::constant_pad_nd

Is your feature request related to a problem? Please describe.

TODO:
When the padding is negative, we need to crop the image instead of padding it.
Describe the solution you'd like

Describe alternatives you've considered

Additional context

Any updates on this?


Handle transparency

Add backgroundColor to Palette constructors. You can now ignore any transparent color or blend it with yours.
Fixes #42

[x] update README
[x] add tests

@RomainSauvaire I think this is it. Could you test it seeing if it solves your problem as you would expect?

Perfect @MatTheCat  ! It's perfectly working


JDK 1.6 Unsupported major.minor version 52.0 (unable to load class com.github.dozermapper.core.loader.api.BeanMappingBuilder)

I will throw this exception when Running with JDK1.6 environment. How can I work with JDK1.6 downward

It wont. Needs Java 8


Make unit test platform agnostic.

At least windows and linux, not OSX.

This project did not build on linux, this patch fixes this.

Thanks! This is the first pull request, and I assumed that I would get an email notification (which I didn't). Guess I need to read the manual...
I will try merging in the pull request, but I first need to figure out the workflow. (Once again, I'm new to this...)


API Posting Updates

I currently maintain a CLI client for interacting with Solder written in Python. At this point it implements everything that I've found that the API supports which is only reading data. I was wondering if there is some kind of support that I missed for say changing the state of a modpack (from latest to recommended for instance). I looked at the APIController in the master and dev branch and didn't see anything beyond reading data. Did I miss something or does this functionality not exist yet? If this does not exist yet is this something that would be accepted if I implemented it?

Currently solder only accepts inputs and data changes via the user interface and provides read only data via the API. I also would like to see a more powerful API and will work on that, but you sure can make pull requests.

I already posted about what I would like to see, but more input would likely be appreciated: https://github.com/TechnicPack/TechnicSolder/issues/414

The API will be getting completely overhauled from the ground up. We will put up a post with the proposed changes to the API soon but the plan is to make build out a fully RESTful api instead of how it is now. This means you will be able to do EVERYTHING you can normally do in solder through the API alone.

Whoop whoop

:D
On Wed, Oct 7, 2015, 01:20 zlepper<EMAIL_ADDRESS>wrote:

Whoop whoop
—
Reply to this email directly or view it on GitHub
https://github.com/TechnicPack/TechnicSolder/issues/472#issuecomment-146089145
.

Though for now just a way around the login screen would be nice, everything else I have managed to figure out.

There won't be any changes to the API on our end until the redesign but feel free to contribute changes to the current one.


Exports in ambient module don't get included in certain case

Search terms

ambient, module, export, exports, import, imports, not, included
Expected Behavior

Shared types imported from other ambient module should be included in both ambient modules.
Actual Behavior

Shared types imported from other ambient module only get included in 1st ambient module.
(Types that are missing from alt-server are marked with red dot on the right)
(Note that also functions are missing, but they're not visible here)

Steps to reproduce the bug
Clone this repo with specified branch and generate documentation by executing ./docs/build.ps1 script (only Windows is supported for now):
https://github.com/altmp/altv-types/tree/shared-package
You should be able to check documentation on localhost:8080 or simply check ./docs/api/.manifest, which contains renamed typedoc JSON output. (In case of problems, simply run npm i and npx typedoc inside ./docs/ directory)

Environment

Typedoc version: 0.20.35
TypeScript version: 4.2.4
Node.js version: 14.15.1
OS: Windows 10 Pro v1809 x64

There are a couple issues here:

Paths in TypeDoc's config file aren't relative to the config file (#1442), so your config file doesn't work, unless you somehow have a npm repo inside the docs folder... which seems unlikely. (npx always executes from the project root)
generateJson doesn't properly create folders for the file to be written (not what you were reporting, but something I noticed while testing)

I changed your config file as shown:
diff --git a/docs/typedoc.json b/docs/typedoc.json
index a2f3c5e..a244462 100644
--- a/docs/typedoc.json
+++ b/docs/typedoc.json
@@ -1,8 +1,8 @@
 {
   "entryPoints": [
-    "../client",
-    "../server"
+    "client",
+    "server"
   ],
   "excludeExternals": true,
-  "json": "api/.manifest"
+  "json": "docs/api/.manifest"
 }

And then ran npx typedoc --options docs/typedoc.json --out html_docs.
This produced the expected output. In alt-client, Vector2 was documented as a class. In alt-server, TypeDoc saw that it has already documented the class, and instead of duplicating the work, produced an alias pointing to the class in the alt-client documentation.
If aliases aren't showing up in your DocFX docs, then there's a problem with that tool... the HTML rendered from TypeDoc looks as I expect.

I've missed at some point that paths aren't relative to the config file;
Good catch with JSON output path, for me path is already created at the time TypeDoc is running, so didn't have a chance :smile:
Although alias thing seems to be proper when there'd be additional ambient module exporting these types and then other ambient modules re-exporting them, which sadly is not the case here. While making alias to first ambient module is smart from technical point, it's not valid from my logical point of view. 1st & 2nd ambient module have no connection to each other, so they should've exported these types separately anyway.

With #1567, I believe you should be able to achieve what you want by including each module as packages rather than entry points.
Using aliases makes sense for most projects.. I'm not fundamentally opposed to introducing a --disableAliases option which turns that off though.

With #1567, I believe you should be able to achieve what you want by including each module as packages rather than entry points.
Using aliases makes sense for most projects.. I'm not fundamentally opposed to introducing a --disableAliases option which turns that off though.

Yes, I'm already implementing switch for it


Support for forwarding to telegram

I can see that you are still pushing new commits, is it ready to review?

@fguilot Sorry, I'm improving it as I go along and I think it's time to review it!


405 method not allowed

Expected Behaviour
After running npm run deploy  command project should deploy successfully
Actual Behaviour
After running npm run deploy  command i am getting below error
Serverless Error ---------------------------------------
Failed to deploy package (graphql-reference) due to error: PUT https://adobeioruntime.net/
/api/v1/namespaces/51906-cifintegration/packages/graphql-reference?overwrite=true Returned HTTP 405 (Method Not Allowed) --> "Response Missing Error Message."
Reproduce Scenario (including but not limited to)
Steps to Reproduce
run npm run deploy
2020-08-10T07_23_09_198Z-debug.log
2020-08-10T07_28_24_911Z-debug.log
Platform and Version
Sample Code that illustrates the problem
Logs taken while reproducing problem

This is likely a problem in your .wskprops where you don't have the right authentication key for your namespace, or in the APIHOST parameter: the PUT URL looks strange with that %0D(carriage return) after the hostname.

Belo is my wsk file properties
AUTH=cc374e95-126e-4d07-9093-815ef50a4c01:4yrnfWRM4Da2bEkWuh60WP3DvMDqOkQ0E3xxQ8i5tNdOc872Df3Mtpb7r73HiMOI
APIHOST=adobeioruntime.net
NAMESPACE=51906-cifintegration
i am able to deploy other actions with same credentials

Do NOT share your credentials here !!! This is a public repository and website !!! DELETE your comment !
I just tested and deployed the actions into your workspace, everything works fine. It might be an issue because you use Windows, or maybe something else, you'll have to search.

Hi cjelger,Thanks for modifying the comment .
Yes I am using windows,Can you help me to fix it?

I'm sorry I don't have a Windows machine, I cannot help. Again, check why you have that %0D part in the URL, this is a URL-encoded "carriage return (CR)" character which is probably an issue related to Windows. It might actually come from the .wskprops file at the end of the APIHOST line, there might some invisible carriage return character at the end of that line. Or it's maybe a bug in the serverless tool.

I faced this same issue. Its due to Carriage return character in .wskprops file as mentioned by @cjelger . I removed the CR using notepad++ and it started working fine.

@cjelger
when i am testing the URL "https://adobeioruntime.net/api/v1/web/51906-cifintegration/graphql-reference/dispatcher"  and "https://adobeioruntime.net/api/v1/web/51906-cifintegration/graphql-reference/cif-schema" i am getting below response.Any headers required?
{
"errors": [
{
"locations": [
{
"column": 1,
"line": 1
}
],
"message": "Syntax Error: Unexpected "
}
]
}

Closing, as this is not an issue related to our code.


expose Context

In some case, i may want to wrap a class component by Context.Consumer.

@jamiebuilds Could you take a look at this ? Exposing Context and/or Consumer would be useful.

If this were exposed I could use unstated-next with a context bridge


Merging of identities means IsInRole no longer works for Integrated Authentication

From @blowdart on Tuesday, January 19, 2016 6:26:41 PM
Authorization doesn't work for Windows identities as the Windows Principal created in IISintegration and WebListener is thrown away when identities are merged in SecurityHelper.cs
IsInRole is implemented on the Principal, so the mapping of SID to friendly group name won't work on a ClaimsPrincipal.
Copied from original issue: aspnet/Common#85

From @Tratcher on Wednesday, January 20, 2016 4:04:20 PM
One workaround:
var user = await httpContext.Authentication.AuthenticateAsync("NTLM"); returns the WindowsPrincipal without merging.

From @Eilon on Tuesday, January 26, 2016 5:49:26 PM
@Tratcher any chance you could take this bug?

From @Tratcher on Wednesday, January 27, 2016 9:35:54 AM
I already took care of the common/worst case with https://github.com/aspnet/IISIntegration/pull/72 so this isn't urgent. There's still some ongoing discussion on how this could ever be foolproof though.

From @Eilon on Thursday, January 28, 2016 11:52:00 AM
@Tratcher @blowdart ok who is responsible for concluding the discussion?

From @blowdart on Thursday, January 28, 2016 11:53:50 AM
We should start the discussion in the security triage meetings.

From @Eilon on Thursday, January 28, 2016 12:04:09 PM
Ok let's discuss this afternoon.

From @brentschmaltz on Thursday, January 28, 2016 8:01:30 PM
@Tratcher I would not recommending using NTLM it has know security weaknesses.
Do we have to throw away the WindowsPrincipal?

From @Tratcher on Thursday, January 28, 2016 9:33:33 PM
@brentschmaltz how else can we merge two ClaimsPrincipals created at different times? Preferably without the merger code having to special case WindowsPrincipal/Identity.

From @brentschmaltz on Friday, January 29, 2016 10:49:50 AM
@Tratcher are you saying the scenario that has a WindowsPrincipal also has other ClaimsPrincipals?

From @Tratcher on Friday, January 29, 2016 11:04:58 AM
Yes, there can be more than one principal created by different auth components.

From @brentschmaltz on Friday, January 29, 2016 4:09:24 PM
@Tratcher Is this just a desktop requirement OR do you need to support corefx?

From @Tratcher on Friday, January 29, 2016 4:34:17 PM
Both.

From @brentschmaltz on Friday, January 29, 2016 5:13:54 PM
@Tratcher It looks like WindowsPrincipal and WindowsIdentity are both in corefx.
https://github.com/dotnet/corefx/blob/master/src/System.Security.Principal.Windows/src/System/Security/Principal/WindowsPrincipal.cs
So you should be able to make this work. I am not clear on when the [Authorize(IsInRole("Admin"))] gets executed. But when that happens, and if you know that the identity is a WindowsIdentity, you can create a new WindowsPrincipal with that WindowsIdentity and ask WP.IsInRole. In the security helper do you just attach the WindowsIdentity to a new ClaimsPrincipal OR do you create a new ClaimIdentity from the WindowsIdentity?
The reason for NOT 'translating' the sids to friendly names is because the SID is authoritative in a domain. FriendlyName will have a different SID in a different domain. Also translation requires a possible network call to AD.

From @Tratcher on Friday, January 29, 2016 9:54:08 PM
Reference code: https://github.com/aspnet/Common/blob/dev/src/Microsoft.Extensions.SecurityHelper.Sources/SecurityHelper.cs#L21
Ideally ClaimsPrincipal or WindowsIdentity could be made to handle IsInRole natively. We don't want to litter our code with special cases for WindowsPrincipal/Identity.

From @brentschmaltz on Monday, February 1, 2016 9:46:12 AM
@Tratcher ClaimsPrincipal.IsInRole is defined to query for specific claims in its collection of identities. The specialized type, WindowsPrincipal, knows how to correctly form the IsInRole question for a WindowsIdentity. Why is it necessary to drop the WindowsPrincipal?
I think it would be incorrect for ClaimsPrincipal to know or look for a specialized ClaimsIdentity and provide special processing. The model is: if specialization is required for IsInRole, then a specialized ClaimsPrincipal is required.
While it would be possible to make changes for the future, given that 4.5x support is required making changes in those runtimes would require quite an effort.

From @Eilon on Monday, March 28, 2016 9:38:09 AM
Moving this bug to Backlog because there's no current work item for ASP.NET.
@brentschmaltz do you know if there is a work item to track the proposed change to Windows Identity/Principal?

From @Coruscate5 on Monday, June 27, 2016 10:39:04 AM
I don't know the full context here/what .NET is doing behind the scenes to translate claim SIDs, but thanks @Tratcher for the workaround - IsInRole worked fine for me in RC1 via the NTLM call. I couldn't find any other obvious access point to Directory services

@Tratcher, was there a separate discussion regarding this? Is there any active plan? Or should we just close this?
/cc @blowdart


Client timeout

"Post http://localhost:8002/classify: net/http: request canceled (Client.Timeout exceeded while awaiting headers)" sometimes occur when http://<IP_ADDRESS>:8005/api/v1/by_location/magnetometer_and_wifi04

Could you share your database?

Yes for example this one
https://drive.google.com/file/d/18J75ydKUhA8hXd_zaH84w_GMLUdJlIAX/view?usp=sharing

Thanks @misisnik. The problem was that Linear SVM scales very very badly for your data, probably something to do with the decomposition of your data since you have one axis that is positive, magnetometer, while the rest are negative. I just added a timeout (6fba702feec9e35aab7da9d21fe6ceb4fe232682) which will skip bad machine learning algorithms that take too long (>10 seconds).
As for accuracy, having one less machine learning algorithm won't make a huge difference. The classification scheme uses meta-learning, so it uses all the algorithms - and while the more the better, having one less won't hurt too much. Anyways, I see that your accuracy is pretty high when leaving that one out.


mesheryctl features

Signed-off-by: kumarabd<EMAIL_ADDRESS>Description
Feature commands added:

mesheryctl perf apply for file
mesheryctl mesh deploy, remove

Fixes:

Endpoint discovery of meshery fixed

Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

Codecov Report

Merging #3514 (c9b6d7b) into master (f6697a2) will decrease coverage by 7.03%.
The diff coverage is 0.00%.

:exclamation: Current head c9b6d7b differs from pull request most recent head d7812a3. Consider uploading reports for the commit d7812a3 to get more accurate results

@@            Coverage Diff             @@
##           master    #3514      +/-   ##
==========================================
- Coverage   17.38%   10.35%   -7.04%
==========================================
  Files          37       37
  Lines        3209     3246      +37
==========================================
- Hits          558      336     -222
- Misses       2509     2843     +334
+ Partials      142       67      -75

Flag
Coverage Δ

gointegrationtests
?

integrationtests
∅ <ø> (?)

unittests
10.35% <0.00%> (-0.12%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

mesheryctl/internal/cli/root/system/start.go
1.19% <0.00%> (-51.36%)
:arrow_down:

mesheryctl/pkg/utils/helpers.go
0.00% <0.00%> (ø)

mesheryctl/internal/cli/root/system/stop.go
0.93% <0.00%> (-39.26%)
:arrow_down:

mesheryctl/internal/cli/root/system/check.go
1.49% <0.00%> (-22.10%)
:arrow_down:

Continue to review full report at Codecov.

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


[Question] is it possible to create a package containing a dotnet tool and a package reference?

Hi,
today I have a package that is a console app that people used to download and execute. We converted that to a dotnet tool, but we broke some customers.
Question: is it possible to create a package containing a dotnet tool and a package reference?
Thank you.

Hello, thank you for creating this issue. This issue tracker is meant to track feature requests and bugs for nuget.org. I'd suggest using Stack Overflow or the .NET docs to get additional help.
To answer your question, while .NET tools use the same ".nupkg" format, they are actually significantly different under the hood. As a result, we don't recommend using a .NET Tool as a dependency. Instead, we recommend making two packages: one for the regular NuGet package, and a second package for its corresponding .NET tool.
We'll close this issue off, but feel free to comment or create a new issue if needed!


[SuperEditor] Lot of null safety errors occurs when running the latest commit of main with Flutter 3.3.9

I'm currently running the package based on the commit referenced by "c65a724" which is old but stable for the moment with my current flutter version. The issue is when I update the package to the latest commit of main I get a lot of errors within the package code itself.

Here are some examples from the stacktrace:
Error: Method 'insert' cannot be called on 'OverlayState?' because it is potentially null.

'OverlayState' is from 'package:flutter/src/widgets/overlay.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/overlay.dart').
Try calling using ?. instead.
Overlay.of(context).insert(_controlsOverlayEntry!);

Error: Property 'context' cannot be accessed on 'ScrollableState?' because it is potentially null.

'ScrollableState' is from 'package:flutter/src/widgets/scrollable.dart' ('/C:/flutter/packages/flutter/lib/src/widgets/scrollable.dart').
Try accessing using ?. instead.
..viewport.value = Scrollable.of(context).context


CLIP Training documentation

This pull request documents the steps for training CLIP on Bliss dataset composed of Bliss symbols and Bliss annotations

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


Add the possibility to programmatically build a TSID problem from config file

As per the title, moreover, the PR adds also the R3Task for TSID

cc @LoreMoretti

I also add @LoreMoretti in the review since he will use it


Implement mkdir

I am aware that exists PR #91, however it should really be setting the mode as part of dir creation, not trying to do it afterwards, and I believe the layout was not ideal, and also not too consistent with other tools in this repo.

Tests?

Tests?

Good point.


Improve slack messages

Hello there,
I've installed kubewatch on my cluster and enabled slack integration on it, here is sample messages that I receive:
kubewatch
A  in namespace  has been :

kubewatch
A pod in namespace gitlab has been created: runner-e34aa186-project-62-concurrent-0vchfv
kubewat
A pod in namespace gitlab has been created: runner-e34aa186-project-62-concurrent-0vchfv
kubewatch
A pod in namespace gitlab has been created: runner-e34aa186-project-62-concurrent-0vchfv

There is an incomplete message about namespace and three duplicate messages which I guess they seem duplicate because they don't have enough information.
The other issue is in slack notification I see "message undefined" and "(message missing text)" and leave me no option other and checking channel to see notification content.

hi @k1-hedayati , thanks for the report. Which kubewatch version are you trying ?

I'm using v0.0.3

@k1-hedayati Thanks. The kubewatch controller has been improved a lot to adapt new client-go from the last release v0.0.3 so I suggest you try to build kubewatch from the latest code. v0.0.3 is probably flaky a bit. We should definitely release a new version for that reason. I will ping you in next few days once I can trigger the new release. Please stay tuned :-)

Thank you @ngtuna, so I'm waiting for a new release

@ngtuna I'm noticing the same things that @k1-hedayati is mentioning even in the new builds. This was also briefly brought up as part of #77. To test this out, I've built kubewatch locally with make build
Once the build completes successfully, I then configure kubewatch to watch something simple (namespaces) : ./kubewatch config resource --ns and then config slack to publish to my channel: ./kubewatch config slack -c my-channel -t my-token-123
Once that's configured, I then kick off kubewatch: `, which generates the startup output in the terminal that we would expect for all of the existing namespaces in the cluster:
INFO[0000] Starting kubewatch controller                 pkg=kubewatch-namespace
INFO[0000] Processing add to namespace: kube-public      pkg=kubewatch-namespace
INFO[0000] Processing add to namespace: default          pkg=kubewatch-namespace
INFO[0000] Processing add to namespace: kube-system      pkg=kubewatch-namespace
INFO[0000] Kubewatch controller synced and ready         pkg=kubewatch-namespace
2018/02/11 22:32:18 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000112
2018/02/11 22:32:18 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000147
2018/02/11 22:32:19 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000002

There we see what we would expect. Three existing namespaces, three notifications sent to slack saying that a namespace was created (because they already exist. We then see the following in slack:
kubewatch
A namespace in namespace  has been created: kube-public
kubewatch
A namespace in namespace  has been created: default
kubewatch
A namespace in namespace  has been created: kube-system

So up to this point, everything is working as expected. But lets try creating a new namespace:
kubectl create namespace kw-testing
This works as expected, with the following output from kubectl:
kubectl create namespace kw-testing
namespace "kw-testing" created

Output from kubewatch terminal:
INFO[0449] Processing add to namespace: kw-testing       pkg=kubewatch-namespace
2018/02/11 22:39:47 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000108

Output from slack:
kubewatch
A namespace in namespace  has been created: kw-testing

Alright, so up to this point, everything is still working as expected. No strange messages from slack saying that anything is missing. Everything appearing appropriately in the terminal. Messages saying what we expect them to in slack. So creation of objects seem to be good to go with the current master branch. So let's check out another action, updating an object.
Since we're dealing with namespaces, not too much to update. So we'll just apply a label to the namespace. We can do that with the following: kubectl label namespace kw-testing testing=true
This work as expected. Output from kubectl:
kubectl label namespace kw-testing testing=true
namespace "kw-testing" labeled

Output from kubewatch terminal:
INFO[3923] Processing update to namespace: kw-testing    pkg=kubewatch-namespace
2018/02/12 00:26:39 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000151

So far so good.
Output from slack channel:
kubewatch
A namespace in namespace  has been created: kw-testing

Alright. Well that's unexpected. So at the terminal logging level, we're good. But that's because that logging is being done inside of the informer.AddEventHandler functions (https://github.com/bitnami-labs/kubewatch/commit/f0150e67cfc6a9db2756a66a0ab591092e82d677#222). I think the problem comes from how the eventhandler is being thrown inside of the processItem function (https://github.com/bitnami-labs/kubewatch/commit/f0150e67cfc6a9db2756a66a0ab591092e82d677#316). It looks like it either says -- this things exists, we'll throw c.eventHandler.ObjectCreated or something doesn't exist c.eventHandler.ObjectDeleted. There's never anything that attempts to figure out if something already existed and is just being updated to throw c.eventHandler.ObjectUpdated.
So I believe that's what's causing the issue with the slack event handler. I could definitely be wrong, but would be interested in some others input on this.
Now the last action that we need to check out is the delete. This offers up some interesting output as a few folks have mentioned up to this point.
To kick this off, we'll delete our namespace with kubectl:
kubectl delete namespace kw-testing
namespace "kw-testing" deleted

We then take a look at the logging of the kubewatch terminal:
INFO[8020] Processing update to namespace: kw-testing    pkg=kubewatch-namespace
INFO[8020] Processing delete to namespace: kw-testing    pkg=kubewatch-namespace
2018/02/12 01:34:55 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000173
2018/02/12 01:34:56 Message successfully sent to channel C8RJ85KHP at<PHONE_NUMBER>.000001

That seems to be mostly what we would expect. kubewatch picks translates a delete as an update first, and then a delete is triggered. That seems to make sense, but might be something worth investigating and cleaning up later. No harm at this point though.
Things look more interesting in slack though:
kubewatch
A namespace in namespace  has been created: kw-testing
kubewatch
A namespace in namespace  has been created: kw-testing
kubewatch
A  in namespace  has been :

So this isn't what we would expect to see at all. So we see two messages saying something has been created. This seems to line up with what we saw above with the update action. It thinks anything that isn't a delete is a create. Since we saw an update occur on the kubewatch terminal output, we can expect to see that same type of output in slack. However while we saw one update action in the terminal, we see what would look to be two happening in slack. We also saw one delete happen in the terminal. That kind of matches up and we see one message that isn't a created happen in slack. However the message is essentially useless because we don't actually have any information on the action that's occurring or the object that it's occurring to. It's basically just a blank message and the only real reason we can kind of line this up is because we see what's happening in the terminal. So at best, this is our assumption as to what's happening. At worst, we don't really know because nothing is really being returned appropriately.
So given that, I think there's some work to be done.

[ ] develop a better way to trigger event handlers
[ ] better message handling abilities (handle missing values)

For item one, my initial thought is to create and return a variable that contains the expected action (created,deleted,updated) based upon the informer.addEventHandler action that gets thrown (i.e. if AddFunc is triggered, then the variable returned would have the value created). We could then take that variable that is returned and give the Controller struct that is returned a property to hold that (actionType ?). I'm sure there are some better (perhaps cleaner) ways to do this, so I'm definitely open to hearing some other opinions.
For item two, we should just check all values that are being used as part of the message being returned for null or empty values. We should then just set those properties that meet that null/empty check to something like N/A or empty.
It should also be noted that I didn't see part of the issue that @k1-hedayati saw where slack would say that a message has a missing property. Maybe this is resolved with the new updates that have been made? @k1-hedayati if you see this after the new release update us here and we can take a further look. It may just be that this doesn't occur when watching the namespace object.
Sorry for the long winded post. Just thought it would be useful to get this all down in one issue. If any other information would be useful, please let me know.

@tylerauerbeck , It was a detailed explanation 👍 , I would like to add my thoughts here.

create and return a variable that contains the expected action (created,deleted,updated) based upon the informer.addEventHandler action that gets thrown (i.e. if AddFunc is triggered, then the variable returned would have the value created).

This is certainly needed following reasons.

The key which is enqueued doesnot contain any information about its origin. i,e. its EventHandler function. This blocks us from classifying the events during consumption.
https://github.com/bitnami-labs/kubewatch/blob/4d389a8f422dc950c7c9e7d37487ebb4b4d78ac4/pkg/controller/controller.go#L266-L271
The consumer processNextItem() checks only the existence of a key in the informer store and creates alerts. so ObjectUpdated() in the queue are received as ObjectCreated().
https://github.com/bitnami-labs/kubewatch/blob/4d389a8f422dc950c7c9e7d37487ebb4b4d78ac4/pkg/controller/controller.go#L364-L370
During deletion, DeletionTimestamp and STATUS of the k8s object is updated. Informer initiates a valid UpdateFunc() event but it results in ObjectCreated() false alert, due to the issue discussed in the previous step.
Upon Successful deletion of the object in the cluster, informer initiates a DeleteFunc and  DeletionHandlingMetaNamespaceKeyFunc used, returns only the name of the deleted object and not the metadata.
https://github.com/bitnami-labs/kubewatch/blob/4d389a8f422dc950c7c9e7d37487ebb4b4d78ac4/pkg/controller/controller.go#L280-L281
This result in a nil Event, with all data as nil string "" and an false alert. A  in namespace  has been :

so there is a need for returning key, eventType, resourceType from informer.addEventHandler actions. using the following data type in the queue, could solve the problem.
// Event indicate the informerEvent
type  Event  struct {
	key 		string
	eventType 	string
	resourceType 	string
}
...
func  newResourceController(client kubernetes.Interface, eventHandler handlers.Handler, informer cache.SharedIndexInformer, resourceType string) *Controller {
	queue  := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
	var  newEvent Event
	var  err  error
	informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
		AddFunc: func(obj interface{}) {
		    newEvent.key, err  = cache.MetaNamespaceKeyFunc(obj)
		    newEvent.eventType  =  "create"
		    newEvent.resourceType  = resourceType
		    logrus.WithField("pkg", "kubewatch-"+resourceType).Infof("Processing add to %v: %s", resourceType, newEvent.key)
		   if err ==  nil {
		      queue.Add(newEvent)
		  }
                },
...
func (c *Controller) processItem(newEvent Event) error {
        ...
	switch newEvent.eventType {
	case  "create":
		if objectMeta.CreationTimestamp.Sub(serverStartTime).Seconds() >  0 {
			c.eventHandler.ObjectCreated(obj)
			return  nil
	         }
        ...
	case  "delete":
		// Create a variable of event.Event type
                 kbEvent  := event.Event{
			Kind: newEvent.resourceType,
			Name: newEvent.key,
		}
                 // handle event.Event type in the handler
		c.eventHandler.ObjectDeleted(kbEvent)
		return  nil
	}
return  nil
}

@aananthraj So I've got most of this working. I'm just having an issue capturing the kbEvent inside of event.go. I tried adding the following:
} else if Event, ok := obj.(*Event); ok {
	...
}

I've tried a few different iterations of this, but can't seem to capture the right type. Any thoughts?

@k1-hedayati We just merged a change from @aananthraj that should address the issues that you're seeing here. Go ahead and pull the master branch and let us know if you are still seeing issues.

@tylerauerbeck @aananthraj Thank you guys, is it possible to test the changes without going through building kubewatch?

I won't say it's not possible, but I don't believe it would be easy or straight forward.

@k1-hedayati I'm going to go ahead and close this issue since it looks like the latest commits have cleaned this up. If you continue to see issues, feel free to reopen this.


What about ent2d-bordeaux ENT ?

Hi,
I'm writing this issue because I would like to use your library but I can't because I'm not able to import the academy of bordeaux's ent.
When I write "from pronotepy.ent import ent2d_bordeaux" it doesn't work.
How I can do that ?
Thanks.

Hi @KeyKatyu It's not enough to import the function for your ent but also need to use it. Try this script by replacing with your login credentials.
import pronotepy
from pronotepy.ent import ent2d_bordeaux

client = pronotepy.Client('https://0000000a.index-education.net/pronote/eleve.html',
                          username='demonstration',
                          password='pronotevs',
                          ent=ent2d_bordeaux)
# check if sucessfully logged in
if client.logged_in:
    print(len(client.messages())) # printing number of messages that the user has
else:
    print('no login')

Yes I know, but this import doesn't exist.
When I use it like your script, I got this error :

Traceback (most recent call last):
File "c:/Users/xxxxxx/Desktop/test/program.py", line 3, in
from pronotepy.ent import ent2d_bordeaux
ImportError: cannot import name 'ent2d_bordeaux' from 'pronotepy.ent' (C:\Users\xxxxxx\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\pronotepy\ent_init_.py)

@KeyKatyu You probably didn't t install the library. Please execute pip install https://github.com/bain3/pronotepy/archive/refs/heads/master.zip

I have already installed the library correctly. It works with the others ENTs. I just think that ent2d_bordeaux has been forgotten in PronotePy.

No I tell you that he has not been forgotten. The proof in the attached photo

@KeyKatyu I think you haven't the last version of pronotepy. So please execute pip install https://github.com/bain3/pronotepy/archive/refs/heads/master.zip

I'm French, I saw you're French too, we can speak french if you want.
Thank you for taking the time to help me.
I just uninstalled the PronotePy and reinstalled it with your command (PIP). Do you confirm that it is version 2.4.0?
I checked afterwards, Python keeps telling me that this import does not exist in the terminal (look at the screenshot below). Does ent2d_bordeaux work for you? This is all very strange...

It works for me. @KeyKatyu So please execute
pip uninstall pronotepy
pip install https://github.com/bain3/pronotepy/archive/refs/heads/master.zip

I just ran these commands, no changes.
ent2d_bordeaux is still missing from pronotepy.ent.

EDIT : I tried on a VM and it works, idk why. :)
But know, I get this error :
pronotepy.exceptions.ENTLoginError: Fail to connect with EduConnect : probably wrong login information
(I'm sure I put the correct login information)

@KeyKatyu For this error excuse me, it was my fault. I fix the problem. To install the last version execute pip install git+https://github.com/Bapt5/pronotepy.git

It works, thanks you !


Flowtype with tests?

Is there a way that I can get flow working within the test harness? it says the it function cannot be resolved when I turn it on.

Did you solve your issue? We would appreciate if you posted your solution for future people who search for this issue.
Thanks!

@Timer I realized it was fine, and I was just tired. Sorry 😅


switch to bulk op for variant scan; use query filters for exclusions

bulk op conversion for #160

@tekhaus thank you thank youuuu


[Concurrency] TaskLocal.withValue closure should be @Sendable; no warnings inside Actor

Without the @Sendable, using a task-local's withValue results with unexpected warnings which scared developers into thinking they might be misusing the API.
This PR adds the missing annotation; I believe this is ABI compatible, but would like to make sure.
Resolves https://github.com/apple/swift/issues/62220

resolves rdar://102638772

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

I think the right fix here is that this ought to inherit the caller's executor.

I believe this is ABI compatible, but would like to make sure.

Seems it is not ABI compatible to add @Sendable to a parameter. For example:
> swift demangle s4what8whatever2fnS3iXE_tYaF
$s4what8whatever2fnS3iXE_tYaF ---> what.whatever(fn: (Swift.Int) -> Swift.Int) async -> Swift.Int
> swift demangle s4what8whatever2fnS3iYbXE_tYaF
$s4what8whatever2fnS3iYbXE_tYaF ---> what.whatever(fn: @Sendable (Swift.Int) -> Swift.Int) async -> Swift.Int

Ah the unsafe executor inheritance... I'll give that a shot.
Thanks for chiming in @rjmccall, @kavon!

@swift-ci please smoke test

@swift-ci please smoke test

I think it's correct in the abstract to make this inherit the executor.  However, marking the function as inheriting the executor makes a semantic guarantee that the function won't switch, and unfortunately the existing implementations of this function (ever since 5.6 / SE-0338) do switch (to the generic executor) (unless that switch has been optimized out in the release builds).  I think it's okay for existing compilations to call a function that doesn't switch (the function doesn't rely on being on the generic executor, and you can think of turning off the switches as manually optimizing them away, which is permitted).  However, it's not okay for new compilations that will rely on the absence of switching to potentially call a function that does switch.  So we need to have a way to back-deploy this fix for it to be correct.
It looks like everything these functions call is back-deployable — they're either already @usableFromInline or they're runtime functions already exported to which we can safely add the attribute.  So we need new compilations to call the new version of the function, but also emit a stable version of the function for existing users.  @DougGregor points out that @backDeployed is exactly what we want for this — it's a lie only in that the function does already exist, but since we don't want to actually use the existing function, it's a pretty consequence-free lie.  We can make the function @inlinable as well for performance.

Thank you for the analysis and guidance, John!
We'll need to wait for _backDeploy to be able to be combined with inlinable, but that's coming soon. I'll update the PR and wait for it :)

Depends on https://github.com/apple/swift/pull/62309

Adopting @_backDeploy here should be unblocked by a combination of https://github.com/apple/swift/pull/62444 and https://github.com/apple/swift/pull/62427.

Great, thank you!

Ok those got merged, so I'll try to revive this 👍

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test and merge


pwdsafety: init at 0.1.4

Motivation for this change
Command line tool checking password safety
https://github.com/edoardottt/pwdsafety
Related to #81418
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 110019 run on x86_64-linux 1

1 package built:

pwdsafety

Result of nixpkgs-review pr 110019 run on x86_64-linux 1

1 package built:

pwdsafety

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 110019 run on x86_64-darwin 1

1 package built:

pwdsafety

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 110019 run on x86_64-darwin 1

1 package built:

pwdsafety

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 110019 run on x86_64-linux 1

1 package built:

pwdsafety

This is a semi-automatic executed nixpkgs-review which is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 110019 run on x86_64-linux 1

1 package built:

pwdsafety


Revert "Add visual density for menu default style"

Reverts #114878
The reverted PR causes a Scuba failure on b/271378386. Will try a re-land later!

LGTM
For future archeologists: Can you add the reason for the revert to the PR description please.

Just updated! Thanks:)


sap_general_preconfigure: make firewall-handling more flexible

As we now have the possibility to enable the firewall in sap_hana_install, I would like to add the following variable:
sap_hana_general_preconfigure_enable_firewall (or firewalld)
default value: false
When variable is true, than

ensure that firewall is installed
ensure that firewall is enabled and started

If false we can think of:

removing firewalld in addition to stopping and disabling
Regading iptables I suggest documenting the following:

The following sentence should be added to the documentation:
This role is handling firewalld only because it is default since RHEL8 and not supported by SAP on RHEL 7. If you want to use iptables please disable firewalld and take care of IP tables handling in part of your playbook

I know this is against the documentation in SAP Notes, but it is allowed in other


README minor changes

Ciao @Galitskiy I have found few possible optimizations to the text.
Compliments and thank you for the support to the project.

Thanks for optimizations of the text and great PJON project :)


Slot testing fails for functional component.

Version
1.0.0-beta.21
Reproduction link
https://github.com/sickp/vue-test-slots
Steps to reproduce
yarn install
yarn test:unit
What is expected?

named slot "header" to receive 'Hello There'
default slot to receive 'Content Goes Here'

What is actually happening?
default slot receives 'Hello There'

This worked in 1.0.0-beta.20

It does not seem related to functional components to me, it also fails when the component is not functional.
It think it comes from createSlotVNodes https://github.com/vuejs/vue-test-utils/blob/dev/packages/create-instance/create-slot-vnodes.js#L41 which receive good values, but returns an array with duplicated VNodes