Testing: Remove Urho

urho is not nice :)
Removes urho
Removes vehicle config code
Adds rapidjson stand alone instead of urhos one
Removes urho from ci
Fixes some cmake to be library friendly

If this is merged, will the project be functional/complete?

If this is merged, will the project be functional/complete?

Yes because this PR merges into testing not master :) we intend to keep master as is until we have something better for the frontend (e.g. my Godot rewrite). The plan is to have that in a different repo though, so thats why I wanted to remove urho so that I can just focus on the library side of this project.
Anyways until then I intend to have testing as the mainline develop branch, hence the PR so that its visible

Oh I didn't notice this wasn't going towards master. Nevermind then. :eyes:

Closing in favor of libSMCE

Closing in favor of libSMCE


Listener error aborts further listener executions

The listeners execute their callbacks in a for loop with no error trapping. If one of the callbacks throws an error, this will halt the for loop and other listeners in the collection will never execute. It might be nice to trap and collect callback errors in order to allow other callbacks to run, and possibly re-throw them at the end of the loop.

That's not a bad idea. I would be inclined to emit( 'error' ), which if it has no listeners throws an error.


titan: update titan to fix incorrect blob file size and change default value

What is changed and how it works?

Issue Number: Close #15971
What's Changed:

fix titan incorrect blob file size metric and change default value

Related changes

Need to cherry-pick to the release branch

Check List
Tests

No code

Release note
Fix titan incorrect blob file size metric and change default value

/merge

/merge

/merge

/test

/merge


There is no longer an AssemblyInfo.cs file in the cross-platform project

Hello,
I'm working on implementing multiple languages for a Xamarin.Forms app (.NET Standard), where there is no AssemblyInfo.cs file in the cross-platform project. It would be awesome if the documentation regarding setting the default app language (NeutralResourcesLanguage) could provide some guidance as to where we can specify the NeutralResourcesLanguage. I'm not sure where/how to set this currently. Perhaps in App.xaml.cs?
Link to the documentation section:  https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/localization/text?pivots=windows#specify-the-default-culture

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: af66394d-81c5-0c2e-1682-a2bb7eeb3c3e
Version Independent ID: 27542a45-2f25-4042-cf48-b9517025635c
Content: String and Image Localization in Xamarin.Forms - Xamarin
Content Source: docs/xamarin-forms/app-fundamentals/localization/text.md
Product: xamarin
Technology: xamarin-forms
GitHub Login: @profexorgeek
Microsoft Alias: jusjohns

Technically this line:
[assembly: NeutralResourcesLanguage("en-US")]
can be put into any file that is included and compiled in your project. However, the best practice is typically to put it into the AssemblyInfo.cs file with similar attributes so they are grouped in one place. If your project doesn't have an AssemblyInfo.cs file you can simply create it and make sure it is included in .csproj. The entire file can just be this if you have no other attributes to specify:
using System.Resources;

[assembly: NeutralResourcesLanguage("en-US")]

For more information about assemblies, see Set Assembly Attributes

Thanks very much... I greatly appreciate your help!  =)


IAM snippet improvements

Move each sample to its own file (with includes), and include client init in the function. This makes each snippet more copy/paste-able.
Some minor cleanup.

Re: Failed Windows CI -- I don't have Windows, would you mind doing me a favor and running lint?


Fix internal link detection

Links that point to internal sites on a different subdomain from hosted app are currently considered 'internal' links because the root domain (as returned by wurl) is the same.
This change makes sure the subdomain is considered. Downside is that foo.bar.com will be considered different from bar.com - which is what should happen technically, though not practically. Maybe this should be a flag?

Sorry for the delay! I'm good with the changes, but as mentioned in #116, it would be better if we could specify a flag that indicates if we want to consider the subdomain for better control?


Embedding gorilla-repl

I am just poking around with gorilla-repl and its seems it is not far away from being "cleanly" embeddable.
Would you be interested to see a PR with those changes?

Oddly enough, I was just playing around myself with embedding Gorilla in a Java application! I changed the build so it generates a main class in the jar (see 75e6435d08366428acadf725b86b7e1c8220cd4e) and it seems to work ok.
What changes are you thinking?

Decoupling it from httpkit, Feeding the repl using a javax.websocket.server.ServerEndpoint, adding a Servlet class (dispatching to the compojure handler) to be dropped in  using a web-fragment.xml, allowing configuration of handler paths, and allowing  an externally configured nrepl server.
Got most of that working. The last missing piece seems to be a nrepl transport dispatching from the ServerEndpoint to the repl. Somewhat similar to the current httpkit based relaying code.

I see, that sounds interesting. I'm generally quite conservative as I like to keep the code simple, and my initial thought is that this might add quite a bit of extra complexity. But if there's a way we can break it out so that Gorilla itself stays simple but offers up some extension points for embedding then it would be a good thing.

Don't worry. The changes that "should" go in gorilla repl are fairly small and do imho even improve the code by separating out concerns such as httpkit which one might want to :exclude if you are embedding in another app.
If we want to provide an aotd Ring Servlet, its web-fragment.xml and @ServerEndpoint along with gorilla-repl might be debatable. Personally, I am aiming for a generic "uberjar drop-in" allowing you to "inject" gorilla-repl in virtually any webapp, but I don't have to drop "all" the code in here. :)
Not strictly an embedding issue, but I also replaced the connection atom and bypass the network layer when calling into nrepl.

Sounds good. Do you want to put up a PR with these changes in for discussion when ready?

I am just writing a blogpost about it. Will let you know about it. And will get back with more PRs for sure!

Any plan on implementing this?


Document requirements for managed kubernetes providers to be able to join a member cluster for customers to ask for

Hi Ross,thanks for making this!
Would it be possible to list what APIs a provider of kubernetes needs to implement or expose for it to be possible to controllable by an existing control plane cluster?
I'll try outlining the use case I'm thinking of.
Running a control plane cluster youself, and connecting to managed k8s providers from multiple suppliers
You're operating a control plane cluster with Supplier A, and rather than spinning up a cluster that you manage yourself with provider B or provider C, you just want to purchase a managed service from them, the same way you might purchase managed object storage.
Different suppliers have different specialisations, or emissions profiles, and you don't want to interface at a low level, provisioning VMs yourself, but use the higher level APIs afforded by the provider.
This seems to be inline with the goal of Karmada, based on their docs:

Karmada supports:

Safe isolation:

Create a namespace for each cluster, prefixed with karmada-es-.

Multi-mode connection:

Push: Karmada is directly connected to the cluster kube-apiserver.
Pull: Deploy one agent component in the cluster, Karmada delegates tasks to the agent component.

Multi-cloud support(Only if compliant with Kubernetes specifications):

Support various public cloud vendors.
Support for private cloud.
Support self-built clusters.

Source: Key Features | karmada by
And I'm aware that Karmada has two ways to connect to an existing provider:

Push: Karmada is directly connected to the cluster kube-apiserver.
Pull: Deploy one agent component in the cluster, Karmada delegates tasks to the agent component.

However, I'm not clear what a checking service might look like, so you could validate that an existing k8s provider might be compatible, such that you could use them to run a control plane cluster OR a member cluster, just by sending some API calls to a given endpoint.
If it helps, this notebook explains the idea, but for object storage:
https://nextjournal.com/greenweb/demo-fetching-files-from-aws-compatible-object-storage?change-id=DM16eoHhgQyxDMnCqhXuah
For some further context, I'm interested in this, because it would be really cool to be able to add this kind of information  to our directories of providers at the Green Web Foundation, so you could easily find API compatible providers of all kind of building blocks you might use when creating digitial services.  The link below might be helpful context too, in this case:
https://www.thegreenwebfoundation.org/directory/services-offered/

Hi Chris,
thanks, this is an interesting idea.
AIUI the member cluster has to have a full k8s API. It will have the-built in resources like configmaps and deployments and may have a set of CRDs that extend the k8s API but these can be bootstrapped and managed by karmada.
It differs from an AWS API like S3 because if say only the deployments API was exposed then creating related RBAC resources like roles would fail. However you can restrict which resources the user can manage using RBAC.

