Remove modules/node_groups/random.tf completely - it only causes issues

I have issues
The random_pet resource is a nice helper for starting up a new environment quickly.
However, in a live cluster it will only cause maintenance pain with bad side-effects.
See https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1109#issuecomment-763450622
I'm submitting a...

[X] bug report
[ ] feature request
[ ] support request - read the FAQ first!
[ ] kudos, thank you, warm fuzzy

What is the current behavior?
The random_pet for node_groups is only used for dynamic node_group name.
However, the mere existence of modules/node_groups/random.tf causes a side-effect. The random_pet will create an unrelated resource module.eks.module.node_groups.random_pet.node_groups["test-workers"] which is bound to the node groups.
As a result, changing any attribute in the Launch Template bound to a Managed Node Group will cause the whole Node Group being recreated. The correct behaviour would be to update the Launch Template in-place and then update Managed Node Group to use the new Launch Template version (which can be a separate action).
If this is a bug, how to reproduce? Please include a code sample if relevant.
See issue https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1109 for details.
What's the expected behavior?
Updating a Launch Template must not recreate a Managed Node Group.
Only the Launch Template version should be bound to a Managed Node Group and the Managed Node Group must be updated in-place (not recreated).
Are you able to fix this problem and submit a PR? Link here if you have already.
Environment details

Affected module version: v13.2.1
OS: Mac OS
Terraform version: 0.13.x - 0.14.4.

Any other relevant info
See issue https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1109 for details.

Yes, we are running into some issues as well with this piece of the code. I have submitted a ticket here: https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1194

Yes, we are running into some issues as well with this piece of the code. I have submitted a ticket here: https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1194

i am also having issues. my use case is to specify 3 subnets for the eks cluster, but only use 1 subnet for some node groups.

i am also having issues. my use case is to specify 3 subnets for the eks cluster, but only use 1 subnet for some node groups.

Yep, just hit this with changing the instance type for a managed node group. Wondering what to do about it.

I just opened this https://github.com/terraform-aws-modules/terraform-aws-eks/issues/1188. Can you please review and test it.


Clean up .test()

.test() was missing:

printing results
returning results so user can print.

In addition, it was not tracking the model when using DP, DDP. Now it does.

Hello @williamFalcon! Thanks for updating this PR.

In the file tests/test_gpu_models.py:

Line 279:1: E302 expected 2 blank lines, found 1

I see the same mater merge... :)

@neggert might just drop this PR and start a new one.


Plugin 'Go' requires plugin 'org.intellij.intelliLang' to be installed

Describe the bug
    [   1043]   WARN - #c.i.i.p.PluginManager - Problems found loading plugins:
      The Go (id=org.jetbrains.plugins.go, path=/codebuild/output/src408993822/src/github.com/aws/aws-toolkit-jetbrains/jetbrains-ultimate/build/idea-sandbox/plugins-test/go, version=222.3345.16) plugin Plugin 'Go' requires plugin 'org.intellij.intelliLang' to be installed

To Reproduce
IU 222.3345-EAP-CANDIDATE-SNAPSHOT
org.jetbrains.plugins.go:222.3345.16

Expected behavior
Automatically pull in transitive dependency
Environment:

macOS
Gradle 7.4
gradle-intellij-plugin 1.7.0-20220706.013502-36

With the following setup, I can't reproduce it:

platformType = IU
platformVersion = 222-EAP-SNAPSHOT
platformPlugins = org.jetbrains.plugins.go:222.3345.16

@hsz I've faced with this problem as well in EduTools plugin
The essential thing here for reproducing is to run tests where Go plugin should be used. To reproduce, you can use this branch and run tests in Edu-Go module. To ensure that everything works if you add org.intellij.intelliLang dependency manually, just revert the latest commit in the branch
I suppose this bug appeared because recently org.intellij.intelliLang dependency was added via plugin model v2 syntax but previously v1 syntax was used

Then it sounds familiar to #1048, isn't it?


ADDED BLOCK GAME

PR Description 📜
Please include summary related to the issue you have fixed and describe your PR in brief over here by specifying the issue number on which you were working below:
Block  game is a frontend game developed using HTML, CSS, JavaScript.
The player will get points according to the number of successful hits in a specific time.
It was a single player game.
it is arcade running game.
every time get 5 chance.
Fixes  #3493

Mark the task you have completed ✅

[✅ ] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[✅ ] I have performed a self-review of my own code or work.
[✅ ] I have commented my code, particularly in hard-to-understand areas.
[ ✅] My changes generates no new warnings.
[ ✅] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[✅ ] I have added screenshot for website preview in assets/images
[ ✅] I have added entries for my game in main README.md
[ ✅] I have added README.md in my folder
[ ✅] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you @codewithganeshhh ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Thank you  @codewithganeshhh , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


slam_toolbox: 1.5.1-1 in 'noetic/distribution.yaml' [bloom]

Increasing version of package(s) in repository slam_toolbox to 1.5.1-1:

upstream repository: https://github.com/SteveMacenski/slam_toolbox.git
release repository: https://github.com/SteveMacenski/slam_toolbox-release.git
distro file: noetic/distribution.yaml
bloom version: 0.9.7
previous version for package: 1.5.0-1

Setup to fix CI issues in noetic builds


Performance gains from batching on GPU

Version: 19.15
Where did you get dlib: dlib.net
Platform: Ubuntu 16.04.5 LTS, Ubuntu 16.04.4 LTS, CentOS Linux release 7.5.1804 (Core), all running a docker container based on Ubuntu 16.04.4 LTS
Compiler: cmake version 3.5.1

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.10' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)

CUDA 8.0

Related to #1159 I believe.
I was looking into how much a performance increase I could expect by batching images for inference when using the mmod_human_face_detector.dat face detection model on GPU.
Based loosely on the example, I put together a simple app that will time the inference for a variety of batch sizes and tested this with batch sizes 1, 5, and 20 (others as well, but this was enough to show a trend) on a few different machines/hardware configurations.
From the comment in that same example, it implies that there should be a large performance increase when batching
       // Note that you can process a bunch of images in a std::vector at once and it runs
        // much faster, since this will form mini-batches of images and therefore get
        // better parallelism out of your GPU hardware.  However, all the images must be
        // the same size.  To avoid this requirement on images being the same size we
        // process them individually in this example.

I used a docker container based on nvidia/cuda:8.0-cudnn7-devel-ubuntu16.04 to keep the environment as similar as possible. The source code is available here.
Some timing results I found (100 images total):

Machine
Card
Batch size 1
Batch size 20

Machine 1
GTX 1080 Ti - Pascal
~8s
~5s

Machine 2
Geforce GTX Titan X - Maxwell
~4.5s
~4s

Machine 2
GTX 1080 Ti - Pascal
~3s
~4.1s

Machine 3
GTX 1070 - Pascal
~8.3s
~8-10s

