Support Binary Mask with transparent SementationMask interface

After a major refactor on #150 I have implemented a generic SegmentationMask with having the following in mind:
Segmentations come in either:
1) Binary masks
2) Polygons

Binary masks can be represented in a contiguous array
and operations can be carried out more efficiently,
therefore BinaryMaskList handles them together.

Polygons are handled separately for each instance,
by PolygonInstance and instances are handled by
PolygonList.

SegmentationMask is supposed to represent both,
therefore it wraps the functions of BinaryMaskList
and PolygonList to make it transparent.

Features:

Error handling: I have added multiple sanity-check at different levels of initializations, which should prevent invalid data to pass through.
Transparent interface - Generic backend: BinaryMaskLists and PolygonLists are now interchangeable, and both can serve as the underlying representation of the SegmentationMask.
Unit test: I have refactored @wangg12 's unit tests as well, and in this notebook I have provided visual feedback on the results as well.
Unit train: Quick schedule trainings were done using configs/quick_schedules/e2e_mask_rcnn_R_50_FPN_quick.yaml with the Binary Masks consistently outperforming (maskAP=5.8) the training using Polygon representation on coco_minival. Also, using the Polygon backend the similar performance (maskAP=5.6) was achieved when using the current backend in the master branch.

Downsides:
I have changed the syntax to represent the structure more coherently which affects two lines in the lib:

[maskrcnn_benchmark/data/datasets/coco.py-L83]
[maskrcnn_benchmark/modeling/roi_heads/mask_head/loss.py-L38]

Please also note, that now indexing in or slicing the SegmentationMask, PolygonList, BinaryMaskList instances returns an instance of the same class instead of the underlying representation with the corresponding size of the slice:
SM = SegmentationMask( ... )
type(SM[0]) == type(SM)
type(SM[1:4]) == type(SM)

I could not add a comment to @fmassa 's comment so I will post it below:

Actually I would rather have this here, but instead of a TODO as a FIXME, because this is currently a bottleneck in the training code

Agreed.
I was thinking how could this step be speed up a bit:
1) Iterate
2) Crop
3) Resize
4) Stack

But since the Crop step is carried out differently for each entry, I didn't see a straightforward way to do this.
If you think that a simple Python multiprocessing thread could solve this then I would be more than happy to implement it - I am just curious if it would collide with the torch backend.

I have a few comments. I'd need to run a few experiments to validate that there is no change in behavior, so it might take a bit more time to merge this PR than usual.
Hi @fmassa,
How are you going to validate exactly the consistency? I can make a notebook on comparing the old and the new implementation (both elementwise check on mask tensors and comments on syntax), if that helps.

Thank you

Hi @botcs sorry for the delay
About your first message:
This PR writes a cuda kernel that replaces the Crop / Resize / Stack https://github.com/facebookresearch/maskrcnn-benchmark/pull/379
I was maybe hoping to have a way of decomposing a bit more the structures, but this might not be possible / needed.
About validating the consistency, my thought was to run a full training and compare end performances. This would indicate if the representation that we use brings any noticeable difference in the final model result.

What would you think about a CityScapes training, where we could compare the old-poly, new-poly, new-mask annotation?
By old-poly, I mean the implementation on master, using coco-style training (issue filed here) with the configs/cityscapes/e2e_mask_rcnn_R_50_FPN_1x_cocostyle.yaml config file
For the new-poly and new-mask I would make a CityScapesDataset that would take either the original polygons, binary masks respectively as ground-truth.

@botcs that sounds amazing.
Having a kind of official implementation that supports masks would be great.
But the complication is around testing code: we currently use COCO for evaluating everything, and we should stick with it or rewrite the evaluation logic (some of which is in pascal eval), but which supports masks.
But that's a lot of work.

@fmassa Why would evaluation be a problem since we could save the testing results in COCO style?

@wangg12 yes, you are right, the predictions are masks anyway and we convert them to RLE for COCO evaluation. But the COCOeval expects polygons for the ground truth, so those polygons should be there as well.
But the current way we dispatch to the evaluation code is for now hard-coded to dispatch to either the pascal evaluation or the coco evaluation, depending on the dataset class.
Those are not blockers, just problems that we need to address in order to make the code easy to use, and would definitely be a great contribution!

@fmassa I think if users use binary masks, they could convert their annotations losslessly to COCO-style RLE formats, so there is no need to change the evaluation code.

I am working on a generic coco-style evaluation that is compatible (as much as possible) with segmentation datasets. However, it would definitely help if this PR would be merged, since that refactoring would be out of scope.

I am working on a generic coco-style evaluation that is compatible (as much as possible) with segmentation datasets. However, it would definitely help if this PR would be merged, since that refactoring would be out of scope.

@wangg12 sounds good.
One thing I'd love to do is to have a kind of generic way of calling into the COCOeval without requiring the data to be in the COCODataset format.

@fmassa I agree with the need of a generic way, but converting to COCO format is currently an easy and workable solution.

@wangg12 I would be strongly against that. No one else than me wants results out of different datasets at the moment than me, but these kind of hacks increase the technical debt and lead to monsters like #466.
As mentioned in my previous comment, I would be happy to implement the COCOeval without hard-wiring it to COCODataset. That update however would require that first I implement a CityScapesDataset (and others as well maybe) that share a common interface - which would be built on top of the subject of the current PR, the new SegmentationMask. My concern is that if I start to merge in this PR all these patches than it would be quite untraceable what happened.
I am aware that @fmassa needs a full training to validate this PR, which could be done using the current COCO tools (this PR is compatible with the original COCOeval and COCODataset format) - that would delay the exhaustive comparison mentioned in this comment, but could make up a good roadmap to follow during the week:
Roadmap

[Done] refactor SegmentationMask

[Done] refactor training if necessary
[Done] unit tests and quick_schedule training comparison
a single full training on COCO using a specific config file, knowing that their expected performance is already reported.
merge this PR

refactor COCOeval to use a generic Dataset class

refactor COCODataset if necessary
test COCOeval and COCODataset if it gives the same result for a pre-trained model as the original implementation
merge this PR

implement CityScapesDataset

test and compare full training results with using ground truth PolygonList and BinaryMaskList
merge this PR

@botcs Actually I am using RLE format COCO-style annotations for the binary masks which were orinally provided by the dataset. Apart from the losslessly conversion code (which is pretty easy) and the conversion to binary masks in the data loading part, there is no need to change the other part of the codebase.
In my opinion, in order to make the feature in this PR to work, there is no need to change the evaluation code. I'd appreciate it if a more generic  evaluation API could be supported, however that could happen in another independent PR. 😄😄😄

@wangg12 Yeah, I agree on this, that is why point 1) has no plans on the evaluation code:

to make the feature in this PR to work, there is no need to change the evaluation code

Still I think it is important to know the performance differences, if there are any, caused by different representations. That is why the CityScapes would make a perfect target

@botcs I agree on your plan from https://github.com/facebookresearch/maskrcnn-benchmark/pull/473#issuecomment-467474884
Let me launch some trainings now with your PR to compare if there are any noticeable differences after training. I'll update you tomorrow

@fmassa I have run two trainings using configs/e2e_mask_rcnn_R_50_FPN_1x.yaml, but I have extremely strange results. Please find the logs attached.

One is from the master branch, without any modification, in a fresh conda env, in which the demo was working with the pretrained weights: https://gist.github.com/botcs/0ba9bab0950fdad26ff39a271fbc988f

The other is from the PR #473, in which a batch overfitting (using only random 4 samples of the training data) works properly: https://gist.github.com/botcs/c26e92734b4e4a9da3c1eb1d51c46335

both of them got NaNs during training. The timeline was the following:

#473 gets NaN at iteration 8200 (log file overwritten)
rerun #473, gets NaN at iteration 2600 (log file)
run master, for sanity check, gets NaN at iteration 14500 (log file)

2x NVidia 2080 were used, Ubuntu 16.04, CUDA 9.
I would like to emphasize that every other hyperparameter was the very same, the modifications for #473 are the same as they are in sync with the github pr.
My biggest concern is that the training is not working on master.

@botcs I just run a quick training using your branch in here (without modifications) and it works fine.
I had a look at your log, and it looks like you changed the batch size but didn't update the learning rates nor the learning rate schedules?

More precisely, this here indicates that there is a problem with the config file https://gist.github.com/botcs/0ba9bab0950fdad26ff39a271fbc988f#file-log-master-txt-L210-L215
If you are using 2 GPUs and a smaller batch size, you should adapt the learning rate / etc following the information in https://github.com/facebookresearch/maskrcnn-benchmark#single-gpu-training

OH sorry.. that is completely, true, I have reduced the batch size, because the 2080 has only 8GB...
Wow. my bad. extremely sorry. will update them accordingly

@botcs I just got a similar problem as @IssamLaradji
in https://github.com/facebookresearch/maskrcnn-benchmark/pull/150#issuecomment-467860197 when I tried to run a quick training with binary masks:
    return torch._C._nn.upsample_bilinear2d(input, _output_size(2), align_corners)
RuntimeError: invalid argument 2: non-empty 4D input tensor expected but got: [1 x 0 x 640 x 480] at /opt/conda/conda-bld/pytorch-nightly_1549566624064/work/aten/src/THNN/generic/SpatialUpSamplingBilinear.c:22

I think this has to do with returning 0 channels in https://github.com/facebookresearch/maskrcnn-benchmark/pull/473/files#diff-928af5178eceaef7d662fe22c85f439aR403, which is not handled properly by interpolate.
Also, might be good using interpolate from https://github.com/facebookresearch/maskrcnn-benchmark/blob/75523a75312a7c8a9a007f75375f6310b8d37ad9/maskrcnn_benchmark/layers/misc.py#L75-L110 , which supports 0-size batch

@fmassa I have patched the interpolate function, and now it used your suggested interpolate function
Should I add this case to unit test?

Hi @fmassa,
I have finished training the R-50-FPN-MASK network, now with the correct solver arguments:
SOLVER:
  BASE_LR: 0.005
  WEIGHT_DECAY: 0.0001
  STEPS: (120000, 160000)
  MAX_ITER: 180000
  IMS_PER_BATCH: 4

The resulting scores are the following:
bbox mAP(.5:.95) = 0.355 (reported score is higher 37.8)
mask mAP(.5:.95) = 0.325 (reported score is higher 34.2)
Is this difference occurs because of the 2 GPU - smaller batch size - smaller learning rate or because of a significantly different behavior using the new SegmentationMask interface?
A detailed summary of the precision and recall:
Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.355
 Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.571
 Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.384
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.205
 Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.385
 Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.464
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.298
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.470
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.494
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.307
 Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.530
 Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.625