However, I'm not clear what a checking service might look like, so you could validate that an existing k8s provider might be compatible, such that you could use them to run a control plane cluster OR a member cluster, just by sending some API calls to a given endpoint.

There are automated conformance tests which most of the providers run and submit to CNCF for verification. https://www.cncf.io/certification/software-conformance/
To be able to join a member cluster you need to have a kubeconfig and network connectivity to that cluster. Usually for managed services they let you download or create a new kubeconfig.

The pull mode is for more restricted environments. In that mode the API requests are initiated by the agent.
The kubeconfig will have a user to access the member cluster API and that user will have permissions granted via RBAC.

Different suppliers have different specialisations, or emissions profiles, and you don't want to interface at a low level, provisioning VMs yourself, but use the higher level APIs afforded by the provider.

The managed services vary quite a bit. In some they provision the nodes for you but you can still access them. In others you can only access the worker nodes. You could even potentially use this with virtual kubelet that uses Functions-as-service instead of running the pods on worker nodes.


[Suggestion]

Would it be possible to add the "add scrollbar if more than 5 slots" as a config option.
This will be useful for users that have large monitors that can fit more slots on screen at once thus less scrolling is needed.

I can make that minimum amount configurable. Would that be sufficient?

Another thing i can actually do is arrange slots in a grid.

I think both would be fine, however, arrangement in a grid may be better for a majority of users

Both features were released with version 2.1.1


Update README

What?
Update README. Fixes #44

CC @pusher/mobile

Codecov Report

Merging #47 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #47   +/-   ##
=======================================
  Coverage   68.45%   68.45%
=======================================
  Files          29       29
  Lines         856      856
  Branches       19       19
=======================================
  Hits          586      586
  Misses        270      270

Impacted Files
Coverage Δ

Sources/PushNotifications.swift
11.66% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


UDP tunnel is mono-directional?

Greetings,
while trying to forward an UDP port through the tunnel, I discovered that the wstunnel client seems to keep the port busy because it's apparently listening for datagrams to forward through the tunnel.
This, however, seems to make it impossible to receive anything from the said port from the remote end, as any application trying to listen for datagrams gets a "port is busy" error.
Is this expected behavior?

I am not sure to understand.
Can you provide an example and explain the current behavior and what you are expecting ?


Bio

[ ] Decide on highlighting.... Like it or no?
[ ] TO DO: Add resume <a> hyperlink on about.md


Flatpak?

First of all, great project! You're doing exactly the things I've wanted for a long time. With that said, would it be possible to get a Flatpak version on flathub perhaps? That way it could be easily installed on a lot of distros without builds for each.

@alvarlagerlof  I am considering a PPA and maybe arch aur. After those are done, I will consider flatpak.

@alvarlagerlof I decided against flatpak and aur, but I am working on making my PPA.

I see.

@

@alvarlagerlof Also, I specifically build Thorium with flags and against libc, and libnss versions that are slightly older than the chromium source provided ones to allow it to work on the largest amount of linux distros. The portable .zips can be used to install on distros that dont support .debs. There are instruction in the readme, but basically just copying the wrappers to /usr/bin/ and the .desktops to where you want, and editing the Exec and Icon lines in the .desktops to point to where you unpacked the zip.
The compatibility stuff allows it to work on debian 8 and ubuntu 14.04, whereas chromium by default needs debian 9 and 16.04. I have used the portable zips successfully on arch, clearlinux, and fedora in VM's.

That's great to hear, but I'm afraid I am not personally interested in the manual approach and backwards compatibility that far back. Good luck!

@Alex313031 , Flatpak would be really helpful. I would help you if you are interested.

@alvarlagerlof Although, I am now distributing Thorium as an appimage. You can see it in the latest release.

Good news. I am sure people will find that useful. I am unhappy with the updating story on AppImage, so I will probably continue to use something else that supports flatpak.

@Alex313031 , it would be good to have flatpak build of Thorium Browser so that Thorium can run even on distro such as Alpine Linux.
Please look at https://github.com/flathub/org.chromium.Chromium . I would love to help Thorium packed as a Flatpak.
Also, pinging @refi64 , @rany2 for help.

https://discourse.flathub.org/t/chromium-browser-fork-thorium-web-browser/2712

@Alex313031

Hi, I'm still interested in Flatpak & I think making Thorium available on Flathub will draw in a lot more users as it makes the application easily searchable from most package manager GUIs like Gnome Software. Also, with the advent of increased popularity surrounding immutable distros like SteamOS, I think it might be worth making a flatpak available.

@Alex313031 great project sadly not available neither on flathub nor nix-os.

Has there bin any updates on this regarding Flatpack?


how to fake $window

