fix to create HDU and OBS index files with lstchain0.10

after removing the old copied lstchain code for creating those index files and using the current (lstchain 0.10) code instead the script stoped working because of a small change of API in the function. Note that since the function is taken from lstchain, in the header file of the output index files 'lstchain' will be written as the creation program
@aleberti or  @Elisa-Visentin, please have a quick look and if you are fine with those changes we merge them into the "lstchain" branch

Looks fine to me. I just run pre-commit since it was failing, a black line was removed probably by mistake. Tests were failing due to a network error, not because of the changes from this branch.

OK for me. I just launched again the tests so that we can check if something is failing (should not, but before merging we must check it)

I merge anyway even if one test is failing, again because of some network issue, since the other two were succesfull.


Update CodeOwners to Reflect New Track2 Package

@naiteeks @bennage @giakas Here is the codeowner update for .NET. Feel free to propose changes!

/check-enforcer override

/check-enforcer override


Optimize rdbEncodeInteger using bit operations

use sign extension mov instructions into 8/16/32 bits int registers to check if value fits
into 8/16/32 bit width.
// return number of bytes needed to encode (1,2,4 or 0 if above)
int canEncodeInBytes(long long value){
    struct SignExtendBits{
        long long bits8: 8;
        long long bits16: 16;
        long long bits32: 32;|
    } v;
    v.bits8 = value;
    if ( v.bits8 == value ) return 1;
    v.bits16 = value;
    if ( v.bits16 == value ) return 2;
    v.bits32 = value;
    if ( v.bits32 == value ) return 4;
    return 0;
}

Compiles to compact code even with -O1 :
function(long long):                           # @function(long long)
        movsx   rcx, dil
        mov     eax, 1
        cmp     rcx, rdi
        je      .LBB8_3
        movsx   rcx, di
        mov     eax, 2
        cmp     rcx, rdi
        je      .LBB8_3
        movsxd  rcx, edi
        xor     eax, eax
        cmp     rcx, rdi
        sete    al
        shl     eax, 2
.LBB8_3:
        ret

Hi @tryfinally do you have an example that shows the perf improvement?

Nope,  but look on the assembly. I know these are micro optimizations.
It would be good to know if you are not welcoming those.
I  would agree that macro optimizations needs per data.

OK let me do some save/load testing to see the impact.
In general optimization only fixes should have some scenario or perf data to justify them. Sometimes perf results can be counterintuitive so its important to keep it data driven.
That said I don’t want to discourage tinkering or contributions, so this is not going to be a super high bar.

63 ^ __builtin_clzll(value) is a better fit there. it's branchless and cross platform.
it returns the msb index (floor of log2) which you can divide by 8 to get byte width.


Add from_schema to ToNumericDataFrameTransformer

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

Project coverage is 100.00%. Comparing base (e891443) to head (33494c5).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #371   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           92        92
  Lines         2352      2361    +9
  Branches       211       212    +1
=========================================
+ Hits          2352      2361    +9

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


Refer to default brigade-server in install.md

Brigade's current install instructions have you install the helm chart as brigade-server instead of brigade. This commit synchronizes the instructions to match.

Sure. I don't have strong opinions about the name (I usually use -n brigade myself). But being consistent across docs is useful to everybody.

Agreed - I was prototyping out a basic workflow with Brigade + Kashti, and i was confused why I couldn't find the container straight-away. Then I realized there was some drift here in the naming between doc sets.

Thanks @blimmer!


Expose ability to accept chef license

Adding ability to accept upcoming Chef license
Description
This is a backwards compatible way to prepare for the upcoming Chef
license change. Set the attribute node['chef_client']['chef_license'] = 'accept' (or 'accept-no-persist' if you do not want persistence and
will always specify this attribute) to accept the Chef license. When you
upgrade to Chef Client 15 the license will be automatically accepted and
there will not be any interruption to service.
Requires running the 'chef_client::config' recipe to work correctly. If
you do not run this recipe add chef_license "accept" to your client
config in whatever way you manage that.
Issues Resolved
N/A
Check List

[ ] All tests pass. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/TESTING.MD
[x] New functionality includes testing.
[x] New functionality has been documented in the README if applicable
[x] All commits have been signed for the Developer Certificate of Origin. See https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD

Should I instead add the attribute under node['chef_client']['config']['chef_license'] since it is only applied by the config recipe?


users shouldn't be allowed to create superusers

Issue Summary
Currently, superusers cannot remove themselves from being a superuser, and equally a user cannot promote themselves to a superuser, but a user with Add/Edit privileges can create a regular user and promote that new user to superuser, thereby giving themselves superuser access. This isn't a problem for simple websites, but it is for sites where you want to give untrusted users some form of user or page control.
Steps to Reproduce