[loosely related]
Hi @fmassa,
I have made good progress with the plans on a new dataset agnostic COCO-style evaluation approach, however your help would be really appreciated. Please find my results visualized at:
https://nbviewer.jupyter.org/gist/botcs/268881786683299db52d79ac1d5a9c5f
thanks,
Csabi

[COCOEval related]
Hi @fmassa,
I have made good progress with the plans on a new dataset agnostic COCO-style evaluation approach, however your help would be really appreciated. Please find my results visualized at:
https://nbviewer.jupyter.org/gist/botcs/904d96ebb50708f7690f52c831e76018
thanks,
Csabi

Hi @fmassa,
Are there any remaining to-dos to merge or reject this PR?
BTW, I am now doing the 3rd point in the roadmap, and I would be happy to submit the PR from the 2nd point.

Hey @botcs , sorry for the delay in replying.

Is this difference occurs because of the 2 GPU - smaller batch size - smaller learning rate or because of a significantly different behavior using the new SegmentationMask interface?

This seems to indicate that the new SegmentationMask might give lower results than the previous one using polygons. I'll try running the training on 8 GPUs again to verify, and I'll let you know tomorrow what results I got.

I have made good progress with the plans on a new dataset agnostic COCO-style evaluation approach, however your help would be really appreciated. Please find my results visualized at:
BTW, I am now doing the 3rd point in the roadmap, and I would be happy to submit the PR from the 2nd point.

I had a quick look and it looked very interesting and promising. I'll have a closer look tomorrow make some more comments (I need to run now).

@botcs I've launched two trainings yesterday with 8GPUs each for Mask R-CNN R-50 FPN. They are still training and the time per iteration is at about 2.2915 s, which is 5x slower than the equivalent implementation using Polygons.
Does that match your expectations?

@fmassa I have experienced a 2x slower computation, but this is because of the CPU intensive operations, probably the config is different.
If you use the polygon representation the speed is expected to be the same, also my current training on the CityScapes polygon annotations can confirm this: time: 0.4781 (0.4750)  data: 0.0091 (0.0093) for the original image size (1024x2048).
The discussion in #527 was mainly motivated by the increased process time... at the moment no tricks and heuristics are applied, just the original mask - poly representation refactored for the SegmentationMask.

@fmassa I've experienced a training speed with about 1s/iter by using mmdetection and feeding the annotations with RLE based segmentation which are then converted into binary masks for training. So I am expecting that the speed should be faster with this repo.

@wangg12 I agree.
We can speed up here literally every for loop by simply just multithreading them. Which could save a lot of time. Also the overall spectacular training speed of mmdetection using binary masks can depend on multiple factors as well (not even talking about the image size), as I mentioned in the previous comment, the mask_head does not utilize any advantages of having the segmentations in a single torch tensor.
But to be fair.. the original implementation of the SegmentationMask should perform similarly in time complexity to this PR's, but my point is that the primary goal of this PR was not optimizing the binary mask processing, but unifying the interface for polygons and binary masks.

@botcs I've finished training with masks, but evaluation failed with the same type of error as before (the 0-d tensor)
RuntimeError: invalid argument 2: non-empty 4D input tensor expected but got: [1 x 0 x 480 x 640] at /opt/conda/conda-bld/pytorch-nightly_1551330564688/work/aten/src/THNN/generic/SpatialUpSamplingBilinear.c:22

so the fixes are not yet enough for this to be merged. :-/

@fmassa I am sad to hear that, I thought that the interpolation commit has fixed this issue. Can you please send me the full error-stack? Is it possible that a slicing operation is called after extracting the internal data representation by .get_mask_tensor()?