Hi Ward,
I need help with bardjs and I would highly appreciate if you could help me.
I am using John Papa's gulp pattern (https://github.com/johnpapa/gulp-patterns) where he uses bardjs. I want to fake $window because I have some stuff stored in the sessionstorage which is used within the application.
What would be the best way of adding additional fake providers?
I know that I can go ahead and add a file like this (https://github.com/johnpapa/ng-demos/blob/master/cc-bmean/src/client/test/lib/specHelper.js) and there define the fakeWindow within that file like this:
function fakeWindow($provide) {
        $provide.provider('$window', function () {
            /* jshint validthis:true */
            this.$window = sinon.stub();

            this.$get = function () {
                return {
                    sessionStorage: sinon.stub({
                        token: 'someToken'
                    })
                };
            };
        });
 }

and then for example in this file (https://github.com/johnpapa/gulp-patterns/blob/master/src/client/app/customers/customers.route.spec.js), instead of having :
beforeEach(function() {
        module('app.customers', bard.fakeToastr);
        bard.inject(this, '$location', '$rootScope', '$state', '$templateCache');
 });

do something like this:
beforeEach(function () {
        module('app.customers', function ($provide) {
            bard.fakeToastr($provide);
            specHelper.fakeWindow($provide);
        });
        bard.inject(this, '$location', '$rootScope', '$state', '$templateCache', '$window');
 });

obviously this approach will do exactly what I need, but it is getting drifted away from bardjs.
So my question is how would you do it ?
Many thanks in advance.
Farzan

You didn't say why you want to stub out $window but I can see in your code that you want to fake one of the methods, sessionStorage.
As you may know, $window is a kind of proxy for the browser window object. You write your application code to reference $window instead of window so that it is easier to test the parts of your application that need access to browser features.
$window has the simplest possible implementation. It simply returns the browser window object:
function $WindowProvider() {
    this.$get = valueFn(window); // valueFn returns a function that returns the window object
}

Now window is the biggest object in all of JavaScript. There is no way bard (or anyone) can anticipate everything that anyone might want to fake about it. But it's really easy for you to fake exactly what you want ... by replacing Angular's $window implementation with your own.
Let's take what I believe to be your case. I think you want to fake behaviors of the window.sessionStorage object. Start by creating a fake sessionStorage that does what your test(s) need. I don't know what that is exactly but it might be:
var storedItem = {}; // whatever you want it to be
var fakeSessionStorage = {
    getItem: sinon.stub().returns(storedItem),
    setItem: sinon.spy(function setItem(key, obj) {storedItem = obj;})
}

Now create a fake window object that supports only what your tested component needs.
var fakeWindow = {
    sessionStorage: fakeSessionStorage
};

Now register your fake window during test module setup:
bard.module('app.customers', function ($provide) {
    $provide.value('$window', fakeWindow); // replaces ng's $window w/ the fake
});

Notice that I'm using bard.module which fakes toastr for you automatically.

Putting it all together we get:
beforeEach(function() {
    var storedItem = {}; // whatever you want it to be initially
    var fakeSessionStorage = {
        getItem: sinon.stub().returns(storedItem),
        setItem: sinon.spy(function setItem(key, obj) {storedItem = obj;})
    }

    bard.module('app.customers',  function ($provide) {
        $provide.value('$window', fakeWindow); // replaces ng's $window w/ the fake
    });
    bard.inject(this, '$location', '$rootScope', '$state', '$templateCache', '$window');
});

I strongly recommend replacing $window rather than replacing/overriding members of $window; if you do the latter, you'll be replacing members of the global browser object, ruining them for all subsequent tests. Of course you could restore the original member after each test with an afterEach but that's a lot of work. Stick with my approach.

Ward many thanks for taking time to explain this to me, I really appreciate that.
It all make perfect sense.
I am only not clear about one thing. Does that mean if I use $provide.provider like this:
$provide.provider('$window', function () {
            /* jshint validthis:true */
            this.$window = sinon.stub();

            this.$get = function () {
                return {
                    sessionStorage: sinon.stub({
                        token: 'someToken'
                    })
                };
            };
        });

It will override the $window for all the other subsequent tests whereas if I only use $provide.value like this:
var fakeSessionStorage = {
        getItem: sinon.stub().returns(storedItem),
        setItem: sinon.spy(function setItem(key, obj) {storedItem = obj;})
    };
    var fakeWindow = {
        sessionStorage: fakeSessionStorage
    };

    return function ($provide) {
        $provide.value('$window', fakeWindow);
    };

it will enable me to fake it for only the bard.module that I am passing on thefakeWindow and afterward the actual $window will be used for the other bard.module if I don't fake it and simply inject $window?

Both approaches replace the ng $window service definition for each test separately. There is no cross test pollution and test outside of the scope of the describe are unaffected.
The risk of crops test pollution arises when you do something like $window.sessionStorage=fakeStorage; // don't do this! with the original $window service. That would override the DOM
window.seesionStorage which is a global variable.
BTW, the following line in your code  doesn't do what you think it does and is immediately replaced anyway at runtime when Ng invkes the $get
this.$window = sinon.stub();

I see .... :)
Many thanks Ward. Really helpful points. I will keep them all in mind.
Cheers

Closing because there does not appear to be an outstanding issue


Add more info to TaskStatus for notifications

Background
There are some bits of information that is present in the pipeline state, but missing for notification targets, including:

val isFailure: Boolean
maybe more coming...

Feature
Add the missing information to the TaskStatus model objects so that notification targets other then email have access to the same info as email notification
Example
--
Proposed Solution
As an additional suggestion - add access to pipeline state via PipelineState trait if client includes pramen-core as a dependency, not just pramen-api

I would also add:

pipelineName
environmentName
from PipelineNotification

Great, will add

++ There is difference in Skipped status between TaskStatus and RunStatus. Missing isWarning

Also missing notification warning/errors ... I am thinking is there a difference between classes and why not have have the same classes for both

Closed by #428


Issue in HA logs

Entity sensor.roteador_uptime (<class 'custom_components.huawei_mesh_router.sensor.HuaweiUptimeSensor'>) is using state class 'measurement' which is impossible considering device class ('timestamp') it is using; Please update your configuration if your entity is manually configured, otherwise report it to the custom integration author.
Entity sensor.roteador_uptime_cozinha (<class 'custom_components.huawei_mesh_router.sensor.HuaweiUptimeSensor'>) is using state class 'measurement' which is impossible considering device class ('timestamp') it is using; Please update your configuration if your entity is manually configured, otherwise report it to the custom integration author.

BTW It started after updating to 2023.2, I think.

Thanks, I'll fix it in 0.8.5


Prepare for publication

@rultor merge

@rultor merge

@kerelape OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@kerelape Done! FYI, the full log is here (took me 2min)


One API call for multiple rendering

Hi,
How can I get one call from count url if I display 2 instances (for the same url) in my page ?
Thanks you.

So you want the share control to request the count only once?
Do you have real performance issue? I'm not sure having two instead of one call should make a huge difference, the other case if you have lots of shares...
There is no straightforward way to do it, but you could redefine _loadCount method something like:
var counts = {};

$("#jssocials").jsSocials({
    _loadCount: function(share) {
         var d = $.Deferred();
         var countUrl = this._getCountUrl(share);

         if(count[countUrl]) {
             d.resolve(count[countUrl])
         } else {
             jsSocials.Socials.prototype._loadCount.apply(this, arguments).done(function(result)
                 d.resolve(result);
             });
         }
         return d.promise();
    }
});

I have not tested the code above, just showing the main principle.


As a developer, I want our unit tests to correctly retrieve environment variables from both the local .env file and OS environment variables.

Context
Currently, our testing workflows consistently fail when attempting to run unit tests. The primary hypothesis is that our tests are retrieving environment variables from a local .env file instead of using the OS environment variables. This discrepancy leads to failures in our GitHub Actions because the required keys are missing from the .env file but are present as GitHub secrets.
This issue impacts the reliability of our continuous integration pipeline, causing delays and confusion among developers when tests pass locally but fail in CI/CD environments.
Acceptance Criteria

Modify the unit tests to check for environment variables from the local .env file first, and if not found, then fall back to the OS environment variables.
Ensure compatibility with both local development setups and CI/CD pipelines in GitHub Actions.
Validate the solution by confirming that unit tests pass consistently both locally and within the GitHub Actions environment.

We already use the OS environment variables. What dotenv does is load the variables in .env as OS environment variables.
The testing workflow also doesn't use Github Secrets AFAIK. It's still a bit foggy but what I recall from what @SonOfLope told me is that what is currently used to handle secrets isn't really fit with the way workflows are run so they're migrating to something Azure related so everything can be in the same place.

It is using github secrets as of yesterday.

We already use the OS environment variables. What dotenv does is load the variables in .env as OS environment variables.
The testing workflow also doesn't use Github Secrets AFAIK. It's still a bit foggy but what I recall from what @SonOfLope told me is that what is currently used to handle secrets isn't really fit with the way workflows are run so they're migrating to something Azure related so everything can be in the same place.

The problem is you are 'only' loading from .env. In production, these variables will be available as environment variables and not in a .env file. As such, you will need to fetch them directly from the OS environment variables.

It is using github secrets as of yesterday.

Thanks, so I suppose all that's left is to put the variables there?

No, y

It is using github secrets as of yesterday.

Thanks, so I suppose all that's left is to put the variables there?

You also need to fetch the variables in the code. Example: Nachet doing both loading from .env and directly fetching the variables : https://github.com/ai-cfia/nachet-backend/blob/main/app.py

The problem is you are 'only' loading from .env. In production, these variables will be available as environment variables and not in a .env file. As such, you will need to fetch them directly from the OS environment variables.

load_env doesn't clear all the other environment variables and then load the ones in .env. It only loads the variables in .env so if the file is empty or a variable isn't present there, it will no effect on the other variables. I'm also not loading from .env, I'm loading from the OS.
I just made a test locally and it can pick up on env vars passed through the OS.

it seems AZURE_OPENAI_KEY is missing.... @Endlessflow
@snakedye can you add the variable to the repository secrets with right value. It should then fix the pipeline. Also looking at the code, you guys are already doing both loading from dotenv and from environment.

@SonOfLope Done

@Endlessflow seems like theres more env variables than what you stated :

@snakedye could you please add secrets for all existing env variables haha

I added all the others.

Congrats everyone. This issue can be closed.

GG.


Clarifications for implementation

Hi @dluvizon,
Congrats on the nice work. I have been trying to reproduce your results and implemented the network after building up on the code provided in your pose regression repo .  I have a few questions/clarifications. It would be great if you respond to the following-

Can you share the exact details of which portion of dataset you used from mpii for training 2D action recognition.
Can you share the parameters (mean/variance) you used to generate GT heatmaps for pose estimation network?

Thanks,

Hi @ashar-ali ,

For MPII on single person, there is a standard split between training and validation samples.
I uploaded the file mpii_annotations.mat with this split.

We use soft-argmax to regress directly joint coordinates, so the method does not rely on generate GT heatmaps. Please take a look in the paper for more details.