I can get more specific times for specific batch sizes on each of these cards if that would be helpful, but I was hoping to get some feedback as to whether these are somewhat expected. The last machine is by far the most puzzling.
@davisking if you have a few minutes to grab the docker image and run it on your machine, would you mind posting some times for various batch sizes? And if there's anything suspicious in my tests or procedure, please let me know.
Thank you!
Download the docker image: docker pull cchadowitz/dlib-batch-test
To run the app inside the container:
docker run --runtime=nvidia -e NVIDIA_VISIBLE_DEVICES=0 -it --rm /bin/bash
# Inside the running container
cd ~
./dnn_mmod_face_detection_ex mmod_human_face_detector.dat 1 _frames/* # For batch size 1
./dnn_mmod_face_detection_ex mmod_human_face_detector.dat 20 _frames/* # For batch size 20

Attached example image

You didn't say what size of image you are using.  That is the most important statistic.  Without knowing that the timing numbers are meaningless.  For instance, I just ran an image that is 751x1002 pixels and it takes 366ms on a 1080ti.  I don't know how big your image is but it must be a monster for it to take 8 seconds to process.
Moreover, when I run a batch of 20 of these 751x1002 images the entire batch is processed in 834ms, a considerable increase in images processed per second compared to the one image at a time speed of 366ms.
It is likely that the GPU hardware is already fully saturated by your super huge image.  The point of using larger batches is just to give the GPU more data at a time.  But if you pass in a billion pixel image then one image per batch is sufficient to saturate the hardware.  Although the numbers you posted aren't really self consistent so you probably have other issues going on.  In any case, you need to be more careful when you benchmark things and pay attention to details.

So the image I attached is one of the images I used to test, the rest are included in the docker container under _frames/. They are all 640x360, and the code upscales them once with pyramid_up(). So, I don't think the GPU is saturated by far (maybe only when the batch is >30).
I've updated my app and docker image to include one forward pass before timing starts etc to warm up the cuda runtime. I've also added an additional, larger set of images as an additional set of data points. The 100 images set is in 100_frames and the 500 images set is in 500_frames. Both are sets of images of the same resolution, 1920x1080, and I removed any upscaling that was being done previously. So a single image will be ~2 million pixels, and a batch of 20 images will be ~40 million pixels.

Machine
Card
100 images - batch size 1
100 images - batch size 20
500 images - batch size 1
500 images - batch size 20

Machine 1
GTX 1080 Ti - Pascal
6.2s
8.55s
31.47s
28.52s

Machine 2
Geforce GTX Titan X - Maxwell
6.91s
8.28s
36.25s
31.73s

Machine 2
GTX 1080 Ti - Pascal
5.46s
7.51s
27.54s
26.73s

Machine 3
GTX 1070 - Pascal
8.62s
12.04s
42.58s
38.61s

Converted to per-image times

Machine
Card
100 images - batch size 1 (per image)
100 images - batch size 20
500 images - batch size 1
500 images - batch size 20

Machine 1
GTX 1080 Ti - Pascal
62ms
85.5ms
62.94ms
57.04ms

Machine 2
Geforce GTX Titan X - Maxwell
69.1ms
82.8ms
72.5ms
63.46ms

Machine 2
GTX 1080 Ti - Pascal
54.6ms
75.1ms
55.08ms
53.46ms

Machine 3
GTX 1070 - Pascal
86.2ms
120.4ms
85.16ms
77.22ms

I see that when performing a forward pass, you can optionally specify the batch size in the forward pass call as a second parameter - how does this affect the batch sizes compared to simply passing a vector of images on its own? It seems to imply dlib will automatically create its own mini-batches from the vector provided.
Regardless, the times demonstrated above don't seem to reflect anything close to what you're seeing on your machine. Are you able to pull the docker container image I provided and run a few tests on your end as well to compare run times?
Updated source code: https://gist.github.com/cchadowitz-pf/ee223f4622db01880b2e4961c73e42f7
Docker container image: docker pull cchadowitz/dlib-batch-test

When you change the batch size cuda resources are reallocated, that takes a long time.  Don't time that part either.
Also, I'm not a huge fan of docker.

I see. I've tweaked my code again to use the same batch size for the warmup stage as the rest of the stage, so that should no longer be a factor.
Updated timing results:

Machine
Card
100 images - batch size 1
100 images - batch size 20
500 images - batch size 1
500 images - batch size 20

Machine 1
GTX 1080 Ti - Pascal
6.56s
4.83s
31.17s
27.78s

Machine 2
Geforce GTX Titan X - Maxwell
6.99s
5.59s
35.82s
27.38s

Machine 2
GTX 1080 Ti - Pascal
5.58s
4.53s
28.08s
23.82s

Machine 3
GTX 1070 - Pascal
8.43s
7.09s
42.33s
35.12s

Converted to per-image times

Machine
Card
100 images - batch size 1 (per image)
100 images - batch size 20
500 images - batch size 1
500 images - batch size 20

Machine 1
GTX 1080 Ti - Pascal
65.6ms
48.3ms
62.34ms
55.56ms

Machine 2
Geforce GTX Titan X - Maxwell
69.9ms
55.9ms
71.64ms
54.76ms

Machine 2
GTX 1080 Ti - Pascal
55.8ms
45.3ms
56.16ms
47.64ms

Machine 3
GTX 1070 - Pascal
84.3ms
70.9ms
86.66ms
70.24ms

The docker image was simply to make it easy to run the same tests in a fixed environment configuration.
It does seem like the varying batch sizes had a noticeable impact on performance. If I understand correctly, this is because by design dlib is having cuda allocate/reallocate only the memory necessary, and does not allocate a larger block of memory to use for entire execution up front? I know some other frameworks like Caffe and Tensorflow allocate larger blocks of memory, but that has its own issues.
Thank you for taking the time to work through this with me!

Just to be clear, taking into account the difference in resolutions between my images and the image you tested, the times are now in the same ballpark.

No problem :)


test: Add missing log tests

Description

Changes proposed in this pull request:

Unified the creation of logging and tracing/metrics mock backends
Added an e2e test for checking the log delivery to a custom output

Related Issues and Documents
kyma-project/kyma#18015
Closes:
Related issues:
Traceability

[x] The PR is linked to a GitHub Issue.
[ ] New features have a milestone label set.
[ ] New features have defined acceptance criteria in a corresponding GitHub Issue, and all criteria are satisfied with this PR.
[x] The corresponding GitHub Issue has a respective area label.
[ ] The follow-up issues (if any) are linked in the Related Issues section.

Testability
The feature is unit-tested:

[ ] Yes.
[x] No, because unit tests are not needed.
[ ] No, because of ...

The feature is e2e-tested:

[x] Yes.
[ ] No, because e2e-tests are not needed.
[ ] No, because of ...

Tests conducted for the PR:

Codebase

[x] My code follows the Effective Go style guidelines.
[ ] The code was planned and designed following the defined architecture and the separation of concerns.
[ ] The code has sufficient comments, particularly for all hard-to-understand areas.
[ ] This PR adds value and shows no feature creep.
[ ] I have augmented the test suite that proves my fix is effective or that my feature works.
[ ] Adjusted the documentation if the change is user-facing.

/retest

/retest

/retest

/retest

/test all

/retest

/test pull-telemetry-manager-lint

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest


iptables rules are not persistent

Rules generated by this script are not persistent. Script and README.md says nothing about this.
Either mention it in the README.md, and point to options for persistence. Like iptables-persistent.
Or handle it in the script.
I managed to make it persistent like so:
Make iptables persistent
Export current IP tables to a file
sudo iptables-save > ~/rules.v4
Copy file to the location iptables-persistent will use on reboot
sudo /bin/cp -rf ~/rules.v4 /etc/iptables/rules.v4

With Ubuntu 22.04 LTS, to get this to work, I had to:
Install IP tables
sudo apt-get install iptables-persistent
Save IP tables
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Reboot and test
sudo reboot


Couldn't find cython int routine

Cell [1] in https://github.com/Qiskit/qiskit-community-tutorials/blob/master/chemistry/nah_uccsd.ipynb

In other notebooks as well


Support for refresh and retry upon 401/403 errors in interceptor

There's good documentation on interceptors, and I'm trying to combine it with this approach on Stack Overflow for retries upon 401/403 errors. However, I think some extension points are missing.
The OAuthResourceServerErrorHandler type isn't "strong" enough for retries, because the handleError signature doesn't include access to the req (request) or next (next interceptor) for implementing the retry.
I can of course write my own HttpInterceptor that mixes the DefaultOAuthInterceptor with the approach from the SO post. But I don't like that approach too much, because then I effectively fork the DefaultOAuthInterceptor, missing out on any bugfixes in future versions.
I'm happy to create a PR for improving this. But then (a) I would need to know that this would be something that'll be potentially accepted, and (b) would like some guidance on the direction of the approach, because I can see these major approaches:

Composition: create a type or interface for objects that get optionally injected into the DefaultOAuthInterceptor, that allow implementing a retry strategy.
Composition: refactor the DefaultOAuthInterceptor and extract parts of the intercept function into seperate types, so that they can be reused.
Inheritance: split up the intercept method a bit so that a subclass can be created that uses the super class but extends its features.
Feature: create a second HttpInterceptor in the library itself that has all the Default interceptor's features plus also a retry+login strategy built in.

I lean towards the first option myself, because it's more in line with how the other extension points in this library work.
Edit, footnote: in #429 I was attended to the fact that this story seems to focus mostly on retries. However, it is in fact more about having to log in upon 401/403 (and I think that if that can be done with a silent refresh, a retry is a good additional bonus - also, whether you want a hard login redirection in addition to an attempt at silent refresh, is an application concern imho).

Based on the links @jeroenheijmans shared and on what this package offers I came into a solution for retrying requests that have failed with 401 error. I had to create an additional interceptor for errors but I'm not that happy to have to manually set the authentication token by myself again, since that feature is already present in the DefaultOAuthInterceptor. Here my solution
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { accessTokenUrlValidator } from '@shared/helpers';
import { OAuthService } from 'angular-oauth2-oidc';
import { from, Observable, throwError } from 'rxjs';
import { catchError, filter, finalize, switchMap, take } from 'rxjs/operators';

@Injectable({ providedIn: 'root' })
export class UnauthorizedErrorInterceptor implements HttpInterceptor {
  private refreshTokenInProgress = false;

  constructor(private oauthService: OAuthService, private router: Router) {

  }

  private getAuthRequest(req: HttpRequest<any>): HttpRequest<any> {
    return req.clone({
      setHeaders: {
        'Authorization': 'Bearer ' + this.oauthService.getAccessToken()
      }
    });
  }

  private initImplicitFlow(): void {
    const encodedUri = encodeURIComponent(this.router.url);
    this.oauthService.initImplicitFlow(encodedUri);
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    if (!accessTokenUrlValidator(req.url)) {
      return next.handle(req);
    }

    return next.handle(req).pipe(
      catchError((response: HttpResponse<any>) => {
        if (response && response.status === 401) {
          if (this.refreshTokenInProgress) {
            // If refreshTokenInProgress is true, we will wait until token is silently refreshed
            // which means the new token is ready and we can retry the request
            return this.oauthService.events.pipe(
              filter(result => result.type === 'silently_refreshed'),
              take(1),
              switchMap(() => next.handle(this.getAuthRequest(req)))
            );
          } else {
            this.refreshTokenInProgress = true;

            return from(this.oauthService.silentRefresh()).pipe(
              switchMap(() => next.handle(this.getAuthRequest(req))),
              catchError(error => {
                this.initImplicitFlow();
                return throwError(error);
              }),
              // When the call to silentRefresh completes we reset the refreshTokenInProgress to false
              // for the next time the token needs to be refreshed
              finalize(() => this.refreshTokenInProgress = false)
            );
          }
        }

        return throwError(response);
      })
    );
  }
}


overlayfs: investigate if overlayfs can use zdbfs as layer

Using zdbfs as lowerdir works fine.
Using zdbfs as upperdir doesn't works yet with the following error:
overlayfs: upper fs needs to support d_type.
overlayfs: upper fs does not support tmpfile.

The d_type issue is easily fixable
The O_TMPFILE is something else: https://man7.org/linux/man-pages/man2/open.2.html

This flag seems not fully supported by FUSE now.

After some test, zdbfs can be use as readonly layer of overlayfs but not as write/workdir layer, this is a fuse limitation and we can't do a lot against that for now. Closing?


Basic type information & alphabetical sorting

Added some basic type information (mainly return types of generative methods); sorted methods alphabetically

Thanks for PR! Before I proceed with the full review I have two short questions:

Have you signed the CLA mentioned in README?
Is the alphabetic ordering really necessary? I think typeshed uses the style where order of definitions match the order at runtime, we want to match the style of typeshed as much as possible.

Oops, I forgot to check for that sort of thing. Do you know why a mailing address is necessary?
 Good point, though.

TBH, I have no idea why the address is needed (definitely not to send you spam :-). Anyway, Dropbox has high privacy standards (you can find a link in the CLA form) so I would not worry it will be used in inappropriate way.

Actually, given that it would probably be easier to just to recreate the type annotations than to undo my mistaken alphabetization, I'm just going to close this PR. Someone with a bit more SQLAlchemy expertise could probably add these in along with basic typing for the rest.

BTW, most of what I did is add return types to the methods decorated with _generative.


Enable full screen on desktop

Status
READY
Description
This change allows toggling between fullscreen on Linux, Windows and MacOS.
Type of Change

[X] ✨ New feature (non-breaking change which adds functionality)
[ ] 🛠 Bug fix (non-breaking change which fixes an issue)
[ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
[ ] 🧹 Code refactor
[ ] ✅ Build configuration change
[ ] 📝 Documentation
[ ] 🗑 Chore

@mkobuolys I tested the implementation on Linux and Windows. Unfortunately, I do not have access now to Mac so I was not able to verify it there.
Additionally, the implementation in FlutterDeckFullscreenManager is not unit tested. If you are ok with me injecting a proxy (a thin wrapper for window manager) object into FlutterDeckFullscreenManager then I would be able to test properly

Hi @tomaszpolanski, thanks for your PR! I have just tested it on macOS, and it works as expected. If you are up for covering the FlutterDeckFullscreenManager logic with tests, please update the class as needed.

@mkobuolys In my last commit I made FlutterDeckFullscreenManager testable and it's ready for a review


METRON-1228: Configuration Management PUSH immediately does DUMP after

Addresses https://issues.apache.org/jira/browse/METRON-1228
Contributor Comments
Missing 'break' is causing pushes to immediately dump configs to std output.
To test, perform a zk_load_configs.sh -m PUSH command and verify that the command is not followed with a screen dump of the zk configs.
Pull Request Checklist
Thank you for submitting a contribution to Apache Metron.
Please refer to our Development Guidelines for the complete guide to follow for contributions.
Please refer also to our Build Verification Guidelines for complete smoke testing guides.
In order to streamline the review of the contribution we ask you follow these guidelines and ask you to double check the following:
For all changes:

[x] Is there a JIRA ticket associated with this PR? If not one needs to be created at Metron Jira.
[x] Does your PR title start with METRON-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
[x] Has your PR been rebased against the latest commit within the target branch (typically master)?

For code changes:

[x] Have you included steps to reproduce the behavior or problem that is being changed or addressed?

[x] Have you included steps or a guide to how the change may be verified and tested manually?

[x] Have you ensured that the full suite of tests and checks have been executed in the root metron folder via:
mvn -q clean integration-test install && build_utils/verify_licenses.sh

[x] Have you verified the basic functionality of the build by building and running locally with Vagrant full-dev environment or the equivalent?

+1 this has been pissing me off for days

+1


add agg function

[x] Tests added / passed
[x] Passes black dask / flake8 dask

Adds the agg function as mentioned https://github.com/dask/dask/issues/3527
A few notes:

It doesn't support passing args or kwargs being passed in to be passed to the aggregating functions.
It doesn't support passing in aggregating functions, only strings  (e.g. 'min' allowed, dd.DataFrame.min not allowed)
I wanted to support 'size' as one of the aggregations allowed, but dd.DataFrame produces a dask.dataframe.Scalar object, and I'm unsure how to convert that to a dask Series or dask DataFrame.
I could put the concatenate bit at the end of DataFrame.agg into it's own function somewhere since it's now used by DataFrame.mode and DataFrame.agg
I don't compare the result of agg('any') with the pandas result.  This is because I would expect Series.agg('any') to return True or False, while in pandas it returns a value from the series when the dtype='object'. See example below.

import pandas as pd
s = pd.Series(['a', 'b', 'c'])
assert s.agg(['any']).equals(pd.Series(['a'], index=['any']))  # no error thrown

Thanks @balast! cc @TomAugspurger if you get a chance to take a look

@balast, any update here?

No update right now, I'll try to continue on this next week.

Hey @balast -- just checking in to see if you're still game for working on this.

@gforsyth Feel free to close if desired.  I'll pick it up again in the future if I'm able.


add type-safe access to StandardServiceContainer

When using Propel::getServiceContainer(), an instance of ServiceContainerInterface is returned, and users can implement their own service container against this interface.
However, almost all users do not do that, and instead use the StandardServiceContainer, which offers crucial functionality, particularly enabling and configuring the logger.
But since the additional functionality of  StandardServiceContainer is not part of the interface, they have to find those methods without IDE support, and if they use type checkers, those will complain because unknown methods are accessed. See for example this discussion.
Since there are no generics in PHP, a feasible workaround is to add a new method to the Propel runtime object, which allows type-safe access to the StandardServiceContainer.
If there is a better solution, I'd be happy to find out!

Codecov Report

Merging #1872 (86cca56) into master (ba9abb9) will decrease coverage by 2.95%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master    #1872      +/-   ##
============================================
- Coverage     87.61%   84.66%   -2.96%
- Complexity     7807     7809       +2
============================================
  Files           227      227
  Lines         21144    21144
============================================
- Hits          18525    17901     -624
- Misses         2619     3243     +624

Flag
Coverage Δ

5-max
84.66% <100.00%> (-2.96%)
:arrow_down:

7.4
84.66% <100.00%> (-2.96%)
:arrow_down:

agnostic
66.97% <100.00%> (+<0.01%)
:arrow_up:

mysql
?

pgsql
?

sqlite
66.73% <0.00%> (-0.02%)
:arrow_down:

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

Impacted Files
Coverage Δ

src/Propel/Runtime/Propel.php
53.52% <100.00%> (+3.52%)
:arrow_up:

src/Propel/Generator/Reverse/PgsqlSchemaParser.php
0.00% <0.00%> (-86.62%)
:arrow_down:

src/Propel/Generator/Reverse/MysqlSchemaParser.php
0.00% <0.00%> (-86.24%)
:arrow_down:

src/Propel/Runtime/Adapter/Pdo/PgsqlAdapter.php
2.94% <0.00%> (-50.00%)
:arrow_down:

src/Propel/Runtime/Adapter/Pdo/MysqlAdapter.php
41.30% <0.00%> (-36.96%)
:arrow_down:

.../Propel/Generator/Reverse/AbstractSchemaParser.php
44.44% <0.00%> (-22.23%)
:arrow_down:

.../ActiveQuery/QueryExecutor/InsertQueryExecutor.php
59.37% <0.00%> (-21.88%)
:arrow_down:

src/Propel/Generator/Platform/PgsqlPlatform.php
81.36% <0.00%> (-13.67%)
:arrow_down:

...e/ActiveQuery/SqlBuilder/DeleteQuerySqlBuilder.php
87.87% <0.00%> (-12.13%)
:arrow_down:

src/Propel/Generator/Platform/MysqlPlatform.php
84.82% <0.00%> (-9.29%)
:arrow_down:

... and 14 more

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 ba9abb9...86cca56. Read the comment docs.


Use Poetry to manage project dependencies

Add poetry to the project to manage its dependencies
initial discussion found here: https://github.com/davidlatwe/montydb/issues/27

I'll look at this before doing #27 mkdocs as need to make sure all the actions, packages and deploy still work.

There is a issue in the way the current project handles version numbers and how poetry handles versioning and want to know @davidlatwe that a solution discussed here is ok https://github.com/python-poetry/poetry/issues/1036#issuecomment-489880822
currently versions are managed in the _version.py and this is read in as an attr in setup.cfg.  poetry doesn't allow this.
The proposed solution is to:

Manager project version in pyproject.toml by poetry
that _version.py Read the package version metadata thats available when package is built

another discussions around this issue:

https://github.com/python-poetry/poetry/issues/144

Thanks @madeinoz67 and the sum up. ❤
Yeah.. I remember I bump into this issue when I was trying to adopt poetry a while back. Couldn't made up my mind which way to go at the time being.
I read both issues and that PyPA guy's solution seems to be the most solid one, let's do it. :)

@davidlatwe this is ready for your review just as an overview of changes:

poetry now used to manage project dependencies such as mkdocs (when I start doing documentation)
poetry now responsible for build and publishing
poetry uses a local virtual environment it creates automatically
actions updated to reflect poetry
python 2.7 removed, not poetry friendly plus you said you were removing it
added bandit to CI so some static code security checking is now part of the CI
using a makefile for common tasks

Regarding the package versioning....
To keep things simple I decided to go with a simpler solution posted in the thread I mentioned above that just checks versions are in sync so you need to update versions in the pyproject.toml and the _version.py file.  Ive added tests around this so will fail before publishing if they're not the same, also part of the CI
The publishing action is the only thing I haven't been able to test, but should work as it's similar to what Ive done elsewhere.


Removing day and hour display

How do i completely remove day and hour display
Currently i am having
            <vue-countdown-timer
                            v-if="!resend_active"
                            @start_callback="resend_active= false"
                            @end_callback="resend_active = true"
                            :start-time="new Date()"
                            :end-time="new Date().setMinutes(new Date().getMinutes()+2)"
                            :interval="1000"
                            :day-txt="null"
                            :hour-txt="null"
                            :minutes-txt="':'"
                            :seconds-txt="''"
                    >
                    </vue-countdown-timer>

I have tried seting them as null but they still display as 00 00

@Geowan I will add this feature this month. Being extremely busy lately I should add it asap.

it will be great to add this feature so when day is 00 it will not display

may this will help you @Geowan
<template slot="countdown" slot-scope="scope">
    {{scope.props.days}}{{scope.props.dayTxt}}
    {{scope.props.hours}}{{scope.props.hourTxt}}
    {{scope.props.minutes}}{{scope.props.minutesTxt}}
    {{scope.props.seconds}}{{scope.props.secondsTxt}}
  </template>

@Geowan I figure if you removed day and hour display, if you have a time greater than 60 minutes, I have to convert days, and hours into minutes. Else it will be weird. I still need to work on this feature for a bit.

yes @Geowan I also working on it

this fix the min issue

<template slot="countdown" slot-scope="scope">
    {{scope.props.days}}{{scope.props.dayTxt}}
    {{scope.props.hours}}{{scope.props.hourTxt}}

    {{scope.props.minutes}}{{scope.props.minutesTxt}}
    {{scope.props.seconds}}{{scope.props.secondsTxt}}
  </template>

Added both of your features in v2.1.0
@Geowan @diadal
Features

Added the ability to auto hide when each unit's time reaches zero
Added the ability to complete hide certain units

Bug fixes

Fixed timestamp input for start time and end time not working

did you check this if 01Hour 00Min 33Sec with the new update hope 00Min won't hide @TriDiamond

did you check this if 01Hour 00Min 33Sec with the new update hope 00Min won't hide

The logic is like this, if you set to hide all 00, if any of the unit's count down reaches 00, it will hide. If you did not set to hide 00, 00 minutes will show.

Base on I am not sure if hiding 00 should be only for the condition when all previous times are 00, then they hide, the ones in between need to be shown. Which one is more suitable for all conditions.
the best to me show be like this if day = 00 then check if hour = 00 before hiding the hour for same for mins check day hour and min before hiding mins
<template slot="countdown" slot-scope="scope">
    {{scope.props.days}}{{scope.props.dayTxt}}

    {{scope.props.hours}}{{scope.props.hourTxt}}

    {{scope.props.minutes}}{{scope.props.minutesTxt}}

    {{scope.props.seconds}}{{scope.props.secondsTxt}}

  </template>

the best to me show be like this if day = 00 then check if hour = 00 before hiding the hour for same for mins check day hour and min before hiding mins

@diadal
Yeah I have changed my logic to check previous unit is 00 (hidden), then the next unit will be hidden. Of cause unit hidden logic is bigger than this. So if you set the previous unit to be hidden, then the current unit will still be hidden. This is to prevent the condition where the current unit end up in the first unit due to the previous unit being set to hidden.
2.1.1 (Feb 22, 2019)
Changes

Changed the hiding logic of 00s, only hide if all previous units are hidden.
Changed the modification of the prop value, to avoid props changes in methods.


[wip!] Add slack data importer.

this importer is more comprehensive than the existing one. pending tiny tiny detail such as the config param of the existing realm as an input and the 20 todo's. will fix when i am able to focus once again :(.
USAGE
To convert a slack data, let the zip file be slack_data.zip, then
./slack2zulip.py slack_data.zip
which outputs zulip_data.zip.
To deploy the data onto an existing fresh Zulip repo,
./manage.py import zulip_data.zip

cc: if @rishig has requests for how this should be made.

@rht some thoughts:

Am I correct in assuming that the format being generated is the same as the format for the existing Zulip import/export tool (manage.py import)?  That seems reasonable for doing a faithful full organization import/export.  At some future point, we can create a web flow for triggering that (doing so would require significant work on the Zulip side import backend, but I know how to do that).
Do you have thoughts on how to do automated tests for this?  One idea might be to have this split into 2 stages: A first stage, which fetches data from Slack and dumps it to a file in the Slack data format.  And a second that converts the Slack data format to the Zulip import data format.  We could then capture as a text fixture a version of the first phase, and then have automated tests for the conversion piece (which I imagine will have all the complexity), and compare the resulting directory against what is expected.

What do you think?

This is awesome, thanks @rht! Agree with Tim's comments above.

Am I correct in assuming that the format being generated is the same as the format for the existing Zulip import/export tool (manage.py import)? That seems reasonable for doing a faithful full organization import/export.

Yes, I am following the step based on
https://github.com/zulip/zulip/issues/908#issuecomment-247719383. And some of the
todo's requires further discussion, such as the permission hierarchy, where
Slack pins (in channels) and Zulip stars (in zerver_usermessage) are stored,
user presence timestamp, and so on. More at
https://github.com/rht/slack2zulip-data-converter#term-mapping.

At some future point, we can create a web flow for triggering that (doing so would require significant work on the Zulip side import backend, but I know how to do that).

Yes, I also had thought of this; this requires exposing only the
manage.py import command to the web via admin auth. Slack data export, for
instance, has its own web page instead of having it in the team/realm settings.

Do you have thoughts on how to do automated tests for this? One idea might be to have this split into 2 stages: A first stage, which fetches data from Slack and dumps it to a file in the Slack data format.
And a second that converts the Slack data format to the Zulip import data format. We could then capture as a text fixture a version of the first phase, and then have automated tests for the conversion piece (which I imagine will have all the complexity), and compare the resulting directory against what is expected.

This (the first stage) needs to be done once only, I think. It is not critical
to always check that the Slack data export is always up and running.  For the
test, a sample fixture is needed. Also, the test needs to be run in zulip/zulip CI
since it is a manage.py command. Something along the line of
https://github.com/zulip/python-zulip-api/pull/18#issuecomment-322269458
should do (yes I know how to make this work via sed).
Note: the schema of the converted data format is based on the sample export data
in https://github.com/zulip/zulip/blob/master/zerver/tests/test_export.py.

[ ] ~20 TODO's
[x] Test suite stage 1
[ ] Test suite stage 2

note: stage 2 depends on #123 to be merged.

This is superseded by #218. The importer script will live in zulip/zulip instead.


Feature/VAD timestamps are in relation to start stream

What

Word offsets are in relation to stream start.

startTimestamp and endTimestamp equal to the offset within audio context when using start/stop manually or when using file upload without VAD. This is achieved via automatic audio stream control upon start/stop context.
For clarification, audio stream in this context is a piece of continuous audio. In most cases, automation handles signalling the stream start and stop and the developer needs not concern about this. Rarely, controlling the stream manually may be relevant if the developer pauses an external audio source passed to BrowserClient.
Why

Word timestamps match the source audio also when VAD produces multiple audio contexts.

Updated the PR as I spotted a potential source of inaccuracy for timestamps. Now CloudDecoder maintains a record of start time for each audio context.


Programattic ignoring

it'd be nice to use ignores that will not go through minimatch, eg:
metalsmith(__dirname)
  .ignore(function (path) {
    // ignore anything that's not markdown or a file with no extension (eg, a directory)
    if (!path.match(/\.md$/) && !path.match(/\./)) {
      return true
    }
  })

Metalsmith uses minimatch under the hood, so for the specific example you're using there I think this would work: .ignore("!*.md", "!*.*")

:+1: ! patterns work just fine

I suppose for that use case, yes.
Btw, on another note, I encountered a strange thing with ignores: if you have / in your path spec, it compares itself against the whole absolute paths. Eg:
.ignore("/Users/**/*") // will ignore everything if you have your project in /Users/yourname