as superuser, create a "user_manager" group with add/edit/delete privileges for User, along with admin view access only.
as superuser, add a new user "non_superuser" and add them to the user_manager group you made.
open a private window and go to your admin user url (e.g. http://localhost:8000/admin/users/), logging in as non_superuser.
as non_superuser, create a new user "future_superuser", and in roles tick administrator, then click add user.
you now have your very own superuser.
to rub salt in the wound, while still as non_superuser, edit your normal superuser account, go to roles, untick "Administrator", and save.
then also as non-superuser, click delete on your normal superuser account and wave it goodbye.

Any other relevant information.
This may not be a bug specifically and instead a design decision, but I do want to raise this topic specifically because I think it presents a potentially dangerous situation due to administrators misunderstanding how powerful users managers are.
Logically, only superusers should be able to add, edit and delete other superusers in all circumstances. It is clearly a group with unlimited power and should be protected appropriately. Right now, all users with user Add privilege are superusers.
For non-superusers deleting superusers, in users.utils user_can_delete_user checks for this:
    if user_to_delete.is_superuser and not current_user.is_superuser:
        # ordinary users may not delete superusers
        return False

but it's made ineffective by the fact non-superusers can demote superusers before deleting them. We shouldn't allow non-superusers to add, edit or delete superusers at all.
Possible workaround
I've been trying to work around the issue while making the most of the existing wagtail codebase, and it seems to me the easiest fixes lie in the files wagtail.users.views.users, wagtail.users.forms and possibly wagtail.users.utils.users for deletes.
UserEditForm already checks for self editing:
def __init__(self, *args, **kwargs):
        editing_self = kwargs.pop('editing_self', False)
        ...
        if editing_self:
            del self.fields["is_active"]
            del self.fields["is_superuser"]

A "self_is_superuser" status can be introduced and passed along to the form constructors, which can be added to the self_editing check on those forms before sending them out or saving them.
e.g.
def create(request):
        ...
        if request.method == "POST":
                form = get_user_creation_form()(request.POST, request.FILES, self_is_superuser=request.user.is_superuser)
                if form.is_valid():
                        ...
        else:
                form = get_user_creation_form()(self_is_superuser=request.user.is_superuser)
        ...

def edit(request, user_id):
        ....
        if request.method == "POST":
                form = get_user_edit_form()(request.POST, request.FILES, instance=user, editing_self=editing_self, self_is_superuser=request.user.is_superuser)
                if form.is_valid():
                        ...
        else:
                form = get_user_edit_form()(instance=user, editing_self=editing_self, self_is_superuser=request.user.is_superuser)
        ...

and in Forms:
class UserCreationForm(UserForm):

    def __init__(self, *args, **kwargs):
        self_is_superuser = kwargs.pop('self_is_superuser', False)

        super().__init__(*args, **kwargs)

        if not self_is_superuser:
            del self.fields["is_superuser"]

    class Meta:
        model = User
        fields = set([User.USERNAME_FIELD]) | standard_fields | custom_fields
        widgets = {
            'groups': forms.CheckboxSelectMultiple
        }

class UserEditForm(UserForm):
    password_required = False

    def __init__(self, *args, **kwargs):
        editing_self = kwargs.pop('editing_self', False)
        self_is_superuser = kwargs.pop('self_is_superuser', False)

        super().__init__(*args, **kwargs)

        if editing_self or not self_is_superuser:
            del self.fields["is_active"]
            del self.fields["is_superuser"]
    class Meta:
        model = User
        fields = set([User.USERNAME_FIELD, "is_active"]) | standard_fields | custom_fields
        widgets = {
            'groups': forms.CheckboxSelectMultiple
        }

There is also an is_superuser field in GroupForm which is currently inactive in the default templates which might also need the same checks.
I've tested the above changes and they seem to work as intended but I'm not sure if there are deeper ramifications that might affect other parts, so I'm posting this here for consideration. In order to perform these checks without modifying the above wagtail functions I can use the before_create_user / before_edit_user hooks and return my own rendered user page, but I'll miss out on positive future updates here unless I constantly monitor it. I'm happy to try and figure out how to produce a pull-request if it's a worthwhile idea.

I've just realized a further problem to the above, even with my proposed solution. A user can still edit superuser passwords!
That means it has to go beyond just removing the is_superuser field, and either not show or not accept forms where the target user is a superuser and the requesting user isn't.

Related: https://github.com/wagtail/wagtail/issues/537#issuecomment-477269836

As per the discussion on #537, the 'reset password' loophole means that there's (probably) no reasonable way to lock down the user management interface to prevent privilege escalation, without totally blocking off all of the useful actions that you'd expect a "non-superuser-level admin" to perform. With that in mind, I think the right way forward is to handle this through better messaging ("only give this permission to fully trusted users"), so I'll close this in favour of #5188.

Solution: https://github.com/wagtail/wagtail/pull/11469


Apply Every Palette to a Single Image

Is your feature request related to a problem? Please describe.
Sometimes I want to see how a variety of palettes look on a single image, but it can be hard to pick which color palettes would look best, since I'm not familiar with the majority of them.
Describe the solution you'd like
It'd be awesome if there were an option to apply every palette on a single image. An example of how this could look would be lutgen apply -p all <image>.png. This would create a folder named  with each applied image being named -. For example, for lutgen apply -p all astronaut.png:
astronaut
├astronaut-gruvbox-dark.png
├astronaut-gruvbox-light.png
├astronaut-rose-pine.png
├astronaut-catppuccin-macchiato.png
...
└astronaut-mono-green-gogh.png
Describe alternatives you've considered
An alternative may be to write a bash script to run lutgen for every color palette supported, however a built-in solution would be not only more convenient, but would also see more use than a script, since the option is built-in.

This should be possible with something like:
mkdir image
lutgen palette names | while read pal; do
  lutgen apply -p $pal image.png
done

It works great, thanks!


The purpose of CoreDispatcher.TryRunAsync is unclear

The doc should be updated to answer these questions:

Why does TryRunAsync exist? When would I use it instead of RunAsync?
What does the bool return value mean?

Adam Comella
Microsoft Corp.

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

ID: 3dfc15ea-3151-c20a-0377-007d07f3300d
Version Independent ID: 2ab27cc1-7ff3-f0e7-850e-0487deef8786
Content: CoreDispatcher.TryRunAsync(CoreDispatcherPriority, DispatchedHandler) Method (Windows.UI.Core) - UWP app developer
Content Source: https://cpubwin.visualstudio.com/DefaultCollection/windows-uwp/_git/winrt-api-build?path=%2fwinrt-api-build%2fwindows.ui.core.coredispatcher.yml&version=GBlive&_a=contents
Product: windows
Git Login: wdg-dev-content
Microsoft Alias: wdg-dev-content

According to the docs for RunAsync, TryRunAsync allows you to detect the case where the method is successful but the callback won't run because the CoreDispatcher is shutting down. So TryRunAsync lets you detect that edge case:
https://docs.microsoft.com/en-us/uwp/api/windows.ui.core.coredispatcher.runasync?view=winrt-18362#remarks

Thanks, the docs are clearer now than when I filed this.
While inspecting the new docs for these methods, I found and filed #1639.


reddit.com redirecting to localhost

remove line "<IP_ADDRESS> www.reddit.com"
from master/alternates/fakenews-gambling-porn-social/hosts

I'm no networking guy, but I don't see the problem with that "code". it does what the hosts file says it does, block all social media including reddit. Also localhost is <IP_ADDRESS>.

Hello Raju @RajuKottedi thank you for your observation.
All our "social" variants block social media which would include Reddit.
I suppose it's helpful to explain why our "social" variants exists.  People who use the "social" variant are expected to fall into at least one of two bins:

Those seeking a distraction-free computing environment.
Those seeking to limit what children are able to see.

That's why we block Reddit in the social media variants.

Thank you for your take Elian @gnuaelianus.
The reason we use <IP_ADDRESS> is explained in the readme pages for our variants.
See the section titled We recommend using <IP_ADDRESS> instead of <IP_ADDRESS>.

Closing!

Hi Steven & Elian @StevenBlack @gnuaelianus  Thank you for your response and explanation.
I should have read the readme pages before opening the issue. @StevenBlack  Once again thank you. Appreciate your work.


Apply CI / CD

Apply Ci

flutter analyze
flutter test
flutter build web

Apply CD

auto deploy to firebase when a new tag is pushed

Separated into smaller tickets


fix: Published navSettings on git import

Description

This PR adds the code for explicitly publishing the nav settings and app layout on importing from git, since the git repo only contains the unpublished resources.

Fixes #25501
Media

A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video

Type of change

Please delete options that are not relevant.

Bug fix (non-breaking change which fixes an issue)

Testing

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration.
Delete anything that is not relevant

[x] Manual
[x] Jest
[ ] Cypress

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Speedbreak features have been covered
[ ] Test plan covers all impacted features and areas of interest
[ ] Test plan has been peer reviewed by project stakeholders and other QA members
[ ] Manually tested functionality on DP
[ ] We had an implementation alignment call with stakeholders post QA Round 2
[ ] Cypress test cases have been added and approved by SDET/manual QA
[ ] Added Test Plan Approved label after Cypress tests were reviewed
[ ] Added Test Plan Approved label after JUnit tests were reviewed

/ok-to-test

/build-deploy-preview

Testing on DP works fine.
https://github.com/appsmithorg/appsmith/assets/25542733/fd7854e8-53f2-450d-8f3e-d6a82e8a06f7
CC: @infinitetrooper


Generate value blocks for AnimationPlayer animations

https://phabricator.endlessm.com/T35564

This makes me wonder if the animation values should be options in a dropdown of the Play block. Otherwise these are string blocks that can be used anywhere else, but are only relevant for playing the animation.

Yeah, I'll give that a try :) In that case it'll definitely need to be on top of #147, and might need some new pieces? But I'll see where I can get it!

@dylanmccall I believe this all got reimplemented in #206, correct? Can we close this?

Yes! Thanks for remembering.


Agent not triggered

Component
agent, web-ui
Describe the bug
I was configuring woodpecker-ci to work with Gitea locally.

Both are deployed on two different servers.
Gitea has SSL
Woodpecker is not setup for SSL

Setup went clean.

I can connect woodpecker with `Gitea
Webhook is triggered

Yet the agent does not execute and is idle (even after the timeout interval)
The docker-compose.yml is configured according to the manual as follows:
version: '3.5'

services:
  woodpecker-server:
    image: woodpeckerci/woodpecker-server:v0.15.3
    ports:
      - 80:80
      - 443:443
      - 9000:9000
    networks:
      - woodpecker
    volumes:
      - woodpecker-server-data:/var/lib/woodpecker/
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    environment:
      - WOODPECKER_OPEN=true
      - WOODPECKER_GITEA=true
      - WOODPECKER_SERVER_ADDR=:80
      - WOODPECKER_LETS_ENCRYPT=${WOODPECKER_LETS_ENCRYPT}
      - WOODPECKER_HOST=${WOODPECKER_HOST}
      - WOODPECKER_ADMIN=${WOODPECKER_ADMIN}
      - WOODPECKER_ORGS=${WOODPECKER_ORGS}
      - WOODPECKER_REPO_OWNERS=${WOODPECKER_REPO_OWNERS}
      - WOODPECKER_GITEA_URL=${WOODPECKER_GITEA_URL}
      - WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT_ID}
      - WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_CLIENT_SECRET}
      - WOODPECKER_AGENT_SECRET="${WOODPECKER_AGENT_SECRET}"

      - WOODPECKER_DATABASE_DRIVER=sqlite3
      - WOODPECKER_DATABASE_DATASOURCE=/var/lib/woodpecker/woodpecker.sqlite
      - WOODPECKER_DEBUG=true

  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:latest
    command: agent
    restart: always
    depends_on:
      - woodpecker-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WOODPECKER_SERVER=woodpecker-server:9000
      - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}

networks:
  woodpecker:
    name: woodpecker_network

volumes:
  woodpecker-server-data:

System Info
- woodpeckerci/woodpecker-server:v0.15.3
- woodpeckerci/woodpecker-agent:latest
- RaspberryOS 64bit

Validations

[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A join our Discord Chat Server or the Matrix room.

They are printed to stdout

The error is somewhat logical
agent_from_doc-woodpecker-agent-1   |
 {"level":"error","error":"rpc error: code = Unavailable desc = connection error: desc = \"transport:
Error while dialing dial tcp: lookup woodpecker-server on <IP_ADDRESS>:53: no such host\"","time":"2022-09-15T14:09:50Z","message":"grpc error: done(): code:
Unavailable: rpc error: code = Unavailable desc = connection error:
desc = \"transport: Error while dialing dial tcp: lookup woodpecker-server on <IP_ADDRESS>:53: no such host\""}

First i would use same tag vor server and agent, as that can cause problems otherwhise ...
And the issue you face is some sort of docker/docker-compose one. docker can not resolve the server to an ip address, you might add a hostname into docker-compose
https://stackoverflow.com/questions/29924843/how-do-i-set-hostname-in-docker-compose

Good idea, yet following the suggestion yields the same error as above. Implementing the docs with localhost seems like a step forward but throws
agent_from_doc-woodpecker-agent-1   | {"level":"error","error":"rpc error: code = Unavailable
 desc = connection error: desc = \"transport: Error while dialing dial tcp <IP_ADDRESS>:9000: connect: connection
refused\"","time":"2022-09-17T22:09:26Z","message":"grpc error: done(): code: Unavailable: rpc error: code = Unavailable
desc = connection error: desc = \"transport: Error while dialing dial tcp <IP_ADDRESS>:9000: connect: connection refused\""}

Can you update the docker-compose at tje issue desc. to the current one

It might be some socker or port issue.
version: '3.5'

services:
  woodpecker-server:
    image: woodpeckerci/woodpecker-server:v0.15.3
    ports:
      - 80:80
      - 443:443
      - 9000:9000
    networks:
      - woodpecker
    volumes:
      - woodpecker-server-data:/var/lib/woodpecker/
      - /var/run/docker.sock:/var/run/docker.sock
    hostname: woodpecker
    restart: always
    environment:
      - WOODPECKER_OPEN=true
      - WOODPECKER_GITEA=true
      - WOODPECKER_SERVER_ADDR=:80
      - WOODPECKER_LETS_ENCRYPT=${WOODPECKER_LETS_ENCRYPT}
      - WOODPECKER_HOST=${WOODPECKER_HOST}
      - WOODPECKER_ADMIN=${WOODPECKER_ADMIN}
      - WOODPECKER_ORGS=${WOODPECKER_ORGS}
      - WOODPECKER_REPO_OWNERS=${WOODPECKER_REPO_OWNERS}
      - WOODPECKER_GITEA_URL=${WOODPECKER_GITEA_URL}
      - WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT_ID}
      - WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_CLIENT_SECRET}
      - WOODPECKER_AGENT_SECRET="${WOODPECKER_AGENT_SECRET}"

      - WOODPECKER_DATABASE_DRIVER=sqlite3
      - WOODPECKER_DATABASE_DATASOURCE=/var/lib/woodpecker/woodpecker.sqlite
      - WOODPECKER_DEBUG=true

  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:latest
    command: agent
    restart: always
    depends_on:
      - woodpecker-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WOODPECKER_SERVER=localhost:9000
      - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}

networks:
  woodpecker:
    name: woodpecker_network

volumes:
  woodpecker-server-data:

Okay, after fiddling around with the networks, I got that working up to another error message. I am not sure how to solve this yet, but I am sure I it can be fixed.
version: '3.5'

services:
  woodpecker-server:
    image: woodpeckerci/woodpecker-server:v0.15.3
    ports:
      - 80:80
      - 443:443
      - 9000:9000
    networks:
      default:
        ipv4_address: "<IP_ADDRESS>"
    volumes:
      - woodpecker-server-data:/var/lib/woodpecker/
      - /var/run/docker.sock:/var/run/docker.sock
    hostname: woodpecker
    restart: always
    environment:
      - WOODPECKER_OPEN=true
      - WOODPECKER_GITEA=true
      - WOODPECKER_SERVER_ADDR=:80
      - WOODPECKER_LETS_ENCRYPT=${WOODPECKER_LETS_ENCRYPT}
      - WOODPECKER_HOST=${WOODPECKER_HOST}
      - WOODPECKER_ADMIN=${WOODPECKER_ADMIN}
      - WOODPECKER_ORGS=${WOODPECKER_ORGS}
      - WOODPECKER_REPO_OWNERS=${WOODPECKER_REPO_OWNERS}
      - WOODPECKER_GITEA_URL=${WOODPECKER_GITEA_URL}
      - WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT_ID}
      - WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_CLIENT_SECRET}
      - WOODPECKER_AGENT_SECRET="${WOODPECKER_AGENT_SECRET}"

      - WOODPECKER_DATABASE_DRIVER=sqlite3
      - WOODPECKER_DATABASE_DATASOURCE=/var/lib/woodpecker/woodpecker.sqlite
      - WOODPECKER_DEBUG=true

  woodpecker-agent:
    image: woodpeckerci/woodpecker-agent:latest
    command: agent
    restart: always
    depends_on:
      - woodpecker-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WOODPECKER_SERVER=woodpecker:9000
      - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
    networks:
      default:
        ipv4_address: "<IP_ADDRESS>"
    extra_hosts:
      - "woodpecker:<IP_ADDRESS>"

networks:
  default:
    ipam:
      config:
        - subnet: "<IP_ADDRESS>/24"
          gateway: "<IP_ADDRESS>"

volumes:
  woodpecker-server-data:

I have a feeling that you forgot to put the woodpecker-server and woodpecker-agent in the same network (in your first config, you want to access host woodpecker-server from the woodpecker-agent container. However there is no network definition in your woodpecker-agent config section.
Then later, it's not correct to use docker internal IP addresses in most cases. You could mapping the ports to the host and let agent communicate with server by the host-ip:mapped-port.

invalid agent token is related to agent-secret

I faced a similar error here, but was related to my WOODPECKER_HOST variable, because of that the server container cannot ran as expected and shows the same error in agent.
After check the error message and format the host variable to the correct format, the containers started like expected.
Above the error message showed before change the variable WOODPECKER_HOST.
Attaching to woodpeckerci-woodpecker-agent-1, woodpeckerci-woodpecker-server-1 woodpeckerci-woodpecker-server-1  | {"time":"2022-10-12T19:22:39Z","message":"LogLevel = warn"} woodpeckerci-woodpecker-server-1  | {"level":"fatal","time":"2022-10-12T19:22:39Z","message":"WOODPECKER_HOST must be <scheme>://<hostname> format"} woodpeckerci-woodpecker-server-1 exited with code 1 woodpeckerci-woodpecker-agent-1   | {"level":"error","error":"rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp: lookup woodpecker-server on <IP_ADDRESS>:53: server misbehaving\"","time":"2022-10-12T19:22:39Z","message":"grpc error: done(): code: Unavailable: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp: lookup woodpecker-server on <IP_ADDRESS>:53: server misbehaving\""} woodpeckerci-woodpecker-agent-1   | {"level":"error","error":"rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp: lookup woodpecker-server on <IP_ADDRESS>:53: server misbehaving\"","time":"2022-10-12T19:22:40Z","message":"grpc error: done(): code: Unavailable: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp: lookup woodpecker-server on <IP_ADDRESS>:53: server misbehaving\""}


Need to update readme details

Need to update Readme.md with recent changes reflecting that it is now available on NPM

Done


Add licence argument to README

So appropriate chunk is added to bottom. Currently only adds Apache, but should accomodate CC-BY as well

Closed with f6b74b35


Update init behavior

When using useReducer, init returns the state:
useReducer(reducer, initialState, () => {
  return {
    someState: true
  };
})

With the current API of this library, you must return the "internal" structure of the store:
useReducerWithSideEffects(reducer, initialState, () => {
  return {
    state: { someState: true },
    sideEffects: [] // you also must include this or else an uncaught exception will occur
  };
})

Users are unable to use Update/UpdateWithSideEffects/etc., because those don't return the correct key: they return newState rather than state.
I suggest refactoring Update/etc. to internally use the key state instead. That way, users of init can use a consistent API with this lib:
useReducerWithSideEffects(reducer, initialState, () => {
  return Update({ someState: true });
})

This change could even be released as a bug fix, I think, since it only changes non-public structures.
I'm curious to hear your thoughts on this @conorhastings !

haven't tested but esseentially something like this? https://github.com/conorhastings/use-reducer-with-side-effects/pull/11

Resolved in 2.0.0-beta.2


Can't add custom pkgs to systemPackages.

Describe the bug
Importing packages from the pkgs directory results in an error.

error: --- EvalError --- nix
at: (13:34) in file: /nix/store/d6dwnk6fnml3l19ch409w8nmvq3hkkrv-source/hosts/niximg.nix
12|   networking.networkmanager.enable = true;
13|   environment.systemPackages = [ pkgs.libinih ];
  |                                  ^
14| }

attribute 'libinih' missing

To Reproduce

Checkout repo
Modify niximg.nix to include the line environment.systemPackages = [ pkgs.libinih ]; and { modulesPath, pkgs, ... }: { at the top.
Run flk img in the nix-shell (after fixing the bug https://github.com/nrdxp/nixflk/pull/64)

Expected behavior
I expected the image to build.
According to DOC.md:

All expressions in both modules/list.nix and pkgs/default.nix are available globally, anywhere else in the repo. They are additionally included in the nixosModules and overlay flake outputs, respectively. Packages are automatically included in the packages output as well.

Additional context
I pulled directly from this repo, latest commit (09f0bbd). Reverting to the commit before seems to work (9f561b8cead52cd7840ca0bcf75def8f9eb9d207).

Fixed by 00b35136c341606eb2428f898b4c8832f331f70d.


rez-bind python erroneously set some PYTHONPATH for python/lib and python/extra

Hi,
I discovered, already some days/week ago, that rez-bind python actually creates a package.py which contains instructions to add to PYTHONPATH the paths to 2 of the "main" libs directories of the python which was bound to. (it's the directories where the os and setuptools modules are available under the python which is bound to).
It (rez-bind) also has copied everything under these 2 paths into the package installation directory of that python.
We so end with  :
../packages/python/x.y.z/platform-linux/arch-x86_64/bin/python  ->  link to the real python binary which was bound to.
But:
../packages/python/x.y.z/platform-linux/arch-x86_64/python/lib
../packages/python/x.y.z/platform-linux/arch-x86_64/python/extra

are now also in PYTHONPATH.
BUT, now anything which use a python under the hood/internally will have to use that PYTHONPATH containing directories to the selected (by rez-env) python own system libs/modules.
We can see that effect like this :
$ python -m site
sys.path = [
    '/home/gregory',
    '/home/gregory/rez/master-2.9.1/packages/python/2.6.6/platform-linux/arch-x86_64/os-CentOS-6.7/python/lib',
    '/home/gregory/rez/master-2.9.1/packages/python/2.6.6/platform-linux/arch-x86_64/os-CentOS-6.7/python/extra',
    '/usr/lib64/python26.zip',
    '/usr/lib64/python2.6',
    '/usr/lib64/python2.6/plat-linux2',
    '/usr/lib64/python2.6/lib-tk',
    '/usr/lib64/python2.6/lib-old',
    '/usr/lib64/python2.6/lib-dynload',
    '/home/gregory/.local/lib/python2.6/site-packages',
    '/usr/lib64/python2.6/site-packages',
    '/usr/lib64/python2.6/site-packages/PIL',
    '/usr/lib64/python2.6/site-packages/gst-0.10',
    '/usr/lib64/python2.6/site-packages/gtk-2.0',
    '/usr/lib64/python2.6/site-packages/webkit-1.0',
    '/usr/lib64/python2.6/site-packages/wx-2.8-gtk2-unicode',
    '/usr/lib/python2.6/site-packages',
]
USER_BASE: '/home/gregory/.local' (exists)
USER_SITE: '/home/gregory/.local/lib/python2.6/site-packages' (exists)
ENABLE_USER_SITE: True

As you can see, given they are in PYTHONPATH, they take precedence over my .local  (USER_SITE) directory.. which is a first not good.
But, if I would have rez-env with something using a python under hood, like nuke for instance, then Houston we have a (big) problem :
because nuke uses its own python, not necessarily compatible with the one/thoses I've bound to.
That is :  nuke starts, it starts its own embedded python, which early import many important modules, like openssl, but then boum because the openssl for one python version isn't compatible with another. and given PYTHONPATH the python under nuke happens so to import the important modules from the python that was resolved in my rez-env call, not from his own python.
It seems to me you're trying, somehow, to do a kind of virtualenv manually (but only a kind of) but the way it is actually triggers the problem(s) I mention / try to explain here. But PYTHONPATH is not done for that. well I mean putting a python system library/directory in PYTHONPATH is calling for problems.. as soon as you have to play with different python versions.
Actually, only doing the link to the python which is bound-to is enough to make it all available.
waiting answer / feedback or question ..
I can propose the PR (which is simply to not do the copy of these dirs and not add them to PYTHONPATH in the package.py which is generated)  if you agree with this ..

It should only add those paths to the PYTHONPATH if you do
rez-env python

Or if one of you package files lists that python as a dependency.  The nuke package shouldn't be loading the rez python package.
If your packages need to list a specific version of python as a dependency (for the purpose of variants), you can list them implicitly, where it won't actually load the package.
In your package.py file, you would do
requires = ['~python-2.7+']

That way variants of compiled python libraries like ssl should choose the correct variant, without actually loading the local python package.

without going into too deep details,
rez-env python (with whatever version specification),
doesn't need/require the overhead that is actually done inside rez/bind/python.py (to do the same effect than if it had not that overhead). on the other side keeping it creates problems.
:s

otherwise the current code of the binding, actually uses the system python (well the one available on PATH) to copy its files from (from the 2 directories identified by os and setuptools modules). Not the one which is actually bound to.
We end up with the python binary of one python version, but (some of) the system modules of another python version..
(I'm using export PATH=path_to_my_rez_installation_rez_subdirectory(:$PATH) :
# export PATH=/home/gregory/rez/master-2.9.1/bin/rez:$PATH
as given/told by rez when you python install.py it (with /home/gregory/rez/master-{version} arg in this case).
)
I already fixed that in my rez clone some days/week ago up to when I realized it is not necessary at all, more over it implies the hard problems that I describe even with that side problem fixed.
and also mentioning that it actually so duplicates the system modules where os.py is located (python2.7 directory most of the time) + the site-packages directory (where setuptools most of the time is there).
Hopefully there is no need of this copy/duplicates. I'm running with that for few days and that solves completely the problem(s) I mention.
really PYTHONPATH is not designed to put the "system" modules directory of a particular python version. A particular python version knows where its system modules are (unless you've manually copied parts - but not all - of a python installation, which you can imagine is not good).
it should only contains third-party packages/modules.

Yo, so a couple of things.
First, I have no problem removing those system paths if that doesn't cause further problems, I'll take a look.
Some background: Packages created with rez-bind aren't really intended for production use, and as such they haven't gotten a lot of love. Python especially - the rez-bind of python is really just a helper to get up and running quickly. You could do a proper installation of python from source and wrap that into a rez package instead: https://github.com/nerdvegas/rez/tree/master/repository/python/2.7.4.
You've touched on a bigger topic when talking about Nuke already containing python. We know there are lots of cases like this, and the challenge is how to deal with vendor-supplied packages in a consistent way. One idea is to introduce the concept of a package 'providing' another package - the nuke package could 'provide' python-2.N, which would then cause rez to drop the standard python package and let nuke deal with it. It's possible to deal with this situation already though, although not quite as elegantly. Consider a python package.py like so:
# python
def post_commands():
    if defined(env._PYTHON_PROVIDED):
        return
    ...

With this approach, you could have nuke require ~python-2.N.N (as @bpabel suggested), but also have it set _PYTHON_PROVIDED, and do whatever other (potentially build-related) things are necessary to expose its own copy of python for other packages to use. Here python only implements post_commands(), to ensure that other packages have a chance to set _PYTHON_PROVIDED first.

This is an interesting problem that gets even more interesting on windows as often ;)
Mostly due to the fact that I have to provide custom-built binaries for binary python extensions in nuke (and other DCCs) and even multiple ones for different versions in some cases due to changing toolchains and python versions. That means that for example there needs to be a nuke specific version of lxml. This creates all sorts of funny problems. For example what if someone wanted an environment to run both nuke and some command line python tools that are launched from nuke. eek. This is something we are discussing currently and some of the discussion here seems helpful. Thanks!

@nerdvegas

Python especially - the rez-bind of python is really just a helper to get up and running quickly.

ok got it. and effectively it's only a simple wrapper to provide access, via rez, to some already available/installed python.

I have no problem removing those system paths if that doesn't cause further problems

I think it doesn't cause further problems. but I'm sure it solves many of them (and which are quite rude to me).
I've read further your comment,
maybe I've to explain a bit how I see my current use case(s) :
I would like to be able to have a rez-env with many tools requested, with some of them being purely binary/compiled (but which can embed their own python), while others which could be python scripts (or any other script language).
But I would like to be able to run some of the scripts with a particular python(or any other language) version ;  say tool X can run with python2.7.3 or 2.7.4 while tool Y wants to run with python2.6.9 (ok or say 2.7.9, we should be able to forget about 2.6 very soon) ; while others with the greatest python version available (maybe with a major specifier at least:  python2.*) (available via a rez package ofcourse).
If we can make available a specific python version with python-major.minor.patch alias (or link being on PATH to the real binary) then we are able to use different python versions in the same env.
and "python" would be the alias (or link) to the actual greatest version available (and resolved).
but I know this isn't something currently possible (to have different versions of the same package in the same env).. I was just wondering..
Going a bit further :  actually each tool could depend on different versions of the same third-party libraries and I would like to be able to handle that.
I see it like that :  for each tool : have a wrapper script (being prepended on PATH and named the same than the actual tool, for consistency, simplicity) inside the env that actually setups all what it needs.
hmm, not sure about all that..
but anyway : we deviate slightly from the purpose of this issue ..

Hey Gregory,
This is basically what 'suites' are for. Rez specifically will resolve to
an environment containing one version of each package, that's called a
"context". A "suite" is exactly what you describe here:
"I see it like that : for each tool : have a wrapper script (being
prepended on PATH and named the same than the actual tool, for consistency,
simplicity) inside the env that actually setups all what it needs."
With a suite, you can store multiple contexts in it; and wrapper scripts
for the tools in those contexts are created, and put into a single 'bin'
dir. When you run the wrapper, it boots into the associated context, and
starts the tool.
Suites rely on shebanged scripts though, so they only work on linux/osx, I
don't recall if you're one of those Windows people or not...!
Take a look into the forum, this has come up before and I've written up
examples of how to create a suite with the 'rez-suite' cli tool. I need to
add this to the docs.
Hth
A
On Fri, Mar 17, 2017 at 2:01 AM, Grégory Starck<EMAIL_ADDRESS>wrote:

@nerdvegas https://github.com/nerdvegas
Python especially - the rez-bind of python is really just a helper to get
up and running quickly.
ok got it. and effectively it's only a simple wrapper to provide access,
via rez, to some already available/installed python.
I have no problem removing those system paths if that doesn't cause
further problems
I think it doesn't cause further problems. but I'm sure it solves many of
them (and which are quite rude to me).
I've read further your comment,
maybe I've to explain a bit how I see my current use case(s) :
I would like to be able to have a rez-env with many tools requested, with
some of them being purely binary/compiled (but which can embed their own
python), while others which could be python scripts (or any other script
language).
But I would like to be able to run some of the scripts with a particular
python(or any other language) version ; say tool X can run with python2.7.3
or 2.7.4 while tool Y wants to run with python2.6.9 (ok or say 2.7.9,
we should be able to forget about 2.6 very soon) ; while others with the
greatest python version available (maybe with a major specifier at least:
python2.*) (available via a rez package ofcourse).
If we can make available a specific python version with
python-major.minor.patch alias (or link being on PATH to the real
binary) then we are able to use different python versions in the same env.
and "python" would be the alias (or link) to the actual greatest version
available (and resolved).
but I know this isn't something currently possible (to have different
versions of the same package in the same env).. I was just wondering..
Going a bit further : actually each tool could depend on different
versions of the same third-party libraries and I would like to be able to
handle that.
I see it like that : for each tool : have a wrapper script (being
prepended on PATH and named the same than the actual tool, for consistency,
simplicity) inside the env that actually setups all what it needs.
hmm, not sure about all that..
but anyway : we deviate slightly from the purpose of this issue ..
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/nerdvegas/rez/issues/399#issuecomment-287085044, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABjqSlfrgE51lYOZitQFZXz_0YwoLcoiks5rmU7OgaJpZM4MdKID
.

hey @nerdvegas
ok I'll have to look and try the suites then. thx.

Suites rely on shebanged scripts though, so they only work on linux/osx, I don't recall if you're one of those Windows people or not...!

we have all:  linux + osx + windows ;)

Hello @nerdvegas.
I'm doing a brand new setup of rez, and got into a similar situation as @gst above (and his suggestion to not include the pythonpath for the python package does seem to solve the issue).
As I keep setting up packages, I'm running into a few situations where having a "provides" keywork would really come in handy.
For example I'm setting up Qt.py right now. It needs either PySide2, PyQt5, PySide or PyQt4 to run.
I could make these variants, but Nuke provides its own PySide (1 or 2 depending on version) so I wouldn't really need to add the dependency.
I could make weak requires for all 4 packages, but then I can't just 'rez-env qtpy'.
I was also looking at the option to do a late requires() with checks to if in_context() and "nuke" in request:, but I would need to do conditions for all dccs, and  I don't want my qt package to be aware of my dccs.
I can't figure out what the best approach is, but it sounds to me like the 4 variants would be the correct approach, with nuke indicating that it 'provides' PySide2.
I'm sure I'm not the first person hitting this situation but the documentation isn't super clear to me as what the best approach is. @mottosso has quite a few examples that are complementing the documentation nicely with his own bleeding-rez fork, and I wish I could give a try to rez-scoopz but the machines don't have internet access.

Found out the above is #1100

@nerdvegas
Is Rez still adding/inserting into PYTHONPATH some python system libs directory(ies) ?
if yes I'll leave this open. If not I'll close ;)


All circuit examples in library should use MPL drawer

Information

Qiskit Terra version: master
Python version:
Operating system:

What is the current behavior?
As agreed to by @ajavadia and @jaygambetta, all the circuit drawings in the docs should use MPL drawer.  This would also prevent issues like #4371.
Steps to reproduce the problem
What is the expected behavior?
Suggested solutions

MPL drawer is not been tested and it's very hard to move forward with the amount of pending PR affecting it. We need to to prioritize testing on MPL asap.

Could I work on this issue?

Sure. Make sure you check the results with tox -edocs

There are three options for draw a circuit diagram object using matplotlib:

add the %matplotlib inline magic to the beginning of the jupyter-execute:: code block and then simply: circuit.draw()
select the output method 'mpl" to use for drawing the circuit: draw(output='mpl')
use a simplified version of the previous call: draw('mpl')

Do we have any preferred option?

There are situations in the source code where the circuit is not dynamically generated inside the jupyter-execute:: code block but  manually represented. For instance in QuantumCircuit.assign_parameters
Examples:

...
How should them be treated? adding a jupyter-execute:: code block? leave the current representation as it is?

Finally the option is to use circuit.draw('mpl') and go through jupyter as much as possible

Following offline discussion, I'm going to close this. The consensus was that inline text visualizations in docstrings are valuable to both developers looking at the source and to users looking at help or docstrings in their IDE or jupyter (in addition to being viewable on qiskit.org) and removing them would make their contents harder in general to access.


Gremlin plugin

Taken by Gremlin ML to implement plugins:
The best I have at the moment is an example in Furnace, which I think is pretty easy to follow:
https://github.com/tinkerpop/furnace/tree/master/src/main/groovy/com/tinkerpop/furnace/groovy
The key class is this:
https://github.com/tinkerpop/furnace/blob/master/src/main/groovy/com/tinkerpop/furnace/groovy/FurnaceConsolePlugin.groovy
You would create an OrientConsolePlugin.groovy and do appropriate OrientDB imports that weren't already being imported via Gremlin.  A key line will be this:
https://github.com/tinkerpop/furnace/blob/master/src/main/groovy/com/tinkerpop/furnace/groovy/FurnaceConsolePlugin.groovy#L33
where you "load" the additional orientdb methods to extend the Gremlin language with.  You can see my class here:
https://github.com/tinkerpop/furnace/blob/master/src/main/groovy/com/tinkerpop/furnace/groovy/Furnace.groovy
which just sorta references two other "loaders".  You can see in this example that I dynamically add the "generateInto" method to the DistributionGenerator class in Furnace.
https://github.com/tinkerpop/furnace/blob/master/src/main/groovy/com/tinkerpop/furnace/groovy/loaders/DistributionGeneratorLoader.groovy#L23
In this case with "shortest path" I suspect the code in your loader would be more like:
Vertex.metaClass.oShortestPath = { Vertex v2, Direction d ->
delgate.getGraph().getRawGraph().command(new OSQLSynchQuery(
"select shortestPath("+delegate.getId()+","+ v2.getId()+",d)"));
}
You'd have to cast "delegate" to Vertex maybe and convert the Blueprints Direction enum to a String that OrientDB accepts i guess, but hopefully that conveys the idea.  You can always look at Gremlin code too for more examples of how to work with metaClass:
https://github.com/tinkerpop/gremlin/blob/master/gremlin-groovy/src/main/groovy/com/tinkerpop/gremlin/groovy/loaders/ElementLoader.groovy#L58
Let me know if you have other questions.

Close this waiting for TP3 support.


Prepare for release 22.11.0

@AlexWaygood Do you want to do the tagging?

Just did it: https://pypi.org/project/flake8-pyi/
Sorry, was AFK for a little bit!


Add information about styling to the README file

Our team faced some difficulties with implementation and design, especially during the dragging state.
After some research we understood the mechanism behind the behavior of this awesome module, and we thought we could share it in case others might face similar issues.

Fantastic, thank you!


Feature/ij 26

Universal footer across application with social links & Copyright

I think I prefer the social buttons being white, although you lose the contrast with the background, the contrast is maintained with the icon.
Other than that, it looks good to me.
On a more general colour scheme note, I'm still not a massive fan of the grey background for the main content. I feel like its quite bleak. But thats something for another time.


Craft content for landing page

When first entering the site the landing page should be inspiring and welcoming.

[x] Landing page should have a visually striking 3d effect banner, or a video.
[ ] Latest news should be displayed, be it news, new locations, new quizzes or future features.

Decided not display latest news. Landing page may be changed in future issues, but as of now this is not important. Closing issue.


Newline in table is not replaced by a space.

Hello! There is such a problem. Newline is not replaced by a space.
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
ocr = TesseractOCR(n_threads=1, lang="eng", psm=11)
pdf = PDF(path_to_pdf,           pages=[0],           detect_rotation=False,           pdf_text_extraction=True)
pdf.to_xlsx(dest='table.xlsx',             ocr=ocr,             implicit_rows=True,             borderless_tables=False,             min_confidence=50)

Result -> Hello my friendJohn
Maybe you know how to solve this?

It works as intented, you have to click this button in Excel.

I did not allow return lines when formating data to excel.
I will add it

Should be fixed in the latest release


The navbar animation makes me feel epileptic

The animation of the navigation bar in a post makes me feel epileptic. During the transitions, the color of the text and background are both white, and the menu seems disappeared. I think it could be more "beautiful" by removing the transition.
With transition
Original version.

Without transition
Only the animation is disabled.

Without animation + different color
The animation is disabled and the background color is the same as the left border color.

Without animation + interchanged colors
The animation is disabled and the menu background and text colors are interchanged.

I think at least the animation must be removed. About the colors, pick those you prefer.

Yeh. You are right. I prefer the last one "Without animation + interchanged colors", which one do you prefer?

The two last are fine (no preference).

I did a quick updates. Thanks for your suggestion :D

But you only have changed the color. The issue is more related to the transformation. I think you forgot to remove it.

Yeh!  I mixed with my own sites files :(

👍 Thank you!


fix(levm): move code deposit cost of CREATE

Motivation
We were miscalculating the gas of the create() because we always added the code_deposit_cost to the gas. We should do that only when the contract is successfully created.
Description

Change name from create() to generic_create()
Remove the code_deposit_cost fromcompute_gas_create(), that is responsible for calculating the base gas of the create. This is now done in case that TxResult::Success in create().
Check the prefix of the deployed code. If it's 0xEF, we return an error.
We were assigning the bytecode of the new account as soon as it was created. I removed that step and now create it with empty bytecode. Now it is assigned only when it completes successfully.

I moved the gas deduction to the callframe that does the contract creation, this way if the gas is not enough to pay for the code_deposit_cost, the callframe that reverts is the one that does contract creation.
This was done by adding a new field in the callframe to keep track if the callframe is from a CREATE or CREATE2 opcode.
The check is now done in the return opcode if the callframe is from create, we try to deduct the code_deposit_code and revert if it's not enough.


Typo in sample code in uxp-variant of button

Submit an issue
Topic
This is an issue regarding:

[ ] The tutorials contained within this repo.
[x] The samples contained within this repo.

Versions

[ ] Supported XD version(s):

Description of the issue
Cancelis used in sample code, but Delete is displayed in the resulting image.
website
git repo

Proposed solution or attempted solutions that failed
update the code
https://github.com/AdobeXD/plugin-docs/blame/master/reference/ui/elements/buttons.md#L112-L115
<button uxp-variant="warning">Delete</button>
<button uxp-variant="warning" uxp-quiet="true">Delete</button>

@yoshikinoko thanks for catching this. addressed - b3c7d438658bd0be3d265bb3322ddccaf530a294


Icon enum values point to the wrong icons

icons: `.times`

icons: .inbox, .user
Device: iPhone XR Simulator
Xcode 10.1
Swift 4.2

Thanks for reporting. Mind submitting a PR to fix it?

For now, the workaround would be to upgrade to FontAwesome Swift 5 and use Xcode 10.2


Convert to Static Site

I think this is a good candidate for a static site because

the dataset is small (20KB for aggregates by department/ethnicity)
the data only changes once a year
a build step to deploy the site would allow us to plug in a script that did all our preprocessing

Static sites are free to host and dead simple to deploy, at least to Github pages, faster, and have a lower knowledge surface. There’s no point in overcomplicating this with RethinkDB and Flask when we’re deploying the same lump of HTML and JS each time.
Check out a hacky POC https://github.com/mshenfield/inclucivics/tree/site-as-static-content.
Right now I'm just manually copying JSON or fetching it where a real static site generator would inline it. Once something is working with the data we have, I think next steps would be to pick a simple static site generator. We need something with

bundling
minification
a hook to use for preprocessing data

We can augment our working hacked together version to use whatever generator we choose. A Node based static generator would be preferable so someone doesn't have to know two languages - the python processing is pretty minimal and could be converted to JS easily.
Todos for hacky version:

[x]  Get "Custom Reports" working with output of import_data.py

Closed by #109


[ZEPPELIN-3198] UI should not show Version/GIT Control if the same if not supported

What is this PR for?
Currently, UI shows an option for version/GIT Control even when it is not supported by the underlying implementing storage configuration.
It is only after users try to save a commit and get an error "Couldn't checkpoint note revision: possibly storage doesn't support versioning. Please check the logs for more details.".
So, if implementing storage configuration doesn't support git storage, UI should not show those options.
What type of PR is it?
[Improvement]
What is the Jira issue?

ZEPPELIN-3198

How should this be tested?
On using "org.apache.zeppelin.notebook.repo.GitNotebookRepo"  for zeppelin.notebook.storage  user should see revision/version control option, for rest of the others e.g. "FileSystemNotebookRepo" user should not see that option
Questions:

Does the licenses files need update? N/A
Is there breaking changes for older versions? N/A
Does this needs documentation? N/A

The methods for the versioning of the notes are defined at interface level in NotebookRepo.java:

Revision checkpoint(String noteId, String checkpointMsg, AuthenticationInfo)
Note get(String noteId, String revId, AuthenticationInfo)
List revisionHistory(String noteId, AuthenticationInfo)
Note setNoteRevision(String noteId, String revId, AuthenticationInfo)

They could be implemented by a non-git repository, for example a repository that saves the notes in S3 and its versioning information in a database or something like that. So i guess a better solution would be a method in NotebookRepo.java that indicates if the implementation supports versioning (maybe doesSupportVersioning()); and use that method to show or hide the versioning feature.
What do you think?.

Yes, I believe that is exactly what I'm trying to do over here, for example in S3NotebookRepo, since none of checkpoint, get, revisionHistory, or setNoteRevision is implemented (https://github.com/apache/zeppelin/blob/master/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/repo/S3NotebookRepo.java#L292) hence for the same the method isRevisionSupported returns false. Let me know if I'm missing out on a case.

@felixcheung @zjffdu  can you please help review this?

It sounds a little redundant to ask user to both implement these version related method and isRevisionSupported. How about creating a sub-interface of NotebookRepo which support version control ? And if NotebookRepo using is the implementation of this sub-interface, we show version control on UI

@zjffdu have made the suggested changes, waiting for CI, does this looks good?

Shall I merge this, if no more discussion?

LGTM

Thanks for the review will merge this if no more discussion.


feat: keyword search draft

My first react code, so be prepared.
It doesn't update the search input text (not sure how to do that), and I had to hard-code my relay as the 'search relay'. When the NIP is approved and some other relays implement this it could be generalized. Or maybe if not many relays support it then we could add a 'search relays' setting to let people have control.

Hey thanks for the PR, actually looks fine, can you delete the package-lock file? We dont use NPM we use yarn
You can install deps with yarn install

Hey thanks for the PR, actually looks fine, can you delete the package-lock file? We dont use NPM we use yarn
You can install deps with yarn install

Done.


Unable to map caps lock to control

I've tried both keycodes 59 and 62 but no luck.  It does disable caps-lock but it doesn't work with control+{anything).  Other mappings work like option, command, esc.

Did you disable Control key by Keyboard Prefs?
http://pqrs.org/macosx/keyremap4macbook/img/capslock.png
The key event is modified by following steps.
The sequence of event handling

Device sends the input event.
Modify the input event by PCKeyboardHack.
Modify the input event by "System Preferences > Keyboard > Modifier Keys..."
Modify the input event by KeyRemap4MacBook.
Send the input event to Applications.

--
Takayama Fumihiko<EMAIL_ADDRESS>On 11/11/20 17:17, Chris Nicola wrote:

I've tried both keycodes 59 and 62 but no luck.  It does disable caps-lock but it doesn't work with control+{anything).  Other mappings work like option, command, etc.

Reply to this email directly or view it on GitHub:
https://github.com/tekezo/PCKeyboardHack/issues/5

Ah sorry I was previously using it to map Esc for VI.  I didn't realize you could remap it to control via the standard system preferences.  Thanks for that


Need to investigate if upnp igd and NAT PMP will work with Windows

Given it binds a port to accept inbound input we need to see if it is allowed through the Windows firewall without any need for an exception during the runtime

confirmed, we need a firewall rule for this, will need to use a consistent port for the inbound upnp igd and natpmp

f8256c9419ce1148e8c84425ef7b28f9a9a399af fixes this


seal-status: x509: certificate signed by unknown authority

Following solution guide https://cloud.google.com/solutions/using-vault-for-secret-management, but I got the following error when running the vault unseal command.
Error checking seal status: Get https://<IP_ADDRESS>:8200/v1/sys/seal-status: x509: certificate signed by unknown authority
I made sure these variables were set, but I must be missing something.
export VAULT_ADDR=https://<IP_ADDRESS>:8200
export VAULT_CACERT=/etc/vault/vault-server.ca.crt.pem
export VAULT_CLIENT_CERT=/etc/vault/vault-server.crt.pem
export VAULT_CLIENT_KEY=/etc/vault/vault-server.key.pem

I got this issue this morning when trying this for the first time.  Seems like this hasn't been fixed.  I got around it by running the following to unseal:
sudo vault unseal -tls-skip-verify


AttributeError: 'Map' object has no attribute 'remove_colorbars'

The version installed with conda doesn't seem to have this function.
Can you double-check?
Thanks,
Daniel

This new function has not been released to PyPI yet. You need to install the development version from GitHub using geemap.update_package(). Restart the kernel to take effect.


Update install.md

again, small typo. Very excited for this project!

Thanks for making Kulala better for everyone :heart_eyes:


Josue

added descriptions to pit scouting.
"in pounds" for Weight and "in inches" for length, width, and height

good after local test on laptop. can push to GitHub


ESP32C6 unable to use nimble - fatal error: esp_nimble_hci.h: No such file or directory (IDFGH-13708)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v5.3.1
Operating System used.
Linux
How did you build your project?
VSCode
If you are using Windows, please specify command line type.
None
What is the expected behavior?
Load component on  ESP32C6
What is the actual behavior?
Error is thrown
fatal error: esp_nimble_hci.h: No such file or directory
   10 | #include "esp_nimble_hci.h"

Steps to reproduce.

Set target platform as ESP32C6
Enable bluetooth
Enable nimble
Build

Build or installation Logs.
No response
More Information.
No response

Hi @rkonopski ,
Can you please share more information, since all IDF examples do compile cleanly for ESP32C6.

Please share your sdkconfig
Is this your own application ? if yes , have you ensured that correct files are getting included ?
Please ensure you have synced to latest code and have all needed codebase

Hi @rkonopski , did you get a chance to check on this further ?

I confirm.
OK: esp32s , esp32c3
NO OK: esp32c2 , esp32c6

Hi @maksms ,
This is expected. This is because esp-nimble-hci.h  includes defination which are needed for VHCI layer between NimBLE host and ESP bluetooth controller.  esp32 / c3/ s3 use VHCI interface, rest chips don't.
What functionality do you want to do by including esp_nimble_hci.h file ?

@rahult-github
thank you, I really don't need this file for my task

Closing issue per above comment . Please feel free to reopen in case issue is still observed.


[KBM] Localize key names

We do not localize key names so far. We need to identify which keys we want to localize(if any). For example, we have None, Disable artificial keys that should be localized. Maybe letters should be localized as well. Or should we go further and have different keyboard layout for different languages?
https://github.com/microsoft/PowerToys/blob/d1372af581d74298447d14ad7116b6f7f4a1a04b/src/common/keyboard_layout.cpp#L104-L218
📷 Screenshots

Are there any useful screenshots? WinKey+Shift+S and then just paste them directly into the form

This also applies to the key names shown in Settings, since the code for retrieving the key names is in common and interop.

We need to be very careful here, since in many languages some of those keys should not be localized, and different localized keyboard might have different names for some keys.
It would also required to create maps for all languages.

playing devil's advocate here, what is an example where the layout is?  I just did a look for japanese, french and russian. things like enter, ctrl, and what not were not loc'ed.

while older, /dup https://github.com/microsoft/PowerToys/issues/9482


refactor(bdev/lock): add range lock trait

Makes the range locking an interface which can be implemented by different types.

What's the rationale for this change? Perhaps you can update in PR description.

What's the rationale for this change? Perhaps you can update in PR description.

done

I ended up not requiring this, so closing it for now.


Terminal overwriting hard link to settings.json

Windows Terminal version
1.15.3465.0
Windows build number
10.0.19045.2546
Other Software
No response
Steps to reproduce
Replacing settings.json with a hard link to an existing settings file while the terminal is running causes weird behavior. The hard link is broken shortly after it is created. Then it looks like the previous settings file and newly linked file are merged and written out as a new, unlinked, combined settings file.
I ran into this accidentally because the quake window was still open and I didn't realize it.
Repro:

Open terminal
New-Item -ItemType HardLink -Force -Path settings.json -Target my-synced-settings.json
(Get-Item settings.json).LinkType -eq "HardLink" is true
Start-Sleep -Milliseconds 1000
(Get-Item settings.json).LinkType -eq "HardLink" is now false

But if you do it a second time it works

New-Item -ItemType HardLink -Force -Path settings.json -Target my-synced-settings.json

(Get-Item settings.json).LinkType -eq "HardLink" is true

Start-Sleep -Milliseconds 1000
(Get-Item settings.json).LinkType -eq "HardLink" is true

Obviously I should be killing terminal processes before doing this, so maybe it's a bit moot. The terminal seems to respect a hard link just fine if it's already there when it starts up. Still the nuke-and-merge behavior is certainly surprising.
Expected Behavior
If a new settings.json is copied over the existing one the terminal should not merge with or overwrite it.
Actual Behavior
If a new settings.json is copied over the existing one the terminal overwrites it with a merged copy

Obviously I should be killing terminal processes before doing this, so maybe it's a bit moot. The terminal seems to respect a hard link just fine if it's already there when it starts up.

Yea, that's really the crux of the issue here. I'm not sure how possible it is for us to determine that a file was replaced by a hard link.
This is where we set up the hot-reload handler
https://github.com/microsoft/terminal/blob/7d0baa79460046b64a8814b5706e92fecfdf5496/src/cascadia/TerminalApp/AppLogic.cpp#L902-L910
_reader is a wil::unique_folder_change_reader_nothrow, from https://github.com/microsoft/wil. I don't think I see anything about hard links anywhere on that repo. Hmm.

Changing the settings file in any way causes it to be reloaded and potentially rewritten to disk. Every time the settings are written to disk the hardlink will be replaced by us. This is the code responsible for it: https://github.com/microsoft/terminal/blob/7d0baa79460046b64a8814b5706e92fecfdf5496/src/cascadia/TerminalSettingsModel/FileUtils.cpp#L290-L322
There's no way to fix this, because when we write our settings we don't want to mutate the original unless we're 100% certain that the write operation was a success. As such we can't write to the original (hardlinked) file. We also can't figure out where the hardlink "points to", because hardlinks have no "target" - they're just alternative file names pointing to the same data on disk.
But as you can see in the code above, we do support an alternative already: symlinks. Those do point to a target, allowing us to replace the targeted file atomically.

Oh, I see, even if I kill the process it's going to blow up the hard link file anyway because it rotates a new file into place when saving.
Any chance it's possible to save new settings the other way around:

Backup the current file to a new file
If that succeeds replace the contents of the current file

This avoids recreating the file. I suppose the backup can succeed and the write can fail, but that seems like an edge case of an edge case and there's always a valid backup to restore from if it occurs.
Symlinks require admin rights on Windows but hard links don't, which is a bummer.
Symlinks don't seem to work, unless I'm doing something wrong? I get the same result with cmd and mklink.
$terminalSettings = $env:LOCALAPPDATA + "\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
New-Item -ItemType SymbolicLink -Force -Path $terminalSettings -Target res/windows-terminal-settings.json

Also, I think there's a reasonable case to be made that if you copy a new settings file over the existing one the terminal should just load that file and apply the settings without the merge-and-resave behavior. That's independent of the symlink/hard linking concern. I'm guessing it's doing something like loading the new settings, applying them to the current state, then writing out what's in memory, which is effectively the old and new settings merged together. As a user it's not particularly clear to me why that's desirable.

Any chance it's possible to save new settings the other way around:

It's not a bad idea, but part of the reason we save settings the way we do is that it is atomic. There's no middle state where there is an empty file (after opening it with truncation) or one that is partially written during which Terminal--or the OS--could be interrupted.

What's wrong with this file? What settings do you want to keep intact? The only things that come to my mind are formatting, alphabetical order, and comments. Or perhaps it has to do with the long path to the settings file?

One way to fix this would be to enumerate all of the links to the file before starting the update, and after the rename for the settings file, repeat this for all other links (create a new link in a different directory, rename over the previous link.)  Once the final link is replaced, the original file is gone.
Obviously this assumes all of the other directories can be modified, which is also true for the symbolic link handling code.  And currently, the hardlink enumerate API is not publicly documented, although it really should be available in a supported form.  The internal form has existed since Vista (see fsutil hardlink list.)
I'm not meaning to say this should be addressed, but it could be addressed.  I doubt many tools can save to one hardlink without disrupting the set, for the same reason as the code here.

Should I open a separate issue for symlinks not working? It sounds like those are intended to be supported.

Migrating a hardlink however is a bit more annoying. It requires a call to NtSetInformationFile of type FileLinkInformationEx. It also makes me wonder whether changing hardlinks automatically without user intervention isn't kind of a poor, unexpected behavior as well... Is there any particular reason not to use symlinks for this?


iOS: Plugin does not start

Trying to init PushNotification (after deviceready):
PushNotification.init({
     android: {senderID: 1234, iconColor: '#9dd442', icon: 'ic_stat_notification'},
     ios: {alert: true, badge: true, sound: true}
});

results to:
Can't find variable: PushNotification.

Setup: fresh installation of<EMAIL_ADDRESS>phonegap-plugin-push (1.4.5)
Tried on iPhone 6s iOS 9.1 and iPhone 5 iOS 8.4.1 (both on UiWebView)
Other plugins:

xcode console output:
2015-12-10 11:34:01.372 [2007:2524478] DiskCookieStorage changing policy from 2 to 0,         cookie file: file:///private/var/mobile/Containers/Data/Application/976B8EE0-F292-4776-876D-    BCD76D9C0446/Library/Cookies/Cookies.binarycookies
2015-12-10 11:34:01.571 [2007:2524478] Apache Cordova native platform version 3.9.2 is     starting.
2015-12-10 11:34:01.575 [2007:2524478] Multi-tasking -> Device: YES, App: YES
2015-12-10 11:34:01.586 [2007:2524478] Unlimited access to network resources
2015-12-10 11:34:01.841 [2007:2524478] Starting Facebook Connect plugin
2015-12-10 11:34:01.842 [2007:2524478] [CDVTimer][facebookconnectplugin] 0.865042ms
2015-12-10 11:34:01.929 [2007:2524478] [CDVTimer][file] 87.269008ms
2015-12-10 11:34:01.931 [2007:2524478] [CDVTimer][googleplus] 0.431001ms
2015-12-10 11:34:01.932 [2007:2524478] [CDVTimer][keyboard] 0.652015ms
2015-12-10 11:34:02.233 [2007:2524478] [CDVTimer][splashscreen] 299.897969ms
2015-12-10 11:34:02.245 [2007:2524478] [CDVTimer][statusbar] 12.162983ms
2015-12-10 11:34:02.508 [2007:2524478] [CDVTimer][socialsharing] 262.291968ms
2015-12-10 11:34:02.662 [2007:2524478] [Crashlytics] Version 3.4.0 (92)
2015-12-10 11:34:02.737 [2007:2524478] [CDVTimer][crashlytics] 228.227973ms
2015-12-10 11:34:02.737 [2007:2524478] [CDVTimer][TotalPluginStartup] 896.835983ms
2015-12-10 11:34:03.356 [2007:2524478] Resetting plugins due to page load.
2015-12-10 11:34:03.471 [2007:2524478] Finished load of: file:///private/var/mobile/Containers/Bundle/Application/0BCA2806-1CB7-4D08-88BB-7423887F425A/App.app/www/index.html
2015-12-10 11:34:03.485 [2007:2524478] Resetting plugins due to page load.
2015-12-10 11:34:03.496 [2007:2524478] Failed to load webpage with error: The requested URL was not found on this server.

Same setup works very good on android.
Any ideas?

@kaynz Did you wait for the deviceready event before calling the init method?

Yes.

@kaynz then it seems like something went wrong in the installation. Open the /platforms/ios folder and see if the push.js file got copied over correctly. Also, check to make sure that the platforms/ios has cordova_plugins.js has an entry for PushNotification as well.

Should it be exactly in /platforms/ios or any subdir? Can't find a Push.js in /platforms/ios

@kaynz the files would be at:
platforms/ios/www/plugins/phonegap-plugin-push/www/push.js
platforms/ios/www/cordova_plugins.js

Hm, there is no plugins subdir in www neither a cordova_plugins.js.

Okay, got em. There is no phonegap-plugin-push folder in www/plugins. And there is no reference to push in cordova_plugins.js

@kaynz right so it seems like it never got installed for iOS which is weird in itself. Do:
cordova plugin rm phonegap-plugin-push
cordova plugin add phonegap-plugin-push
to force it to be installed. If that fixes your problem please close this issue.

Just noticed that Im getting following error at cordova plugin add phonegap-plugin-push:
Cannot find module 'cordova-common/src/ConfigParser/ConfigParser'

Okay, the bug is as following:
If you platform rm/add, the plugin does not get installed.
If you plugin rm/add, the plugin gets installed.

@kaynz can you let me know exactly what version of cordova/phonegap you are using and the detailed steps to reproduce the issue? I want to see if this is a bug in Cordova CLI.

cordova 5.4.1
Steps:
cordova plugin add phonegap-plugin-push
cordova platform rm ios
cordova platform add ios
Should do it

@macdonst By the way, metadata is now generated mainly to platforms/ios/platform_www/ instead of
platforms/ios/www/. It is only copied over after that from the former to the later.
Also, I'm pretty sure that's an issue with a bad installation of cordova by npm. Can you please try the following?
npm rm -g cordova
npm cache clean cordova
npm i -g cordova

I cleaned up:
npm rm -g cordova
npm cache clean cordova
rm -rf node_modules/*

Installed cordova:
npm install -g cordova

After that, I added ios platform:
App:hybrid App1$ cordova platform add ios
Adding ios project...
Running command: /Users/App1/.cordova/lib/npm_cache/cordova-ios/3.9.2/package/bin/create /Users/App1/App/hybrid/platforms/ios de.App App --cli
iOS project created with<EMAIL_ADDRESS>Running command: /Users/App1/App/hybrid/hooks/after_prepare/010_add_platform_class.js /Users/App1/App/hybrid
add to body class: platform-ios
add to body class: platform-ios
Discovered plugin "SplashScreen" in config.xml. Installing to the project
Installing "com.borismus.webintent" for ios
Installing "cordova-plugin-camera" for ios
Installing "cordova-plugin-crosswalk-webview" for ios
Installing "cordova-plugin-device" for ios
Installing "cordova-plugin-device-motion" for ios
Installing "cordova-plugin-device-orientation" for ios
Installing "cordova-plugin-disable-bitcode" for ios
Installing "cordova-plugin-facebook4" for ios
Installing "cordova-plugin-file" for ios
The Android Persistent storage location now defaults to "Internal". Please check this plugins README to see if you application needs any changes in its config.xml.
If this is a new application no changes are required.
If this is an update to an existing application that did not specify an "AndroidPersistentFileLocation" you may need to add:
"<preference name="AndroidPersistentFileLocation" value="Compatibility" />"
to config.xml in order for the application to find previously stored files.
Installing "cordova-plugin-file-transfer" for ios
Dependent plugin "cordova-plugin-file" already installed on ios.
Installing "cordova-plugin-geolocation" for ios
Installing "cordova-plugin-globalization" for ios
Installing "cordova-plugin-googleplus" for ios
Installing "cordova-plugin-gpslocation" for ios
Installing "cordova-plugin-keyboard" for ios
Installing "cordova-plugin-media" for ios
Dependent plugin "cordova-plugin-file" already installed on ios.
Installing "cordova-plugin-network-information" for ios
Installing "cordova-plugin-shake" for ios
Dependent plugin "cordova-plugin-device-motion" already installed on ios.
Installing "cordova-plugin-splashscreen" for ios
Installing "cordova-plugin-statusbar" for ios
Installing "cordova-plugin-vibration" for ios
Installing "cordova-plugin-webserver" for ios
Installing "cordova-plugin-whitelist" for ios
Installing "cordova-plugin-x-socialsharing" for ios
Installing "org.apache.cordova.crashlytics" for ios

As you can see in the logs, the push plugin is fully ignored

I think the problem is that you are not saving on the config.xml file when installing the plugin.
That's why when you rm/add platform it does not get installed.
Please try cordova plugin add phonegap-plugin-push --save

Okay, this
cordova plugin add phonegap-plugin-push --save

resulted into
<plugin name="phonegap-plugin-push" spec="~1.4.5"/>

in config.xml
But the plugin is still missing after platform rm/add.

It should say something in the log, an attempt to install it, if it is on the config.xml file.

@kaynz after you do a cordova build ios do you see the files copied into the platforms directory?

Files are still missing  after cordova build ios =/

Interesting: If I run following on my windows machine, it's working:
cordova platform add ios

result:
Installing "phonegap-plugin-push" for ios

Something wrong with the plugins/ folder perhaps.
try the following please:
rm -rf plugins/
cordova platform rm ios
cordova platform add ios

Thanks.
rm -rf plugins/

worked. I can platform rm/add as much as I want now.


Integration tests: add a way for intelligent comparison of files of different formats

IntegrationTestSpec is hardwired to text files and bam files but compares them byte-by-byte. We need more digested way of comparing files to remove the brittleness of md5 while retaining the ability to notice failures.

Includes https://github.com/broadinstitute/hellbender/issues/375

:+1:

@droazen can you clarify the requirements - what file formats need to be comparable and how? This will influence how much work this ticket is going to be and how soon we'll get to it.

assigning to @droazen to clarify

how about the gatk3 diff engine? should be easy to port and seems usable here.

i've almost ported the diff engine so i'll grab it

closing this. diff engine #465 is it. unless @droazen disagrees and reopens

Want to keep this open until we're all satisfied with the way expected output is being checked in the integration test suite -- reopening.

i'm removing my assignment then. the requirements are not clear to me. 'until we're all satisfied' is pretty vague, too vague for alpha i think

Was not intended to be vague -- I meant something very specific: namely, once https://github.com/broadinstitute/hellbender/pull/619 we should assess whether we are satisfied with the existing diff engine comparison facilities, or whether more is needed.

This will probably be satisfied by the merge of https://github.com/broadinstitute/gatk/pull/619, so re-assigning to alpha-1 as a low-cost ticket.

blocked by #619

this is not happening for alpha-1.


fix render issue: classification parts render over opaque objects

a pr to fix #11223

@ggetz there seems some issues in the build script

This may be a deeper issue since it seems to have broken in https://github.com/CesiumGS/cesium/commit/a2c4a1ea0d525441b26f1244a6ae02639c32938e when we switched from the old model implementation to the new one.
I thought it might have been related to stencil test values being incorrect, but the code in TilesetPipelineStage looks fine. I'm hesitant to merge this PR since I think it's being caused by a different underlying issue.

Thanks @lilleyse!
@JiaoJianing Thanks again for the PR. Given that this is likely not the root of the problem, I'm going to close it. If you have any additional details to help troubleshoot the issue, please leave them in a comment in https://github.com/CesiumGS/cesium/issues/11223. Thanks!


About trained weight and evaluation result

Hello, thanks for sharing this amazing work. I have some questions about the trained weight and evaluation results.

Can I use the trained weights from checkpoint/track4d_radar/models/model.last.t7 to directly infer and evaluate on the VOD dataset? When I used the weight from it for direct inference on the VOD dataset, I noticed that the results of motion segmentation and clustering (after removing clusters with less than 5 points) were quite noisy in some frames.

Frame around 410

Frame around 4729

Would it be possible to share the code that can visualize the result in the same way as shown in the demo video? (Include the tracking path and filter out the moving objects less than 5 points).

Thank you for your question.
Yes, you can directly infer and evaluate on the VOD dataset as long as you follow the same data loading and preprocessing methods as our approach. The noisy clustering is largely due to poor motion segmentation. If you train using our method, you will find that it is difficult to train and the gradients aren't that stable. We do think these stability issues are coming from the GRU. You could try training a checkpoint on your own with gradient clipping, which helps the model converge.
Regarding the visualization code, I am currently out of the office, so I don't have direct access to the project files. However, I did find some parts that might help you visualize the results. I am not sure if it will work directly.
from vod.configuration import KittiLocations
from vod.frame import FrameDataLoader
from vod.visualization import Visualization2D
import numpy as np
import matplotlib.pyplot as plt
from vod.frame import FrameTransformMatrix
import os

kitti_locations = KittiLocations(root_dir="view_of_delft_PUBLIC",
                                output_dir="view_of_delft_PUBLIC_output",
                                frame_set_path="",
                                pred_dir="",
                                )

class tData:
    """
        Utility class to load data.
    """
    def __init__(self,frame=-1,obj_type="unset",truncation=-1,occlusion=-1,\
                 obs_angle=-10,x1=-1,y1=-1,x2=-1,y2=-1,w=-1,h=-1,l=-1,\
                 x=-1000,y=-1000,z=-1000,ry=-10,score=-1000,track_id=-1,points=[]):
        """
            Constructor, initializes the object given the parameters.
        """

        # init object data
        self.frame      = frame
        self.track_id   = track_id
        self.obj_type   = obj_type
        self.truncation = truncation
        self.occlusion  = occlusion
        self.obs_angle  = obs_angle
        self.x1         = x1
        self.y1         = y1
        self.x2         = x2
        self.y2         = y2
        self.w          = w
        self.h          = h
        self.l          = l
        self.x          = x
        self.y          = y
        self.z          = z
        self.ry         = ry
        self.score      = score
        self.ignored    = False
        self.valid      = False
        self.tracker    = -1
        self.points     = points

    def __str__(self):
        """
            Print read data.
        """

        attrs = vars(self)
        return '\n'.join("%s: %s" % item for item in attrs.items())

def load_4dmot_label(path, current_frame_number,first_frame_number):
    with open(path, 'r') as f:
        lines = f.readlines()
    object_list = []
    for line in lines:
        line = line.strip()
        fields = line.split(" ")
        t_data  = tData()
        t_data.frame = int(current_frame_number.strip()) - first_frame_number # frame
        t_data.obj_type = fields[0].lower()  # object type [car, pedestrian, cyclist, ...]
        t_data.truncation = int(float(fields[1]))  # truncation [-1,0,1,2]
        t_data.occlusion = int(float(fields[2]))  # occlusion  [-1,0,1,2]
        t_data.obs_angle = float(fields[3])  # observation angle [rad]
        t_data.score = float(fields[4])
        # if t_data.score < 0.1:
        #     continue
        t_data.track_id = int(float(fields[5]))  # id
        # cur_id.append(t_data.track_id)

        t_data.points = []
        for j in range(int(len(fields[6:]) / 3)):
            t_data.points.append([float(fields[6:][j * 3 + 0]),
                                float(fields[6:][j * 3 + 1]),
                                float(fields[6:][j * 3 + 2])])
        t_data.points = np.array(t_data.points)
        t_data.points_center = np.mean(t_data.points, axis=0)
        object_list.append(t_data)
    return object_list

def ego_comp(point, ego_motion):
    point = np.append(point, 1)
    point = ego_motion.dot(point.T).T
    return point[:3]

def plot_point_cloud(lidar_pc, fig=None, ax=None):
    lidar_pc = lidar_pc[lidar_pc[:, 0] > 0]
    lidar_pc = lidar_pc[lidar_pc[:, 0] < 40]
    lidar_pc = lidar_pc[lidar_pc[:, 1] < 20]
    lidar_pc = lidar_pc[lidar_pc[:, 1] > -20]
    lidar_pc = lidar_pc[lidar_pc[:, 2] < 20]

    # sc = ax.scatter(-lidar_pc[:, 1], lidar_pc[:, 0], c=lidar_pc[:, 2], cmap='viridis', s=25)
    sc = ax.scatter(-lidar_pc[:, 1], lidar_pc[:, 0], s=25)
    ax.set_xlabel('X dimension')
    ax.set_ylabel('Y dimension')
    ax.set_title('Point Cloud Data - Bird\'s Eye View')
    ax.set_xlim([-20, 20])
    ax.set_ylim([0, 40])
    ax.set_autoscalex_on(False)
    ax.set_autoscaley_on(False)
    ax.grid(True)
    ax.axis('equal')
    return fig, ax

# val_seq = ['delft_1','delft_10','delft_14','delft_22']
# val_seq = ['delft_14','delft_22']
val_seq = ['delft_1']
for val in val_seq:
    output_path = 'temp_cluster_output/%s' % val
    # Check if the path exists
    if not os.path.exists(output_path):
        # Create the directory
        os.makedirs(output_path)
    frame_list_path = './clips/' + val + '.txt'
    with open(frame_list_path, 'r') as f:
        frame_list = f.readlines()
    start_frame = int(frame_list[0].strip())
    obj_id_trajectory = dict()
    start_frame = 4
    last_frame_data = FrameDataLoader(kitti_locations=kitti_locations,frame_number=frame_list[start_frame-1].strip())
    for frame in frame_list[start_frame:]:
        # use ego motion to update past object location
        current_frame_data = FrameDataLoader(kitti_locations=kitti_locations,frame_number=frame.strip())
        transforms = FrameTransformMatrix(current_frame_data)
        next_frame_transforms = FrameTransformMatrix(last_frame_data)
        t_lidar_to_odom_current_frame = np.dot(transforms.t_odom_camera, transforms.t_camera_lidar)
        t_lidar_to_odom_next_frame = np.dot(next_frame_transforms.t_odom_camera, next_frame_transforms.t_camera_lidar)
        ego_motion = np.dot(np.linalg.inv(t_lidar_to_odom_current_frame), t_lidar_to_odom_next_frame)
        for k,v in obj_id_trajectory.items():
            obj_id_trajectory[k] = [ego_comp(trajectory_point, ego_motion) for trajectory_point in v]

        # read current frame tracking results
        model_output_path = './4dmot_runthis/' + val + '/' + frame.strip() + '.txt'
        try:
            object_list = load_4dmot_label(model_output_path, frame.strip(), start_frame)
        except FileNotFoundError:
            print('FileNotFoundError: %s' % model_output_path)
            continue
        current_frame_object_id = []
        for object in object_list:
            if object.track_id not in obj_id_trajectory:
                obj_id_trajectory[object.track_id] = [object.points_center]
            else:
                obj_id_trajectory[object.track_id].append(object.points_center)
            current_frame_object_id.append(object.track_id)

        fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 8))
        vis2d = Visualization2D(current_frame_data, classes_visualized = ['Cyclist', 'Pedestrian', 'Car', 'ride_other', 'truck'])
        vis2d.draw_plot(ax=ax1, show_gt=True, show_radar=True, max_distance_threshold=40.0, fig_title='RGB and GT detection', moving_obj_only=True)

        # Set the background color to white
        fig.patch.set_facecolor('white')
        ax2.set_facecolor('white')

        # display point cloud
        lidar_pc = current_frame_data.get_radar_scan()
        fig, ax = plot_point_cloud(lidar_pc, fig, ax2)

        # plot and object trajectory
        # for k, v in obj_id_trajectory.items():
        #     if k in current_frame_object_id:
        #         v = np.array(v)
        #         if len(v) > 2:  # Ensure we have more than 2 points to sample from
        #             step_size = max(len(v) // 5, 1)  # Calculate step size for uniform sampling
        #             sample_indices = np.arange(0, len(v), step_size)  # Uniformly sample indices
        #
        #             # Ensure the last point is included
        #             if len(v) - 1 not in sample_indices:
        #                 sample_indices = np.append(sample_indices, len(v) - 1)
        #
        #             sampled_v = v[sample_indices]
        #
        #             ax2.plot(-sampled_v[:, 1], sampled_v[:, 0], color='green', linewidth=2, label='object ' + str(k))
        #             ax2.scatter(-sampled_v[:, 1], sampled_v[:, 0], color='green', s=25.0)  # Mark sampled points in blue

        # plot object point cloud
        colors = ['red', 'green', 'blue', 'yellow', 'purple', 'orange']
        for i, object in enumerate(object_list):
            obj_points_radar = np.array(object.points)
            color = colors[i % len(colors)]  # Cycle through the color list
            ax2.scatter(-obj_points_radar[:, 1], obj_points_radar[:, 0], c=color, s=30)
            plt.text(-object.points_center[1], object.points_center[0], str(object.track_id), alpha=0.7, size=30)

        plt.tight_layout()
        print('Saving/%s.png' % frame.strip())
        plt.savefig(output_path + '/%s.png' % frame.strip())
        plt.close()
        last_frame_data = current_frame_data

Hello, thanks for sharing this amazing work. I have some questions about the trained weight and evaluation results.

Can I use the trained weights from checkpoint/track4d_radar/models/model.last.t7 to directly infer and evaluate on the VOD dataset? When I used the weight from it for direct inference on the VOD dataset, I noticed that the results of motion segmentation and clustering (after removing clusters with less than 5 points) were quite noisy in some frames.

Frame around 410
Frame around 4729

Would it be possible to share the code that can visualize the result in the same way as shown in the demo video? (Include the tracking path and filter out the moving objects less than 5 points).

Hello,
The environment setup for the project has been completed. I have two questions below, and I would appreciate your answers

How did you visualize the image used for the question?
How can I verify if the demo video visualization code provided by @MrTooOldDriver is working correctly?

@geun0196

I visualize the image using the matplotlib library in Python.

There are some issues in the provided code due to certain functions used in it, but the visualization code gives a straightforward pipeline on how to deal with the resulting data.

@LiawWun
Thank you friend!
Could you mind if I request your visualization code?


Multiple uses in software

An administration can have multiple uses for a single software. Is this something we want to encourage. It would be simpler to only allow a unique use for a software per administration.
If we want to keep it the way it is (possibility for multiple uses), I suggest we should add a new select when, in the form, a user select an administration, so they can choose which use to update or to create a new one. This will require some more work, but will make all the uses available for modification, and improve the auto-fill of the fields to display the selected use instead of defaulting to the first one.

I think it makes sense that an administration could be using the same software for multiple use cases and sometimes it could event be different teams within that organization (so different contacts).
Anything that can simplify the form for the user I think is good!

However, I just found out that the way we update the data overwrite any use that is not the selected use we update with the form, so it only keeps one in the pull request.

Just making sure I'm not mixing up things, #1000 fixes this correct?

It should be a fix for it since the form now sends an array of uses instead of just one


User backend OC_User_IMAP not found.

User backend OC_User_IMAP not found is shown in owncloud logs an a new install. Can't login

Can you test if it works if you use the previous commit, i.e. before #28 was merged?
If so, I'm probably going to revert it.

I fixed it by enabling the external users plugin.

If you don't mind explaining something to me, what is the /owncloud-bootstrap folder for?

As far as I remember owncloud wants to run an interactive installer which creates the stuff in /owncloud_bootstrap, and I'm copying it directly to skip this step and have the correct accounts available immediately. But its been quite a while ago ;)


input-number: await wrapped input-text to render so it can focus

DE43948: Update score out of field to be d2l-input-numeric in FACE Assignments
When the input-number component is re-rendered (e.g. due to conditional rendering), autofocus does not work and component validation isn't triggered correctly for reasons unclear.
Awaiting input-text to updateComplete let's us access the component when it has finished rendering.
This problem surfaced when trying to update the score input in FACE Assignments to use input-number over input-text.

Awesome, it works locally!


fix: limit situations where we retry

Resolves #290. This is the one where retrying the request on 401/403 was causing all kinds of trouble. After taking a closer look, I think we should keep the retries, but only in the situation where a user has set an access_token, a refresh_token, and they don't have an expiry_date. This can happen if the user stashes a refresh and access token for later use, and then populates it manually at a later point. That's the only real case I can think of where retrying getRequestMetadata is useful beyond what's there today.
This should be semver minor.

Codecov Report

Merging #373 into master will increase coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #373      +/-   ##
==========================================
+ Coverage   94.76%   94.78%   +0.01%
==========================================
  Files          14       14
  Lines         955      958       +3
  Branches      198      201       +3
==========================================
+ Hits          905      908       +3
  Misses         50       50

Impacted Files
Coverage Δ

src/auth/oauth2client.ts
94.48% <100%> (+0.05%)
: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 b4d62a0...546dccf. Read the comment docs.

@ofrobots would really love a look at this one