Best,

Oh great,
figured out the soft-argmax thing. But can you please re-verify the link you have provided above for file download? It throws a  404: not found error for me when I click on it. also I remember you released the weights for mpii yesterday. But am not able to access them today.
Would be a great help.
Thanks @dluvizon

The links should work now!

Great,
Thanks a ton for providing these. Do you also plan to release models for pose estimation and/or actiivity recognition for  penn_action dataset anytime soon?
Thanks,

I am planning to release the weights finetuned for action, for both Penn and NTU.

Hi @ashar-ali ,

Considering that PennAction contains 15 classes, you are getting random predictions.
In my experience, after 3-4 epochs it should be close to 80% using visual features and a bit lower using only pose.

If your net is not learning at all, I guess that the problem is not with the pose data.

The PennAction is a pretty easy dataset, so even a naive method should attain 80% relatively fast.

Hi,
The file should be OK now at https://github.com/dluvizon/deephar/releases/download/v0.3/penn_annotations.mat
You can check the penn action labels by doing:
    print (penn_seq.action_labels)

just after loading the dataset. That gives:
['baseball_pitch' 'baseball_swing' 'bench_press' 'bowl' 'clean_and_jerk'
 'golf_swing' 'jump_rope' 'jumping_jacks' 'pullup' 'pushup' 'situp' 'squat'
 'strum_guitar' 'tennis_forehand' 'tennis_serve']

which corresponds to your list.

Sounds great,
Thanks a lot for all your help @dluvizon


feat(parser): add support to VPCLatticeModel

Issue number: #2579
Summary
Changes
Use case:
Customers can integrate VPC Lattice with Lambda and might need to parser events using Pydantic.
Changes:
This pull request introduces support to the VPCLatticeModel and envelope.
User experience
import pytest

from aws_lambda_powertools.utilities.parser import (
    event_parser,
)
from aws_lambda_powertools.utilities.parser.models import VPCLatticeModel
from aws_lambda_powertools.utilities.typing import LambdaContext
from aws_lambda_powertools import Logger

logger = Logger()

@event_parser(model=VPCLatticeModel)
def handle_lambda_vpclattice_with_envelope(event: VPCLatticeModel, context: LambdaContext):
    logger.info(event.raw_path)

Checklist
If your change doesn't seem to apply, please leave them unchecked.

[x] Meet tenets criteria
[x] I have performed a self-review of this change
[x] Changes have been tested
[x] Changes are documented
[x] PR title follows conventional commit semantics

Is this a breaking change?
RFC issue number:
Checklist:

[ ] Migration process documented
[ ] Implement warnings (if it can live side by side)

Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

Codecov Report
Patch coverage: 100.00% and project coverage change: -0.02 :warning:

Comparison is base (fea3f6a) 97.21% compared to head (f1c2abd) 97.20%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #2584      +/-   ##
===========================================
- Coverage    97.21%   97.20%   -0.02%
===========================================
  Files          158      160       +2
  Lines         7370     7393      +23
  Branches       537      523      -14
===========================================
+ Hits          7165     7186      +21
- Misses         158      159       +1
- Partials        47       48       +1

Impacted Files
Coverage Δ

..._powertools/utilities/parser/envelopes/__init__.py
100.00% <100.00%> (ø)

...wertools/utilities/parser/envelopes/vpc_lattice.py
100.00% <100.00%> (ø)

...bda_powertools/utilities/parser/models/__init__.py
100.00% <100.00%> (ø)

..._powertools/utilities/parser/models/vpc_lattice.py
100.00% <100.00%> (ø)

... and 2 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Thanks Leandro for the quick turn-around! Just left two small comments. What do you think?

I agree 100%, Ruben! All of them was addressed.


#36 fix tranqshot spell check

Should fix #36
I've not been able to test it yet

Tested out of raid replacing tranq with arcane shot and I got the announce. Should work !
I'll test it on magmadar in few days

Tested in raid, works :]


Function Math.clamp's parameter requirements can't be seen completely

Repro steps:
• Navigate to https://makecode.adafruit.com/
• Click "JAVASCRIPT"
• Type "Math." then look the function Math.clamp
Expect result:
This function should can be seen the complete parameter requirements
Actual result:
There is no way to look this function's parameter requirements

This is won't fix for us. Preview is supposed to be minimal and should fit the window


[BUG] status-check endpoint not working as expected

Environment
Self-Hosted (Docker)
System
Chrome 120
Version
2.1.1
Describe the problem
When attempting to query the status-check endpoint of Dashy through Postman, the response received is: "Sorry, JavaScript needs to be enabled to run Dashy". This seems to contradict the expected behavior as outlined in the project's documentation.
As per the Dashy Documentation, this endpoint is recommended for use with Postman to diagnose issues related to failing status checks.
Additional info

Please tick the boxes

[X] You have explained the issue clearly, and included all relevant info
[X] You are using a supported version of Dashy
[X] You've checked that this issue hasn't already been raised
[X] You've checked the docs and troubleshooting guide
[X] You agree to the code of conduct

I have the same problem with the status-check endpoint not working, except I tried loading one of the pages in a browser and got a 404 back from Dashy. Funny enough, two of my 8 services do respond to status checks when loading the Dashy UI. But the status-check endpoint for the same URL doesn't load. I even copied the loaded URL from my browser console and it still 404s. I too host myself with Docker.

Can't get it to work either.
Are you both @bobbyl140  and @vpn using SSL by any chance?

I am, have you found that to be an issue?

I am, have you found that to be an issue?

Okay so you are using https://[dashy-url].... and you get the issue as well?
Just to rule a relation of ssl (http/https) out.

I am, have you found that to be an issue?

Okay so you are using https://[dashy-url].... and you get the issue as well? Just to rule a relation of ssl (http/https) out.

That’s correct, yeah. I have all public domain name pointing to it that I use.

Also all the services I tried to status check are HTTPS as well


Consolidate similar settings shared across components

As the product has grown, the number of settings has exploded and the product has become more complex as a result. Something that I've been passively thinking about for a while is the idea to consolidate similar features into a single one. This idea has come up just now again with @justschen's proposal for allowing toggling of editor problem decorations.
For example, take settings containing "font size" now:

That's 10 different font sizes for various different parts, some of which has slightly different key names (eg. .fontSize vs ...FontSize) and all of which have slightly different descriptions. In the settings editor these take up 1 and a half pages on my monitor.
My proposal is essentially to deprecate these in favor of a setting like:
// I'm not sure whjat the right prefix would be for a "meta" setting
// like this that expands across the whole workbench
"workbench.fontSize": number | {
  "base": number, // base, *, etc?
  [componentId: string]: number;
}

So using it could look something like this:
// Set all font sizes to 12
"workbench.fontSize": 12;

// Set all font sizes to 12, but override terminal and editor
"workbench.fontSize": {
  "base": 12,
  "terminal": 13,
  "editor": 14
}

We could present this in the settings UI as a single setting with a list of components as checkboxes/textboxes, just with some way of setting everything. Similar to the show action button setting:

An extra benefit of this is they would share the same base text but allow for an optional per-component description if needed.
cc @hbons @rzhao271 @sandy081 @aeschli

Technical details
As for how this could be implemented, the "base" feature could be declared somewhere in platform or workbench, driven by where the lowest level it's needed is. Components could then "register into" that declaration to add component ids to the setting schema.
We have a similar mechanism for this in a related problem of shared keybindings across different components where we have the solution of the MultiCommand:
https://github.com/microsoft/vscode/blob/e2670a457fbba846c8adebc70bcaec674c949866/src/vs/editor/browser/editorExtensions.ts#L188-L197
This allows registering different behavior for a command based on a when clause. This is actually something that the terminal should adopt but I was kind of late to discover it so it's just debt work that we may get to eventually.