which makes it impossible to do this:
.ignore("!docs/**/*.md")

@rstacruz I understand why that first one would ignore everything since it's an absolute path, but what's the problem with your second example? It looks like it should work. If it doesn't, that seems like a bug.
I'm actually not opposed to the feature you're suggesting though, since ignoring files based on their path is definitely something that needs to be in the metalsmith core for performance reasons, and even if this particular use case is met by globbing there's bound to be some situation where it wouldn't be sufficient. If one of the metalsmith maintainers confirms that they'd accept a PR adding this feature I'd be happy to work on it.

@Ajedi32: recursive-readme will check for the following paths:
docs
docs/foo
docs/foo/index.md

in this case, the 1st and 2nd will be ignored, leading the 3rd to be ignored.

also, the first one is a problem because this will not work:
.ignore('docs/foo')

...since /Users/rsc/myproject/docs/foo doesn't match docs/foo.

Ah, yeah that seems really messed up. The ignore option should match paths relative to the source directory, not relative to an absolute path as seems to be the case now.
This might require a few upstream fixes...

Upstream issues:
jergason/recursive-readdir#16
jergason/recursive-readdir#23

Or alternately we could fix this at the level of metalsmith. Doesn't seem like it would be too hard, and we'd bascially have to implement most of that functionality anyway if we want to allow functions to be passed as ignores. (Unless of course @jergason is open to having that feature implemented upstream in recursive-readdir).