@fmassa in the COCO evaluation script found at maskrcnn_benchmark/data/datasets/evaluation/coco/coco_eval.py, there is no occurrence of the SegmentationMask class. The process involves conversion to RLE from the prediction.get_field("mask"), which is the torch tensor itself (not an instance of the SegmentationMask, on this issue see #527 for full details). The error reported may be related to the original Masker implementation found at maskrcnn_benchmark/modeling/roi_heads/mask_head/inference.py, where the interpolation function is imported from torch.nn.functional instead of maskrcnn_benchmark.layers.misc - the same problem that caused error in this implementation.


Benchmarking results post-processing

When a benchmark is run, it generates a number of outputs: perflogs and environment logs. Those files have to be moved to an appropriate location (see #16 ), and then we'd like to provide some generic tools/scripts for the users to process them and produce tables and plots. The intention is for the scripts provided in this repository to be quite basic, and the user would clone/fork it and add their own. Scripts needed:

fetch appropriate data from remote location
read in all available info into one big pandas dataframe. This info would come from:

the perflog file path. It seems to be something like sysname/partition/environment/testname - see https://github.com/ukri-excalibur/excalibur-tests/blob/953bc6a3a7084737f0869e272306328020a4eba4/modules/utils.py#L90 The system name and partition are needed variables for reports and plots, and the testname includes the name of the app and the parameters used to run the specific benchmark.

[x] understand what this path means, where it comes from and how to define/change

the perflog content. The format of this content is defined by handlers_perflog.format in https://github.com/ukri-excalibur/excalibur-tests/blob/87dde005a6b581448a9003c8dcbac47107019957/reframe_config.py#L393 (note the last note here). Because this format is defined by the framework that generates the benchmarks, unfortunately the post-processing tools have to be in this repo and be kept in synch. The good news is that a lot of the functionality of reading and working with those perflogs exists already.
The content of this file is most of what we need to present in a performance report, things like date the benchmark was run (for regression testing purposes), the number of nodes and threads used, the benchmark parameters (possibly mangled into some info string, but it's there), and the FOM values for each test.
Some environment variables have to be added as well, things like compilers and their versions, MPI implementations, the benchmark app version, etc. Some of those might be parameters of the benchmarks that could be fished out from the perflogs, some will need some more work. Some functionality must exist already...

Once all the data is in a DF, there are various use cases that would need scripts for the generation of tables and/or plots:

Single benchmark app run with various parameters (eg. castep). Each app can have different levels of things to create outputs/visualisations for, eg. different FOMs vs # nodes for different systems or for different input parameters, or both. The generic script should take the name of those FOMs/other parameters to create plots for, and fish them out of the DF.
Single benchmark app performance (i.e. FOM) vs time - see the FEniCS repo. Since benchmark timestamp is one of the contents of the DF, this is a subset of the above case technically, but it might benefit from its own simplified script that would take only the name of app and FOM as input.
Several benchmark apps, run on the same machine. Again, technically the same as the first case, but might benefit from simplified script.
[ ] Other use cases?

A good solution for presenting the output is github-pages, and we have 2 examples of doing that: the above FEniCS one, and our own (see #18).
[ ] System/environment info: whole different can of worms (or not :smile: ) that we have to think of separately. This might be relevant/useful.

@t-young31 has done more work on this in the DiRAC project than I had realised. As far as I can understand, he has already written a lot of the code needed for parsing the perflogs and plotting data for different use cases. His feedback was

It was difficult for the plotting tool to be generic because there are too many variables to plot (compiler version, library versions, clusters, env variables, etc.)
It was not clear what the use cases are

Need to save spack spec as well. There's a hash for every spec, save it in the perflog as a field, as well as the spec in a separate file (name same as hash for simplicity) which will be updated only when something changes.

Different ways to print results in the perflog:

The loggable attributes check_... in the logging.handlers_perflog.format.

the check_info variable is a message reporting the test name, the current partition and the current programming environment that the test is currently executing on, according to the docs

Environment variables
Tags
Parameters

Created a bunch of sub-issues to this one: #104 , #105 , #106, #107 , #108, #109 , #110


Configure Renovate - abandoned

Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.
🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.

Detected Package Files

.github/workflows/reuse-tool-lint.yaml (github-actions)
.ci/build (regex)
dockerfile-configs/common-components.yaml (regex)

Configuration Summary
Based on the default config's presets, Renovate will:

Start dependency updates only once this onboarding PR is merged
Enable Renovate Dependency Dashboard creation.
Use semantic commit type fix for dependencies and chore for all others if semantic commits are in use.
Ignore node_modules, bower_components, vendor and various test/tests directories.
Group known monorepo packages together.
Use curated list of recommended non-monorepo package groupings.
Apply crowd-sourced package replacement rules.
Apply crowd-sourced workarounds for known problems with packages.
Disable semantic prefixes for commit messages and PR titles.
Update _VERSION environment variables in GitHub Action files.
Group known monorepo packages together.

🔡 Do you want to change how Renovate upgrades your dependencies? Add your custom config to renovate.json in this branch. Renovate will update the Pull Request description the next time it runs.

What to Expect
With your current configuration, Renovate will create 5 Pull Requests:

Update dependency containerd/nerdctl to v1.7.5

Schedule: ["at any time"]
Branch name: renovate/containerd-nerdctl-1.x
Merge into: master
Upgrade containerd/nerdctl to 1.7.5

Update dependency bronze1man/yaml2json to v1.3

Schedule: ["at any time"]
Branch name: renovate/bronze1man-yaml2json-1.x
Merge into: master
Upgrade bronze1man/yaml2json to v1.3

Update dependency etcd-io/etcd to v3.5.12

Schedule: ["at any time"]
Branch name: renovate/etcd-io-etcd-3.x
Merge into: master
Upgrade etcd-io/etcd to v3.5.12

Update dependency kubernetes/kubernetes to v1.28.8

Schedule: ["at any time"]
Branch name: renovate/kubernetes-kubernetes-1.x
Merge into: master
Upgrade kubernetes/kubernetes to v1.28.8

Update dependency gardenlinux/gardenlinux to v1443

Schedule: ["at any time"]
Branch name: renovate/gardenlinux-gardenlinux-1443.x
Merge into: master
Upgrade gardenlinux/gardenlinux to 1443.0

🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or overwhelm the project. See docs for prhourlylimit for details.

❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section.
If you need any further assistance then you can also request help here.

This PR has been generated by Renovate Bot.

Autoclosing Skipped
This PR has been flagged for autoclosing. However, it is being skipped due to the branch being already modified. Please close/delete it manually or report a bug if you think this is in error.


Nominal type checking for private properties cannot be used in class libraries (TS2322)

I'd like to add our two cents to the discussions in #8346 and #7755.
We understand the desire to ensure that code can trust that private properties have consistent behavior across versions, but practically this means that it won't be possible to use private members class libraries. This is because it is common that multiple versions of the same class library will exist in the same dependency closure. If a class has private members, than suddenly two versions of the same class are not interchangeable, even if they are fully compatible (private + public).
Specifically to our use case: we are building the AWS Cloud Development Kit. Almost all CDK classes inherit from a base class Construct which is defined in one of the core libraries. This base class contains private properties.
Constructs form a tree, which is structured by supplying the parent construct upon initialization:
Sketch of the base class:
class Construct {
  private _children: Construct[];
  constructor(parent: Construct);
}

Now, both users of the CDK and vendors of 3rd party CDK libraries create constructs by extending the Construct base class.
Here's a common use case:
import { ThirdPartyConstruct } from '3plibrary';

class MyApp extends Construct {
  constructor(parent: Construct) {
    super(parent);

    new ThirdPartyConstruct(this); // add this guy as a child

    // my logic
  }
}

Now, say this user depends on CDK 1.0.0 and 3plibrary depends on the CDK 1.0.1, the base classes are not compatible anymore and the user will get the infamous Type 'MyApp' is not assignable to type 'Construct'. Types have separate declarations of a private property '_children'..
This is a major limitation of course for such a use case. At the moment we are considering to basically convert all private properties to public methods with underscore prefixes, but naturally that's not what we prefer.
Related: https://github.com/awslabs/aws-cdk/issues/979

Apologies for the accidental submission before finishing the issue 👎

The typical suggestion is to take an interface rather than the actual underlying class at your input positions; that way at your input positions where you've determined version mismatches shouldn't be an issue, you only need something conforming to the public API of your components, rather than a specific instance of them.

So, effectively the parent would be something like IConstruct instead of Construct. Correct?

Yep:
interface IConstruct {
  // no members?
}
class Construct implements IConstruct {
  private _children: Construct[];
  constructor(parent: IConstruct);
}

class MyApp extends Construct {
  constructor(parent: IConstruct) {
    super(parent);

    new ThirdPartyConstruct(this); // add this guy as a child

    // my logic
  }
}

Is the proposal for all type references to only use interfaces? Sounds like a huge overhead for a large class library.
Here's another example:

lib-foo exports a type Foo (with private properties). It is published in two versions<EMAIL_ADDRESS>and<EMAIL_ADDRESS>(say both are structurally compatible).
<EMAIL_ADDRESS>exports a function giveMeFoo(foo: Foo). It depends on<EMAIL_ADDRESS>
Now, my app takes a dependency on<EMAIL_ADDRESS>and<EMAIL_ADDRESS>This code will fail:
import { Foo } from 'lib-foo';
import { giveMeFoo } from 'lib-goo';

giveMeFoo(new Foo()); // TS2322

This practically means that we lost npm's ability to have multiple versions of the same library co-exist in the same closure.
Do I understand this correctly, or am I missing something? Seems like the guidance would either be to declare an interface for each class or to not use private properties altogether.

For posterity: what we eventually decided to do is to declare any dependency that includes types that are part of a module’s public API also as peerDependencies.
We realized this is the right way to ensure that types are semantically compatible, which is superior to structurely-compatible.


feat: 🎸 allow freeze/unfreeze of confidential assets

Description
add .freeze and .unfreeze methods to ConfidentialAsset and a isFrozen getter
Breaking Changes
None
JIRA Link
✅ Closes:

DA-1085
DA-1088

Checklist

[ ] Updated the Readme.md (if required) ?

:tada: This PR is included in version 24.0.0-confidential-assets.10 :tada:
The release is available on:

npm package (@confidential-assets dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[feature] dependency no longer maintained

The @jych/gif-provider dependency is no longer being maintained. If gifbar is being maintained (see: #188), I'd suggest you remove the dependency.
As @jych/gif-provider is MIT licensed, you might consider integrating the codebase here, or maintaining your own fork.

hi, James is this issue still open to contribute?


genie can not generate the correct projects file on Windows VS2019 for ARM/ARM64

Describe the bug
genie can not generate the correct projects file on Windows VS2019 ARM/ARM64
There are three problems.
The first is the OutDir and IntDir is wrong.
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  <OutDir>..\..\win64_vs2019\bin\</OutDir>
  <IntDir>..\..\win64_vs2019\obj\x64\Debug\bgfx\</IntDir>
  <TargetName>bgfxDebug</TargetName>
  <TargetExt>.lib</TargetExt>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
  <OutDir>..\..\..\scripts\</OutDir>
  <IntDir>obj\ARM64\Debug\bgfx\</IntDir>
  <TargetName>bgfxDebug</TargetName>
  <TargetExt>.lib</TargetExt>
</PropertyGroup>

The second is that lacks links of psapi and gdi32.
I found that there are configuration { "vs201*", "x32 or x64" } in genie.lua, which is strange.
The third one is that WindowsTargetPlatformVersion is still 8.1 which seems has been fixed up in https://github.com/bkaradzic/GENie/issues/467 but in fact nope.
To Reproduce
..\bx\tools\bin\windows\genie.exe --with-tools --with-examples --with-profiler --with-shared-lib --platform=ARM64 vs2019
Expected behavior
A compilable vs project.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
..\bx\tools\bin\windows\genie.exe  --version
GENie - Project generator tool version 1141 (commit<PHONE_NUMBER>8e56512ddac6264b08ca6ba4e67468)
https://github.com/bkaradzic/GENie

There is also a problem that bgfx\3rdparty\glslang\build_info.h seems not had been generated in the correct position, which include path is bgfx\3rdparty\glslang\glslang\

There is also a problem that bgfx\3rdparty\glslang\build_info.h seems not had been generated in the correct position, which include path is bgfx\3rdparty\glslang\glslang\

Which ARM64 Windows platform you're targeting? --platform=ARM64 definitely won't work because that's not how GENie is setup for my projects.

Which ARM64 Windows platform you're targeting? --platform=ARM64 definitely won't work because that's not how GENie is setup for my projects.

I am targeting general desktop Windows on ARM64.

I am targeting general desktop Windows on ARM64.

Try using --vs=ARM64 (it's not going to work fully since there are no configurations for it, but platform inside VS might be selected correctly).

Try using --vs=ARM64 (it's not going to work fully since there are no configurations for it, but platform inside VS might be selected correctly).


fix: Fixing 'toJsonForProtocol' method call for custom classes

PR Description:
This PR improves the toJsonForProtocol method by adding runtime checks to correctly handle custom classes. It ensures that the appropriate serialization method is invoked dynamically.
Closes: 2977
Pre-launch Checklist

[x] I read the Contribute page and followed the process outlined there for submitting PRs.
[x] This update contains only one single feature or bug fix and nothing else. (If you are submitting multiple fixes, please make multiple PRs.)
[x] I read and followed the Dart Style Guide and formatted the code with dart format.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///), and made sure that the documentation follows the same style as other Serverpod documentation. I checked spelling and grammar.
[x] I added new tests to check the change I am making.
[x] All existing and new tests are passing.
[x] Any breaking changes are documented below.

If you need help, consider asking for advice on the discussion board.
Breaking changes
If you have done any breaking changes, make sure to outline them here, so that they can be included in the notes for the next release.

@SandPod pr is ready!

@SandPod docs pr https://github.com/serverpod/serverpod_docs/pull/219


RFC: Reconnect when lost connect unexpected by network.

WIP

unexpected network:

change wifi / mobile network / bluetooth...
if reconnect, if session is closed, create a new, if session is alive, update session's endpointstream channel.

OK, when use quic, it is good.


Upload is failing

When I run the portion of the code to upload the image locally in a debug session, I get the exception "The request was aborted. The connection was closed unexpectedly." All methods up to CloudBlobContainer.UploadFromStream() seem to work. For instance the blob file names are there just with no content, the size is zero bytes from the interrupted connection I'm assuming.

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

ID: f1026434-050e-b1d5-7cac-47cf5d5d2cad
Version Independent ID: bfb4d3c9-af35-f08b-710a-afc3281e3d87
Content: Upload image data in the cloud with Azure Storage
Content Source: articles/storage/blobs/storage-upload-process-images.md
Service: storage
GitHub Login: @tamram
Microsoft Alias: tamram

@dsandsqis  I re-ran the same steps in the demo and it works, you can check the example here: https://gitdocdemo.azurewebsites.net/
Since this is not document related issue, i'd recommend posting in https://social.msdn.microsoft.com/forums/azure/en-US/home?forum=windowsazuredata , and we'll be able to follow up on the case.

same issue here... images make it to the images folder but never the thumbnails folder


Could you share the model on Cityscape as well?

Thank you!

Thanks for this suggestion. For the reason that some essential tools for Cityscapes (like panoptic dataset maker, instance-level random crop tools, etc.) have not been officially supported in Detectron2, we could not provide the training and inference code like a sub-project in Detectron2. We plan to release the full modified version and well as all the pretrained model later. Of course, it is easy to implement PanopticFCN for Cityscapes or other datasets with the currently released code.

@yanwei-li I am also interested on how panopticFCN preformance on cityscapes. It seems it's more convenient for cityscapes to train panoptic since it have mask png labeling already, however, detectron2 seems not have such dataloader out-of-box to use. That would be very nice if you can publish a cityscapes trained model!


With package selection, --package  --workspace doesn't warn or error

Problem
Originally reported as https://github.com/nextest-rs/nextest/issues/1108.
With Cargo's package selection, this errors out:
$ cargo build --package non-existent
error: package ID specification `non-existent` did not match any packages

However, this does not error out:
$ cargo build --package non-existent --workspace
<build occurs...>

I think this should at least produce a warning and maybe eventually error out.
(I tried searching for issues a bit but I couldn't figure out the right keywords.)
Steps
As above.
Possible Solution(s)
Produce a warning on --workspace and -p <non-existent>. Maybe eventually turn it into an error
Notes
No response
Version
% cargo +nightly version --verbose
cargo 1.76.0-nightly (6790a5127 2023-11-10)
release: 1.76.0-nightly
commit-hash: 6790a5127895debec95c24aefaeb18e059270df3
commit-date: 2023-11-10
host: x86_64-unknown-linux-gnu
libgit2: 1.7.1 (sys:0.18.1 vendored)
libcurl: 8.4.0-DEV (sys:0.4.68+curl-8.4.0 vendored ssl:OpenSSL/1.1.1u)
ssl: OpenSSL 1.1.1u  30 May 2023
os: Pop!_OS 22.04 (jammy) [64-bit]

@rustbot claim


Custom Open Cascade build

Fix #34
This reduces the load time and the memory needed by the application.
We're going from a 45MB wasm file to a 4.9MB file.

Thanks a lot @martinRenou!


Redis Sentinel: How to refresh master client object when master changes on failover?

Version: redis-py: 3.5.3 and redis: 6.2
Platform: Mac OS Big Sur
Description:
I have setup a Redis replica with one master and two slaves with Redis Sentinel monitoring each of the nodes. I'm using redis-py library to communicate with master and slaves.  But the problem is that when failover occurs, the master object needs to be refreshed in order to point to a new master. For that, as mentioned in this answer and the docs, I'm supposed to subscribe to +switch-master channel to receive the address of new master.
But the question is that, using which object am I supposed to subscribe to that channel?  I tried this using master object as follows:
    ps = master.pubsub()
    ps.subscribe("+switch-master")

And when the master was down, I tried getting the message as following:
ps.get_message()

But this does not return the expected message because the master itself is down I think.
The sentinel object does not support the pubsub.
    >>> sentinel.pubsub()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Sentinel' object has no attribute 'pubsub'

As an alternative, in the linked answer it's suggested to use client-reconfig-script. But how am I supposed to modify an object in my application using an external script?
What am I missing here? I am new to Redis, so any reference would be appreciated.
EDIT
However, if I login into one of the sentinels and then subscribe over the "+switch-master" channel, it receives the message successfully. So How do it do this using redis-py? Is there a way to achieve this currently?
Here is the output from one of the sentinels:
<IP_ADDRESS>:5001> SUBSCRIBE +switch-master
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "+switch-master"
3) (integer) 1

1) "message"
2) "+switch-master"
3) "mymaster <IP_ADDRESS> 6379 <IP_ADDRESS> 6381"

My sentinel is on localhost:26379, and I got the +switch-master message in this way:
>>> from redis import Redis
>>> r = Redis(host='localhost', port=26379)
>>> p = r.pubsub()
>>> p.subscribe("+switch-master")
>>> p.get_message()
{'type': 'subscribe', 'pattern': None, 'channel': b'+switch-master', 'data': 1}

# failover the current master here

>>> p.get_message()
{'type': 'message', 'pattern': None, 'channel': b'+switch-master', 'data': b'mymaster <IP_ADDRESS> 6379 <IP_ADDRESS> 6379'}


IOS - Secondary log in - "Done" button is not present to close keyboard

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

Expected Result:
User should be able to see "send verification" button
user should be able to hide keyboard
Actual Result:
User is unable to see "send verification" button
User is unable to hide keyboard
Action Performed:

Open app
Login too account without secondary login
Navigate to profile settings
Click + to add phone number
enter valid phone
Start to enter password
try to close keyboard
After entering valid password try to click send verification button

Workaround:
Yes, user has to close the keyboard by tapping outside the field.
Platform:
Where is this issue occurring?
Web
iOS ✔
Android
Desktop App
Mobile Web
Version Number: 1.0.19-0
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:
Video

Expensify/Expensify Issue URL:

Triggered auto assignment to @davidcardoza (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

Tested and ran into the same issue. Removing assignment and putting in the engineering queue.

Triggered auto assignment to @alex-mechler (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Looks like a good one for a contributor to take 👍

Triggered auto assignment to @SofiedeVreese (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

Triggered auto assignment to @beamanator (Exported), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Upwork Post: https://www.upwork.com/jobs/~01f066ffea9a3f91c9

Going to remove the Exported label for now so clarify following:
@alex-mechler is this similar to this issue?
cc @marcaaron

Looks unrelated to me @SofiedeVreese

Ok thanks for confirming @marcaaron I'll push this out to Upwork now.

Triggered auto assignment to @roryabraham (Exported), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Readding Exported Label.
Upwork job posting: https://www.upwork.com/jobs/~014f5a3f656dd883ff

Hey, i have a proposal for this issue. I think the best way to handle this is to wrap the components in a KeyboardAvoidingView and enable it just for ios. So this way Send Validation button will be on top of the keyboard & accessible.

This issue can easily be fixed by passing the returnKeyType  as Done  to TextInput on the PasswordPage.
https://github.com/Expensify/Expensify.cash/blob/a4aa60ad2b220e2a1ecf37c5e2768733dc82f149/src/pages/settings/PasswordPage.js#L80-L89

Not sure that's correct @parasharrajat. The green button is hidden behind the keyboard when it should be floating above the keyboard?

Oh. I think the issue description is misleading. Though issue also says to add this.

@rafidaky Could you explain your proposal in a bit more detail?

https://github.com/Expensify/Expensify.cash/blob/011c66af622349d115fc6c1c8d0c187fe197b422/src/pages/settings/AddSecondaryLoginPage.js#L98
I'm suggesting we wrap everything in this ScreenWrapper component in a KeyboardAvoidingView so there won't be a need for the Done button and screen will look like this when password is focused:

Okay @rafidaky, your proposal looks good. Feel free to submit a pull request.

Contributor has been hired!

PR is merged. Payment due on 28 April assuming no regressions.

Checked with @roryabraham but no regressions so looks good to pay out.

Contributor has been paid, the contract has been completed, and the Upwork post has been closed.


fix(@xstate/fsm): Execute initial actions

Fixes #826

[ ] write test
[ ] establish .exec type

LGTM, merge conflict?

Is this PR ready to merge? I would love to see this fix as it means I could remove 1 state from each of my projects that utilzed @xstate/fsm  :-)


[Feature]: Autosave on user interaction

In my implementation I tweaked the sources to omit the action buttons at the bottom, but I ran into an issue.  The widget only saves to the bound model when the user clicks the save button...so I played around with the sources a bit and came up with some changes to make it autosave any time the user interacts with the widget.
If enough people would like this, I can write up my changes in clean checkout of the sources and submit a pull request, otherwise I'll just leave it here as a suggestion/feature request.

Could you put your example up on codepen for us to see?

Unfortunately, the styling is garbage at the moment (I don't use plunker all that much so perhaps I missed something when trying to include angular-material or something, but you can see a functional demo here: http://plnkr.co/edit/UAmIr9gkFhjiz2SYpPu1?p=preview

Over in the new repo this is done, see https://github.com/SimeonC/sc-date-time (version 1.0.0)


Cocoapods: Absolute path in modulemap causes build issues on some machines

In all modulemap files e.g.:
https://github.com/henrinormak/Heimdall/blob/master/CommonCrypto/iphonesimulator.modulemap
I am not too deeply knowledgable how Cocoapods exactly works but I would hope there is a better way to do this. Something like this would be my first guess:
https://github.com/onmyway133/Arcane/blob/master/Sources/CCommonCrypto/module.modulemap
Basically my problem is that while I can adjust the path locally for my system, the Pods are not committed to Git so Jenkins will never be able to build (multiple Xcode installations with different paths).
Thanks for any suggestions.

As I am not that familiar with CocoaPods (I use Carthage these days), would you mind making a PR that would fix this problem? I would love to get it working (as I have tried already), but as it seems, my attempt has not been a success.

Sorry but I don't think I can help with that anytime soon.


Gh actions migration test

Codecov Report

Merging #1020 into master will not change coverage by %.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #1020   +/-   ##
=========================================
  Coverage     99.42%   99.42%
  Complexity     2285     2285
=========================================
  Files           348      348
  Lines          6276     6276
  Branches        364      364
=========================================
  Hits           6240     6240
  Misses            5        5
  Partials         31       31

Flag
Coverage Δ
Complexity Δ

#unittests
99.42% <0.00%> (ø)
2285.00% <0.00%> (ø%)

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 d42501f...d42501f. Read the comment docs.


Add option to change the print page URL

This adds an option (print_page_basename) that affects the filename for the print page so you can have some control over its URL.

Released: https://github.com/timvink/mkdocs-print-site-plugin/releases/tag/v2.6.0


No Sound and Notification Display in Lock Screen

Rules

To report a bug and help us to provide the solution as fast as possible, please follow the instructions below:
1 - Describe the bug
I am using the Awesome Notifications framework to handle notification functionality, but I am encountering an issue where there is no sound and no notification displayed when the device is in the lock screen state. I have performed multiple tests and ensured that the app has the necessary permissions, but the problem persists.
I have confirmed the following:
The notification priority is set to a higher level.
My device lock screen settings allow for the display of notification content.
The Awesome Notifications framework is properly configured, and I have provided the correct notification content, title, and icon properties.
However, regardless of my attempts, I am still unable to see the notification or hear any sound when the device is in the lock screen state.
2 - Provide us as much information as possible
To help us to understand your issue, provide with your bug report all the relevant informations, such as:

Your plugins list inside the file pubspec.yaml (at least all notification plugins)
awesome_notifications: 0.7.4+1
What platform did you found the issue
Android
What devices did you found the issue
HUAWEI Meta20(almost all devices i have, Samsung, XiaoMi...)
How are you initializing the plugin
yes
How are you creating the notification

    AwesomeNotifications()
        .createNotification(
      content: NotificationContent(
          id: Random().nextInt(2147483647),
          channelKey: channelKey,
          title: invitationData.inviter?.name ?? 'unknown',
          wakeUpScreen: true,
          fullScreenIntent: true,
          notificationLayout: NotificationLayout.Default,
          body: 'Incoming video call...',
          actionType: ActionType.Default),
      actionButtons: showDeclineButton
          ? [
              declineButton,
              acceptButton,
            ]
          : [
              acceptButton,
            ],
    )
        .onError((error, stackTrace) {
      return true;
    });

The output of flutter doctor command
[✓] Flutter (Channel stable, 3.7.12, on macOS 13.4.1 22F770820d darwin-arm64 (Rosetta), locale en-CN)                                                                      Checking Android licenses is taking an unexpectedly long time...[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] VS Code (version 1.81.1)                                                                                Scanning for devices is taking a long time...[✓] Connected device (5 available)
[✓] HTTP Host Availability

OBS: To post a source code in your issue, please use the markdown below:
print('Your source code goes here');

3 - How To Reproduce the Error
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

...or if you prefer, you can provide us a simple example app on GitHub with the issue already reproduced instead of the steps 2 and 3.
4 - Expected behavior
A clear and concise description of what you expected to happen.
5 - Screenshots
If applicable, add screenshots to help explain your problem.
6 - Additional context
Add any other context about the problem here.

oh, i receive the notification after i set ** autoDismissible** to false


Feature/pwa landing

Fixed robot's position and thank you page the background image

Done. I also hid the error robot for smaller devices.


404 error

I have used angularfire in my cordova app
It is working fine on browser.
but when i am testing app on device it is giving me 404 error for

these scripts
Please help me with it.
Is angular fire is  supported in cordova?
do i need to add some dependencies?

Just wanted to bump this as i'm getting the same issue here with Ionic. Do you have  <access origin="*" /> in your config.xml? I thought that was the issue but still getting 404 only when I'm emulating in android.

forgot password reset link , see the video link completely solved
https://youtu.be/daGZO6YAkRg


sleep before getting sstables after flush

This was added in the scrub method in ee436c340946240ff4995277d5114db59b8bfd5d, and maybe should be added here as well. This is to attempt to address https://issues.apache.org/jira/browse/CASSANDRA-11446.

If sleep is the only way to make this work, I'd rather sleep an entire second, so we never have to come back and increment this.

Doing a debugging run here to see if .1 might be sufficient: http://cassci.datastax.com/view/Parameterized/job/parameterized_dtest_multiplexer/54/

bump?

Rebased onto master, then kicked this off:
http://cassci.datastax.com/view/Parameterized/job/parameterized_dtest_multiplexer/104/
to see if a 1-second sleep fixes anything. If it does, I should add a comment.

Doesn't seem to fix. Closing. @ptnapoleon @knifewine Any ideas?


bit.ly link for PWA points to wrong location

The bit.ly link (http://bit.ly/CRA-PWA) in the service worker file redirects to the README which has no info on PWAs.
It should be updated to point to the docs site: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app

Duplicate of https://github.com/facebook/create-react-app/issues/5536


Test flake: Policies.go:1184 - timed out waiting for endpoints to be ready

From PR https://github.com/cilium/cilium/pull/2947
14:36:10 level=debug msg="running command: cilium endpoint list"
14:36:11
14:36:11 • Failure in Spec Setup (BeforeEach) [1175.730 seconds]
14:36:11 RuntimeValidatedPolicyImportTests
14:36:11 /home/jenkins/workspace/Cilium-PR-Ginkgo-Tests-Validated/src/github.com/cilium/cilium/test/runtime/Policies.go:903
14:36:11   checks policy trace output [BeforeEach]
14:36:11   /home/jenkins/workspace/Cilium-PR-Ginkgo-Tests-Validated/src/github.com/cilium/cilium/test/runtime/Policies.go:1184
[test_results.zip](https://github.com/cilium/cilium/files/1763273/test_results.zip)

14:36:11
14:36:11   Timed out waiting for endpoints to be ready
14:36:11   Expected
14:36:11       <bool>: false
14:36:11   to be true
14:36:11
14:36:11   /home/jenkins/workspace/Cilium-PR-Ginkgo-Tests-Validated/src/github.com/cilium/cilium/test/runtime/Policies.go:922
14:36:11 ------------------------------
14:36:11 RuntimeValidatedLB
14:36:11   validates basic service management functionality
14:36:11   /home/jenkins/workspace/Cilium-PR-Ginkgo-Tests-Validated/src/github.com/cilium/cilium/test/runtime/lb.go:77
14:36:11 level=info msg=Starting test=RuntimeLB
14:36:11 level=info msg="Vagrant: running command 'vagrant ssh-config runtime'"
14:36:11 level=debug msg="generated SSHConfig for node runtime"
14:36:11 level=debug msg="done importing ssh config"
14:36:11 level=debug msg="running command: ls /tmp/"
14:36:11 Sending interrupt signal to process
14:36:11

test_results.zip

Almost all endpoints were stuck in waiting-for-identity state:
 ENDPOINT   POLICY (ingress)   POLICY (egress)   IDENTITY        LABELS (source:key[=value])   IPv6                 IPv4            STATUS
           ENFORCEMENT        ENFORCEMENT
4703       Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:125f   <IP_ADDRESS>    waiting-for-identity
7291       Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:1c7b   <IP_ADDRESS>     waiting-for-identity
7900       Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:1edc   <IP_ADDRESS>   waiting-for-identity
12659      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:3173   <IP_ADDRESS>     waiting-for-identity
16728      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:4158   <IP_ADDRESS>    waiting-for-identity
20311      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:4f57   <IP_ADDRESS>    waiting-for-identity
22972      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:59bc   <IP_ADDRESS>   waiting-for-identity
23423      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:5b7f   <IP_ADDRESS>    waiting-for-identity
29898      Disabled           Disabled          44857           reserved:health               f00d::a0f:0:0:74ca   <IP_ADDRESS>    waiting-to-regenerate
31539      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:7b33   <IP_ADDRESS>   waiting-for-identity
37369      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:91f9   <IP_ADDRESS>    waiting-for-identity
38874      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:97da   <IP_ADDRESS>    waiting-for-identity
40447      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:9dff   <IP_ADDRESS>     waiting-for-identity
41667      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:a2c3   <IP_ADDRESS>     waiting-for-identity
42207      Disabled           Disabled          53843           container:id.app3             f00d::a0f:0:0:a4df   <IP_ADDRESS>   waiting-to-regenerate
46825      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:b6e9   <IP_ADDRESS>    waiting-for-identity
48241      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:bc71   <IP_ADDRESS>    waiting-for-identity
49150      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:bffe   <IP_ADDRESS>   waiting-for-identity
57544      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:e0c8   <IP_ADDRESS>   waiting-for-identity
58610      Disabled           Disabled          <no label id>   no labels                     f00d::a0f:0:0:e4f2   <IP_ADDRESS>    waiting-for-identity

Looks like Consul had some issues:
==> Starting Consul agent...
==> Consul agent running!
           Version: 'v0.8.3'
           Node ID: '3654a463-1eda-ab67-e313-991ec391ddbe'
         Node name: '05eb056fc79c'
        Datacenter: 'dc1'
            Server: true (bootstrap: true)
       Client Addr: <IP_ADDRESS> (HTTP: 8500, HTTPS: -1, DNS: 8600)
      Cluster Addr: <IP_ADDRESS> (LAN: 8301, WAN: 8302)
    Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false
             Atlas: <disabled>

==> Log data will now stream in as it occurs:

    2018/02/27 13:09:52 [INFO] raft: Initial configuration (index=1): [{Suffrage:Voter ID:<IP_ADDRESS>:8300 Address:<IP_ADDRESS>:8300}]
    2018/02/27 13:09:52 [INFO] raft: Node at <IP_ADDRESS>:8300 [Follower] entering Follower state (Leader: "")
    2018/02/27 13:09:52 [INFO] serf: EventMemberJoin: 05eb056fc79c <IP_ADDRESS>
    2018/02/27 13:09:52 [INFO] consul: Adding LAN server 05eb056fc79c (Addr: tcp/<IP_ADDRESS>:8300) (DC: dc1)
    2018/02/27 13:09:52 [INFO] serf: EventMemberJoin: 05eb056fc79c.dc1 <IP_ADDRESS>
    2018/02/27 13:09:52 [INFO] consul: Handled member-join event for server "05eb056fc79c.dc1" in area "wan"
    2018/02/27 13:09:59 [ERR] agent: failed to sync remote state: No cluster leader
    2018/02/27 13:09:59 [WARN] raft: Heartbeat timeout from "" reached, starting election
    2018/02/27 13:09:59 [INFO] raft: Node at <IP_ADDRESS>:8300 [Candidate] entering Candidate state in term 2
    2018/02/27 13:09:59 [INFO] raft: Election won. Tally: 1
    2018/02/27 13:09:59 [INFO] raft: Node at <IP_ADDRESS>:8300 [Leader] entering Leader state
    2018/02/27 13:09:59 [INFO] consul: cluster leadership acquired
    2018/02/27 13:09:59 [INFO] consul: New leader elected: 05eb056fc79c
    2018/02/27 13:09:59 [INFO] consul: member '05eb056fc79c' joined, marking health alive
    2018/02/27 13:10:00 [INFO] agent: Synced service 'consul'
    2018/02/27 13:48:40 [ERR] yamux: keepalive failed: session shutdown
    2018/02/27 13:48:40 [ERR] yamux: keepalive failed: session shutdown
==> WARNING: BootstrapExpect Mode is specified as 1; this is the same as Bootstrap mode.
==> WARNING: Bootstrap mode enabled! Do not enable unless necessary
==> WARNING: BootstrapExpect Mode is specified as 1; this is the same as Bootstrap mode.
==> WARNING: Bootstrap mode enabled! Do not enable unless necessary

Unfortunately, this one slipped through the cracks. We have not seen such behavior in some time. @aanm can we close this in favor of triaging more recent failures?


Add support for importing linux "perf script" output

Fixes #119

Coverage increased (+1.07%) to 47.303% when pulling 90c274eec5eb70cca9f72e30c7ac3be753bc139d on jlfwong/perf-record into 9d13d95f8db77e5eeb724b2d124cf4739de8f629 on master.


Throw more readable HTTP error.

For now, the MLFlowClient.jl simply throw out HTTP.Exceptions.StatusError or use hard code error message, and this is hard to figuar out what is wrong.
I found that for any 4xx and 5xx JSON response, it will give a error message:
{
    "error_code": "RESOURCE_DOES_NOT_EXIST",
    "message": "Could not find experiment with ID 0004"
}

So, why not parse and throw this error message , rather than manually hard code error message like:
 catch e
        if isa(e, HTTP.ExceptionRequest.StatusError) && e.status == 400
            error_code = JSON.parse(String(e.response.body))["error_code"]
           # if error_code == MLFLOW_ERROR_CODES.RESOURCE_ALREADY_EXISTS
           #     error("Experiment with name \"$name\" already exists")
           #end
           error_message = JSON.parse(String(e.response.body))["error_message"]
           error(error_message)
        end
        throw(e)
    end

We can add a unified error handler, if you think this is useful I can implement it and open a pull request!
Thanks!

Hi @NeroBlackstone,
Thanks for your contribution. Sure, it is something to take in count. I'm going to put it on my queue (but it's open to anyone).

A solution was implemented in #59.


AS400/DB2: Occasional quoting issues

I'm using ARJDBC to connect to an AS/400. Once every while, maybe once in every 100000 executions, a query fails due to a quoting issue. As an example:
[2011-03-22 15:54:11] DEBUG ActiveRecord::Base: ActiveRecord::JDBCError: [SQL0206]
Column NP0001 not in specified tables.: SELECT  cps.* FROM cps WHERE cps.c
omm_produkt_code = NP0001 ORDER BY cps.id DESC FETCH FIRST ROW ONLY

In this query, the NP0001 should have been quoted. This query is the result of the code:
CPS.where('comm_produkt_code' => some_variable)
The 'some_variable' always contains a String. If I run the exact same code again, immediately after such a failure, it succeeds, as it usually does. When I run the code again, the inputs, database and resulting paths through the code are exactly the same: there is no possibility that 'some_variable' is a String containing 'NP0001' sometimes, and some other datatype whose to_s results in 'NP0001' at other times. There are other queries, like
XYZ.find(some_string_id)
that fail in the same way, even though the input strings in those cases are literally constructed using a "foo #{bar} baz" construction, which couldn't possibly yield anything other than a string.
As a result, I'm guessing it must be a concurrency issue. That would explain the Schrodinger-nature of the issue and is somewhat suggested by the fact that I've only seen it happen when multiple threads were executing queries against the database and never during singlethreaded executions. Unfortunately, I haven't been able to reproduce the behaviour in a selfcontained piece of code that I could post here. From reading through the Arel and ARJDBC code, I haven't been able to discover any possibly threading issues, but I'm hoping this report causes someone else to go "Ah, yes, there is an issue there-and-there".

I've never been able to reproduce this and at some point, probably after an upgrade of some or another, it just didn't happen anymore


[Data] Add data sources for African Country Cases

Add data sources for African Country Cases
Edit the https://github.com/dsfsi/covid19africa/blob/master/data/README.md with your resources
How to fork and submit changes https://opensource.com/article/19/7/create-pull-request-github

I want to collate the Ghana data so I will add the data sources.


Bad interaction with shellesc

Description
When shellesc is loaded before fontspec, lualatex errors in tuenc.def, xelatex seems to be fine.
Minimal example demonstrating the issue
\documentclass{article}
\usepackage{shellesc}
\usepackage{fontspec}

\begin{document}
hello
\end{document}

Further details
Relevant part of the log:
This is LuaTeX, Version 1.10.0 (TeX Live 2019)  (format=lualatex 2019.11.8)
<snip>
Package: shellesc 2019/10/17
<snip>
Package: fontspec 2019/10/19 v2.7d Font selection for XeLaTeX and LuaLaTeX
<snip>
File: tuenc.def 2018/08/11 v2.0j Standard LaTeX file
LaTeX Font Info:    Redeclaring font encoding TU on input line 82.

/usr/local/texlive/2019/texmf-dist/tex/latex/base/tuenc.def:119: Missing number, treated as zero.
<to be read again>
"
l.119 ...ollar}          \UnicodeEncodingName{"0024}

A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

/usr/local/texlive/2019/texmf-dist/tex/latex/base/tuenc.def:119: Missing $ inserted.
<inserted text>
$
l.119 ...ollar}          \UnicodeEncodingName{"0024}

I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.

/usr/local/texlive/2019/texmf-dist/tex/latex/base/tuenc.def:119: LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.119 ...ollar}          \UnicodeEncodingName{"0024}

You're in trouble here.  Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.

I get no error, can you show your full log?

@Evpok  sorry I can reproduce, looks like a change in shellesc rather than fontspec, give me a minute..

Sorry, just cut and paste incompetence on my part:(
On the very last line of shellesc.sty you will find
\catcode`\"\shellesc@underscorecat

which was supposed to be restoring the catcode of _ but "restores" the catocde of " instead, making " act like a math underscore.
Please edit  that line so it looks like
\catcode`\_\shellesc@underscorecat

Please could you also edit the top to say something like
\ProvidesPackage{shellesc}
       [2019/10/17 v1.0b unified shell escape interface for LaTeX (+ underscore catcode fix)]

If you could confirm that works I'll push out a update to tools as soon as possible.

Yes, it works, thanks!

Thanks for confirming, this is fixed at
https://github.com/latex3/latex2e/commit/5a229cd6dc3d7b1484e46d05e05708b15a217dd7
and I'll make a tools release to ctan later today,


add table header style

Description
This change in the style sheet fixed visualization of table headers in Windows. It now looks like shown below. Would be cool if others could check this on Mac / Linux.
Dark Theme:

Ligh Theme:

Type of change

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

References
closes #2644
How has this been tested?

[x] I tested manually on Windows 1
[ ] Tested on Linux
[ ] Tested on Mac

Final checklist:

[x] My PR is the minimum possible work for the desired functionality
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If I included new strings, I have used trans. to make them localizable.
For more information see our translations guide.

works for me!  but I think i'd probably opt for less style "decisions" (gradients, border radii, etc) and more of a blank slate for now (at least until a design audit)... is something like this still usable for you?
QHeaderView::section {
  background: {{ background }};
  padding: 2px;
}

Fine with me!

( i know they still have a little bit of a strange "bevel" to them... but it actually kind of hints at the fact that they're clickable, which isn't terrible)

Yeah, maybe one should restyle the whole table. For example, the borders between the cells are not visible in dark mode and selected columns in light mode have a suboptimal combination of dark grey background and a bit darker grey foreground.
But at least everything is readable now. :-)


Compatible with latest release of Sage 10?

Hi, I am attempting to setup a form with the latest version of Sage 10.
This is how I am attempting to register the form:
wp acorn make:form reservations
This is what happens:
Command "make:form" is not defined.
 Did you mean one of these?
      make:command
      make:component
      make:composer
      make:provider

I found the answer to my question on the Roots slack. I am posting it here in case anyone comes across this issue.
For now, you need to manually add the provider in theme/config/app.php:
Log1x\HtmlForms\HtmlFormsServiceProvider::class,
    'providers' => [

        /*
         * Laravel Framework Service Providers...

Yes, I am running 2.0.3 and had to manually add the provider yesterday:

Very strange.
Do you have:
"post-autoload-dump": [
  "Roots\\Acorn\\ComposerScripts::postAutoloadDump"
]

in your composer.json?

Hi Brandon, yes, it appears so?

@minemindmedia I came across the same issue. Not sure if you situation is the same, but I hadn't activated the HTML Forms plugin. Once I did this, it showed up in the acorn "artisan" menu. Hope this helps!


Callbacks API 2.0

Currently:
runCallbacks(callbackName, iterator, arg1, arg2, arg3…);

Proposal:
runCallbacks({
  name,  // the name of the callback
  iterator,  // the object that will be iterated on
  properties, // arguments passed down to each iteration (i.e. { arg1, arg2, arg3… })
  options, // callback options such as sync/async/concurrent
});

Ping @ochicf

Oh also I think it makes sense to use the type name instead of the collection name:
movies.edit.async -> movie.update.async

runCallbacks({
  // properties
  arguments, // [arg1, arg2]

@mattblackdev the reason I didn't use arguments is because it's a reserved word in JS.

@SachaG 🙈

@SachaG 🙈

Hi! Sorry for the late response, I've been kind of busy this week and I wanted to do it properly.
I like the proposal of having a single object as parameter for runCallbacks. Some comments/questions:

properties would be an object or an array? I'm guessing an array, since it fits better with how parameters in functions are handled.
following on renaming properties, since arguments is reserved, maybe args, parameters or params would fit better? I think they better represent of what they actually are.
other options could be spread directly to the runCallbacks options

So, the signature would look like this:
runCallbacks({
  name,  // the name of the callback
  iterator,  // the object that will be iterated on
  parameters, // or `args`, `params`. arguments passed down to each iteration (i.e. { arg1, arg2, arg3… })
  ...options, // callback options such as sync/async/concurrent
});

As for options, I'll refer to the last discussion we had about this topic, and more specific to my post in https://github.com/VulcanJS/Vulcan/issues/1949#issuecomment-389111037. Long story short, the options I think we have:

order of execution, can be consecutive (as reducers, being executed one after the other and passing the result value) or concurrent (being executed without guaranteeing the order without any relation between the callbacks).
syncronicity, referening to what kind of callbacks can be added to a given hook. Basically, when running callbacks syncronously it should only consider the syncronous results of added callbacks. This allows the runner of the hook to not break its sync context (as it may not be in their hand to do so). When running a hook in an async context, all callbacks are allowed.

An option would be to have different specific runners, being consecutive.sync, consecutive.async, concurrent the ones that cover the requirements exposed above.
runCallbacks({
  name,
  iterator,
  parameters,
  runs: 'consecutive.sync|consecutive.async|concurrent', // defaults to 'consecutive.sync'?
  ...otherOptions, // if any
});

That gives me an idea to maybe offer a simple API to add custom runners? That way anyone could add their callback runner if they need to. I think it's kind of complex so I'm not going to enter this rabbit hole right now, but if you guys think it is a good idea tell me and I'll ellaborate.
About the signature of an added callback, I'm guessing we would keep the same as we have right now, being function addedCallback(iterator, ...parameters) { return iterator; }.
Tell me what you guys think!

properties would be an object or an array? I'm guessing an array, since it fits better with how parameters in functions are handled.

An object I think, otherwise we'll just end up with the same backwards compatibility issues when something changes (i.e. the second argument was modifier but it's now data).

following on renaming properties, since arguments is reserved, maybe args, parameters or params would fit better? I think they better represent of what they actually are.

Good point. Maybe args then?

So, the added callbacks would be like this then, function callbackName(iterator, argsAsObject) {}, right?

Yes exactly, the callbacks would be the same as now except that all args would be "compressed" into the second argument.


linked-list: pick implementation names that don't collide with JDK classes

linked-list's test instruct the practitioner to implement a class named Deque.  There's an interface in the Java Standard Library of the same name.
I entertained the notion of expecting the practitioner to implement that interface, but there are close to 30 methods.  That's a non-starter.
What's a better name for Deque?

Per http://docs.oracle.com/javase/7/docs/api/java/util/Deque.html:

The name deque is short for "double ended queue" and is usually pronounced "deck".

So we could go verbose and use DoubleEndedQueue?

But as far as I remember that exercises read me does require to write a doubly linked list which is quite different from a double ended queue.

@NobbZ said:

But as far as I remember that exercises read me does require to write a doubly linked list which is quite different from a double ended queue.

Isn't a double-linked list a mechanism and the queue a policy?  That is, I can implement a queue with all kinds of storage structures: an array, a singly-linked list, a doubly-linked list, a hash table.  It's that I provide an interface over the data structure that ensures FIFO.

@stkent said:

So we could go verbose and use DoubleEndedQueue?

(this might have been @NobbZ's point) Would it be more helpful to choose a more general name like DoublyLinkedList? Or is naming a use of the data structure enriching?

Ah, I see... in this case, I'd +1 moving to a name that does not leak (or suggest) implementation details.

@NobbZ, do you have a suggestion?

Well, when we did a similar exercise in OOP classes, we just called it
List.
John Ryan<EMAIL_ADDRESS>schrieb am Sa., 31. Dez. 2016, 16:22:

@NobbZ https://github.com/NobbZ, do you have a suggestion?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/exercism/xjava/issues/231#issuecomment-269869504, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AADmRy2vNpHHZvjtTUF7VBRc3-flnX6jks5rNnM1gaJpZM4LXsHo
.

Well, when we did a similar exercise in OOP classes, we just called it
List.
John Ryan<EMAIL_ADDRESS>schrieb am Sa., 31. Dez. 2016, 16:22:

@NobbZ https://github.com/NobbZ, do you have a suggestion?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/exercism/xjava/issues/231#issuecomment-269869504, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AADmRy2vNpHHZvjtTUF7VBRc3-flnX6jks5rNnM1gaJpZM4LXsHo
.

http://www.se-radio.net/2016/12/se-radio-episode-278-peter-hilton-on-naming/

@NobbZ said:

Well, when we did a similar exercise in OOP classes, we just called it List.

Well, then we'd unfortunately have additional problems that we've got a class (or interface, rather) of the same name and it's become ambiguous.
I'm seeing rough consensus with DoublyLinkedList.

Created issue; the question is considered closed.


docs: fix typo in docs/README.md

Fixed typo

Hi @mef1stofel,
Thanks for the fix! Please let me know if you have any questions on how to resolve the failing checks.

Hi @mef1stofel,
I'm going to close this off as the CLA is not signed.


Top-Level Domains (TLDs)

Add some discussion of TLDs: .com or .ninja — what?

And a word about registrars, and how some are reserved for a field or a place.
Great tool to teach non-technicals about URLs !


Separate default filters and extra filters

Description
Moves application's selected traces and services out of filter component.
These appConfigs can only be viewed from the configuration tab.
Still allows user to add extra filters that filter more on the already filtered application.
Issues Resolved
Closes #458
Closes #459
Check List

[ ] New functionality includes testing.

[ ] All tests pass, including unit test, integration test and doctest

[ ] New functionality has been documented.

[ ] New functionality has javadoc added
[ ] New functionality has user manual doc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #474 (ecd5629) into main (08b84c8) will increase coverage by 13.72%.
The diff coverage is n/a.

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

@@              Coverage Diff              @@
##               main     #474       +/-   ##
=============================================
+ Coverage     59.33%   73.05%   +13.72%
  Complexity      273      273
=============================================
  Files           205       38      -167
  Lines          7143     2119     -5024
  Branches       1397      235     -1162
=============================================
- Hits           4238     1548     -2690
+ Misses         2703      408     -2295
+ Partials        202      163       -39

Flag
Coverage Δ

dashboards-observability
?

opensearch-observability
73.05% <ø> (ø)

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

Impacted Files
Coverage Δ

...ervability/public/components/explorer/explorer.tsx

...ce_analytics/components/common/filters/filters.tsx

...e_analytics/components/common/helper_functions.tsx

...s/trace_analytics/components/common/search_bar.tsx

...trace_analytics/components/dashboard/dashboard.tsx

...s/trace_analytics/components/services/services.tsx

...nents/trace_analytics/components/traces/traces.tsx

...tics/components/traces/service_breakdown_panel.tsx

...public/components/common/field_icon/field_icon.tsx

...nts/common/flyout_containers/flyout_containers.tsx

... and 157 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 08b84c8...0331e82. Read the comment docs.


Cow: Watch minidoodlepets.com

Cow requests the watch of the watch_keyword minidoodlepets\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

minidoodlepets\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Spevacus in Charcoal HQ


Investigate the usage of different Vue3 UI Component frameworks

Goal
In #2 we made a list of multiple Vue component frameworks we might want to add support for. The next step is to narrow down the selection and create separate branches running on these frameworks. This can be used to test their integration into our scaffold, their features and ease of use.
Context
We currently use AntDesign 3. As we also have a lot of experience with this framework, it will be left out of the investigation and be seen as a given, that we always provide at least one version with AntDesign. The frameworks I will be creating branches for in the future will be:

PrimeVue
Naive UI (thanks to @ManUtopiK 😊)
Element UI

I can imagine checking more in the future, however to keep the scope of this issue down I have narrowed it to these three I plan to implement in the first wave.

Naive UI it is!
Will be added + closed via #80


Entity state changes don't reset entity state history future

I'm submitting a...

[ ] Regression (a behavior that used to work and stopped working in a new release)
[x ] Bug report
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request
[ ] Other... Please describe:

Current behavior
The PR #227  corrected the fact that state updates didn't reset the future of the state history, meaning that "redoing" is still possible after the state has changed.
But the same problem exist for the EntityStateHistoryPlugin. The method "clear" is only available with parameter ids, and don't give access to the new method of StateHistoryPlugin with a customUpdateFn parameter.
Expected behavior
EntityStateHistoryPlugin should allow to make the call :
entityStateHistory.clear(ids, (history) => {
return {
past: history.past,
present: history.present,
future: []
};
});
What is the motivation / use case for changing the behavior?
If I undo an action and make another one on an entity,  I want that new action to be the latest event in the history. The user should not be able to redo states that don't include the effects of the latest state change.
Environment

Angular version: 11.2.14

Do you want to create a PR?

I'm sorry, I'm very busy right now. Is somebody else would like to handle this ?

If I propose a fix, for this bug, what is the procedure to follow ? is there any deadline to have then a quick release of Akita containing this fix ?

You can create a pull request.

Is there any documentation to create a Pull Request? i'm not familiar with that.

https://opensource.com/article/19/7/create-pull-request-github
https://github.com/datorama/akita/blob/master/CONTRIBUTING.md

I don't find any test class on EntityStateHistoryPlugin.
As the fix looks really simple beacuse it was already done in StateHistoryPlugin, do I really need to write a new class of test for this purpose ?
  clear(ids?: OrArray<getIDType<State>>, customUpdateFn?: (history: History<State>) => History<State>) {
    this.forEachId(ids, e => e.clear(customUpdateFn));
  }

No

Check npm, there was an issue with the tags.


Add primary-secondary protection content in S2CAPI specification.

What type of PR is this?
Add one of the following kinds:

enhancement/feature

What this PR does / why we need it:
In the actual cloud connection development and operation process, customers typically use protected primary and secondary
connections. Therefore, It is better to add primary-secondary protection content in S2CAPI specification for enhancement.
Which issue(s) this PR fixes:

Fixes #22
Special notes for reviewers:
Changelog input
 release-note

Additional documentation
This section can be blank.
docs

I agree with the proposal to add primary-secondary protection parameter, please check the file you upload whether to include it or not? @Duff0109

I agree with the proposal to add primary-secondary protection parameter, please check the file you upload whether to include it or not? @Duff0109

Thank you for your valuable feedback. I've reviewed the uploaded file and confirm that the primary-secondary protection parameter is included in the documentation.


Enforce usage of object literal property value shorthand syntax

See: http://ariya.ofilabs.com/2013/02/es6-and-object-literal-property-value-shorthand.html

+1 for a new rule that enforces this. It could be called object-literal-shorthand?

:+1: to both the rule and the name

We have another rule that operates on object literals called sort-object-literal-keys.
Perhaps that rule should be renamed to object-literal-sorted-keys to match this name?

sounds unnecessarily verbose.

actually, no. you're right, let's do that. I think object-literal-sort-keys

This rule should also handle functions in object literals.
good:
const iterableThing = {
    [Symbol.iterator]() {
        ...
    },
    next() {
        ...
    }
}

bad:
const iterableThing = {
    [Symbol.iterator]: function () {
        ...
    },
    next: function () {
        ...
    }
}

This is object-shorthand in eslint: http://eslint.org/docs/rules/object-shorthand


IntelliJ gitignore into java

I added the jetbrains .gitignore rules into the java gitignore, since it is a popular IDE used for java development.
I also corrected the android .gitignore with the rules from the jetbrains.gitignore.
Reasons for making this change:
The android .gitignore had jetbrains specific rules, but not the java one.
Links to documentation supporting these rule changes:
jetbrains
jetbrains.gitignore

I'm really :thumbdown: on duplicating rules in multiple locations, for a couple of reasons:

because these rules now exist in multiple places, it's easy for differences to creep in because changes are missed
this now requires more maintenance work to keep up-to-date
the JetBrains.gitignore file is far more up-to-date

Sorry, thought the point was to have a quick grab and go .gitignore, my bad!

@SamuelYvon no problem - this repository has been maintained as more of a reference set of templates, and we try not to be opinionated about your tooling setup, hence the separation between languages and tools.
If you're looking for composing multiple gitignore templates I'd recommend https://gitignore.io/

Definitely bookmarking this!
Thank you very much, and sorry again!


Fix small typo (accoross => across)

This PR fixes a small typo in the docs (accoross => across).

Ahaha. I don't know why I love this word so much =)
Thanks for fix!


no rule for ghc-prim-<IP_ADDRESS>/GHC/Classes.dyn_hi

Error when running Shake build system:
* _build/stage1/lib/package.conf.d/integer-gmp-<IP_ADDRESS>.conf
* _build/stage1/libraries/integer-gmp/build/libHSinteger-gmp-<IP_ADDRESS>-ghc8.5.20180424.so
* _build/stage1/libraries/integer-gmp/build/GHC/Integer/Type.dyn_o
* _build/stage1/libraries/integer-gmp/build/GHC/Integer/Type.dyn_o _build/stage1/libraries/integer-gmp/build/GHC/Integer/Type.dyn_hi
* _build/stage1/lib/x86_64-linux-ghc-8.5.20180424/ghc-prim-<IP_ADDRESS>/GHC/Classes.dyn_hi
Error, file does not exist and no rule available:
  _build/stage1/lib/x86_64-linux-ghc-8.5.20180424/ghc-prim-<IP_ADDRESS>/GHC/Classes.dyn_hi
CallStack (from HasCallStack):
  error, called at src/Development/Shake/Internal/Rules/File.hs:180:58 in shake-0.16.3-D18CK3931i8GsNl2vi6IKs:Development.Shake.Internal.Rules.File

================= SUMMARY =================
{'flavour': 'quick', 'exit-code': 1, 'stage0-ghc-version': '8.2.2', 'ghc-git-hash': '5c9bc0771f426de2b99d6bb3a0f1d2eeaa91c710', 'duration':<PHONE_NUMBER>8402405, 'timestamp': 'Wed Apr 25 12:46:21 2018', 'platform': 'Linux-4.13.0-38-generic-x86_64-with-Ubuntu-16.04-xenial', 'clean': False, 'gcc-version': '5.4.0', 'hadrian-git-hash': '64da39cc9f955d7c1492ab39927a8e0849b23f00'}
======= reported by hadrian's brick =======

dynamic way is not working now I believe, and I'm looking into it.

That is, without the lib bit. Could this be the issue?

I don't know. I nuked the whole tree again and quick seemed working this time. The path is still the same and this time it was built. I guess the lib bit is caused by difference between windows and Linux.

and BTW, I confirmed that the -dynamic is working on a simple example as well.

Great, thanks!


Add section in readme to check .tool-versions for each contract/script

📄 Description

Each script or contract in the repository includes a .tool-versions file, which specifies the required versions of dependencies needed to run or compile the Cairo files. However, this information is not currently explained in the README.
The goal of this issue is to add a general section in the README to inform users about the purpose and usage of the .tool-versions file with asdf. This will help users understand its importance and ensure they have the correct dependencies installed.

Scope of Work

Add a concise explanation of the .tool-versions file and its role in managing dependency versions.
Provide an example of how the file looks.
Include an example of the error or warning asdf generates when attempting to compile a Cairo file with incorrect dependency versions.

✅ Acceptance Criteria

The README contains a new section detailing:

The purpose of the .tool-versions file.
How it integrates with asdf to manage dependencies.
An example file and common errors or warnings related to incorrect versions.

📜 Additional Notes
⚠ Do not apply until the ODHack begins.
⚠ Read our guidelines before applying.

Thank you!


Migration guide for SimpleITK 2.0.

ghostflow is complaining about 'whitespace and the end of line' issues.


Missing LICENSE file

Thanks for nudging me. I've added an MIT License. I am now going to go through all of my other projects...


npm generate fails in Docker on M1 MBP

Bug description
I am using docker-compose to build a new docker image on a M1 MBP. When the docker image builds it fails on npx prisma generate with the following error:
 => ERROR [8/8] RUN npx prisma generate                                                                                6.1s
------
 > [8/8] RUN npx prisma generate:
#0 1.412 Prisma schema loaded from prisma/schema.prisma
#0 6.063 Error: Not Found https://binaries.prisma.sh/all_commits/c875e43600dfe042452e0b868f7a48b817b9640b/linux-musl-arm64-openssl-3.0.x/libquery_engine.so.node.gz
------

From what I have read in other issues this is due to missing binaries provided by the Prisma team.
I have upgraded to the latest version of Prisma 4.10.1
How to reproduce
Here is a stripped down version of my Dockerfile. I can confirm this still fails:
FROM node:16-alpine
WORKDIR /app
COPY reflect/cron ./cron
RUN mkdir -p cron
WORKDIR /app/cron
RUN npm config set registry https://registry.npmjs.org/
RUN npm ci
RUN npx prisma generate

The cron folder is source code which I cannot share, but here is the package.json:
{
  "scripts": {
    "build": "tsc --build",
    "clean": "rm -rf dist/",
    "lint": "prettier --check --plugin-search-dir=. . && eslint -c .eslintrc.cjs --ignore-path .gitignore ./src",
    "test": "jest",
    "ci": "npm run-script lint"
  },
  "dependencies": {
    "@aws-sdk/client-pinpoint-email": "^3.112.0",
    "@aws-sdk/client-s3": "^3.137.0",
    "@aws-sdk/s3-request-presigner": "^3.141.0",
    "@pdfme/generator": "^1.0.14",
    "@prisma/client": "^4.3.1",
    "@types/node": "^18.7.17",
    "@types/pdfmake": "^0.2.1",
    "axios": "^0.27.2",
    "dayjs": "^1.11.4",
    "image-size": "^1.0.2",
    "mimemessage": "^1.0.5",
    "node-fpdf": "^1.0.41",
    "pdfmake": "^0.2.6",
    "s3-url-parser": "^1.0.3",
    "sharp": "^0.30.7",
    "ssh2-sftp-client": "^9.0.4"
  },
  "type": "commonjs",
  "devDependencies": {
    "@aws-sdk/types": "^3.127.0",
    "@babel/core": "^7.18.6",
    "@babel/preset-env": "^7.18.6",
    "@babel/preset-typescript": "^7.18.6",
    "@types/jest": "^28.1.4",
    "@types/sharp": "^0.30.4",
    "babel-jest": "^28.1.2",
    "jest": "^28.1.2",
    "prisma": "^4.6.1",
    "ts-jest": "^28.0.5",
    "typescript": "^4.7.4"
  }
}

Expected behavior
I expect npx prisma generate to succeed. Nothing change changed in the schema file or anything else.
Prisma information

// Add your schema.prisma

// Add your code using Prisma Client

Environment & setup

OS: macOS, Dockerfile is set to node:16-alpine
Database: PostgreSQL
Node.js version: 16.14.2

Prisma Version
prisma                  : 4.10.1
@prisma/client          : 4.3.1
Current platform        : darwin-arm64
Query Engine (Node-API) : libquery-engine aead147aa326ccb985dcfed5b065b4fdabd44b19 (at<EMAIL_ADDRESS>Migration Engine        : migration-engine-cli aead147aa326ccb985dcfed5b065b4fdabd44b19 (at node_modules/@prisma/engines/migration-engine-darwin-arm64)
Format Wasm             : @prisma/prisma-fmt-wasm 4.10.1-1.80b351cc7c06d352abe81be19b8a89e9c6b7c110
Default Engines Hash    : aead147aa326ccb985dcfed5b065b4fdabd44b19
Studio                  : 0.481.0

Could you try to change from alpine to slim instead
https://github.com/prisma/prisma/issues/17071#issuecomment-1420467521

If I use slim then it does build, but my groups standard is to use alpine and slim breaks other items we include.

@jkomyno You mentioned in that linked PR #17071 that Prisma would natively support Alpine images on arm architectures:

[...] and Prisma will also start officially supporting Linux Alpine on arm64 architectures starting from<EMAIL_ADDRESS>which will be released in a few hours.

When using Prisma 4.12.0, I'm faced with the same issue as OP (a 404 on the linux-musl-arm64-openssl-3.0.x/libquery_engine.so.node.gz binary). Switching from node:18-alpine to node:18-slim as the base image resolves, it but am I correctly understanding from your comment and docs draft (https://github.com/prisma/docs/issues/4365#issuecomment-1408482282) that the above use case should be supported as per<EMAIL_ADDRESS>

Hi @rijkvanzanten, could you please describe the structure of the project you're using Prisma in? Maybe there are two conflicting versions for prisma and @prisma/client in your package.json file(s)?
Also, using node:18-alpine, could you please run prisma version and copy your output here? Thanks.

Hi @rijkvanzanten, could you please describe the structure of the project you're using Prisma in? Maybe there are two conflicting versions for prisma and @prisma/client in your package.json file(s)?
Also, using node:18-alpine, could you please run prisma version and copy your output here? Thanks.

Ah good shout! It was indeed a mismatch in the exact version of prisma and @prisma/client that caused the error. Thanks! Where (if at all) are you taking feature requests? It would be nice if prisma or @prisma/client could throw a helpful error on version mismatches instead of crashing like this 🙂


Fix typo cab to can

This is just a typo fix I found while looking through the code in this file.

:+1:


Merge sinabs-dynapcnn to sinabs

Currently, the sinabs-dynapcnn project is hosted separately.
However they are highly related, and to reduce maintenance costs, we will merge them.
Merge the projects will be considered complete when:

[x] all the issues from sinabs-dynapcnn are added to the sinabs project
[x] sinabs-dynapcnn code is merged with sinabs
[ ] sinabs-dynapcnn documentation is merged with sinabs
** all the links should work
** it needs to take care of duplicates
[x] sinabs-dynapcnn tests are merged with sinabs
[ ] address failing tests

a new release of sinabs will be generated, possibly causing breaking/incompatibility changes: v2.0.0

I went through all the tests. There were no real redundancies.
However, I added a few sub-folders to organize everything a bit, and merged two files that were testing the same class.
Something that we should take a look at: I also ran the tests that are marked as skip and some of them fail:
FAILED test_dynapcnn/test_device_movement.py::test_multi_device_movement - KeyError: 'speck2b:0'
FAILED test_dynapcnn/test_discover_device.py::test_list_all_devices - AttributeError: module 'sinabs.backend.dynapcnn.io' has no attribute 'get_all_samna_devices'
FAILED test_dynapcnn/test_discover_device.py::test_is_device_type - AttributeError: module 'sinabs.backend.dynapcnn.io' has no attribute 'get_all_samna_devices'
FAILED test_dynapcnn/test_discover_device.py::test_discover_device - KeyError: 'dvxplorer:0'
FAILED test_dynapcnn/test_large_net.py::test_to_device - KeyError: 'speck2b:0'
FAILED test_dynapcnn/test_visualizer.py::test_jit_compilation - TypeError: create_visualizer_process() got an unexpected keyword argument 'visualizer_id'

For a few of them it's probably just because the correct device wasn't connected. Here we might want to consider not only testing one specific device. Others failed because of a missing get_all_samna_devices function or a wrong argument to the visualizer. Those certainly need to be fixed.

Sure!
https://github.com/synsense/sinabs/issues/204


Add test/example for rolling mean for BusinessDay

Create a test where the passed window is a CustomIndexer, ideally a CustomIndexer that implements business day/hour

Not a high priority since it's fairly feasible for the current cython rolling implementation to support non fixed offsets.


AMBARI-24355. Logfeeder: include log type in checkpoint file names.

What changes were proposed in this pull request?

extend most of the checkpoint operations into interface / implementations (keep checkInAll in InputManager)
move complicated methods to Helpers
make checkpoint file names to readable e.g.: hdfs-<filekey>.cp

That patch does not include javadoc changes, i will do that later with a patch which will include other javadoc changes for the whole logfeeder plugin api.
How was this patch tested?
UTs passed.
FT: with docker env, and with docker env which only included logsearch portal , solr and zookeeper and started logfeeder manually ...multiple times, to make sure checkpoints still working
Please review @kasakrisz @g-boros @swagle

retest this please

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/3842/
Test PASSed.

retest this please

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/3843/
Test PASSed.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/3844/
Test PASSed.