There are always many ways of grouping functionality. By component (e.g. terminal), by property (e.g. fontSize).
We've decided in the beginning, our settings are grouped by component (editor, terminal). Also we've decided in the beginning that we want a flat key/value structure. "editor.x.a" "editor.x.b", not editor.x: { a: 1; b: 2 }. There has been exceptions over time, but that's still the general rule.
Starting a different way of grouping or structuring on the JSON property level will just complicate things and not solve the problem that there are always many ways of looking at settings. Beside, migrating existing settings is challenging and a source of many errors and UX problems.
Instead, the settings UI should investigate offering different views. An idea is to annotate font size related settings so we can show them in a separate view.

I agree with @aeschli. On top of the complication of executing automation of format change (and how long would the code that does the update have to live in VS Code?), the amount of documentation- both official and unofficial- that would need to be updated would be a nightmare. I'd bet implementing the change and updates to the extension API would also be difficult (and the impact it would have on the extension ecosystem). I say this as someone who initially thought the flat structure was weird.
Why not just use/augment the @... mechanism in the settings UI for this? Like the existing @feature:notebook. There's already tags in the configuration contribution point, which I assume corresponds to searching with @tag:.


Switch authentication

This switches authentication backend from unsupported https://github.com/thomseddon/traefik-forward-auth to supported https://oauth2-proxy.github.io/, and allows authentication via user groups rather than individual e-mail addresses

The groups in ALLOWED_GROUPS should be comma separated, not space separated. (-> "group1, group2, group3").
See https://oauth2-proxy.github.io/oauth2-proxy/docs/features/endpoints/#auth


producing a ghost consumer at frequently start and stop consumers in the same process

What do I find?
In production practice，There is a situation that is starting many diffent consumers and using web controls consumers restarting and stoping at the same time in one running process.
then I noticed a problem one day after stoping and starting consumers using web，There was a consumer who reconsume messages a few days ago.
What is the purpose of the change?
fix issue below:
producing a ghost consumer at frequently start and stop consumers in the same process，who can not consume message，but can pull messages and submit the same consume offset.
Clues below
find offset reset in host1 rocketmq_client.log:
2021-06-08 14:19:23,023 INFO RocketmqClient - [persistAll] Group: topic-xxx-consumer ClientId: host1@29158 updateConsumeOffsetToBroker MessageQueue [topic=topic-xxx brokerName=broker-a, queueId=5] 2678704
2021-06-08 14:19:23,023 INFO RocketmqClient - the consumer [topic-xxx-consumer] shutdown OK
2021-06-08 14:19:24,024 INFO RocketmqClient - the consumer [topic-xxx-consumer] start beginning. messageModel=CLUSTERING, isUnitMode=false
2021-06-08 14:19:24,024 INFO RocketmqClient - the consumer [topic-xxx-consumer] start OK.
2021-06-08 14:19:24,024 INFO RocketmqClient - doRebalance, topic-xxx-consumer, add a new pull request PullRequest [consumerGroup=topic-xxx-consumer, messageQueue=MessageQueue [topic=topic-xxx brokerName=broker-a, queueId=5], nextOffset=2611518]

find ghost consumer submit consume offset from host2:
2021-06-04 00:00:00 WARN PullMessageThread_55 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613665
2021-06-04 00:00:00 WARN PullMessageThread_87 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613666
2021-06-04 00:00:00 WARN PullMessageThread_107 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613667
2021-06-04 00:00:01 WARN PullMessageThread_71 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613668
2021-06-04 00:00:01 WARN PullMessageThread_17 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613669
2021-06-04 00:00:01 WARN PullMessageThread_13 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613670
2021-06-04 00:00:02 WARN PullMessageThread_93 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613671
2021-06-04 00:00:02 WARN PullMessageThread_121 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2613672
..........................................................................................................................................................................................................................
2021-06-07 18:49:45 WARN PullMessageThread_18 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670228
2021-06-07 18:49:46 WARN PullMessageThread_79 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670229
2021-06-07 18:49:47 WARN PullMessageThread_61 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670230
2021-06-07 18:49:50 WARN PullMessageThread_43 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670231
2021-06-07 18:49:51 WARN PullMessageThread_14 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670232
2021-06-07 18:49:52 WARN PullMessageThread_67 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670233
2021-06-07 18:49:56 WARN PullMessageThread_67 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2670234
..........................................................................................................................................................................................................................
2021-06-08 14:20:00 WARN PullMessageThread_123 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2636343
2021-06-08 14:20:00 WARN PullMessageThread_29 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2636385
2021-06-08 14:20:00 WARN PullMessageThread_90 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2636621
2021-06-08 14:20:03 WARN PullMessageThread_60 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2637975
2021-06-08 14:20:03 WARN PullMessageThread_114 - [NOTIFYME]update consumer offset less than store. clientHost=host2:35394, key=topic-xxx@topic-xxx-consumer, queueId=5, requestOffset=2611518, storeOffset=2638184

finally host2 triggers flow control:
2021-06-03 23:47:18,018 WARN RocketmqClient - the queue's messages, span too long, so do flow control, minOffset=2611615, maxOffset=2613616, maxSpan=2001, pullRequest=PullRequest [consumerGroup=topic-xxx-consumer, messageQueue=MessageQueue [topic=topic-xxx, brokerName=broker-a, queueId=15], nextOffset=2613617], flowControlTimes=1
2021-06-04 00:16:42,042 WARN RocketmqClient - the queue's messages, span too long, so do flow control, minOffset=2611518, maxOffset=2613736, maxSpan=2218, pullRequest=PullRequest [consumerGroup=topic-xxx-consumer, messageQueue=MessageQueue [topic=topic-xxx, brokerName=broker-a, queueId=5], nextOffset=2613737], flowControlTimes=7001
2021-06-05 11:11:12,012 WARN RocketmqClient - the queue's messages, span too long, so do flow control, minOffset=2611518, maxOffset=2632183, maxSpan=20665, pullRequest=PullRequest [consumerGroup=topic-xxx-consumer, messageQueue=MessageQueue [topic=topic-xxx, brokerName=broker-a, queueId=5], nextOffset=2632184], flowControlTimes=534001
..........................................................................................................................................................................................................................................
2021-06-08 19:33:51,051 WARN RocketmqClient - the queue's messages, span too long, so do flow control, minOffset=2611518, maxOffset=2678767, maxSpan=67249, pullRequest=PullRequest [consumerGroup=topic-xxx-consumer, messageQueue=MessageQueue [topic=topic-xxx, brokerName=broker-a, queueId=5], nextOffset=2678768], flowControlTimes=1131001

We can find host1 consuming broker-a queueId=5, but at the same time host2 is submit the same offset 2611518.
producing a ghost consumer at frequently start and stop consumers in the same process，who can not consume message，but can pull messages and submit the same consume offset.
root cause
The root cause is that class MQClientInstance`s registerConsumer and unregisterConsumer is not atomic operation.

try restart process, not stop consumer and producer

try restart process, not stop consumer and producer

We using web managentment controls  consumers starting and stop, this  is our demand

Thank you, please walk to pull request #3120

merged


Further netflix deps are required for MP FT

All the hystrix deps need to present in supported profile as well.

Was this approved by anyone before merging? If not, in the future please wait for a review before merging
Also, did CI pass? It doesn’t matter how simple the change is, we need to ensure CI passes before merging


add driver start callback API

Description
Describe the purpose of and changes within this Pull Request.
Add a driver start callback API. This callback will be invoked each time the XDP driver has been started.
Testing
Do any existing tests cover this change? Are new tests needed?
CI for callback producer.
Documentation
Is there any documentation impact for this change?
This API will remain undocumented.
Installation
Is there any installer impact for this change?
No.

What's the plan for unload/stop?

What's the plan for unload/stop?

The current strategy is the same as user mode, because they share the IO manager: anything dependent on XDP must be stopped before XDP will stop.


sys.masked_columns :: "masking_function" column has probably "Latin1_General_CI_AS_KS_WS" collation

I'm joining sys.masked_columns , sys.tables and sys.types and if you run this query everything is fine:
SELECT
schema_name(tbl.schema_id) AS schema_name,
tbl.name as table_name,
mc.name AS column_name,
mc.is_masked
, [Type]         =
    CASE
      WHEN tp.[name] IN ('varchar', 'char') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length AS VARCHAR(25))) + ')'
      WHEN tp.[name] IN ('nvarchar','nchar') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length / 2 AS VARCHAR(25)))+ ')'
      WHEN tp.[name] IN ('decimal', 'numeric') THEN tp.[name] + '(' + CAST(mc.[precision] AS VARCHAR(25)) + ', ' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      WHEN tp.[name] IN ('datetime2') THEN tp.[name] + '(' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      ELSE tp.[name]
    END
,
mc.masking_function
,'ALTER TABLE '
+ schema_name(tbl.schema_id) + '.' + tbl.name +
' ALTER COLUMN '
+ mc.name +  ' ' +
    CASE
      WHEN tp.[name] IN ('varchar', 'char') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length AS VARCHAR(25))) + ')'
      WHEN tp.[name] IN ('nvarchar','nchar') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length / 2 AS VARCHAR(25)))+ ')'
      WHEN tp.[name] IN ('decimal', 'numeric') THEN tp.[name] + '(' + CAST(mc.[precision] AS VARCHAR(25)) + ', ' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      WHEN tp.[name] IN ('datetime2') THEN tp.[name] + '(' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      ELSE tp.[name]
    END
+ ' MASKED WITH (FUNCTION = '

-- + mc.masking_function

FROM sys.masked_columns AS mc
JOIN sys.tables AS tbl ON mc.[object_id] = tbl.[object_id]
JOIN sys.types tp ON mc.user_type_id = tp.user_type_id
WHERE mc.is_masked = 1;

But as soon as you try to uncomment the  -- + mc.masking_function the query fails with the error:
Msg 451, Level 16, State 1, Line 29
Cannot resolve collation conflict between "Latin1_General_CI_AS_KS_WS" and "SQL_Latin1_General_CP1_CI_AS" in add operator occurring in SELECT statement column 7.

Completion time: 2021-11-26T13:12:27.5243061+01:00

I haven't investigated further but I believe that  sys.tables and sys.types they all use "SQL_Latin1_General_CP1_CI_AS" as collation.
sys.masked_columns must use the same collation, that's why I can use the column mc.masking_function (line 15) and mc.name (line 19) in the SELECT.
But as soon as I add mc.masking_function the query fails probably because that system column use a different collation.
Can you please double check on your side and tell me.
I'm using:
Microsoft SQL Server 2019 (RTM-CU13) (KB5005679) - 15.0.4178.1 (X64)   Sep 23 2021 16:47:49   Copyright (C) 2019 Microsoft Corporation  Developer Edition (64-bit) on Windows 10 Enterprise 10.0 <X64> (Build 19042: ) (Hypervisor)

Yes, I confirm that that is the problem.
Try to run this and you will see that everything works fine:
SELECT
schema_name(tbl.schema_id) AS schema_name,
tbl.name as table_name,
mc.name AS column_name,
mc.is_masked
, [Type]         =
    CASE
      WHEN tp.[name] IN ('varchar', 'char') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length AS VARCHAR(25))) + ')'
      WHEN tp.[name] IN ('nvarchar','nchar') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length / 2 AS VARCHAR(25)))+ ')'
      WHEN tp.[name] IN ('decimal', 'numeric') THEN tp.[name] + '(' + CAST(mc.[precision] AS VARCHAR(25)) + ', ' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      WHEN tp.[name] IN ('datetime2') THEN tp.[name] + '(' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      ELSE tp.[name]
    END
,
mc.masking_function
,'ALTER TABLE '
+ schema_name(tbl.schema_id) + '.' + tbl.name +
' ALTER COLUMN '
+ mc.name +  ' ' +
    CASE
      WHEN tp.[name] IN ('varchar', 'char') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length AS VARCHAR(25))) + ')'
      WHEN tp.[name] IN ('nvarchar','nchar') THEN tp.[name] + '(' + IIF(mc.max_length = -1, 'max', CAST(mc.max_length / 2 AS VARCHAR(25)))+ ')'
      WHEN tp.[name] IN ('decimal', 'numeric') THEN tp.[name] + '(' + CAST(mc.[precision] AS VARCHAR(25)) + ', ' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      WHEN tp.[name] IN ('datetime2') THEN tp.[name] + '(' + CAST(mc.[scale] AS VARCHAR(25)) + ')'
      ELSE tp.[name]
    END
+ ' MASKED WITH (FUNCTION = '

-- + mc.masking_function
+ CAST(mc.masking_function COLLATE Latin1_General_CI_AI AS nvarchar(15))

FROM sys.masked_columns AS mc
JOIN sys.tables AS tbl ON mc.[object_id] = tbl.[object_id]
JOIN sys.types tp ON mc.user_type_id = tp.user_type_id
WHERE mc.is_masked = 1;

There is an inconsistency between sys tables

@francesco1119 -- Francesco, thank you for your detailed feedback.  Are you following a particular docs.microsoft.com article?
You're welcome to add this here:

SQL Server feedback

Not a particular documentation.
I'm reporting a bug.
Not sure if SQL Server feedback is the right place to report bugs

@francesco1119 -- Francesco, thank you for your follow-up.  Please add this as a new idea, under the "Bugs" category:

I am closing this issue now.  You are welcome to @ mention me for any followup.  We hope to hear from you again.


Tune benchmark sample sizes for aggregated proof benchmarks

The criterion config used for all benchmarks is the default one. For things that are expensive (e.g., aggregated proving), this can take a long time:
Benchmarking Aggregated 32-bit rangeproof creation/16: Collecting 100 samples in estimated 685.74 s (5050 iterations)

Maybe there's a way to turn this down.

I've been tweaking this for my experiments with Pippenger. E.g. here: https://github.com/dalek-cryptography/curve25519-dalek/pull/129/commits/b74b691faeff55226b54ca54efebf67cff1be498#diff-82ae3bb6671596b8982429751ee2b82fL235

The 32-proof benchmark is even worse, taking 23 minutes.

This may have been fixed already in https://github.com/chain/ristretto-bulletproofs/commit/4ed2c34721291bb9fd270fce1eabe89d43c4f429 , closing for now.


Move ResolveUnopenedNamespaceTagger.updateAtCaretPosition to ThreadPool

Interesting. How does dotTrace know this is a UI freeze?
From the screenshot, nothing gets run on the main thread. It seems like GC happens here. What can we do about this?

Yep, it's GC :( FCS produces objects like crazy:

Anyway, I moved all updateAtCaretPosition functions to ThreadPool here  https://github.com/fsprojects/VisualFSharpPowerTools/pull/1106

I think it's the compiler itself who creates so many objects. No hope to remove UI freezes :(

Unless we fix the issues in FCS :-) /cc @dsyme

Certainly, the compiler and FCS allocates, and always will - it can't do its work without that.
One question which I'd like expert help with is why those allocations are leading to Gen2 collections (which I presume are the intense bands shown above), and why those collections are stopping the world for such long times (which I presume depends partly on the GC settings being used by VS - but I would have expected those to be set for minimal stop-the-world interruption)
Part of the problem will be overall memory pressure but perhaps there are other reasons too.  Any help/insight appreciated.

My guess: gen2 is full with FCS caches data, that's why collecting it is so expensive. I will try to get VS snapshot and look at get2.

My guess: gen2 is full with FCS caches data, that's why collecting it is so expensive. I will try to get VS snapshot and look at get2.

Yes, definitely.  Reducing the amount of caching (strong and/or weak) you do will certainly improve things (at the cost of non-trivial recomputation).
But I still wonder if there's a root cause why the majority of Gen2's are being triggered (other than overall memory pressure)

Reducing the amount of caching (strong and/or weak) you do will certainly improve things (at the cost of non-trivial recomputation).

I believe it's FCS caches, not VFPT. We cache very few and very simple (no complex object graphs) data actually. FCS, on the other hand, caches complex structures that come right from inside the compiler code. Maybe I'm wrong.

But I still wonder if there's a root cause why the majority of Gen2's are being triggered (other than overall memory pressure)

I think it was memory pressure since it was FCS solution open, with which VS has performance issues even with VFPT disabled. VS had not frozen for some small time (~1 minute), but then started freezing every few seconds - it was practically impossible to edit files at all.

I believe it's FCS caches, not VFPT. We cache very few and very simple (no complex object graphs) data actually. FCS, on the other hand, caches complex structures that come right from inside the compiler code. Maybe I'm wrong.

Right, but you set the parameters for FCS cache sizes, you can adjust those - doing so should help control overall memory usage (at the cost of recomputation).  Also it is possible to submit modifications to FCS to change the configurability and/or operation of the caches.

Right, but you set the parameters for FCS cache sizes, you can adjust those - doing so should help control overall memory usage (at the cost of recomputation).

Yes, but in FCS solution case those settings do not help (because the solution contains very few projects and one of them is huge).
So I think we should change type of the cached data itself, but it's problematic since we tend to traverse it deeply. Maybe making more stuff lazy would help?

I see, thanks. One approach here would be to move FCS out of process to a 64-bit process, allowing it to use more memory (on >4GB machines, which are common now).  But moving FCS out of process is really not easy since a number of different kinds of references tend to be kept live by tooling like VFPT.
Perhaps someone could experiment with what it would take to build VFPT on top of FsAutoComplete (an out-of-process tool which presumably handles these things better).
Reducing FCS memory usage bit by bit is a hard path to follow - with good work you might get 25% saving, but the pauses above will just reappear on a marginally bigger solution.

I like the idea of external x64 process very much. I'll explore FsAutoComplete, thanks (I didn't know it can do more than just providing auto-completion).
However, one thing is problematic. As Visual F# Tools uses in-process FCS analog, extracting FCS out of VFPT would not solve the problem entirely - it'd cut memory usage by factor of 2 (or better as VFPT does cross project analysis).


Any plan to encryption username,phone,email and other private information in database table?

Any plan to encryption username,phone,email and other private information in database table?

This has nothing to do with Casdoor itself. What you should do is choosing an encryption-enabled database.

No！
just like password stored in db,sometimes phone,email are as important  as password

any update？

@julor this feature is not planned in short term. As an advice, if you are looking for this level of extreme security for your company, you should look for an enterprise solution


Fixed updating job/task status after changing job state

Motivation and context
Resolved #7900
How has this been tested?

Checklist

[x] I submit my changes into the develop branch
[x] I have created a changelog fragment
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[ ] I have linked related issues (see GitHub docs)
[ ] I have increased versions of npm packages if it is necessary
(cvat-canvas,
cvat-core,
cvat-data and
cvat-ui)

License

[x] I submit my code changes under the same MIT License that covers the project.
Feel free to contact the maintainers if that's a concern.

Summary by CodeRabbit

Bug Fixes

Improved handling of stage and state attributes during updates to ensure more accurate data processing.
Fixed job/task status update when job state changes to completed and stage is acceptance.

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

Project coverage is 83.40%. Comparing base (0d3dde7) to head (7e2ec85).
Report is 1 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #7901      +/-   ##
===========================================
+ Coverage    83.36%   83.40%   +0.03%
===========================================
  Files          380      380
  Lines        40022    40024       +2
  Branches      3766     3766
===========================================
+ Hits         33364    33381      +17
+ Misses        6658     6643      -15

Components
Coverage Δ

cvat-ui
79.34% <ø> (+0.08%)
:arrow_up:

cvat-server
87.14% <100.00%> (-0.01%)
:arrow_down:


chore: update build-definitions references to new org

STONEBLD-2339
The build-definitions repo has moved from github.com/redhat-appstudio to
github.com/konflux-ci. Update references accordingly.
Signed-off-by: Adam Cmiel<EMAIL_ADDRESS>

/lgtm
/approve


Persistent connections and Unicorn preload_app

Rollout seems to get confused when restarting a unicorn setup, because it's using the old Redis connections.
ActionView::Template::Error (Tried to use a connection from a child process without reconnecting. You need to reconnect to Redis after forking.):

Is there any workaround currently? The way I see it, there's no straightforward way to just reinitialize an existing Rollout with a new Redis object, and I'd rather not put the entire Rollout initializer in the unicorn after_fork block.

this seems kind of related to https://github.com/FetLife/rollout/issues/66

This has been resolved in Redis gem https://github.com/redis/redis-rb/pull/414


React 17 Support

Opening an issue to track SWRs support for react/react-dom 17.  It appears to work fine, but I didn't spot any motion on updating the peer dep requirements.  Apologies if this ends up being duplicate.
Bug report
swr appears to work great with react 17 but reports a missing peer dep of react 16.
Description / Observed Behavior
swr is throwing a peer dep warning on react 17 for v16, but appears to work fine.
Expected Behavior
swr support react 17 peer deps.
Repro Steps / Code Example
Simply install next 10, react + react-dom 17 and SWR ^0.3.2. and you will see the warning.

With npm 7, this is actually an error that blocks installation.

With npm 7, this is actually an error that blocks installation.

Had to pass it --legacy-peer-deps (or something like that) to make it work locally.

Released<EMAIL_ADDRESS>with the patch from @bcomnes 🎉


human error while initializing the object

instead of colon the assignment operator was used.

@seesharprun

Can you review this PR?

IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


new-version.sh script for new version PRs

What
We want to automate some of the release process for ndc-postgres by introducing a new scripts/new-version.sh script that updates the cargo package version and updates the changelog.
Run with: scripts/new-version.sh 1.0.2, for example.
How

A bash script to run everything
A sed script to change the package version
A Haskell script to manipulate the changelog to:

Change the unreleased header to the version
Insert a new unreleased template
Fix the references at the bottom of the changelog

As much as I enjoy using Haskell for things big and small, it does seem somewhat disproportionate to introduce a dependency on GHC just for the sake of mangling the changelog file.
Of course, doing the mangling in a shell script can be complex and error-prone too, especially if it just grows over time.
How difficult do you think it would be at present to do the mangling in shell script? At first glance it looks like a combination of sed/cat/tail could do it.

@plcplc I would definitely accept a rewrite of this script in shell, but I don't want to do it :(
Since everyone on our team should already have ghc installed, I don't think this will be a problem in practice? Worth noting that this probably saves a couple of minutes tops, so if someone really object to having ghc installed or rewriting this script, they can do the steps manually like we've up until now.


Patch DPDK source for VM.

Patch DPDK source for VM. from: http://dpdk.org/dev/patchwork/patch/11622/

Can you please explain what will this patch change (for what purpose) and why you don't apply it in Makefile?

It's to fix vmware e1000 input/output error. Please read : http://dpdk.org/dev/patchwork/patch/11622/

In vmware esxi 6.0, add the emulated e1000 device to guest, then
launch the VM, we will see the error meassage as below:
EAL: Error reading from file descriptor 21: Input/output error
INTX is badly emulated in Vmware, INTX toggle check didn't work
with Vmware e1000 device. The patch is to fix the issue. And the
patch is from http://dpdk.org/dev/patchwork/patch/945/, so Masaru
OKI is the author. Qian just updated the patch for latest code.

This patch was rejected by DPDK. I don't see any purpose to commit it here.


[gitstatus.py] Use --porcelain to make faster in using python

Get files' status by parsing output of git status --porcelain to make it faster.

Hi @wkentaro, I'm using your modification in https://github.com/robbyrussell/oh-my-zsh/pull/4205 because it is the best one here.
You could simplify further by using git status --porcelain -b which shows the remote branch info (including ahead and behind commits):
$ git status --porcelain -b
## fix-git-prompt-plugin...origin/fix-git-prompt-plugin [ahead 2, behind 2]

Ok, thanks.

I sent PR: https://github.com/mcornella/oh-my-zsh/pull/2

@olivierverdier I can confirm this works perfectly, and it only uses one call to git instead of 4-5 of before.
:+1:

I had to push a patch to make this work for UTF-8 locales, see https://github.com/mcornella/oh-my-zsh/commit/b289beb4303b1d0842aad47746e138b04e31ad30 and https://github.com/robbyrussell/oh-my-zsh/pull/4205#issuecomment-127567431.

Thanks. I updated.

There are some other caveats with the git status --porcelain -b command. See https://github.com/robbyrussell/oh-my-zsh/pull/4205#issuecomment-129323398

Thanks, I updated.

I think this PR should be merged after https://github.com/robbyrussell/oh-my-zsh/pull/4205 is merged.
So plz wait for it.
After it is merged, I will update all same commits to this PR.

https://github.com/robbyrussell/oh-my-zsh/pull/4205
is merged and updated the commits. Please review and merge.

ping

This is a great idea, it is crucial to call git only once. However, just as the Haskell implementation, this calls for a solid testing suite. Once there is such, I will be happy to merge!

:+1: good thinking.

@olivierverdier
I added test suite on travis.yml. It tests

output of gitstatus.py
speed of gitstatus.py

it compares the speed with gitstatus.py at 9f0da67.

@omg

ping

Thanks for the update. I wrote some comments in the commit. Basically, I think that we need unit tests as well.

Ok so you mean we should split the code in gitstatus.py and test each functions?

Yes, exactly. (sorry for the late answer)


getting a sense of the lib: enriching a bit geonames

added a test file for geonames
retrieved more attributes from results
added methods children and hierarchy
reviewed slightly doc

question : how should be handled multiple results (e.g. the ones from hierarchy) ?

I guess #59 gives an answer to my question... ?
If yes, we can discuss there ^^

Thanks for the invite !
Write accesses ok.
Are you confortable to work within an open pull request for new features ?
We could use feature_multi_result to discuss #59 for instance

I did not see before, but the build fails from master...
strange since it works from the PR...
Have you investigated already ?

It is strange that the master branch fails but the PR passes.
Would be better if the tests didn't have to make HTTP requests instead the tests should simply parse JSON responses.

@ebreton Let me know whenever you want me to push a new release on PyPi, just @ me with the release version.

would it be only for me, I would push every merge that is done on master. Ideally, with a successful build of course... but if you latest releases were made with the same states, I would go for keeping the releases ongoing.
How much automated is your release process to PyPi ?
With regards to the the http requests in tests, I agree with you, definitively. A quick look for mocking  requests leads to : http://requests-mock.readthedocs.io/en/latest/index.html
I am going to give a try for this

👍 using mocking requests.
Just recently I've had to entirely redo PyPi process, I think it got simpler, but I'm 👍 doing an entire revamp to make it simpler. In the ideal world it would be nice to publish a new release directly from TravisCI (if the version changes).
I've been in the NPM ecosystem for a while and I find publishing Python modules to be quite a pain, however with the new PyPi it got a tad easier.

I'm 👍 doing an entire revamp to make it simpler.

cool. I am interested !
is it on github ?

No I said "I'm good if we do an entire revamp" which is what you are currently doing 👍

aaah ok :)
sooo... how do you currently push to pipy ? Makefile ?

I have a Makefile, however PyPi changed and I don't know if the Makefile is correct anymore.
I only published once using the new PyPi, still new to it.


HasteBin --> PrivateBin

Maybe switch from HasteBin to PrivateBin ( https://privatebin.info/ ) cuz it uses de/encryption and seems to be more secure.

Crash reports don't contain any personal information. To simply view the crash report without uploading it, you can click the green text.
Encrypting the paste such that we (hastebin server admins) can't see it is pointless, especially since all crash reports will automatically be pasted and reported to mod authors when snooper is enabled.


Enhancements

A list of ideas I of things I want to add to the app: post v. 1.0.0.

notifications : for messages, friend requests, app promotions
co-ed search : users can search for any user in the app, this is a complicated topic
oauth : create an account with google or apple
embed socials : embed spotify, instagram, tiktok
recover account : forgot password send recovery code
paginate serach : paginate the search query
block profile : block a profile
delete conversation : delete a message with another user
lottie animations : use lottie animations

card image slider : you can view all images of a profile like tinder

not an issue, moved to discussions


Operator Hub outputs can be more user friendly than what they are right now

After looking at odo & Operator Hub integration documentation, @jorgemoralespou pointed out that outputs for Operator Hub integration are not really user friendly. For example, why do we use --crd flag to start a service? CRD is a k8s concept that we should ideally abstract that for users since that's the goal of odo.
Based on the discussion, IMO, we could change it to --service. But there's a scope for further improvement. We should change the output starting from odo catalog list services and instead of below output:
odo catalog list services
Operators available in the cluster
NAME                                    CRDs
etcdoperator.v0.9.4                     EtcdCluster, EtcdBackup, EtcdRestore
mongodb-enterprise.v1.5.2               MongoDB, MongoDBUser, MongoDBOpsManager
service-binding-operator.v0.1.1-282     ServiceBindingRequest

we should consider presenting below to the user:
odo catalog list services
OPERATOR NAME                           SERVICES PROVIDED
etcdoperator.v0.9.4                     EtcdCluster, EtcdBackup, EtcdRestore
mongodb-enterprise.v1.5.2               MongoDB, MongoDBUser, MongoDBOpsManager
service-binding-operator.v0.1.1-282     ServiceBindingRequest

/kind code-refactoring
/area service-operators
/area component

I would not name it "Operator Name" And "Services Provided" but something more along the lines of:
provider and services, and maybe remove the version out, as that's also implementation details. In an ideal world, services could still come from the service catalog. Maybe no longer in OpenShift, but still in k8s world.
odo catalog list services
PROVIDER                         SERVICES
etcdoperator                     EtcdCluster, EtcdBackup, EtcdRestore
mongodb-enterprise               MongoDB, MongoDBUser, MongoDBOpsManager
service-binding-operator         ServiceBindingRequest

Maybe worth considering not using the CSV name but rather the api-group (e.g. etcd.database.coreos.com)

This is still valid and important. Should be addressed through #4242 but needs to be kept open.
/remove-lifecycle rotten
/lifecycle frozen

odo catalog was removed from v3.
tagging #5523 in case we decide to implement again in future
/close


FPK: Add new approach

Add new approach to vue-flagpack
With the new version of flagpack-core combined with a new approach, vue-flagpack needed to make use of this approach.
Changes 🛠

Add generateFlags.js script to generate flags based on flagpack-core
Add flags through the use of generateFlags.js
Add rollup image loader to properly load in SVGs
Add dynamic require of Flag SVGs.

Todo 🚧

[x] ~Add Vue3 support.~ This will be done in a seperate PR.
[ ] Update Docs

@daoneandonly any change this is going to be finalized? flagpack core 2.0 would be very nice to use in Vue(3) projects.

@rvmourik We ran into a major bump trying to get a dynamic require working for our flagpack framework packages, in order to provide some treeshaking of unused flags. Current improvements on flagpack-vue are therefore postponed while figure out either a new solution or approach.
However, I can look into just adding the flags from flagpack 2.0 to flagpack-vue, if that offers any help.
Responding to #34 : Currently, given its current state, I have no ETA on when or even if flagpack-vue will support Vue3.

@rvmourik We ran into a major bump trying to get a dynamic require working for our flagpack framework packages, in order to provide some treeshaking of unused flags. Current improvements on flagpack-vue are therefore postponed while figure out either a new solution or approach.
However, I can look into just adding the flags from flagpack 2.0 to flagpack-vue, if that offers any help.
Responding to #34 : Currently, given its current state, I have no ETA on when or even if flagpack-vue will support Vue3.

Thanks, no I am only interested a Vue 3 compatible package.
Hope you'll find a solution for it. Good Luck!