I'll take a look at these recursive-readdir issues.

@jergason Cool, let me know what you think. I might have some time to contribute a PR or two, but I want to make sure we're on the same page first before I just go ahead and start writing code.

See also: jergason/recursive-readdir#25.


Reorganize Secrets Manager navigation

There are three Secrets Manager pages that are not correctly organized in the new OH docs navigation.

https://open-horizon.github.io/docs/getting_started/overview_sm/
https://open-horizon.github.io/docs/developing/secrets_details/
https://open-horizon.github.io/docs/developing/developing_secrets/

These should move under the Developing Edge Services section within a Secrets Manager section as grand children pages.

Before:

Navigation is now correct.  After:


Allows the Custom Warning Definition to be customized

The custom warning definition, has the id 0. Warning Improvements for XF1 does tricks to allow this to be inserted into the database and then the admin UI can edit it as normal

@Xon I think this is safe to mark as as completed?


Add log_level option to CloudWatchLogs::Client

From issue #1
http://docs.aws.amazon.com/sdkforruby/api/Aws/CloudWatchLogs/Client.html#initialize-instance_method

Ok is not a CloudWatchLogger issue.
It's a Rails 3.2 issue.
I'd just setup the log level to the Logger instance after CloudWatchLogger init.
config.logger.level = Logger::Severity::INFO


Issues with 7in5_V2 screen since Waveshare Update

Notes on the issue highlighted and worked around in #134
Between June 2021 and October 2022
there were two significant updates to epd7in5_V2.py in the Waveshare repo.

The system for writing data over SPI was changed - send_data2 uses  spi_writebyte2 rather than spi_writebyte
This was discussed here back in #18

getBuffer is significantly changed - I don't understand the changes there

The impact on SlowMovie is that the screen is very streaky (see images in #134 ) if SlowMovie is installed or updated.
The workaround is explained here -  by @robweber
I don't know if this impacts any other screens - there were a couple of specific bugfixes on epd7in5_V2.py
I don't know which change (or something different) is causing the streaking.

This is caused by https://github.com/waveshare/e-Paper/commit/99f6a13540da0d4ad5a1291343068e0220f8b219

What is a proper "fix" on the part of either SlowMovie or omni-epd for this? It seems to only affect a handful of displays (the 7.5 for sure). We could tag a specific Waveshare version but that might affect potential fixes for other issues across other devices in that same repo. Is this more of an FYI and we put some disclaimers up for people in various places in the README or install scripts?

I don't know, I'm not sure of the best approach.
It feels sad to me because all the work you've done to get a simple beginner-friendly one-line install now fails for the 'original' screen in the article and the default.
Do you think that update of the 7.5 inch monochrome screen driver is just a mistake on their end - will it break anything trying to render complex images on the screen? I don't really understand the system well enough. Should I report it as a bug? Should they have implemented a new fast method that doesn't break the existing method?
Options might be:

Change default and documentation to recommend another screen in a similar size that works properly
Just document the one-line installation fix
Point to a specific waveshare version
Ask Waveshare to fix it

Been thinking about this for a while - how does this sound for a tentative fix?

Definitely file a bug with Waveshare - this may or may not go anywhere but fix at the source would be best
Add a disclaimer to both the README and install script regarding the issue with the 7.5in devices
Add a menu option in the install script to rollback the waveshare driver to the known working version

Thoughts?

Hi Rob, hesitating on this because my OG VSMP isn't working - just did a completely fresh install of Raspberry OS, checked the mode switches on the hat, ran your fix above and I'm getting super noisy & streaky images, similarly with the waveshare test script - it's like it loads the image correctly, then as it refreshes, a lot of black pixels turn white.
I think your suggestion sounds ideal, but not currently working for me unfortunately.

That's really bizarre given that the old version from above has fixed it before. I'm hesitant to mess up my own setup but I'll flash a new SD and do a clean install as well to see if I get the same result.

I know - it feels more like a hardware problem - I reverted right back to my original code and it behaved the same. I think had it set in the wrong switch position for a while, wonder if that did some damage.
BUT still, it's clearly receiving data and refreshing. So odd.

I did a clean install of the most current branch of the waveshare python libraries. Noticed streaking on every image I tried to load. I uninstalled this and did an install using commit b36cfab0ea336673982640ea21969e5a54714448 from above. Streaking stopped and things went back to normal.
Your issue may very well be hardware related :(

I've started a PR to add a disclaimer to the README and allow for the option to rollback the driver via the install script. Hopefully this should catch most use cases.

Going to close this out since @missionfloyd has fixed this in the Waveshare lib.


2.0 : LiveQuery threading issue

As the update() method is run the background, the following variables are not thread-safe:
https://github.com/couchbase/couchbase-lite-android/blob/feature/2.0/shared/src/main/java/com/couchbase/lite/LiveQuery.java#L46-L49

Actually probably only resultSet and willUpdate should be protected.


Create swap two numbers without using third variable

Pull Request Template
What have you Changed(must)
Write here what you have changed in the codebase
Issue no.(must) -
Pr will be close and marked as spam. If issue number not found or issue was assigned to someone else.
Marking as spam can block your account from HacktoberFest.
Self Check(Tick After Making pull Request)

[ ] This issue was assigned to me if not it will be marked as spam.
[ ] My file is in the proper folder
[x] I am following clean code and Documentation.
[x] I have added the title and what program will do first in the file
[ ] I have named the file as (Problem #). (Problem Title(in Camel Case)).(extension)
ex. 2. AddToNumbers.py

README - How to Contribute

@happyusinggithub you have to mention the issue number in the PR Body.


github: update CODEOWNERS with robert-zaremba

Is there anyone else who should be on here @robert-zaremba? Also, you may need to get added to the regen_iavl_maintain team for commit access.

Thanks for the PR. I will check with our team if someone else feels strong to be here as well.

Thanks for the PR. I will check with our team if someone else feels strong to be here as well.

@erikgrinaker please add also @amaurymartiny . Thanks!

@erikgrinaker please add also @amaurymartiny . Thanks!


Can't See Calendar Title

I just started to play with control.
Angularjs version is 1.3.15. I'm not able to view calendar title (2015 / Week 17 of 2015 etc). Can someone suggest?
Thanks

Can you post some code up?

HTML is as below

    <mwl-calendar events="events"
                  view="calendarView"
                  view-title="calendarTitle"
                  current-day="calendarDay"
                  on-event-click="eventClicked(calendarEvent)"
                  on-edit-event-click="eventEdited(calendarEvent)"
                  on-delete-event-click="eventDeleted(calendarEvent)"
                  auto-open="true">
    </mwl-calendar>

    <button class="btn btn-primary"
            ng-click="calendarView='year'">
        Year
    </button>
    <button class="btn btn-primary"
            ng-click="calendarView='month'">
        Month
    </button>
    <button class="btn btn-primary"
            ng-click="calendarView='week'">
        Week
    </button>
    <button class="btn btn-primary"
            ng-click="calendarView='day'">
        Day
    </button>

</div>
<div>
    <button class="btn btn-primary"
            mwl-date-modifier
            date="calendarDay"
            decrement="calendarView">
        Previous
    </button>

    <button class="btn btn-default"
            mwl-date-modifier
            date="calendarDay"
            set-to-today>
        Today
    </button>

    <button class="btn btn-primary"
            mwl-date-modifier
            date="calendarDay"
            increment="calendarView">
        Next
    </button>
</div>

That's the current master docs for an as yet unreleased version. See here for the current stable docs. Maybe adapt your code from the demo.


Do not remove p2p on Linux during update

When updating P2P on Linux we should not explicitly remove previous package, by using apt remove subutai-p2p. We just need to download latest package and install it. Otherwise in a bare-metal peer with desktop and CC installed we're getting into a situation where all subutai components dependent on subutai-p2p are being removed during update.

Followed the instruction above^
Ended up with successfully updated p2p.
And control center itself was not deleted:

Fixed in master

Successfully created desktop peer.  P2P is installed by default, but there no CC.
Need to clarify.


Update azure-stack-key-features.md - wordsmithing

Internal use is going to be more prevalent than service providers amongst the readers so change the emphasis.
Portal and PowerShell are co-equal paths for interacting with AS.
"consistent with Azure Portal" implies "different".  It isn't different, it is an instance of the Azure Portal running on your servers.
Services and applications - the examples are services => applications so the setup words should follow the same order.

Hi @jpsnover, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;

@jpsnover : Thanks for your contribution to the Azure documentation! The author, @Heathl17, has been notified to review your proposed change.

#sign-off

Only the author of the article can use the sign off comment to add the ready-to-merge label.


Build error on master with GO 1.8beta

Hi,
Im getting the following build errors after commit 843d845 on go1.8beta1 darwin/amd64. It is successful on 843d845 itself.
./main.go:110: opts.Cluster undefined (type server.Options has no field or method Cluster)
./main.go:111: opts.Cluster undefined (type server.Options has no field or method Cluster)
./main.go:112: opts.Cluster undefined (type server.Options has no field or method Cluster)
./main.go:140: undefined: server.ProcessCommandLineArgs
./main.go:159: opts.Cluster undefined (type server.Options has no field or method Cluster)
./main.go:206: opts.Cluster undefined (type *server.Options has no field or method Cluster)
./main.go:208: opts.Cluster undefined (type *server.Options has no field or method Cluster)
./main.go:209: opts.Cluster undefined (type *server.Options has no field or method Cluster)
./main.go:268: opts.Cluster undefined (type *server.Options has no field or method Cluster)
./main.go:269: opts.Cluster undefined (type *server.Options has no field or method Cluster)

btw some nice performance increases on GO 1.8beta

@riaan53 , Looks like this was fixed in https://github.com/nats-io/gnatsd/commit/606f8e95f76e8b320a238efb908569e775c921ac; master branch builds clean for me with 1.8 beta 1.  Can you checkout master give it another shot?

Perfect! Sorry for false alarm :)


Extending/creating custom Immutable types

I figured a separate ticket would be a better place to discuss what an API for this feature might look like, since the potential implementation approach depends on this heavily. So here are some things I've been thinking about. While the syntax:
class User extends Immutable.Map {
}

is kind of neat/simple and initially looks idiomatic ES6, it comes with a lot of baggage. First, it's always necessary to define a custom constructor to pass along the return value from the super call as this isn't done implicitly in js classes.
class User extends Immutable.Map {
   constructor(val) {
      return super(val)
   }
}

Further, as the constructor doesn't really act like a normal constructor there end up being a lot of additional checks necessary to ensure that another Map passed into the custom type is coerced correctly.
So I'm wondering whether there should be something more like:
var User = Immutable.make(Immutable.Map, {

   fullName() {
     return this.get('firstName') + ' ' + this.get('lastName')
   }

})

would be better suited. It would allow for having a dedicated constructor type for a custom immutable type. It might still come with a perf-hit but it would be better isolated from the core implementation.
Also, it might be worth examining at what the equivalent would have looked like in mori when implemented with cljs protocols.

@tgriesser are there any problems with extending Map or List (except the return super in constructor)? Can I extend them safely now?

No  - it's not possible currently unless you use my fork - which I know has its own minor issues depending on the type and isn't well tested. Might be better to wait and see if there's something more official.

+1

I've gotten pretty far on this lately, I've been working on a version which has the entire suite passing, maintains factory functionality (instanceof checks on types) while still allowing for extending into custom types and with a 50-100% perf improvement over master on npm run perf.
@leebyron would love to catch up on IRC sometime about some questions/ ideas I have for v4 based on some of these findings. Mainly around the less-common api surface area (Seq / Collection / Iterables) organization and guarantees. Also around some of the "Clowntown" stuff in declassify.
I think there's some huge room for improvements while keeping stuff true to the JavaScript-y ideals for Immutable.

Just wanted to +1 this as well... I'm working on an Immutable Graph class and running into these problems.
@tgriesser to clarify your "it's not possible currently" comments above - are you saying it's not possible at all currently to write a class which extends Immutable.Map? I tried your syntax from above:
class User extends Immutable.Map {
   constructor(val) {
      return super(val)
   }
}

However, in this case it seems new User() instanceOf User == false

Yes, my I'm saying it's not possible at all... the syntax above works on my other fork.
The Immutable classes are not actually implemented as classes but factory functions (intentionally so you don't need to call them with new), but this ends up being terribly inefficient performance wise, which is where the 50-100% perf gains I've seen in my latest attempts at this are coming from.
So it'll eventually be possible but I don't really want to spend any significant time on it past what I already have until I get a chance to talk to @leebyron a bit more.

I'm excited to see more of what you've built, Tim! Mind writing it up for me in an email or something<EMAIL_ADDRESS>

@tgriesser @leebyron thank you for your work guys

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

Would love to be able to extend the core types

Works for me with Webpack and babel loader.
import {Map} from "immutable";
class MyMap extends Map{
  setStuff(val){
    return this.set('stuff', val);
  }
}

console.log(new MyMap().setStuff('derp').toJS());//{stuff: 'derp'}

+1

+1

+1

+1

+1

+1

+1

+1
@dandelany I would also love to see an Immutable Graph lib!

+1 this would be enormously helpful. Is there any established way for creating immutables with class methods?

I'm still very concerned about the performance implications as well as creating an API that leads to anti patterns.
For those +1ing, could you please add a use case you're trying to enable that's not currently possible by using Immutable.Record or the existing List and Map structures?

Yeah I'm actually no longer using this fork myself, fully agree with the concern about anti-patterns.

@leebyron I just need an Immutable graph interface. Something like: state.getIn(['users', 'bob']).edge('likes').map( contentObj => state.setIn(['content', contentObj, 'isLiked'], true));
state.getIn(['content', 'firefly']).edge('likedBy').map( user => state.setIn(['users', user, 'foo'], 'bar') );
I'm tempted to write my own library, but I was hoping to use Immutable as a base. Would it would be better for me to open source something that has the same interface as Immutable, and uses Im under the hood for graph operations?

I think that should be entirely possible by composing Immutable.js collections rather than extending them. You can check out OrderedMap as an example of this. It is a new kind of collection with new properties and some differing API, but is implemented by using List and Map

+1.
@leebyron as for a useCase. I am building an app with a pretty complex datastructure. Totally possible with native Immutable collections, but some things will be 4 or 5 levels deep.
For example, users can vote multiple times on a voteSlide in a certain presentation, to get a single vote could look like:
var specificVote = state.getIn([presentationId,slideNumber,participantId,answerId]);

The problem with this is that when there will be other developers working this code later, they will need to know the order of indices / the structure of the app. Ofcourse comments and state inspection will do the job, but what I was thinking about is to create a Presentation which extends Map, which holds Slides which extend Map, which hold Participants, etc ... This way I can make extra methods like:
var presentation = state.get(presentationId);
var specificVote = presentation.getSlide(slideNumber).getParticipant(participantId).getVote(voteId);

more code, perhaps less performant(?), but much easier to work with for them, with code completion.

This has been tagged needs-decision for over 9 months. Can we get a decision?

+1

+1

+1

+1

+1

I'd like to have a simple way of overriding List.toString()

I'm going to officially close this issue since we decided a while back that it wasn't worth the serious performance costs. We would rather have performant data structures rather than subclassable ones.
This also encourages using plain functions for extended behavior, or composition for more advanced data structures, which are good patterns to follow

@leebyron thank you for this update
do you think it would be possible to document everything we need to do properly to make custom data structures using composition?

Yes, that's a great idea. In the meantime, check out the source for OrderedMap and OrderedSet, both are "new" data structures built by composing List and Map

For future readers, I created a little package that more or less is an "inheritable" Immutable.Map type https://github.com/jdfreder/inheritable-map

For anyone who's still interested in this, I wrote an extendable-immutable package, similar to @jdfreder's one, but with complete expected behavior: it can be extended multiple times deep, it doesn't break the prototype chain at all (f.e. Map.isMap and x instanceof Map would pass), it doesn't break mutable operations etc.
https://github.com/philpl/extendable-immutable


DOC: Add examples to scipy.special docstrings

updates an example of docstrings following a guideline

revised a document (@pvanmulbregt requested changes)

Thanks for implementing the changes by the way. Sometimes our comments can pile up pretty quick during the reviews 😃

Yes @ilayn! It is really hard to catch up a speed of comments😆.

This looks pretty close. @akahard2dj would be great if you could address the last couple of comments.

It was good to have a valuable discussion in this issue.
Thanks @pv, @ilayn, @pvanmulbregt and @rgommers

It was good to have a valuable discussion in this issue. Thanks @pv, @ilayn, @pvanmulbregt and @rgommers

do you mean to say you did address the comments already, or did you mean to push a new commit?

I think if the last bit of comments are addressed this is good to go.


getUserFollowList and getUserFollowedByList returns empty list

Hi All,
First of all thanks for the good work so far!
I'm having a issue using method getUserFollowedByList and getUserFollowList, both of them return empty list of users... But i'm able to see my user details and i'm requesting the scope follower_list.
My code:
final Instagram instagram = new Instagram(accessToken);
final UserInfoData userInfoData = instagram.getCurrentUserInfo().getData();
final String userId = userInfoData.getId();
final UserFeed followers = instagram.getUserFollowedByList(userId);
final List followersList = followers.getUserList();
Am i using something wrong? Thanks for your attention,
Cheers

If your application is in SandBox you can interact only with users that are invited to the sandbox of your application. I was using search and i was returning empty list too. But if the search query was a part of my nickname or my mate's nickname that was added to the sandbox it showed it and only it. So, not a library problem. As I understood this was introduced around the 17th of November.

Oh okay got it! thanks for information! Do you know what need to be done to go live ?

@lealoureiro, I think it'll be better if you read this guide: https://www.instagram.com/developer/sandbox/ . The last paragraph is "going live" but the rest of the paragraphs are informative too it also tells about api limitations.

Okay! Thanks a lot for help.


Adding a redux store for application state

Closes #543
Had to add a copy of ApplicationState to redux store to get this working.
Basically check if active entity is the current metrics definition then set it to next available or set to one of the models.

looks good to me aditya, thank you


Create vermont-counties-metadata.json

Add Vermont counties

This is live now at: http://click-that-hood.com/vermont-counties. Thank you.
I’d encourage you to try to run this locally first and see where it works. Two changes I needed to made to make it work: rename from vermont-counties-metadata.json to vermont-counties.metadata.json, and then within that file, change smart quotes to dumb quotes.


Cannot Delete/Edit Tags after changing SD Card

Samsung S20 FE 5G (it got an SD Card Slot)
Package: deckers.thibault.aves
Aves version: 1.8.3-play
Aves build: 94
Flutter version: 3.7.7
Flutter channel: stable
Android version: 13
Android API: 33
Android build: TP1A.220624.014.G781BXXU4HWB1
Device: samsung SM-G781B
Geocoder: ready
Mobile services: ready
System locales: sv_SE, en_GB
Aves locale: system -> en
Installer: com.android.vending
Error reporting: false

Changed SD Card from 256 to 512 GByte update, powered Phone down, Copied old to new Card, placed new Card into the phone and booted up.
It turns out, internally SD Card have an unique(?) ID. Had to re-add albums but everything seems to work fine so far on the display side of things. But i cannot delete pictures or add tags (or any other file manipulation). When i delete it will act as if had done so but when closing and opening Aves the picture will be present again. When editing tags it will display a "failed", similar to https://github.com/deckerst/aves/issues/318
I investigated my storage access settings:

In my file manager (MiX) the current SD cards ID is the same as in the permission, although i cannot remember having given those.

Problem: Aves never prompts me for new permission nor seem I to see a path to make it manually requesting access to the new sd card as it still thinks it can access everything just fine (maybe due some lingering overall access permission?)
I could probably just hard reset the app but then i had to redo all the albums and hide things again (there is a lot of non-picture images on a 512 gbyte sd card) so I would appreciate a softer solution.

Thanks for the report. I'll investigate the bug itself when i can, but first let's try to solve your situation. If you remove the current accesses you have in Storage Access, and then retry to edit/delete your items on the SD card, does it prompt you for access and then do it right?

then i had to redo all the albums and hide things again

Do you know you can export/import settings (including what's hidden), custom covers and favorites? It's in the top right menu in the Settings page.

Okay i was able to work around:
I could actually not delete the rights to individual folders in the privacy settings, tapping the revoke button did nothing (might be a bug in itself but if noone else has it i have no clue how to trigger that). So i was about to go the settings ex/import route you suggested. When fumbling around in the app settings i deleted the right to external sd cards all together. Back in Aves i tried to edit a tag once more and now it asked me to grant permissions, i did ad it worked.
I am deeply sorry that i cannot provide further info how i actually got in this messy half state in the first place, but my best bet would still be some SD card related ID nonsense but my knowledge of android13 right management is spotty at its best.
fun fact, according to android Aves uses 14 gbyte of space, is that all thumbnails?

Don't be sorry, you actually provided very useful things for me to try and debug. I'm glad things worked out for you but i will keep this issue open until i figure things out.

fun fact, according to android Aves uses 14 gbyte of space, is that all thumbnails?

Haha, that's possible:

#206

In the meantime, you can safely "clear cache" (not "clear data") in the app android settings.

Fixed the permission issue when changing SD card. Thanks again for reporting the issue!


Adding express-decorator-router

express-decorator-router is a simple library that allows decorators to be used without having to transpile javascript code.
By submitting this pull request, I promise I have read the contribution guidelines twice and ensured my submission follows it. I realize not doing so wastes the maintainers' time that they could have spent making the world better. 🖖
⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆

I think this is a better fit for https://github.com/rajikaimal/awesome-express


Emulator transaction balancing doesn't work after fix

Summary
The balancer in the emulator does not compute the correct Ada required to cover the minimum Ada per output when minting tokens. Our best guess is that this is because it generates separate outputs for minted tokens and left-over tokens from consumed outputs, instead of merging them into a single output, but computes the Ada requirement as if they were merged.
This happens even after the fixes in PR#229.
Steps to reproduce the behavior
The following test fails in Spec.Contract in plutus-contract-tests (with a small change to the imports):
import Ledger.Scripts (datumHash, mintingPolicyHash, unitDatum, unitRedeemer)
import Ledger.Typed.Scripts.MonetaryPolicies qualified as MPS

balanceTxnMinAda' :: TestTree
balanceTxnMinAda' =
    let vA n = Value.singleton "ee" "A" n
        vB n = Value.singleton "ff" "B" n
        mps  = MPS.mkForwardingMintingPolicy vHash
        vL n = Value.singleton (Value.mpsSymbol $ mintingPolicyHash mps) "L" n
        options = defaultCheckOptions
            & changeInitialWalletValue w1 (<> vA 1 <> vB 2)
        vHash = validatorHash someValidator
        payToWallet w = Constraints.mustPayToPubKey (EM.mockWalletPaymentPubKeyHash w)
        mkTx lookups constraints = Constraints.adjustUnbalancedTx . either (error . show) id $ Constraints.mkTx @Void lookups constraints

        setupContract :: Contract () EmptySchema ContractError ()
        setupContract = do
            -- Make sure there is a utxo with 1 A, 1 B, and 4 ada at w2
            submitTxConfirmed $ mkTx mempty (payToWallet w2 (vA 1 <> vB 1 <> Value.scale 2 (Ada.toValue Ledger.minAdaTxOut)))
            -- Make sure there is a UTxO with 1 B and datum () at the script
            submitTxConfirmed $ mkTx mempty (Constraints.mustPayToOtherScript vHash unitDatum (vB 1))
            -- utxo0 @ wallet2 = 1 A, 1 B, 4 Ada
            -- utxo1 @ script  = 1 B, 2 Ada

        wallet2Contract :: Contract () EmptySchema ContractError ()
        wallet2Contract = do
            utxos <- utxosAt someAddress
            let txOutRef = head (Map.keys utxos)
                lookups = Constraints.unspentOutputs utxos
                        <> Constraints.otherScript someValidator
                        <> Constraints.mintingPolicy mps
                constraints = Constraints.mustSpendScriptOutput txOutRef unitRedeemer                                        -- spend utxo1
                            <> Constraints.mustPayToOtherScript vHash unitDatum (vB 1)                                       -- 2 ada and 1 B to script
                            <> Constraints.mustPayToOtherScript vHash (Datum $ PlutusTx.toBuiltinData (0 :: Integer)) (vB 1) -- 2 ada and 1 B to script (different datum)
                            <> Constraints.mustMintValue (vL 1) -- 1 L and 2 ada to wallet2
                            -- the leftover A doesn't get any ada here
                            -- the right solution would be to merge the 1 L and 2 Ada with the leftover A
                            --
                            -- Note: this bug is flaky - if you change the amount of A at the wallet to 899
                            -- this test passes, if you change it to 900 it fails, and at 901 it passes again.
                            -- This is most likely because the order in which UTxOs appear in the UTxO map depend
                            -- on their hash - so when UTxOs are pulled in to balance the UTxOs
                            -- containing Bs one of two things happen:
                            --  1. Either the precise amount of Ada required to balance existing utxos is found in the UTxO containing A (utxo0)
                            --  but we produce an extra UTxO that contains only A (that never gets any Ada) or
                            --  2. A utxo with a lot of ada is taken in first and is then squashed with the output utxo for As.
            submitTxConfirmed $ mkTx lookups constraints

        trace = do
            Trace.activateContractWallet w1 setupContract
            Trace.waitNSlots 10
            Trace.activateContractWallet w2 wallet2Contract
            Trace.waitNSlots 10

    in checkPredicateOptions options "balancing doesn't create outputs with no Ada (2)" assertNoFailedTransactions (void trace)

Actual Result
The test fails with a ValueContainsLessThanMinAda validaton error.
Expected Result
We expect the test to succeed.
Describe the approach you would take to fix this
We think the issue is in Wallet.Emulator.Wallet.handleBalanceTx.
System info
OS: WSL 2 (this really shouldn't matter...)
Plutus: 7f53f18df

I have even simpler example, with gift contract (i.e. always succeeding validator) which now fails:
When I do
giftTrace :: EmulatorTrace ()
giftTrace = do
    c1 <- Trace.activateContractWallet w1 giftContract
    Trace.callEndpoint @"give" c1 1000000
    void $ Trace.waitNSlots 1

with
give :: AsContractError e => Integer -> Contract w s e ()
give amount = do
    let tx = Constraints.mustPayToOtherScript valHash Scripts.unitDatum $ Ada.lovelaceValueOf amount
    ledgerTx <- submitTx tx
    void $ awaitTxConfirmed (getCardanoTxId ledgerTx)
    logInfo @String $ printf "made a gift of %d lovelace" amount

it fails:
      [INFO] Slot 0: TxnValidate 98d5fbcefe21113b3f0390c1441e075b8a870cc5a8fa2a56dcde1d8247e41715
      [INFO] Slot 1: 00000000-0000-4000-8000-000000000000 {Wallet W872c}:
                       Contract instance started
      [INFO] Slot 1: 00000000-0000-4000-8000-000000000000 {Wallet W872c}:
                       Receive endpoint call on 'give' for Object (fromList [("contents",Array [Object (fromList [("getEndpointDescription",String "give")]),Object (fromList [("unEndpointValue",Number 1000000.0)])]),("tag",String "ExposeEndpointResp")])
      [INFO] Slot 1: W872cb83: Balancing an unbalanced transaction:
                                 Tx:
                                   Tx 156e33a2b2002c7fa42ed139604c824fa2e4395345bd838b7902f99bdeb47545:
                                     {inputs:
                                     collateral inputs:
                                     outputs:
                                       - Value (Map [(,Map [("",1000000)])]) addressed to
                                         ScriptCredential: 62bdc3d04d04376d516d31664944b25ce3affa76d17f8b5e1279b49d (no staking credential)
                                     mint: Value (Map [])
                                     fee: Value (Map [])
                                     mps:
                                     signatures:
                                     validity range: Interval {ivFrom = LowerBound NegInf True, ivTo = UpperBound PosInf True}
                                     data:
                                       <>}
                                 Requires signatures:
                                 Utxo index:
                                 Validity range:
                                   (-∞ , +∞)
      [WARNING] Slot 1: W872cb83: Validation error: Phase2 bc7fb8d2c5f914b3f44a1986ebb1dd88e104999e0453edc5a5c8ab6683adda4e: ValueContainsLessThanMinAda (Tx {txInputs = fromList [TxIn {txInRef = TxOutRef {txOutRefId = 98d5fbcefe21113b3f0390c1441e075b8a870cc5a8fa2a56dcde1d8247e41715, txOutRefIdx = 5}, txInType = Just ConsumePublicKeyAddress}], txCollateral = fromList [], txOutputs = [TxOut {txOutAddress = Address {addressCredential = PubKeyCredential a2c20c77887ace1cd986193e4e75babd8993cfd56995cd5cfce609c2, addressStakingCredential = Nothing}, txOutValue = Value (Map [(,Map [("",99000000)])]), txOutDatumHash = Nothing},TxOut {txOutAddress = Address {addressCredential = ScriptCredential 62bdc3d04d04376d516d31664944b25ce3affa76d17f8b5e1279b49d, addressStakingCredential = Nothing}, txOutValue = Value (Map [(,Map [("",1000000)])]), txOutDatumHash = Just 923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec}], txMint = Value (Map []), txFee = Value (Map []), txValidRange = Interval {ivFrom = LowerBound NegInf True, ivTo = UpperBound PosInf True}, txMintScripts = fromList [], txSignatures = fromList [(8d9de88fbf445b7f6c3875a14daba94caee2ffcbc9ac211c95aba0a2f5711853,e7a40cadb0c73a7dc86c08b27f72194269e8395766412d820a0b7199fafbd1ce7f3e48ecfa26f504574cb6b39ac74ba77cf931fa4a2a4949da74a766584e8a0c)], txRedeemers = fromList [], txData = fromList [(923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec,Datum {getDatum = Constr 0 []})]}) (Lovelace {getLovelace = 2000000})

probably not as you have
minAdaTxOut :: Ada
minAdaTxOut = Ada.lovelaceOf 2_000_000

and my tests move only 1 Ada around.

@phadej "Normally, the minimum is 1 Ada, but transaction outputs that have datum are slightly more expensive than 1 Ada. So, to be on the safe side, we set the minimum Ada of each transaction output to 2 Ada."

I meant why that restrictiong exists at all on the cardano network.

@phadej "minUTXOvalue is a security parameter that prevents "flood attacks" making them costly. A flood attack is where malicious users could exploit the block size limit to overwhelm the blockchain with low-valued spam transactions, and cause delay in the verification of legitimate transactions."

Where from is that?

https://iohk.zendesk.com/hc/en-us/articles/900001987323-Fees-Explained

@MaximilianAlgehed thanks for the issue and the test!


Using pinocchio with catkin

Hi, I'm trying to build against pinocchio, which I installed by including it as a  in the package.xml of a package in the catkin workspace of my ROS codebase. I then installed pinocchio using
rosdep install --from-paths src --ignore-src -r -y
When I try to run catkin_make, I get the error
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Found package configuration file:

    /opt/ros/noetic/share/pinocchio/cmake/pinocchioConfig.cmake

  but it set pinocchio_FOUND to FALSE so package "pinocchio" is considered to
  be NOT FOUND.

Could anyone possibly help me understand what I'm doing wrong? My understanding of the build system is limited so I really appreciate any help. Thanks!

@wxmerkt Could you please handle this issue?

Hi @jakewelde,
Happy to take a look at this. Can you please post the excerpt of the CMakeLists.txt where you find Pinocchio and how you link against it?
Please note you need to find the package in CMake as find_package(pinocchio REQUIRED) and not via catkin. You can then link against it using target_link_libraries(${PROJECT_NAME} pinocchio::pinocchio).

Thanks so much for your quick reply! I believe I've updated my CMakeLists.txt according to your instructions. It's included below.

cmake_minimum_required(VERSION 2.8.3)
project(aerial_manipulator_visualization)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
find_package(catkin REQUIRED COMPONENTS geometry_msgs sensor_msgs nav_msgs roscpp aerial_manipulator_platforms
topic_tools)
find_package(pinocchio REQUIRED)
find_package(Eigen3 REQUIRED)
include_directories(include ${catkin_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR})
catkin_package(
INCLUDE_DIRS
LIBRARIES
CATKIN_DEPENDS geometry_msgs sensor_msgs nav_msgs roscpp topic_tools aerial_manipulator_platforms
DEPENDS Eigen3)
include_directories(${catkin_INCLUDE_DIRS})
add_executable(aerial_manipulator_visualization src/aerial_manipulator_visualization.cpp)
add_dependencies(aerial_manipulator_visualization ${catkin_EXPORTED_TARGETS})
target_link_libraries(aerial_manipulator_visualization ${catkin_LIBRARIES})
target_link_libraries(aerial_manipulator_visualization pinocchio::pinocchio)
install(TARGETS ${PROJECT_NAME}
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
install(DIRECTORY launch/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch)
install(DIRECTORY rviz/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/rviz)

Not sure if this is helpful, but based on this issue #1261 I ran the command
pkg-config --libs pinocchio
which gave me the result
Empty package name in Requires or Conflicts in file '/opt/ros/noetic/lib/pkgconfig/pinocchio.pc

I've also tried to install pinocchio according to the standard instructions here, but when I run
sudo apt install -qqy robotpkg-py27-pinocchio  # Adapt your desired python version here
I get the error
E: Unable to locate package robotpkg-py27-pinocchio
(I am running ROS Noetic on Ubuntu 20.04)

Hi @jakewelde,
I put together a sample project showing how to include and use Pinocchio in a catkin project: https://github.com/wxmerkt/pinocchio_ros_example
Note, this buildtests against the ROS-distributed version in Noetic as well - and this worked: https://travis-ci.com/github/wxmerkt/pinocchio_ros_example/jobs/386377260
Please note that once you start mixing robotpkg and ROS distributed Pinocchio things become quite complex (you need to be careful about the paths etc.). Can you catkin clean and make? (Note: both locally and on CI we only use catkin build from catkin tools rather than catkin_make in case that makes a difference).

Thanks so much for your detailed help!
After doing a make clean I was able to build the example package and then also add the code to my other package and build it. I think you're spot on that my several attempts to install pinocchio through different means confused things.
However, when I try to include both <ros/ros.h> with the example code you included for Pinocchio, I get template errors like
 error: wrong number of template arguments (21, should be at least 0) related to the Pinocchio code.
 Do you think this could be related to using catkin_make instead of catkin build? I can try switching over but will have to try and understand the details of the differences.

I just saw your comment on #1056 regarding include order and was able to build after including <ros/ros.h> after the pinocchio includes!

Thanks again for your prompt assistance on this, really appreciate it!

Thanks @wxmerkt for a precise and concise answer.


various reformatting

@saroufimc1,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Organisation filtering

https://trello.com/c/GsK9GgOu/241-filter-index-page-by-organisation

@tijmenb updated as we discussed.


Improvements on top of new sign and tests

Description
The changes aim to:

fail early if none of 'api-server' or 'SIGNING_JSON_INPUT_FILE' is
provided
allow the combination of 'api-server' AND 'SIGNING_JSON_INPUT_FILE'
if 'save' is not used and 'api-server' is not provided then save
result at DEFAULT_PATH (sign_payload.json at the moment)
simplify the sign helper functions
modify the 'tests/files/payload/sign_pending_roles.json' example
payload to follow the actual API response from "GET /api/v1/metadata"

Finally, the changes address some small comments made by @lukpueh in a previous pr
and improve tests.
Additional requirements

[x] Tests have been added for the bug fix or new feature
[x] Docs have been added for the bug fix or new feature

Code of Conduct
By submitting this PR, you agree to follow our Code of Conduct.

[x] I agree to follow this project's Code of Conduct

Added a commit disabling codecoverage report for these lines that we don't anticipate to test as we will remove them.

Last commit added after a discussion with @kairoaraujo.

Rebased commits on top of main.
The last commit addresses @lukpueh comments.
@kairoaraujo the pr enabling FT with sign is here https://github.com/repository-service-tuf/repository-service-tuf/pull/730

I think we need to first merge https://github.com/repository-service-tuf/repository-service-tuf/pull/730 and then approve this one and see if the test succeed.


Webp comparing issues

hey @takahirom
1st of all, thank you for this webp feature, it seems to be working very nice (at least the recording part xD)
as for comparing, i've got some weird issues
like

most of them are related to gradients we use
what may cause this? is there a need to adapt comparing algorythm for webps?
thanks

thats image comparator
public open val imageComparator: SimpleImageComparator = SimpleImageComparator(maxDistance = 0.0f, hShift = 1)
and results validator
public open val resultValidator: (ImageComparator.ComparisonResult) -> Boolean by lazy {
ThresholdValidator(threshold = maxDiff.toFloat())
}

just found out that PixelConfig.Rgb565 does not work with webp recording
java.io.IOException: Incompatible image: BufferedImage@6e7bd96c: type = 8 DirectColorModel: rmask=f800 gmask=7e0 bmask=1f amask=0 ShortInterleavedRaster: width = 550 height = 60 #numDataElements 1

@ArcaNO93
Thank you for reporting this issue. We have a test that checks the WebP comparison, but it may not be sufficient.
Could you share a composable function or view that we can use to reproduce the problem?

unfortunately cant say much cause of NDA
but
all of failing tests are connected with gradients and custom canvases
for example
here we have three layers with different offsets and color filter
    Canvas(modifier = modifier) {
        scaleImage(scaleX = X) {
            drawImage(
                image = image1,
                topLeft = offset1,
                colorFilter = filter1
            )
        }
        scaleImage(scaleX =  X) {
            drawImage(
                image = image2,
                topLeft = offset2,
                colorFilter = filter2
            )
        }
        scaleImage(scaleX = X) {
            drawImage(
                image = image3,
                topLeft = offset3,
                colorFilter = filter3
            )
        }
    }
    ```

    does it help?

I was able to reproduce the problem. However, I was unable to figure out what the difference is.
It seems that GitHub doesn't support WebP, so I saved this image as a PNG.

  @Test
  fun whenCompareSameImageWithGradientsTheCompareImageShouldNotBeGenerated() {
    boxedEnvironment {
      ROBORAZZI_DEBUG = true
      provideRoborazziContext().setImageExtension("webp")
      val prefix =
        DEFAULT_ROBORAZZI_OUTPUT_DIR_PATH + "/" + DefaultFileNameGenerator.generateFilePath().nameWithoutExtension
      val expectedOutput =
        File("$prefix.webp")
      val expectedCompareOutput = File("${prefix}_compare.webp")
      expectedOutput.delete()
      expectedCompareOutput.delete()
      try {
        val canvasUi = @Composable {
          // Show Canvas transparent gradient
          Canvas(modifier = Modifier.fillMaxSize()) {
            drawRect(
              color = Color(0xFF000000),
              topLeft = Offset(0f, 0f),
              size = Size(100f, 100f)
            )
            drawRect(
              brush = Brush.verticalGradient(
                colors = listOf(Color(0xFF000000), Color(0x00000000)),
                startY = 0f,
                endY = 100f
              ),
              topLeft = Offset(100f, 0f),
              size = Size(100f, 100f)
            )
            // Color patterns
            drawRect(
              brush = Brush.horizontalGradient(
                colors = listOf(Color(0xFFFF0000), Color(0x00000000)),
                startX = 0f,
                endX = 100f
              ),
              topLeft = Offset(0f, 100f),
              size = Size(100f, 100f)
            )
            drawRect(
              brush = Brush.linearGradient(
                colors = listOf(Color(0xFF00FF00), Color(0x00000000)),
                start = Offset(100f, 100f),
                end = Offset(200f, 200f)
              ),
              topLeft = Offset(100f, 100f),
              size = Size(100f, 100f)
            )
            drawRect(
              brush = Brush.radialGradient(
                colors = listOf(Color(0xFF0000FF), Color(0x00000000)),
                center = Offset(150f, 150f),
                radius = 50f
              ),
              topLeft = Offset(100f, 100f),
              size = Size(100f, 100f)
            )
          }
        }
        captureRoboImage(
          filePath = expectedOutput.absolutePath,
          roborazziOptions = RoborazziOptions(
            taskType = RoborazziTaskType.Record,
            recordOptions = recordOptions
          )
        ) {
          canvasUi()
        }
        DefaultFileNameGenerator.reset()
        captureRoboImage(
          filePath = expectedOutput.absolutePath,
          roborazziOptions = RoborazziOptions(
            taskType = RoborazziTaskType.Compare,
            recordOptions = recordOptions
          ),
        ) {
          canvasUi()
        }
        assert(expectedOutput.exists())
        assert(!expectedCompareOutput.exists())
      } finally {
//        expectedCompareOutput.delete()
      }
    }
  }

I might be able to fix this. 😅 The image difference caused by WebP has been resolved.

good stuff
thanks!

However, the image suggests that the red color changes from the middle, indicating that WebP images do not consistently return a red value of r = 1 for transparent colors. I couldn't identify the cause of this issue.

we ll its better than it was :-)


TextField title is automatically change to all uppercase

ℹ Please fill out this template when filing an issue.
All lines beginning with an ℹ symbol instruct you with
what info we expect.
Please remove this line and all above before submitting.

Before you start, are you using the latest SkyFloatingLabelTextField release?
Issues are for feature requests, and bugs; questions should go to Stack Overflow with
the tag skyfloatinglabeltextfield.

Report
What did you do?
ℹ Please replace this with what you did.
I added placeholder and title as "UserName" after inputting text data, the title is showing as "USER NAME".
ℹ Please replace this with what you expected to happen.
How can use the original one without changing to Uppercase.
ℹ Please replace this with of what happened instead.
Environment
ℹ Please fill in this section with information about your environment
Xcode Version: 10.1
SkyFloatingLabelTextField Version: 3.6.0
Deployment Target: 9.0
Base SDK:
Method of Integration: CocoaPods | Carthage | Manual
Project that demonstrates the issue
ℹ Please link to a project we can download that reproduces the issue if applicable.

I have same problem, this is my current solution. Hope it helps.
class CustomTextField: SkyFloatingLabelTextField {
    private var _titleFormatter: (String) -> String = { (text: String) -> String in
        return text
    }
    override var titleFormatter: ((String) -> String) {
        get {
            return _titleFormatter
        }
        set {

        }
    }
}

Opp! Great! it is working well. Thank you so much bro!


global-cache - modified message

Under <IP_ADDRESS>. Notification processing:
"The cache notification message published by the Global Cache should be identical to the notification message received, except for the following:..."
In addition, some further adjustments are allowed, but they are not necessary:

adding in a links entry "length"
for cache override set properties.cache to false (from default true)
remove properties.content if content size too high
adding properties.integrity.value and properties.integrity.method if not included

As I believe that some of these adjustments increase quality, they should not be prohibited. Or are they forbidden?

Addition:

for cache override there will no message be sent from cache (can be deleted from the list)
for adding properties.integrity we could add for example to value and method a source to clarify it is new set by global-cache


plane mode: allow app to start even without connection

Even if you have no internet connection you should be able to use the source editor in studio + the style editor with local sources. But this is currently not possible because when you launch studio without a connection you get forwarded to an error page that does not allow any browsing. This fix allows Studio to begin at a page that allows you to actually browse to styles and sources.

@yhahn @camilleanne - see any issues merging this?

:+1:


Add support for verses split in parts

There are cases where a verse is split in parts. The music is identical and repeated.
Possible solution:
<verse n="1">
  <versePart>
    <syl>Da</syl>
  </versePart>
  <versePart>
    <syl>Der</syl>
  </versePart>
</verse>

That is
<content>
  <rng:zeroOrMore>
    <rng:choice>
      <rng:ref name="dir"/>
      <rng:ref name="dynam"/>
      <rng:ref name="tempo"/>
      <rng:ref name="space"/>
    </rng:choice>
  </rng:zeroOrMore>
  <rng:oneOrMore>
    <rng:choice>
      <rng:ref name="model.sylLike"/>
      <rng:ref name="model.appLike"/>
    </rng:choice>
  </rng:oneOrMore>
  <rng:zeroOrMore>
    <rng:ref name="model.lbLike"/>
  </rng:zeroOrMore>
</content>

We could also have a @sym on <verse> for the brace and a Schematron rule for checking that it is present only with <versePart>
Example provided by @craigsapp

@lpugin, @craigsapp: I think <volta> may be more appropriate here than <versePart>.  So Craig's example would be --
<verse n="1">
  <volta>
    <syl>Da</syl>
  </volta>
  <volta>
    <syl>Der</syl>
  </volta>
</verse>

I'm also thinking of creating a <refrain> element within which <volta> also works much better than <versePart>.  For example,
<refrain n="1">
  <volta>
    <syl>Do</syl>
  </volta>
  <volta>
    <syl>Di</syl>
  </volta>
</refrain>

<refrain> is intended to substitute for, and perhaps eventually replace, <verse refrain="true">, which is a bit of a kludge.  <verse> and <refrain> will have the same content model --
((dir|dynam|tempo|space)*, (syl|volta|app)+, lb*

A @symbol attribute can be added to both elements that can take the same values as those for grouping staves -- brace, bracket, bracketsq, line, none.  However, the @symbol attribute for the lyric elements should be defined in its own attribute class, probably named "att.voltaGroupingSym".  This will allow it to be modified separately from att.staffGroupingSym.
My only concern is that "volta" is a fairly generic term that may be misunderstood; that is, folks may be confused by its use in this context and not for repetitions of musical content.
Thoughts?

I like <volta> as I associate the word with musical repetition (and don't know what it means otherwise).

I don't know that it has a meaning apart from "time" in the sense of an individual iteration of a repeated sequence, as in "3rd time".


phaser problem under ios

After the ios mobile phone logs in to the browser：
1: enter the text and double-click the page to enlarge;
2: after the ios soft keyboard is back down, the phaser game will only display the part of the soft keyboard that is not covered.
How to solve these two problems?

More details?

More details?

I found a solution to the problem，https://muffinman.io/ios-safari-get-bounding-client-rect-bug/，
Thank you for following up

@akeboshi1 could you close, please.

Got you covered @samme :wink: