Save non-tensor scalar value in rotation analysis and apply later

Partially address #522
As a follow up to #968
Reduction with scalar value mixed in can be handled now. The unhandled case now is the sum of rotated tensors
For example, fully rotate arg0 and fully rotate arg1, then sum all the tensors to one tensor  (arg0 + arg0_r1 + ... + arg0_r7 + arg1 + arg1_r1 + ...) ; current analysis would not optimize the second reduction as the sum process will have a middle point (arg0_r7 + arg1) where PartialReduction can not propagate.
Interestinly, extract all values then sum them up would work now. This might be helpful in simple_sum with multple tensors when loop unrolling as the log reduction tree structure is not present.
A toy example here, though it can not be secretized (so did not put it in tests; believe it's the high rank tensor issue; manually unroll the first layer and use a %sum to sum them up might be some practical code though)
Apply
--full-loop-unroll --rotate-and-reduce --cse --canonicalize

to this snippet
func.func @simple_sum_nested(%arg0: tensor<32xi16>, %arg1: tensor<32xi16>, %arg2: tensor<32xi16>, %arg3: tensor<32xi16>) -> i16 {
  %c0 = arith.constant 0 : index
  %c0_si16 = arith.constant 0 : i16
  %arg0_expanded = tensor.expand_shape %arg0 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %arg1_expanded = tensor.expand_shape %arg1 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %arg2_expanded = tensor.expand_shape %arg2 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %arg3_expanded = tensor.expand_shape %arg3 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %tensor = tensor.concat dim(0) %arg0_expanded, %arg1_expanded, %arg2_expanded, %arg3_expanded: (tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>) -> tensor<4x32xi16>
  %0 = affine.for %i = 0 to 4 iter_args(%sum_iter = %c0_si16) -> i16 {
    %1 = tensor.extract_slice %tensor[%i, 0][1, 32][1, 1] : tensor<4x32xi16> to tensor<32xi16>
    %2 = affine.for %j = 0 to 32 iter_args(%sum_jter = %c0_si16) -> i16 {
      %3 = tensor.extract %1[%j] : tensor<32xi16>
      %4 = arith.addi %3, %sum_jter : i16
      affine.yield %4 : i16
    }
    %5 = arith.addi %2, %sum_iter : i16
    affine.yield %5 : i16
  }
  return %0 : i16
}

produces
    %extracted_slice = tensor.extract_slice %concat[0, 0] [1, 32] [1, 1] : tensor<4x32xi16> to tensor<32xi16>
    %0 = tensor_ext.rotate %extracted_slice, %c16 : tensor<32xi16>, index
    %1 = arith.addi %extracted_slice, %0 : tensor<32xi16>
    %2 = tensor_ext.rotate %1, %c8 : tensor<32xi16>, index
    %3 = arith.addi %1, %2 : tensor<32xi16>
    %4 = tensor_ext.rotate %3, %c4 : tensor<32xi16>, index
    %5 = arith.addi %3, %4 : tensor<32xi16>
    %6 = tensor_ext.rotate %5, %c2 : tensor<32xi16>, index
    %7 = arith.addi %5, %6 : tensor<32xi16>
    %8 = tensor_ext.rotate %7, %c1 : tensor<32xi16>, index
    %9 = arith.addi %7, %8 : tensor<32xi16>
    %extracted = tensor.extract %9[%c0] : tensor<32xi16>
    %extracted_slice_3 = tensor.extract_slice %concat[1, 0] [1, 32] [1, 1] : tensor<4x32xi16> to tensor<32xi16>
    ...
    %20 = arith.addi %extracted_4, %extracted : i16
    ...
    %31 = arith.addi %extracted_6, %20 : i16
    ...
    %42 = arith.addi %extracted_8, %31 : i16
    return %42 : i16

Thank you! I'll review it now, wanted to ask a qq about "though it can not be secretized (so did not put it in tests; believe it's the high rank tensor issue;" -
did something error out? I had no issue running --secretize=entry-function=simple_sum_nested --wrap-generic on it

did something error out? I had no issue running --secretize=entry-function=simple_sum_nested --wrap-generic on it

Oh, I was trying to put in inside tests/heir_simd_vectorizer/simple_sum.mlir, and bazel test failed saying secret.generic not matched so I did not look into it just thinking it might be some issue with high rank (as the code in the rotation analysis said it is not supported so thinking it is a global assumption)
Turned out the --heir-simd-vectorizer is the cause. Saying
heir-opt: external/llvm-project/mlir/lib/IR/PatternMatch.cpp:181: mlir::RewriterBase::eraseOp(mlir::Operation*)::<lambda(mlir::Operation*)>: Assertion `mayBeGraphRegion(*op->getParen
tRegion()) && "expected that op has no uses"' failed.
...
a stacktrace

Did try to put it in tests/tensor_ext/rotate_and_reduce.mlir but without loop-full-unroll it just does not go through the wanted pass.
Will try to debug on heir-simd-vectorizer

Oh, gotcha!

heir-opt: external/llvm-project/mlir/lib/IR/PatternMatch.cpp:181: mlir::RewriterBase::eraseOp(mlir::Operation*)::<lambda(mlir::Operation*)>: Assertion `mayBeGraphRegion(*op->getParen
tRegion()) && "expected that op has no uses"' failed.

Actually I hit some similar error in https://github.com/google/heir/pull/961 - most likely this is an issue in SecretPatterns during canonicalization of secret generic. If you file an issue with the stack trace I'm happy to help debug, but feel free to explore it!

Oh, gotcha!

heir-opt: external/llvm-project/mlir/lib/IR/PatternMatch.cpp:181: mlir::RewriterBase::eraseOp(mlir::Operation*)::<lambda(mlir::Operation*)>: Assertion `mayBeGraphRegion(*op->getParen
tRegion()) && "expected that op has no uses"' failed.

Actually I hit some similar error in #961 - most likely this is an issue in SecretPatterns during canonicalization of secret generic. If you file an issue with the stack trace I'm happy to help debug, but feel free to explore it!

Just debug into that. It is indeed the pass of canonicalization of secret generic, will fire a issue
Step to reproduce:
-mlir-print-ir-before-all -mlir-print-ir-module-scope -mlir-disable-threading --secretize=entry-function=simple_sum_nested --wrap-generic --cse --canonicalize --heir-simd-vectorizer --cse --canonicalize

While this one will work
-mlir-print-ir-before-all -mlir-print-ir-module-scope -mlir-disable-threading --secretize=entry-function=simple_sum_nested --wrap-generic --cse --heir-simd-vectorizer --cse --canonicalize

Long story short, HoistPlantextOp thinks the Op affine.for could be extract beforeGenericOp, only judging from all of its operands (only one sum_iter) being plaintext, and do not consider those blocks.
a simple if (op.getNumRegions() != 0) { return false; } in canHoist can fix the assert fault.
Now --secretize=entry-function=simple_sum_nested --wrap-generic --cse --canonicalize --full-loop-unroll --rotate-and-reduce --cse --canonicalize and --secretize=entry-function=simple_sum_nested --wrap-generic --cse --canonicalize --heir-simd-vectorizer --cse --canonicalize works as intended. The former is optimized as 4x(4 rotate + 1 extract) and the later is optimized as 16 rotate + 1 extract.
calling HoistPlantextOp
Generic Op Now:
    %0 = secret.generic ins(%arg0, %arg1, %arg2, %arg3 : !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>
>) {
^bb0(%arg4: tensor<32xi16>, %arg5: tensor<32xi16>, %arg6: tensor<32xi16>, %arg7: tensor<32xi16>):
  %expanded = tensor.expand_shape %arg4 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %expanded_0 = tensor.expand_shape %arg5 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %expanded_1 = tensor.expand_shape %arg6 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %expanded_2 = tensor.expand_shape %arg7 [[0, 1]] output_shape [1, 32] : tensor<32xi16> into tensor<1x32xi16>
  %concat = tensor.concat dim(0) %expanded, %expanded_0, %expanded_1, %expanded_2 : (tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>) -> tensor<4x32xi16>
  %1 = affine.for %arg8 = 0 to 4 iter_args(%arg9 = %c0_i16) -> (i16) {
    %2 = affine.for %arg10 = 0 to 32 iter_args(%arg11 = %c1_i16) -> (i16) {
      %extracted = tensor.extract %concat[%arg8, %arg10] : tensor<4x32xi16>
      %4 = arith.addi %extracted, %arg11 : i16
      affine.yield %4 : i16
    }
    %3 = arith.addi %2, %arg9 : i16
    affine.yield %3 : i16
  }
  secret.yield %1 : i16
} -> !secret.secret<i16>
Scanning generic body looking for ops to hoist...
...
Considering whether %1 = affine.for %arg8 = 0 to 4 iter_args(%arg9 = %c0_i16) -> (i16) {
  %2 = affine.for %arg10 = 0 to 32 iter_args(%arg11 = %c1_i16) -> (i16) {
    %extracted = tensor.extract %concat[%arg8, %arg10] : tensor<4x32xi16>
    %4 = arith.addi %extracted, %arg11 : i16
    affine.yield %4 : i16
  }
  %3 = arith.addi %2, %arg9 : i16
  affine.yield %3 : i16
} can be hoisted
operand %c0_i16 = arith.constant 0 : i16 is a plaintext ambient SSA value
Found 1 ops to hoist

(Now in GenericOp::extractOpBeforeGeneric)
Extracting:
%1 = affine.for %arg8 = 0 to 4 iter_args(%arg9 = %c0_i16) -> (i16) {
  %2 = affine.for %arg10 = 0 to 32 iter_args(%arg11 = %c1_i16) -> (i16) {
    %extracted = tensor.extract %concat[%arg8, %arg10] : tensor<4x32xi16>
    %4 = arith.addi %extracted, %arg11 : i16
    affine.yield %4 : i16
  }
  %3 = arith.addi %2, %arg9 : i16
  affine.yield %3 : i16
}
New single-op generic will have 0 operands
After adding new single-op generic:
"func.func"() <{function_type = (!secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>) -> !secret.secret<i16>, sym_name = "simple_sum_nested"}> ({
^bb0(%arg0: !secret.secret<tensor<32xi16>>, %arg1: !secret.secret<tensor<32xi16>>, %arg2: !secret.secret<tensor<32xi16>>, %arg3: !secret.secret<tensor<32xi16>>):
  %0 = "arith.constant"() <{value = 1 : i16}> : () -> i16
  %1 = "arith.constant"() <{value = 0 : i16}> : () -> i16
  %2 = "secret.generic"() ({
    %14 = "affine.for"(%1) <{lowerBoundMap = affine_map<() -> (0)>, operandSegmentSizes = array<i32: 0, 0, 1>, step = 1 : index, upperBoundMap = affine_map<() -> (4)>}> ({
    ^bb0(%arg12: index, %arg13: i16):
      %15 = "affine.for"(%0) <{lowerBoundMap = affine_map<() -> (0)>, operandSegmentSizes = array<i32: 0, 0, 1>, step = 1 : index, upperBoundMap = affine_map<() -> (32)>}> ({
      ^bb0(%arg14: index, %arg15: i16):
        %17 = "tensor.extract"(%8, %arg12, %arg14) : (tensor<4x32xi16>, index, index) -> i16
        %18 = "arith.addi"(%17, %arg15) <{overflowFlags = #arith.overflow<none>}> : (i16, i16) -> i16
        "affine.yield"(%18) : (i16) -> ()
      }) : (i16) -> i16
      %16 = "arith.addi"(%15, %arg13) <{overflowFlags = #arith.overflow<none>}> : (i16, i16) -> i16
      "affine.yield"(%16) : (i16) -> ()
    }) : (i16) -> i16
    "secret.yield"(%14) : (i16) -> ()
  }) : () -> !secret.secret<i16>
  %3 = "secret.generic"(%arg0, %arg1, %arg2, %arg3) ({
  ^bb0(%arg4: tensor<32xi16>, %arg5: tensor<32xi16>, %arg6: tensor<32xi16>, %arg7: tensor<32xi16>):
    %4 = "tensor.expand_shape"(%arg4) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
    %5 = "tensor.expand_shape"(%arg5) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
    %6 = "tensor.expand_shape"(%arg6) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
    %7 = "tensor.expand_shape"(%arg7) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
    %8 = "tensor.concat"(%4, %5, %6, %7) <{dim = 0 : i64}> : (tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>) -> tensor<4x32xi16>
    %9 = "affine.for"(%1) <{lowerBoundMap = affine_map<() -> (0)>, operandSegmentSizes = array<i32: 0, 0, 1>, step = 1 : index, upperBoundMap = affine_map<() -> (4)>}> ({
    ^bb0(%arg8: index, %arg9: i16):
      %10 = "affine.for"(%0) <{lowerBoundMap = affine_map<() -> (0)>, operandSegmentSizes = array<i32: 0, 0, 1>, step = 1 : index, upperBoundMap = affine_map<() -> (32)>}> ({
      ^bb0(%arg10: index, %arg11: i16):
        %12 = "tensor.extract"(%8, %arg8, %arg10) : (tensor<4x32xi16>, index, index) -> i16
        %13 = "arith.addi"(%12, %arg11) <{overflowFlags = #arith.overflow<none>}> : (i16, i16) -> i16
        "affine.yield"(%13) : (i16) -> ()
      }) : (i16) -> i16
      %11 = "arith.addi"(%10, %arg9) <{overflowFlags = #arith.overflow<none>}> : (i16, i16) -> i16
      "affine.yield"(%11) : (i16) -> ()
    }) : (i16) -> i16
    "secret.yield"(%9) : (i16) -> ()
  }) : (!secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>) -> !secret.secret<i16>
  "func.return"(%3) : (!secret.secret<i16>) -> ()
}) : () -> ()
Done hoisting

calling CollapseSecretless
Generic Op Now:
    %3 = "secret.generic"(%arg0, %arg1, %arg2, %arg3, %2) ({
^bb0(%arg4: tensor<32xi16>, %arg5: tensor<32xi16>, %arg6: tensor<32xi16>, %arg7: tensor<32xi16>, %arg8: i16):
  %4 = "tensor.expand_shape"(%arg4) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
  %5 = "tensor.expand_shape"(%arg5) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
  %6 = "tensor.expand_shape"(%arg6) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
  %7 = "tensor.expand_shape"(%arg7) <{reassociation = [[0, 1]], static_output_shape = array<i64: 1, 32>}> : (tensor<32xi16>) -> tensor<1x32xi16>
  %8 = "tensor.concat"(%4, %5, %6, %7) <{dim = 0 : i64}> : (tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>, tensor<1x32xi16>) -> tensor<4x32xi16>
  "secret.yield"(%arg8) : (i16) -> ()
}) : (!secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<tensor<32xi16>>, !secret.secret<i16>) -> !secret.secret<i16>

I think #980 should be merged first if possible so I can add @simple_sum_nested to test cases

Changes

Add the test of simple_sum_nested
Use SmallVector instead of std::vector for savedValues for consistency inside llvm
Updated comment from #980

@ZenithalHourlyRate I think the presubmit tests are changing, if you rebase, HEAD fixes the failing //tests/convert_secret_insert_to_static_insert:secret_inserts.mlir.test test


Development Tracking of the Ignition ModelPhotoShot plugin

This is the current progress on the different steps needed to achieve a functional plugin:

[x] Load model into ign-gazebo (done through the sdf config, couldn't find a way to receive command line params in a plugin)
[x] Create camera
[x] Create lights
[ ] Change background color (not working yet)
[x] Render and take picture with camera
[x] Center model in picture
[x] Add different picture positions
[ ] Make model move in random position
[x] Add save-to-file option for the poses
[ ] Shutdown server (it seems that this feature still not available: https://github.com/ignitionrobotics/ign-gazebo/issues/1237)

Currently working on: Testing current results against drake.

Work towards https://github.com/EricCousineau-TRI/repro/pull/73.
FYI @EricCousineau-TRI.

Thanks for picking this up, this would be super useful! A few scattered thoughts

* [ ]  Change background color (not working yet)

Looks like there should be support in sdformat for setting a scene's background color but to be honest I've never used it so I don't know if it works, I have considered in the past enclosing the whole model in a big colored sphere but that doesn't sound too clean :sweat_smile:

* [ ]  Make model move in random position

I was wondering what is the need of this? From what I understand for the sake of taking snapshots it is preferable to have a few fixed poses (i.e. top, perspective, side, front) and the usual approach is to move the camera around instead?

* [ ]  Shutdown server (it seems that this feature still not available: [/server_control stop does nothing ignitionrobotics/ign-gazebo#1237](https://github.com/ignitionrobotics/ign-gazebo/issues/1237))

If you plan to run this plugin through ign gazebo, something that could help is the --iterations argument where you can set the number of iterations to run before closing the software cleanly, so for example if you wanted to run headless for 5 seconds and you were using the default 1ms time step you could run:
ign gazebo model_photo_shoot.sdf -r -s --iterations 5000

Thanks for all the info, it's very helpful!

Looks like there should be support in sdformat for setting a scene's background color but to be honest I've never used it so I don't know if it works, I have considered in the past enclosing the whole model in a big colored sphere but that doesn't sound too clean :sweat_smile:

I tried the sdformat background option and it didn't work. I also tested using SetBackgroundColor on the scene instance without much luck, maybe I'm missing something, will do more research on this...

I was wondering what is the need of this? From what I understand for the sake of taking snapshots it is preferable to have a few fixed poses (i.e. top, perspective, side, front) and the usual approach is to move the camera around instead?

This is just a requirement we have, since we will compare the results of this plugin with drake. Maybe a more generic option where the position is not only random but can be set to something specific somehow is a better option but I'm not sure how that could be done... random is enough for us anyway.

If you plan to run this plugin through ign gazebo, something that could help is the --iterations argument where you can set the number of iterations to run before closing the software cleanly, so for example if you wanted to run headless for 5 seconds and you were using the default 1ms time step you could run:
ign gazebo model_photo_shoot.sdf -r -s --iterations 5000

This great! That should probably work for now. Thanks!

Just for tracking - is this a fair "downstream motivation" issue?
https://github.com/RobotLocomotion/drake/issues/15024
Also, is it possible to mention this plugin, and perhaps provide a comparison?
https://community.gazebosim.org/t/gsoc-2021-machine-learning-extension-to-ignition-gazebo/1070

This is just a requirement we have, since we will compare the results of this plugin with drake. Maybe a more generic option where the position is not only random but can be set to something specific somehow is a better option but I'm not sure how that could be done... random is enough for us anyway.

The set_pose service should work for the purpose.
If I remember correctly you can use either the Entity or the model's name to tell the system which model you want to set the pose of, example usage is here

Moving this to https://github.com/ignitionrobotics/ign-gazebo/pull/1331. I will close the issue.


recorder: resume logs recorded within 4 hours

We now look at the latest log's last timestamp - if it was within four hours, we prompt the user to resume recording to that file.
This change also adds (manually runnable) tests for setRecording()
Fixes #3135

Should it be clarified that the file name is in UTC not local time? This unlikely to affect people not living in GMT+-1

Very good point - I think that since we now look at the times within the file, the filename is less important (so long as it still sorts by date), so we could make it that the filename is in localtime (but keep the timestamps themselves in UTC), so when you look at the files they're in your timezone.

Additionally, I feel like forcing the recorder to append should always append to the latest file, regardless of the time difference

That makes sense - how does this sound as a proposed flow? Any tweaks/additions?
on recording start:

if any previous recorder log (containing data):
  if within 4 hours:
    prompt the user: append, new, overwrite
  else:
    prompt the user: append, new

"new" will create a filename based on the current date (in localtime)

(the prompt will also have the existing cancel option)

(I'll leave this PR open here - feel free to add changes on if you like, I'm not sure when I'll next be free to pick it up)

I like the idea, but have you actually tested this in practise? Because iterating over the entire file to find the last line could take quite a long time (10+ seconds depending on the track length) and I think that would provide quite a poor experience if you user just wants to start a run.
At minimum it should at least check the filename date and if it's different, skip the check.
... plus this feels like quite a lot of extra complexity? I'm not sure really sure if it's worth it?

Good point - @Mineinjava is this an issue you still see?
Either way I'd like to keep the tests, I'll split out to another PR if necessary (and if you agree the tests are good to have)

Good point - @Mineinjava is this an issue you still see?
Either way I'd like to keep the tests (and fix the lint warnings), I'll split out to another PR if necessary (and if you agree the tests are good to have)

Honestly I think the best solution is to

tell the user the name of the last log
if they say "append," append regardless of timestamps

Yeah that seems reasonable, I'll make some progress towards that as part of this PR

This has been subsumed by #3431, closing


.NET 7.0 GA

Release Notes
7.0.0
Status

Asset Type
7.0.0
Notes

Installers/Binaries
✅

Container Images(Linux)
✅

Container Images(Windows)
✅

Winget Packages
✅

Snaps
✅

Linux Packages (Microsoft distribution)

     Centos 7
✅

     Debian 10
✅

     Debian 11
✅

     Fedora 35
✅

     Fedora 36
✅

     OpenSUSE 15
✅

     Ubuntu 18.04
✅

     Ubuntu 20.04
✅

     Ubuntu 22.04
✅

Please report any issues you find with .NET 7.0, either responding to this issue, creating a new issue or creating a new issue in one of the following repos:

dotnet/aspnetcore - for ASP.NET Core questions
dotnet/efcore - for Entity Framework Core questions
dotnet/sdk - for CLI tools and questions
dotnet/runtime - for runtime, API, or installer issues and questions
dotnet/winforms - for WinForms issues
dotnet/wpf - for WPF issues
nuget/home - for NuGet questions and issues

Known Issues
If there are any issues with this release we will track them here and check issues off as they're resolved. See the linked issues for details on progress and resolution details.
* Linux packages are delayed in publishing for 7.0

.NET 7 availability in Ubuntu package feed is delayed and cannot be accessed via distro package manager at this time. We will provide an update once .NET 7 is available in Ubuntu.
[7.0] Projects using certain workloads don't load, build, and or run if .NET 7 Preview SDK workloads are installed

Hello, I am running into an issue where after updating to .NET 7, my coverlet output path is being ignored
dotnet test command I am using:
dotnet test --no-build --configuration release /p:CollectCoverage=true  /p:CoverletOutput=../CoverageResults/ /p:MergeWith="../CoverageResults/coverage.json" /p:CoverletOutputFormat="opencover,json" -m:1
After updating projects from .NET 6 to .NET 7, the coverage output paths change to the following:
Old: '/home/vsts/work/_temp/coverage/coverage.json'
New: '/home/vsts/work/1/s/tests/dotnet/(project directory)/coverage.json'
This is causing our azure pipeline builds to fail sonar test coverage tollgate because coverage files are not where they are expected to be. Is there something I'm missing here?

@marcpopMSFT - any ideas for @mfisher214 above?

How to install on Ubuntu 22.10?

@mfisher214's problem looks like https://github.com/coverlet-coverage/coverlet/issues/1391 / https://github.com/microsoft/vstest/issues/4014

@baronfel as I believe 4014 is fixed by https://github.com/dotnet/sdk/pull/27961 which will release in 7.0.101

Good morning,
Has a diff been published between .Net 6 and 7?
There doesn't appear to be anything inthe core repo, so thought I'd ask.
Thanks for a really good release.
Sean.

Any ETA for the Linux packages?

What is the best way to install it on ubuntu 22.04 x64 and arm64? dotnet-install.sh or something else?

Any update on when will the updates (.NET 6.0.11 and .NET 7.0.X) be available on Ubuntu 22.04 LTS package feed?

@rbhanda for any updates.

Chatted with @leecow and it looks like our 22.04 repo has the updates. As long as folks follow the guidance in https://github.com/dotnet/core/issues/7699 they should see 7.0.0 and 6.0.11.

I don't think so.
sudo apt-get update
apt-cache search dotnet

Where is the API diff between 6.0 and 7.0? I can't seem to find it.

@EatonZ  #7976

Closing in favor of https://github.com/dotnet/core/issues/8037


Move

I already explained you in #672 that it doesn't work like that. If you're gonna bother anyone that watches this repo the LEAST you could do is read the responses you get on your useless issues, answer them and don't spam.


Use filter_map

Simplify parse_module with using filter_map.
Also, something is trying to update rlci version from 0.1.0 to 1.1.1 in Cargo.lock, I didn't include it in this PR.

Beautiful! Thank you :)

Also, something is trying to update rlci version from 0.1.0 to 1.1.1 in Cargo.lock, I didn't include it in this PR.

Good catch, thank you. I'll fix it. I didn't know the project version resides in the lockfile as well and didn't actualize lockfile after bumping the version. That should be easy to fix.


ARROW-15742: [Go] Implement 'bitmap_neon' with Arm64 GoLang Assembly

Implement 'bitmap_neon' with Arm64 GoLang Assembly:

Implement 'extract_bits' with Arm64 GoLang Assembly. '_pext_u64' is the x86 bmi intrinsics for extract_bits.
There is no equivalent of '_pext_u64' instruction on Arm64.
The task is to implement equivalent of '_pext_u64' by Arm64 assembly.

Implement 'levels_to_bitmap' with Arm64 GoLang Assembly for greaterThanBitmapNEON

@guyuqi Was the Go build on Arm already failing or is it failing due to this change?

@zeroshade Fixed related issues in 3rd commit.
TestDefLevelsToBitmap passed on both x86 and Arm64.
In /arrow/go/parquet/file:
ARM_ENABLE_EXT=NEON go test
PASS
ok      github.com/apache/arrow/go/v8/parquet/file      13.898s


__last_update field not appearing on the api requests

Well, it's Odoo's decision what to include into response.


t2 setup

command t2 setup: A silent command (not exposed in CLI): [ONLY WORKS OVER USB] creates a .tessel folder with ssh keys in your home directory and uses those ssh keys to authorize you to push code to the USB-connected Tessel
Current status: no t2 setup command
Status once https://github.com/tessel/t2-cli/pulls is merged:

[x] t2 setup is a callable command
[x] creates a .tessel folder in computer's home directory containing an ssh keypair
[x] copies public key from ~/.tessel into tessel's /etc/dropbear/authorized_keys, thus authorizing the given computer to program that tessel over SSH

Remaining issues:

[ ] Only works on Unix (uses ssh-keygen)
[ ] Should be run automatically on initial code push instead of being explicitly called

There is some contention about this in the spec. Summarizing the conversation:

Silent vs. callable
I suggest that this should remain a callable command. I'm worried that if the command is silent, it's not obvious that a Tessel needs to be programmed over USB the first time it is used.
@johnnyman727 agrees that it should be explicit.
@nplus11 thinks it should be a silent command because it's an extra step for the user
What is the best interaction for authorizing a computer to program a given Tessel for the first time?

Name
The original name for the command was setup. @johnnyman727 suggests provision. I suggest auth. What is the most intuitive name?

@tcr @kevinmehall @jiahuang @ekolker @HarleyKwyn @nplus11 do any of you have opinions on this?

Explicitly called. What does deploying code have to do with manipulating wifi authentication credentials? You don't necessarily want to set up credentials just because you push once over USB, and you don't necessarily push over USB before wanting to push over WiFi.

+1 @kevinmehall any naming preferences?

What is wrong with making it both callable and automatic?

if I call it before a push, good: it's done
if try to push and the requisite .tessel + keys, etc are not created, then call it before the push
it's idempotent, so subsequent calls have same result.
I can purge and start anew.

Naming...

"setup" is too ambiguous
"auth" could work
"provision" is definitive

Provision seems fine, if that's standard. I'll update above.
Re automation, I'm worried that if it's implicit, people don't know that it's something that needs to happen.
Say your friend has been using their Tessel 2, programming it over SSH. You get excited about it and decide to try it. You install tessel and try running the same tessel list your friend was using, but the T2 doesn't even show up until you run tessel list -a, at which point it shows as unauthorized. Your friend doesn't remember having to authorize (since the friend followed the first run experience to set up, and it authorized automatically). Then neither of you know why you can't access the Tessel. You will likely eventually get frustrated and try connecting directly over USB, at which point it will work. You don't know why it worked, and therefore don't know if it will stop working in the future– looks like a potential connectivity error.
Much simpler if it's standard to plug it in to USB when you first get it, explicitly call a command to authorize you, and know exactly why you are or aren't allowed to access the device.

Why can't tessel list show both authorized and unauthorized? Create some notation or even just (unauthorized) or (requires authorization, run: "tessel provision")

We initially hid unauthorized devices because CLI will only work with authorized tessels (aka why show them something they cannot talk to?). However tessel provision is more clear now, and we want an easier way to "connect" to them. It makes a lot of sense to have list show all devices now; no flag needed.

Seems reasonable. I'll update the tessel list command in spec.
I also like the idea of a more informative (use tessel provision to authorize). Along with that, we need an informative error message on tessel provision in case someone tries to use it over SSH. "Connect via USB to use tessel provision"

On what commands should a USB-connected T2 automatically call tessel provision?

Along with that, we need an informative error message on tessel provision in case someone tries to use it over SSH. "Connect via USB to use tessel provision"

Definitely—this makes it clear to the user that they've made a mistake, but also includes the solution.

On what commands should a USB-connected T2 automatically call tessel provision?

Anything that would otherwise fail if tessel provision has not been explicitly called. Do the check: if the necessary local files are in place, then it's reasonably safe to assume that tessel provision has been run, otherwise run it.


Drive pull fails on expired x509, init, ls and push work fine

This is the error I get on each file that is being fetched from the remote with drive pull.
Get https://googledrive.com/host/xxxxxxxxxxxxxxxxxx: x509: certificate has expired or is not yet valid.
As mentioned in the subject, init, ls and push work fine. I also checked if my system clock is current as mentioned in #152. It is fine.
Any ideas?

Hmm, it seems this only happens when I am behind our corporate proxy. This proxy blocks tcp://drive.google.com:443.
Why are some drive commands begin blocked and others not? Do they connect to different endpoints?

Hello there @mvdbos, thank you for the question and welcome to drive!
Aha, I got a similar problem in June https://twitter.com/odeke_et/status/748422470840029184 and I discovered later on that there was a MITM proxy that was trying me #conspiracy #whereAreBiggieAndPac #illuminati.
Anyways, yeah there isn't much we can do for this issue unless you get them to not block drive.google.com:443.


Add basic workflow for automatic subcommand testing on Windows.

This PR adapts some existing command tests to run on both Linux and Windows, as well as add a simple GitHub action to run the command tests on Windows 2019/2022 automatically.

It might be worth discussing whether nerdctl push should also be included in this workflow (and if so, to which public/private registry implementation), but considering the efforts to port BuildKit on Windows are still ongoing it is unlikely to be critical for users at this stage...
The rest of the failing commands currently being tested have clear causes for the most part (image encrypt/decrypt have keyfile encoding issues, pause/unpause/cp are not yet implemented, and rename errors out), and will be addressed in dedicated PRs.

Why not use the same test suite as Linux?

@AkihiroSuda @manugupt1 thanks a lot for the pointers!
I was initially apprehensive on adapting the existing tests since they seem to have been mostly written with Linux in mind but it makes more sense to unify the *nix/Windows testing as much and as soon as possible!
I've updated this PR in the following ways:

made the workflow setup containerd and just run go test ./cmd/... on the GitHub Windows runners (we'd like to have it tested on both 2019 and 2022 on semi-up-to-date Windows images and containerd release so IMO having a per-PR GitHub workflow is more useful than Cirrus here)
enabled the image encryption/conversion tests on Windows (the commands just worked OOB)
adapted some tests which used to require image building during the test to work around this on Windows until BuildKit is ported too (namely re-tagging or converting the testutil.CommonImage)

There's like a dozen existing tests which are skipped on Windows since they unequivocally require BuildKit as part of the test itself (mostly all of those prefixed with TestBuild*), so I have left those as-is for now.
There's a couple of tests which outright fail and I'll be looking into next:

TestRename yields an internal OS error
TestRenameUpdate fails to start the test container (almost surely related to TestRename)
TestEncryptJWE (tests nerdctl image encrypt --jwe=...) needs a registry running during the test but the current test registry image is Linux-only

Lastly, some points I'd like to bring to your attention now (with separate PRs to work through these later):

some tests which were cross-platform and executed on Unix too have been "deactivated" by giving them a Windows and Linux versions only (TestImagePrune and TestImagesFilter), but I've seen that the test suite isn't even run on FreeBSD in the Cirrus config so no actual "regression" happened.
nerdctl logs will always exec the tail binary when using simple JSON file logging, which is impractical to expect to be present on Windows installs. Afaik docker logs always just prints/streams to stdout so I was wondering whether it's really worth having nerdctl act differently in this case?
how should I go about updating the Windows compatibility for the commands in the README? It looks like the list was generated with DocToc but it looks like any updates are manually committed by contributors, correct?

Superseded by #2418.


Javascript functions are not called

I call the following method in viewWillAppear method:
func startSignalRConnection() {
    SwiftR.connect(self.pusherURL) { connection in
        print("connection ID: ", connection.connectionID)
    }
}

but the app crashes before printing anything here, because in the method shouldHandleRequest(request: NSURLRequest) -> Bool the variable msg is an empty string and it cannot parse it as json. In order to diagnose the problem, I edited the method like this:
func shouldHandleRequest(request: NSURLRequest) -> Bool {
    if request.URL!.absoluteString.hasPrefix("swiftr://") {
        print(request.URL!.absoluteString)
        let id = (request.URL!.absoluteString as NSString).substringFromIndex(9)
        let msg = webView.stringByEvaluatingJavaScriptFromString("readMessage(\(id))")!
        let data = msg.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

        //debug

        let msg2 = webView.stringByEvaluatingJavaScriptFromString("console.log(swiftR.foobar)")!

        print("here1")
        print(id)
        print("here2")
        print(msg2)
        print("here3")
        print(msg)

        //debug

        let json: AnyObject = try! NSJSONSerialization.JSONObjectWithData(data, options: [])

        processMessage(json)

        return false
    }

    return true
}

swiftR.foobar is a variable I declared in the SwiftR.js file:
window.swiftR = {
    connection: null,
    hubs: {},
    transport: 'auto',
    headers: {},
    foobar : 1234
};

the output to those logs is as follows:
here1
91bihm8e
here2
//empty line(empty string)
here3
//empty line

Is there something wrong with the way I'm calling the functions?

Looks like there's a bug in the UIWebView branch of the message handling code after a recent change:
let msg = webView.stringByEvaluatingJavaScriptFromString("readMessage(\(id))")!

should be:
let msg = webView.stringByEvaluatingJavaScriptFromString("readMessage('\(id)')")!

You make that change in your copy of the code, or use WKWebView instead of UIWebView (if it's appropriate for your use case):
// See the demo project
SwiftR.useWKWebView = true

Either way, I will update the pod today with this fix. Thanks for submitting this issue.

Fixed in v0.8.3.


Minor fixes

#95

Codecov Report

Merging #100 into master will decrease coverage by 0.06%.
The diff coverage is 50%.

@@            Coverage Diff            @@
##           master    #100      +/-   ##
=========================================
- Coverage   88.27%   88.2%   -0.07%
=========================================
  Files          33      33
  Lines        1185    1187       +2
=========================================
+ Hits         1046    1047       +1
- Misses        139     140       +1

Impacted Files
Coverage Δ

libact/query_strategies/hintsvm.py
90.69% <50%> (-1.99%)
:x:

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 ee15f25...45b3132. Read the comment docs.


Button does not render in Cordova

This plugin is awesome in a browser, however the component does not render when I'm running inside of a Cordova-based mobile app (via MeteorJS) - I'm not getting any sort of error or indication as to why it isnt showing up - any ideas or suggestions that I might try? I have been unable to find any other way to get express checkout to work in React this way.

Sorry I was busy lately, have you found a work-around way for this yet?
I worked with Cordova mobile app before, since Cordova/phonegap has its own way to load libraries, so the way Cordova works with React may be tricky (not like the way browser works)
Therefore, this react paypal button library of mine may not work with Cordova at the moment!
There is an article about Phonegap & React for your reference: http://devgirl.org/2015/09/22/sample-phonegap-app-with-reactjs/

I close this issue since this was inactive for a while, and Cordova is not supported by this library at the moment!
Thanks


how to build metadata-exchange-filter.wasm and stats-filter.wasm?

i build istio on arm64 plantform，now i lost  metadata-exchange-filter.wasm and stats-filter.wasm，how to build this binary？

Those wasm modules are built by build_wasm target: https://github.com/istio/proxy/blob/master/Makefile.core.mk#L79
To build all artifacts from istio/proxy repo, you can use push_release target: https://github.com/istio/proxy/blob/master/Makefile.core.mk#L165
I am going to close this issue. Please reopen if you have further question. thanks!

@bianpengyuan why I built wasm modules by make build_wasm, the artifacts is metadata-exchange.wasm not metadata-exchange-filter.wasm. But Dockerfile.proxyv2 need metadata-exchange-filter.wasm, need to rename metadata-exchange.wasm to metadata-exchange-filter.wasm?
I don't know how to do it


fix: Resource binding can bind one of lock or type, or bind lock and type

This PR is used to fix https://github.com/ckb-js/kuai/issues/504#issuecomment-1756929777.

Codecov Report

Merging #509 (853e8ce) into develop (879251f) will decrease coverage by 0.34%.
The diff coverage is 60.49%.

@@             Coverage Diff             @@
##           develop     #509      +/-   ##
===========================================
- Coverage    61.97%   61.63%   -0.34%
===========================================
  Files           94       94
  Lines         3124     3167      +43
  Branches       691      719      +28
===========================================
+ Hits          1936     1952      +16
- Misses        1077     1098      +21
- Partials       111      117       +6

Files
Coverage Δ

packages/models/src/store/store.ts
89.42% <0.00%> (-0.55%)
:arrow_down:

packages/io/src/chain-source/nervos.ts
6.06% <0.00%> (-1.94%)
:arrow_down:

packages/models/src/resource-binding/manager.ts
88.35% <74.24%> (-8.44%)
:arrow_down:

Continue to review full report in Codecov by Sentry.

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

Please have a review @Daryl-L @PainterPuppets


SQL Error [1406] [22001] Data truncation: Data too long for column 'iso_code' at row 1

Description
Hi, I'm trying to import datasets from csv and xlxs files of around  26.4 MB using MySQL in Dbeaver version <IP_ADDRESS>301211053. I have the SQL Error [1406] [22001] Data truncation: Data too long for column 'iso_code' at row 1, even though this column is not that long. If I skip all, it imports only the rows with the first group of values in the first column.
DBeaver Version
<IP_ADDRESS>301211053.
Operating System
Mac Monterey 12.2.1
Database and driver
MySQL 8.0.23
com.mysql.cj.jdbc.Driver - Driver for MySQL 8 and later

Steps to reproduce
1- press table
2- import data
3- open the csv or xslx file
4- next (3 times)
5- proceed
Additional context
No response

I noticed that every column that was FLOAT, was imported as REAL. So, the error happens. I handled it changing the column types, one by one, manually.

Hello @KC2016
You can specify your target column's data types during the data import.

Did you try to do it? Choose the optimal type of these columns for your data.


New parameter: log

Introduction of new parameter: log. Default console.log can be overridden with it.

nice addition. merging...


Add documentation how to install the app generator on Google Cloud - with Kubernetes

The setup with Kubernetes is not documented yet. Please set up the system on Google Cloud and document it. Please share the link to your installation.
@shreyasnbhat @rohanagarwal94 @Shailesh351 @arpitdec5 @mahikaw @geekyd @harshitagupta30 @anu-007 @sumedh123 @CosmicCoder96 @utkarshnath @Ronak-59 @mejariamol @iamareebjamal @LuD1161 @magdalenesuo @poush @enigmaeth @shubham-padia @Princu7 @SaptakS

@mariobehling i would like to work on this issue. please assign this to me.Thanks


setup.py legacy code

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I'm running yt-dlp version 2022.06.29 (update instructions) or later (specify commit)
[X] I've searched the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
Hi,
we looked into the setup.py and found the import of distutils and setuptools.
See: https://github.com/yt-dlp/yt-dlp/blob/master/setup.py#L7L13
Is the legacy import of distutils obsolote because yt-dlp is supposed to run under python 3.7+ in contrast to youtube-dl with support of 2.6+/3.2+ ?
If this is the case we can create a pull request if you like.
Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
No response

distutils.spawn could however be replaced

We just want to get ahead of the deprication in 3.12 :)
Is self.dry_run mandatory?


Add a wiki: World Trigger

An anonymous user has submitted a new wiki via our submission form.
Link to origin wiki: https://worldtrigger.fandom.com/wiki/Main_Page
Link to destination (independent) wiki: https://worldtriggerwiki.com/wiki/Welcome_to_the_World_Trigger_Wiki

This has been added and will be released in v1.3.0


integration: add test for non-admins

As was pointed out in #396 we've now shift to a paradigm where non-admins have select privaliages to API. However we're lacking in the test department for these kinds of endpoints. Add cases for non-admins.

The API has been rewritten and this issue is no longer relevant.


AzureKeyVaultAppSecretsPublisherValidationEnabled in OnPrem?

Is really the setting AzureKeyVaultAppSecretsPublisherValidationEnabled available for OnPrem? How it could work for the OnPrem Apps when I need to register the app for the KeyVault acccess during the AppSource app validation, which means that it works only for SaaS environment hosted by Microsoft?
Trying to set this settings OnPrem gives us
The configuration setting 'AzureKeyVaultAppSecretsPublisherValidationEnabled' is not valid for Microsoft Dynamics 365 Business Central Server.

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

ID: 32d7116b-73f6-2ba6-3c81-3ff9800521e2
Version Independent ID: 88b013d0-c13c-b578-a0e1-822a2bf6a3e9
Content: Setting up App Key Vaults for Business Central on-premises - Business Central
Content Source: dev-itpro/administration/setup-app-key-vault-onprem.md
Service: dynamics365-business-central
GitHub Login: @jswymer
Microsoft Alias: solsen

Hello,
The AzureKeyVaultAppSecretsPublisherValidationEnabled setting was introduced in Business Central 2020 release wave 2 (v17).  In the Business Central Administration tool, it appears as Enable Publisher Validation under the Azure Key Vault Extension Secrets tab.

Ok, have this setting meaning for OnPrem at all? How the publisher validation is working in OnPrem? How can publisher "register" the onprem app for such an access? I think it cannot work in OnPrem...

Hello,
We have this section in the docs which might answer your question: Using Key Vault Secrets in Business Central Extensions - Enable publisher validation.
I hope it helps, otherwise let us know!

Ok, thanks, missed this. But still not sure how it could help to prevent the "malicious" app to identify itself as app of different publisher (publisher X) and enter the real publisher AAD tenant ID (AAD tenant ID of the company X - which is not secret) when publishing the app, thus getting access to the keyvault. But this is out of scope of the original issue.
Ok, the value is available on OnPrem. This is the "solution" to my issue. I think you can close this.

Hello,
Sorry I couldn't have been more helpful. I ran your issue by the development team. One thing they thought we should make clear is that when Publisher Validation is enabled, you have to provide the AAD tenant ID when publishing an app. You do this by using the Publish-NAVApp cmdlet with the -AzureActiveDirectoryTenantId parameter set.
I made a couple small adjustments to the article, which will be published soon.  Also, if you find that this feature doesn't suit your needs, feel free to make a suggestion at ideas.
Thanks for feedback!


Text path animates too fast

Please define your problem or issue as clear as possible.
For a problem, please fill the following:
Vivus version:
Latest
Browser:
Tested on chrome, firefox and edge (latest)
Hi, I have a logo with some text in it, I have used inkscape to turn the text element into path and so everything was animating but the text was waaay too fast animated..
so I used the animation type - scenario
and giving it data-duration of about 1000 frames with animation timing EASE gave the right effect..
the only problem is after the animation is finished there is something going on in the background
and it takes about 20 seconds until my finished callback function is called (the function is used to fade in the fill colors of the logo).. well that delay kind of ruins it..
how I tried to solve it:
I measured the time it takes to visually end the animation with a stopwatch.. created a function with that timeout that transitions the fill colors.. well it's not an elegant solution as you can see...
 Can you please provide me a JSFiddle or your full SVG? That would be easier for me.
I tried to use your snippet in a SVG but I couldn't display anything :-S

@maxwellito Hi!
Okay let me be a bit clearer..
Now my question is how do I create a word where each letter is it's own path?
to create my logo I used inkspace and it's built in tool to turn object to path

Yes, the SVG exported from inkscape was just a massive path full of sub shapes. Browsers don't like it and the only way to fix it is to split it into path element for letter. Like here.
However I don't know InkScape at all. The rare time I had to use it, it gave me a headache in 20 seconds. There might be a way split your text into text elements of one character then turn them into paths.

@maxwellito  Hi thanks for your response,
First I would like to ask what svg editing program would you recommend using (it's okay if its not free) to create and edit svgs?
Second, I eventually ended up animating the text I wanted with simple css.. starting the animation with the callback function of when vivus animation has ended.. seems to be the best solution for my case (since I used special styling which vivus doesn't support)
Thanks,
-Roy

:)
My SVG editor is Adobe Illustrator. I grew up with it, it's like my third
hand but I don't want to recommend it because it's a bit expensive for a
casual use.
I should really give another try to Inkscape. Because it's open source and
Im pretty aure it got the power to export SVG the way I want. Plus if it
works I will be able to provide mini tutos to build SVG with an open source
and free solution: win-win!
The problem with inkscape is the SVG format contain all the data to be
manipulated. Unlike Illustrator that use .ai files for project then you can
export as .svg with pretty advanced options.
Ill install inkscape today to see how to turn text to path. If that works,
the output can always be put in SVGOMG to make it clean.
I keep you posted ;)

Ok I tried Inkscape:

Create your document
Write your text
Select your text element
Object > Object to Path
Object > Fill and Stroke (to select your color and remove the fill if
you want to)
Save as > pick 'Optimised SVG' as format

Set the 'Number to significant digit' to 3
Tab SVG output: Tick 'Remove metadata' and 'Remove Comment'

Ready to use for Vivus
Here is what I've done: https://jsfiddle.net/9swg0cw5/
PS: The X11 plus the weird interface made go mad a bit... but happily
surprised of the result :-D


Promise then/catch not working

I'm not sure what is going on, but the promise then/catch is not working.
Weirdly it was working at some point then seems to have stopped.
If i put breakpoints within the functions they don't stop either, like they are never being called.
running on graalvm-jdk-22, kotlin 2.0.10 & kotlin.test
@Test
fun `Graalvm promise execution`() {
    val context = Context
        .newBuilder("js")
        .allowAllAccess(true)
        .allowHostAccess(HostAccess.ALL)
        .allowIO(IOAccess.ALL)
        .build()

    context
        .eval("js", "async function render(x) { return x }")

    val response = context
        .getBindings("js")
        .getMember("render")
        .execute(10)

    println(response)

    val then = response
        .invokeMember("then", { value: Value ->
            println(value)
        })
        .invokeMember("catch", { value: Value ->
            println(value)
        })

    println(then)
}

Output:
Promise{[[PromiseStatus]]: "resolved", [[PromiseValue]]: 10}
Promise{[[PromiseStatus]]: "resolved", [[PromiseValue]]: 10}

Ah I removed the Consumer, it should be
.invokeMember("then", Consumer<Any> { value: Any ->
    println(value)
})


Config deprecated, use homeassistant.core_config.Config

Version of the custom_component

5.4.0
Configuration

N/A

Describe the bug
Config was used from frigate, this is a deprecated alias which will be removed in HA Core 2025.11. Use homeassistant.core_config.Config instead
Debug log

N/A

This is already fixed

A new patch release with this fix would be nice, as these logs are continually shown in their Home Assistant instances, which explicitly indicates people should open issues against the integration.

I can do a new release now, @NickM-27 even bumped the version already. Since it contains https://github.com/blakeblackshear/frigate-hass-integration/pull/758 though, I think this will be riskier than usual that something will break. I think a preview/beta release might be a better idea to get it some mileage first.
That work for you both?

Let's do a preview first 👍


add SensorMeasurement at backend

add SensorMeasurement Message in object at backend

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


add nix build instructions and README section

This adds Nix build instructions and a README section on its usage.

@sheepforce Thanks a lot!
I see that in your nix file you get trexio from git clone, so there is a dependency to emacs and swig. This dependency is not required if you compile trexio from the tar.gz instead of the git cloned repository. Is it possible for you to modify the nix package so that it fetches the tar.gz on the release page instead?

I see that in your nix file you get trexio from git clone, so there is a dependency to emacs and swig.

You mean in upstream nix here: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/tr/trexio/package.nix#L16
or in the Nix files in this PR here https://github.com/TREX-CoE/trexio/pull/173/files#diff-ff58cc3517012ebf72873a9638bd18d5acb9b8f9d9032c2df4d98c861bf3ebe6R16 ?
For upstream Nix we had a short discussion in the PR about that and decided to use the Git sources directly. It plays nicer with the fetchers and Nix is a source oriented package manager, where we often try to by as close to the source as possible. For example, we also run the libint generator and do not only build the libint release tarballs with generated code. In principle, it would of course be possible to use the release tarballs directly, but it would not really reduce dependencies. Emacs and Swig are in nativeBuildInputs and thus not part of the runtime closure: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/by-name/tr/trexio/package.nix#L30
For the second case, i.e. the flake.nix in this PR, Nix is using the code of the git checkout, the flake.nix itself is in (sorry if this sentence is confusing. I couldn't find a better wording :sweat_smile:) I.e. you instruct Nix to build a specific git reference, Nix will build exactly that specific git reference, using the flake.nix contained in that commit. For example nix build github:trex-coe/trexio/madelung would build the code of the madelung branch (if this PR would already be merged and part of the madelung branch). Thus, in this case, it doesn't really make sense to fetch the release tarball. This is basically the overarching goal of flakes: You include a flake.nix in all of your repos and use git references to build exactly that checkout, e.g. in another repo
{
  inputs.trexio.url = "github:trex-coe/trexio/madelung";
  outputs = { trexio, ... }: # ...
}

OK, I get it! Thanks for the details.


Volatile DB: Make parser error type variable

The volatile DB currently requires the parser to return a specific error type (ParserError). This should be changed; it should be completely polymorphic in the error type. If internally it is useful to to deal with parsers returning ParserError instead, I'd suggest to parameterize the DecodeFailed constructor of ParserError with a type parameter e, and the internally translate from Parser .. e .. to Parser .. (ParserError e) ..; but it mightin fact be that this error type can go altogether; not entirely sure. However, it should be an internal detail to the volatile DB, if it stays.

@edsko I was thinking that instead of Maybe e, the parser could return sth like this
data ParserMessage e = EverythingOk | Truncate | ThrowError e
which informs the db what it should do. e would be wrapped as a VolatileDBError and rethrown.

Why do you need the distinction between Truncate and ThrowErrow?

when Truncate no error should be thrown. Just truncate the db and continue.

When would that ever happen?

If the parser fails to parse the whole file, but only up to a point. Isn't this possible?

Ah, sure, absolutely. But that's already captured.  If that error is present, the file should be truncated after the successful results. If no error is present, then no.

If I simply get Just e, then the db does not know if it should truncate and continue or truncate and throw e.

It should never throw e. It should truncate and move on.

Oh ok, then even a Bool would work right? Why I need to know e?

Yes, in principle just a Bool would work. The only reason for e would be to log a warning ("truncating file such and such because error such and such").

Closed in #492.


Problems with "Assign MS2 to features"/Mismatch between MS1 and MS2 features

Basic information

My operating system: 64-bit
My MZmine version: 3.2.8

What happened

Please describe what happened and how it differs from what you expected to happen.

To me it seems like there is a mismatch between the MS1 and MS2 scans when looking at the scan table (see screenshot). For example the precursor ion for MS2 in scan #3600 is according to the MS spectrum 245.1169 m/z and is selected based on the MS1 mass 245.1170 m/z seen in the chromatogram. This is also what I see in the software Bruker which I use for data acquisition. However, in the scan table the precursor ion is listed as 245.0565 m/z and is paired with the mass 121.0647 m/z in the "base peak" column (scan #3600). Or is it paired with the MS1 scan #599 having an m/z of 245.1170? Even if so, I think that there is a very large difference in mass between the MS1 and MS2 precursor (~0.065). When I run the "Mass detection" and "Chromatogram builder steps" as described below, I have almost no fragment scans connected to my features. If I go to "Feature list methods" => "Processing" => "Assign MS2 to features" and raise the "MS1 to MS2 precursor tolerance (m/z)" to 0.07 and the "or ppm" to 300, I get more fragment scans connected to my features. To me it just does not seem right having to raise these values this high in order to assign MS2 to my features and I am worried that something might be wrong. Normally I would use a "MS1 to MS2 precursor tolerance" of 0.001. I have recalibrated my data and exported it to mzML files using both Bruker and ProteoWizard, and tried to import it into to MZmine in different ways to see if there might have been a bug somewhere, but the results stay the same. There is also no "Inject time" or "Scan definition" listed in the scan table. Is there any chance that MZmine is somehow reading my data wrongly?

Please include all parameter values for the MZmine modules you used.

Mass detection
“Raw data methods” => “Mass detection” => “Mass detection”
•	Raw data files: All raw data files
•	Scans: “Set filters”
o	Retention time: 0.8 – 21.00 min
o	MS level: 1/2
o	Polarity: +
o	Spectrum type: Centroid
•	Scan types (IMS): All scan types
•	Mass detector: Centroid => “Setup” => “Show preview”
o	Noise level: 1.0E3 (MS1), 0.00 (MS2)
Chromatogram builder
“Feature detection” => “LC-MS” => “ADAP chromatogram builder”
•	Scans: “Set filters”
o	Retention time: 0.8 – 21.00 min
o	MS level: 1
o	Polarity: +
o	Spectrum type: Centroid
•	Min group size in # of scans: 5
•	Group intensity threshold: 1.0E3
•	Min highest intensity: 2.0E3
•	Scan to scan accuracy
o	m/z: 0.005
o	or ppm: 15

Please upload screenshots of any errors and your log/mzmine.log file.

Please upload an MZmine project file that demonstrates the problem you are reporting.

project file for MZmine support.zip

Thanks a lot for your answer Steffen
I have now tried to convert a raw Bruker .d file that I have not calibrated at all into a mzML file and imported to MZmine3. In this file, the MS1 ions and MS2 precursor ions have the same m/z. Then if I calibrate the data, the m/z of the MS1 ions change but not the m/z of the precursor ion for MS2. So I guess that it is a problem in Bruker: should Bruker not calibrate the mass of the precursor ions also? Or a problem in the conversion of the .d file to the mzML file.
I tried to import the .d Bruker files in MZmine3 directly through the "Raw data methods" => "Data import" => "MS data advanced" because I was curious to see if that might solve the problem. However, I get the following error message:

And if I try importing through the "Raw data methods" => "Raw data import" => "Bruker TDF" I get the following error message:

Is there anything I can do to import the .d files?
Best,
Ingvild

I don't know if the no-precursor recalibration is intentional or not. What i can say is that this doesn't happen if the instrument is calibrated before the run. The precursors use the current instrument calibration, the online recalibration is not applied to the instrument. I think you have to talk to your instrument operator about the issue. For the current data: Either you have to deal with the huge mass shifts of the precursor ion m/z by using a higher tolerance in MZmine or the data should be reacquired.
The native bruker import is only for .tdf and .tsf raw data (check the suffix of the analysis.xyz on your .d folder). These formats are acquired on the timsTOF instruments.


how to convert html to markdown in javascript agent?

Is it possible?

Yes, if you find the javascript code that does it without requiring any additional dependencies.


[BUG] When building nuttx-apps, CI Workflow checks out the Incorrect Branch of nuttx repo

Description / Steps to reproduce the issue

When compiling the Release Branch of nuttx-apps, our CI Workflow nuttx-apps/build.yml checks out the Master Branch of nuttx repo, which is incorrect: https://github.com/apache/nuttx-apps/pull/2770#event-14876028222

the CI does not use the right branch
modified: boards/arm/mps/mps3-an547/configs/ap/defconfig
modified: boards/arm/mps/mps3-an547/configs/bl/defconfig
we do not have those configs in releases/12.7

This comes from the arm-05 log: https://github.com/apache/nuttx-apps/actions/runs/11518661640/job/32069572079#step:7:96

   Configuration/Tool: mps3-an547/bl,CONFIG_ARM_TOOLCHAIN_GNU_EABI
     Normalize mps3-an547/bl
   83d82
   < # CONFIG_NSH_DISABLE_WAIT is not set
   Saving the new configuration file
   On branch master
   Your branch is up to date with 'origin/master'.

   Changes not staged for commit:
     (use "git add <file>..." to update what will be committed)
     (use "git restore <file>..." to discard changes in working directory)
	   modified:   boards/arm/mps/mps3-an547/configs/bl/defconfig

This happens because mps3-an547:bl doesn't exist in the releases/12.7 branch. (It exists in master)

Fetch-Source Log shows that CI is indeed checking out the Master Branch of nuttx repo (instead of releases/12.7): https://github.com/apache/nuttx-apps/actions/runs/11518661640/job/32069568370#step:3:66
/usr/bin/git checkout --progress --force -B master refs/remotes/origin/master

Which might be caused by a typo in nuttx-apps/build.yml: https://github.com/apache/nuttx-apps/blob/master/.github/workflows/build.yml#L92
      - name: Checkout nuttx repo
        uses: actions/checkout@v4
        with:
          repository: apache/nuttx
          ref: ${{ steps.gittargets.outputs.os_ref }}

The workflow above says we are checking out Branch os_ref. But os_ref is undefined! It's actually named name: https://github.com/apache/nuttx-apps/blob/master/.github/workflows/build.yml#L85
  Fetch-Source:
    runs-on: ubuntu-latest
    steps:
      - name: Determine Target Branches
          ...
          echo "name=$OS_REF" >> $GITHUB_OUTPUT
          echo "app_ref=$APPS_REF" >> $GITHUB_OUTPUT

I propose to change name to os_ref:
          echo "os_ref=$OS_REF" >> $GITHUB_OUTPUT
          echo "app_ref=$APPS_REF" >> $GITHUB_OUTPUT

Tracking back to the original code: It seems plausible that there's a typo: https://github.com/apache/nuttx/pull/9289/files
          echo ::set-output name=os_ref::$OS_REF
          echo ::set-output name=apps_ref::$APPS_REF

Suspiciously became:
          echo "name=$OS_REF" >> $GITHUB_OUTPUT
          echo "app_ref=$APPS_REF" >> $GITHUB_OUTPUT

Note the apps_ref vs app_ref. I patched it to apps_ref (which needs to be backported to releases/12.7 of nuttx-apps)

https://github.com/apache/nuttx/pull/13806

In our Test Repo for nuttx-apps: Changing name to os_ref seems to work OK: https://github.com/lupyuen5/label-nuttx-apps/actions/runs/11528123257/job/32094821811#step:3:57

/usr/bin/git checkout --progress --force -B releases/12.7 refs/remotes/origin/releases/12.7

Hi @simbit18: Do you agree with my findings? Do you think it will cause issues in the NuttX Repo when we change name to os_ref? Thanks!
On which OS does this issue occur?
[OS: Linux]
What is the version of your OS?
CI Workflow
NuttX Version
master
Issue Architecture
[Arch: all]
Issue Area
[Area: Other]
Verification

[X] I have verified before submitting the report.

Update: We should never apply this fix to releases/12.7 of nuttx-apps. It will fail because the Newer CI Jobs don't exist in releases/12.7 of nuttx repo: arm64_01.dat, x86_64-01.dat, risc-v-03.dat, etc
+ /github/workspace/sources/nuttx/tools/testbuild.sh -A -N -R -S -j 4 -e '-Wno-cpp -Werror' testlist/arm64-01.dat
ERROR: No readable file exists at testlist/arm64-01.dat

https://github.com/lupyuen5/label-nuttx-apps/actions/runs/11528123257/job/32094855996#step:7:81
In Future: We should always backport the Latest CI Jobs *.dat to the releases branch. Right now things a little messy because we're cutting GitHub Runners: https://github.com/apache/nuttx/issues/14376

Hi @lupyuen  yes, I think so too that there is a typo due to this change github actions
https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
maybe after coming out of the 30/10 tunnel it would be better to create a workflow release with everything (docker, macos, msys2 and msvc)
build_dev.yml -> development
release.yml -> release
what do you think ?

Thanks @simbit18! Yep let's reorg the CI Workflow after 30 Oct. I'm keen to hear your ideas, maybe you can share an outline of the proposed workflow? Thanks :-)


Feature/fdb 96

Please limit PRs to a single change. If you want to propose removing modules please do include reasoning in your PR description.


Fluentd resources not set

Hi,
I am deploying the tigera operator but I see that resources can be set only for a predefined list of components in the Installer CRD (Node, Typha, KubeControllers)
Most of the other components doesn't have any resources and my issue is especially with fluentd-node daemonset deployed in tigera-fluentd, which can be quite hungry. From https://github.com/tigera/operator/blob/bf52ad06e4d55b7a7cf3a80bfb43e573831b275b/pkg/render/fluentd.go#L357 it seems that resources are not declared, so I would like to have a way to override them.
Current workaround is to change the daemonset resources and annotate it to avoid being reverted by the operator, but it is not very clean
Thanks

We are discussing internally possibly expanding resource request/limits to more components. Probably in a similar manner to the ComponentResources like you found on the Installation CRD.
Are you still seeing fluentd-node being "quite hungry"? I'm wondering if we need to look into why that is.

thanks, yes still seeing this from time to time so maybe worth interesting too, but anyway I think that for this kind of daemonsets is important to have the possibility to set limits to avoid impacting other workloads in case anything goes wrong


Improved config

Currently, if a user wants to set the local cache or set indices to use they must do so each time in their scripts. We should provide a configure object which will allow these settings to be 'stickied'. I like what intake has done:
https://github.com/intake/intake/blob/master/intake/config.py

This could be a way also to set a hierarchy of local caches, see #30


fix: Allow standalone instances to use guild.fetch_channel

What type of pull request is this?

[x] Non-breaking code change
[ ] Breaking code change
[ ] Documentation change/addition
[ ] Tests change

Description

If a standalone instance is logged in via await client.login(token), running await guild.fetch_channel(channel_id) will always return None due to a check to see if channel_id is in guild._channel_ids. However, this attribute is only populated if you connect to the gateway, and as such, will always fail for standalone instances.
This PR fixes this by adding an additional check to see if the gateway is started, and running an API check if it is not. This allows standalone instances to properly run guild.fetch_channel(channel_id), instead of having to rely strictly on client.fetch_channel(channel_id)
Changes

Add extra check to allow standalone instance to use guild.fetch_channel

Checklist

[x] I've formatted my code with Black
[x] I've ensured my code works on Python 3.10.x
[x] I've tested my code

Screenshots
Before:

After:

I'm 100% open to feedback on how to make this better

imo a nicer solution would be to use an asyncio event rather than a boolean. that means you could await the gateway starting up, which opens up far more use cases without losing the functionality you need.

I changed the State.gateway_started property to be an asyncio.event object, and Client.gateway_started is a boolean that wraps State.gateway_started.is_set()


Add -b option to specify builder

Seems like sphinx-autobuild is currently using the default html builder.
Sphinx has a -b option for specifying builder.
Please add the -b option to sphinx-autobuild.

It already has. Didn't see in the readme.


DolphinPlatformJavaeeBootstrap should not store a static instance

Currently DolphinPlatformJavaeeBootstrap stores a static instance of DolphinPlatformBootstrap for CDI bean creation. This is bad design and should be refactored.

resolved in #131


Update address for the Former President

@Madison-Ehlers I'd rather not have the address of a private citizen in the readme, even if that private citizen is a former president of the United States :)
Would you consider updating to the current president, or should I just close this out?

@gamagori I updated to the current president. Unfortunately I don't have the presidents credit card number, so I was unable to update that 🤣

Thanks for taking care of this!


Add a better explained example on SOLUTIONS.md

Adding the file example separately could help.

I am only waiting for the checks to merge this branch.


Put back MPS builds

(this is a follow-up and more up-to-date version of https://github.com/pytorch/vision/issues/8456)
The M1 CI jobs were broken for ~1 week (https://github.com/pytorch/vision/issues/8456) and it turns out the problem was caused by the MPS build. We deactivated the MPS builds in https://github.com/pytorch/vision/pull/8472 and the M1 jobs (all using macos-m1-stable) are now green.
We have to put back the MPS build before the release though, otherwise torchvision won't provide MPS-compatible custom ops.
In https://github.com/pytorch/vision/pull/8476 (macos-m1-stable), https://github.com/pytorch/vision/pull/8473 (macos-m1-13) and https://github.com/pytorch/vision/pull/8477 (macos-m1-14) I'm trying to add back those MPS builds, but they all fail with the same error as previously seen back in https://github.com/pytorch/vision/issues/8456:
  File "/Users/ec2-user/runner/_work/vision/vision/pytorch/vision/test/smoke_test.py", line 7, in <module>
    import torchvision
  File "/Users/ec2-user/runner/_work/vision/vision/pytorch/vision/torchvision/__init__.py", line 10, in <module>
    from torchvision import _meta_registrations, datasets, io, models, ops, transforms, utils  # usort:skip
  File "/Users/ec2-user/runner/_work/vision/vision/pytorch/vision/torchvision/_meta_registrations.py", line 164, in <module>
    def meta_nms(dets, scores, iou_threshold):
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ci/lib/python3.10/site-packages/torch/library.py", line 653, in register
    use_lib._register_fake(op_name, func, _stacklevel=stacklevel + 1)
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ci/lib/python3.10/site-packages/torch/library.py", line 153, in _register_fake
    handle = entry.abstract_impl.register(func_to_register, source)
  File "/opt/homebrew/Caskroom/miniconda/base/envs/ci/lib/python3.10/site-packages/torch/_library/abstract_impl.py", line 30, in register
    if torch._C._dispatch_has_kernel_for_dispatch_key(self.qualname, "Meta"):
RuntimeError: operator torchvision::nms does not exist

CC @malfet @huydhn

From https://github.com/pytorch/vision/issues/8456#issuecomment-2153599835

Though it fails on my Mac even with MPS disabled, so I have no idea what is going on...

@malfet are the tests failing on your Mac with the same error message on main?  :thinking:

I could reproduce the issue locally and can confirm that disable MPS makes import torchvision work again.  However, I think the recent upgrade to MacOS 14 might be a red herring because using macos-m1-13 still fails in the same way, i.e. https://github.com/pytorch/vision/actions/runs/9425764020/job/25967868583?pr=8485

This issue seems to appear in PyTorch commit between https://hud.pytorch.org/hud/pytorch/pytorch/d66f12674cfe0151a86dc10b8de216f83bf42e6e (failed) and https://hud.pytorch.org/hud/pytorch/pytorch/0ff2f8b52248323bbe25108b64e706c43390cb72 (success).  I need to narrow this range down a bit.

I think I have found the change responsible for this https://github.com/pytorch/pytorch/pull/127265.  I have reverted it so that we can test it out in the next PyTorch nightly build.

Testing in https://github.com/pytorch/vision/pull/8485, but pending the revert https://hud.pytorch.org/hud/pytorch/pytorch/75b0720a97ac5d82e8a7a1a6ae7c5f7a87d7183d to get into the next PyTorch nightly build.

https://github.com/pytorch/vision/pull/8485 worked, thanks a ton @huydhn !


fix getraster ambiguity

Fixes #11

Codecov Report

Merging #14 (21776a4) into master (11bdb76) will increase coverage by 4.30%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #14      +/-   ##
==========================================
+ Coverage   72.58%   76.89%   +4.30%
==========================================
  Files          14       14
  Lines         259      251       -8
==========================================
+ Hits          188      193       +5
+ Misses         71       58      -13

Impacted Files
Coverage Δ

src/shared.jl
68.18% <ø> (+16.00%)
:arrow_up:

src/worldclim/climate.jl
100.00% <100.00%> (+12.50%)
:arrow_up:

src/geodata.jl
71.73% <0.00%> (+4.39%)
:arrow_up:

src/awap/awap.jl
100.00% <0.00%> (+11.53%)
:arrow_up:

Continue to review full report at Codecov.

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

Codecov Report

Merging #14 (21776a4) into master (11bdb76) will increase coverage by 4.30%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #14      +/-   ##
==========================================
+ Coverage   72.58%   76.89%   +4.30%
==========================================
  Files          14       14
  Lines         259      251       -8
==========================================
+ Hits          188      193       +5
+ Misses         71       58      -13

Impacted Files
Coverage Δ

src/shared.jl
68.18% <ø> (+16.00%)
:arrow_up:

src/worldclim/climate.jl
100.00% <100.00%> (+12.50%)
:arrow_up:

src/geodata.jl
71.73% <0.00%> (+4.39%)
:arrow_up:

src/awap/awap.jl
100.00% <0.00%> (+11.53%)
:arrow_up:

Continue to review full report at Codecov.

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


Create ip-formation.txt

https://www.ecole-ipssi.com/

@Furansujin Please provide us withan URL of a page or another proof (.pdf or a screenshot are OK) showing that the university recognizes the domain which you are submitting as an official email domain for the students. Also, please let us know if email addresses in  @ip-formation.com domain are for students and teachers, not a broad number of employees who are not involved into teaching and learning.

url School : https://www.ecole-ipssi.com/
screenshot  portal office account school :

seconde url school : http://ip-formation.com
is domain "ip-formation" of email

@Furansujin Pull request merged. Thank you for the update!


[$500] Footer for anonymous user sign in modal distorted

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

Action Performed:

Log out of your test account
Go to https://new.expensify.com/r/7277649907280010
See the "Welcome to #public-rooooom!"
Click on the Sign In button
Scroll down to the bottom of the page and observe the footer

Expected Result:
It should not get distorted and show the list in vertical order
Actual Result:
It gets distorted
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[x] Android / Chrome
[ ] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.73-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/56406036-e86a-4f0e-bead-6b77815e91e1
https://github.com/Expensify/App/assets/43996225/2bace89e-8123-451d-ac09-da051bb91e22
Expensify/Expensify Issue URL:
Issue reported by: @Pujan92
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1695037709793059
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0173528f51d8bbad2d
Upwork Job ID:<PHONE_NUMBER>334554112
Last Price Increase: 2023-09-22

Proposal by @pujan92
Please re-state the problem that we are trying to solve in this issue.
Footer for the sign in modal is distorted
What is the root cause of that problem?
For the sign in page content inside the modal we are not passing the prop for the Footer to inform about getting it open in the modal/smaller width.
https://github.com/Expensify/App/blob/023337624273b1a9e7fa22b43867d2aeac755850/src/pages/signin/SignInPageLayout/index.js#L172
What changes do you think we should make in order to solve the problem?
We need to pass prop isSmallScreenWidth explicitly as we know it is going to open in the small screen or right-side modal.
https://github.com/Expensify/App/blob/023337624273b1a9e7fa22b43867d2aeac755850/src/pages/signin/SignInPageLayout/index.js#L172
What alternative solutions did you explore? (Optional)
Pass prop isInModal to the Footer component and use that value to decide whether to show vertically or not. The way we are doing in the SignInPageLayout component here.
https://github.com/Expensify/App/blob/a211b6dc7628f2b1412d0fc24d4bf9ed26d6ab21/src/pages/signin/SignInPageLayout/index.js#L65
https://github.com/Expensify/App/blob/a211b6dc7628f2b1412d0fc24d4bf9ed26d6ab21/src/pages/signin/SignInPageLayout/Footer.js#L153
const isVertical = props.isSmallScreenWidth || props.isInModal;

Proposal
Please re-state the problem that we are trying to solve in this issue.
The footer in Sign In modal gets distorted
What is the root cause of that problem?
Incorrect width set on the footerColumn elements.
What changes do you think we should make in order to solve the problem?

Set the correct width on the footer column element, currently, it checks if the device's screen width is small and then checks if the device's width is medium, if it is it sets the width to 50% of the parent and if not to 25%. This causes the footer to look distorted on the large screens.

Thanks for the proposal @Pujan92
@Pujan92's proposal looks good to me. We can pass shouldShowSmallScreen from SignInPageLayout and use it in Footer.
🎀 👀 🎀 C+ reviewed

we know it is going to open in the small screen or right-side modal

Sorry, how do we know that?

Bump, the given proposal is unfortunately not clear to me.

we know it is going to open in the small screen or right-side modal

Sorry, how do we know that?

Bcoz we have that condition for shouldShowSmallScreen in the SignInPageLayout and based on that we render the layout differently.
https://github.com/Expensify/App/blob/e30dce19672085a2c8b34576d2fe33ebd8aee249/src/pages/signin/SignInPageLayout/index.js#L66

@sobitneupane PR is ready for review!

Ready for payment, is there a regression test for this @Pujan92 @sobitneupane?
Once we have a regression test payment will be:
Bug reporter: $50 @Pujan92 (in Upwork)
Contributor: $500 @Pujan92 (in Upwork)
Contributor+: $500 @sobitneupane (paid through NewExpensify)
Speed Bonus: N - based on https://github.com/Expensify/App/issues/28025#issuecomment-1760627060
Upwork job - https://www.upwork.com/jobs/~0173528f51d8bbad2d

@Christinadobrzyn can you plz reconsider the summary for the urgency bonus as the PR was approved by C+ in 2 days, but seems @roryabraham was OOO which delayed the merging.

@Pujan92 assigned on Oct 4th
PR created less than 24hrs later on Oct 5th
PR approved on Oct 6th, less than 48 hours after assignment

So yes, I agree the urgency bonus should apply here

Added a bonus to the above payment breakdown and also added the bonus to @Pujan92 through Upwork.

Completed my section of the BZ checklist

Should there be a regression test?

There absolutely should be regression tests for the flow where you go to a public room and login from there. Not sure we need anything specific about the footer layout being borked

Thanks Rory! @Pujan92 or @sobitneupane can you please provide a regression test for this based on -https://github.com/Expensify/App/issues/28025#issuecomment-1782088756 Thanks!

Regression Test proposal

Log out from expensify if you are already logged in.
Go to a public room.
Click on the "Sign In" button
Scroll down to the bottom of the page and observe the footer
Verify that the footer is not distorted.

Do we agree 👍 or 👎

https://github.com/Expensify/App/issues/28025#issuecomment-1776101705
Requested payment on newDot.

Thanks! Created Regression test - https://github.com/Expensify/Expensify/issues/331185
Paid out based on https://github.com/Expensify/App/issues/28025#issuecomment-1776101705
Closing this as complete

$750 payment approved based on this comment.


/usr/bin/env: 'node\r': No such file or directory

pnpm version: 0.42.3
Code to reproduce the issue:
docker run -it nodesource/xenial:6.5.0 bash
$ npm i -g<EMAIL_ADDRESS>$ npm i

Expected behavior:
No error.
Actual behavior:
/usr/bin/env: 'node\r': No such file or directory
The command '/bin/sh -c pnpm install' returned a non-zero code: 127

Additional information:

node -v prints: v6.5.0
Windows, OS X, or Linux?: Docker Linux and macOS.

Seems the issue is that there is a Windows linefeed at the end of the hash bang in the cli entry point.
vim /usr/bin/pnpm
#!/usr/bin/env node^M

"use strict";^M

After fixing with sed -i 's/\r//g' /usr/bin/pnpm I am getting a message saying loud-rejection is missing.

@vjpr did you have any problems with installing pnpm? it seems like your pnpm lack loud-rejection, though it is included in dependencies https://github.com/rstacruz/pnpm/blob/master/package.json#L40

linefeed incompatibility is still a problem though

OMG, is this because I have published the 0.42.3 from Windows? insane... I can republish later today from linux.

Unbelievable that this is still an issue in npm https://github.com/npm/npm/issues/12371

Re: loud-rejection error. My sed -i 's/\r//g' /usr/bin/pnpm command was modifying in-place and removing the symlink.

I republished from Linux so the line ending issue should be fixed in v0.42.4


Social Recovery

Implement social recovery feature using Shamir's secret.
Users should be able to recover their vault in a totally decentralised and trustless manner by creating shards of their vault and distributing it among their trusted peers.
Shamir's secret enables the user to create x shards of their encrypted vault and distribute it among their trusted contacts. A certain threshold can be set which is required to retrieve the complete vault string.

Vault documentation : https://getsafle.notion.site/Vault-9e665619189d41878e86bb0a759e13ff


[ZSeries and Zymatic] Add Synced Recipe Feature

For the Z series if you sent it more than 20 recipes there are two main problems:

any recipes after the 20th (19th index or array) are not visible for selection by the user

at some point (30-something for me, 20-something for someone else) the Z appears to run out of memory (or trips a safety check) and fails hard with a server error.

To support users having more than 20 recipes we will need to port a similar feature to what Picobrew had to mark "synced recipes" for display to your attached Z units.
Not sure of the limitations of the Zymatic recipe display, but those also had "synced recipes" from memory (don't have the machine) so would likely need to do similarly for the Zymatic.

Zymatic similarly will only display first 8 or some amount like that.

![Screen Shot 2022-03-09 at 9 42 36 PM](https://user-images.githubusercontent.com/2158627/157577984-41adb0d7-63a4-4dcb-bedc-d034e144f25d.png)
Went ahead and built for each recipe type (pico, zymatic, zseries). There isn't anything recipe or device specific here... Also for now not putting in a limit, but we should probably limit to only 10 active recipes and at bootup auto archive anything beyond 10.

Pull request is made to bring this feature - https://github.com/chiefwigms/picobrew_pico/pull/333

This issue has been resolved openly by the contributors of this project. Solution works for all device types to make your brew day even easier (just sync the one recipe you brew 🤔 or only the 5-8 base recipes you ever use ... Your choice!).
Enjoy 🍻


extend OUTER to all integer and real kinds

The repository already has OUTER function for calculating outer product of two vectors of real type.
So I kept the original implementation and used fypp to make it support both integer and real types.

Great! Thank you for your work@St-Maxwell.  The outer function is more like an operator, can we introduce the .outer. operator at the same time as another interface of this outer function?
interface operator(.outer.)
    procedure :: outer_...
    ...
end interface

Generally I prefer a functional form of calling a procedure. But I don't mind introducing an operator since it doesn't request much effort.


[bootstrap version] Range is not disabled on viewer- readonly

This happened to bootstrap version only. The range slider is not locked. I will try to fix it by tomorrow when I have time

The fix is quite easy . Open mw-form-question.html , add
ng-disabled="ctrl.readOnly" . like this :

        </select>
    </div>


Updated quotes of powershell script

Documentation uses in the powershell scripts
“ (U+201C) LEFT DOUBLE QUOTATION MARK
” (U+201D) RIGHT DOUBLE QUOTATION MARK.
I'm proposing (U+0022) instead, as the previous quotes might be a copy and paste from Microsoft Word.

Hi @MikeRayMSFT, would you review the proposed changes? Thanks.

#sign-off


Allow dynamic resizing of person

During presentation, if #61 or #62 was implemented, it could be useful to allow the person to be resized and positioned in a corner to give more space to the presentation (or screen).

This can now be done via #98


Anyone using ftp-srv with MacOS

I use this great project to run a server to test my library https://github.com/simonh1000/ftp-deploy
I've recently switched to mac and I can get the server to start and register a login, but it seems to do no more than that - no greeting is received by my client (filezilla) nor any directory listing. I'm looking for ideas on fixing this, and after reading lots of articles that MacOS rather nixed ftp with High Sierra

const homeDir =
    require("os").homedir() + "/code/sync/nodejs/ftp-deploy/test/remote/";

const FtpSrv = require("ftp-srv");

const options = {
    greeting: ["test ftp server", homeDir],
    anonymous: true
};

// Using non-standard port
const port = 2121;
const ftpServer = new FtpSrv("ftp://<IP_ADDRESS>:" + port, options);

ftpServer.on('login', (data, resolve, reject) => {
    console.log("[login] Connection by", data);
    console.log("[login] Setting home dir to:", homeDir);
    resolve({ root: homeDir });
});

ftpServer
    .listen()
    .then(() => {
        console.log(`Serving ${homeDir} on port: ${port}`);
    })
    .catch(err => {
        console.log("[error]", err);
    });

This is the error I currently get
  username: 'anonymous',
  password: '@anonymous' }
[login] Setting home dir to: /code/sync/nodejs/ftp-deploy/test/remote/
{"name":"ftp-srv","hostname":"xxxxx.home","pid":91037,"id":"ebcbfc41-1795-4185-80a8-aed84c5f066c","directive":"LIST","level":50,"err":{"message":"operation timed out","name":"TimeoutError","stack":"TimeoutError: operation timed out\n    at afterTimeout (/code/sync/nodejs/ftp-deploy/node_modules/bluebird/js/release/timers.js:46:19)\n    at Timeout.timeoutTimeout [as _onTimeout] /code/sync/nodejs/ftp-deploy/node_modules/bluebird/js/release/timers.js:76:13)\n    at ontimeout (timers.js:425:11)\n    at tryOnTimeout (timers.js:289:5)\n    at listOnTimeout (timers.js:252:5)\n    at Timer.processTimers (timers.js:212:10)"},"msg":"operation timed out","time":"2018-12-03T20:54:19.594Z","v":0}

Hi simonh1000,
I reproduced your same issue with v2 and 3.0.4 version when the option "pasv_url": "<IP_ADDRESS>" is missing.
If you add that property, all works fine.
My tests were performed on Mac 10.13.6 using FileZilla as ftp client.

@lucasantoiemma Is correct, this is solved by specifying the pasv_url.
This is my mistake, I can have this fixed momentaraly. The docs specify the default for pasv_url is <IP_ADDRESS>, but the code does not reflect this.
The reason for this is that when an FTP client requests a passive connection using the PASV command, the server sends the hostname for the client to connect to in it's response. ftp-srv gets this hostname with either pasv_url or the hostname of the url. But, if <IP_ADDRESS> is specified as the url (either pasv_url or url) it will use a service to resolve this into the external IP of the server. If the machine isn't set up for external access using this IP it won't work.
I don't think automatically resolving the hostname is a correct way to do this anymore. <IP_ADDRESS> is a valid hostname to use. Maybe an option resolve_hostname: false can bypass this without causing backwards compatibility issues.
But yes, @simonh1000, add a valid pasv_url to your options will solve this.

This hasn't fixed my issues. I was on 2.* and continued not to get any file data back after logging in, even after adding pasv_url": "<IP_ADDRESS>.
So I tried updating to 3.0.4 and get
{"name":"ftp-srv","hostname":"****","pid":17217,"level":50,"err":{"message":"listen EACCES <IP_ADDRESS>:21","name":"Error","stack":"Error: listen EACCES <IP_ADDRESS>:21\n    at Server.setupListenHandle [as _listen2] (net.js:1269:19)\n    at listenInCluster (net.js:1334:12)\n    at doListen (net.js:1460:7)\n    at process._tickCallback (internal/process/next_tick.js:63:19)","code":"EACCES"},"msg":"[Event] error","time":"2018-12-05T08:13:25.789Z","v":0}
[error] { Error: listen EACCES <IP_ADDRESS>:21
    at Server.setupListenHandle [as _listen2] (net.js:1269:19)
    at listenInCluster (net.js:1334:12)
    at doListen (net.js:1460:7)
    at process._tickCallback (internal/process/next_tick.js:63:19)
  errno: 'EACCES',
  code: 'EACCES',
  syscall: 'listen',
  address: '<IP_ADDRESS>',
  port: 21 }

Note that my code specifies a non-standard port, specifically to get around EACCES issues with port 21, but this seems to be ignored?

@simonh1000 3.0.0 changed how options are specified, that's why it was a major change following semver.
The constructor now only takes the one options object. You would specify the url in that object.

Thanks @trs - should have spotted that. It looks as though it is working now as expected. Thanks so much for the help

Glad you got it working! Sorry for the confusion between version.


Use non-zipped assets for e2e tests

Is there a related GitHub Issue?

This was originally part of #1146, but the meat of that ended up being done in a different PR by @kieron-dev.
What is this change about?

Rather than committing zip files into our repo, we now commit the contents of those zips and zip them up when the e2e tests run. This allows us to more easily track changes to the test apps, and also to explicitly track the source of these apps (via vendir) where appropriate.
Does this PR introduce a breaking change?
No
Acceptance Steps

The e2e tests should continue to pass
Tag your pair, your PM, and/or team

@kieron-dev
Things to remember

@matt-royal The zip approach looks good to me


Will this run on a RPi 3B+?

If BLE is enabled, will this "just" work?
I have a standard RPi 3B+ running Node-red and today I use a ESP32 BLE device to "snatch" the information from my Xiaomi devices.
So my question, will this run "out of the box"?

Yes, it will
In my case, it works out of the box on RPi 4

Yes, it will
In my case, it works out of the box on RPi 4


Debugger not working

Debugger not working, just run and after a few seconds stops

only 0.0.7 working, 0.0.8 and 0.0.9 not working

Thanks, i fix it in 0.0.12 :)


wasserstein distance return type float

PR Checklist

[x] Referenced issue is linked
[ ] If you've fixed a bug or added code that should be tested, add tests!

Description of changes
Return type of Wasserstein Distance is now float

Additional context
Fixes issue #385.
The mypy check for another not related distance metric is still failling, as before

@eroell
Thanks for the PR!
@Zethson
I've added a test that catches similar output type errors for future distances as well.
Also solved the mypy warning you were reporting, reason was a type hint you suggested (was too general unfortunately, so I had to reverse that change). Now passes for me.

<3


Change subscription link to ButtonDown.

Update some links and language in the Readme to reflect status as a Kubernetes subproject.
Signed-off-by: Josh Berkus<EMAIL_ADDRESS>

/lgtm


Inclusive linting workflow is not being ran on new PRs

This is is never being ran 😕

Originally posted by @prince-chrismc in https://github.com/pyrsia/pyrsia/issues/187#issuecomment-1049188529

@prince-chrismc per your direction we moved the inclusive naming into the Lint Workflow.  The woke workflow is no longer used.  GitHub does not have a way to delete old workflows at this time.


MRG: Warn if head size is too large

Maybe could have saved @agramfort some pain. Better late than never I guess.

CIs are happy, ready for review/merge from my end.

thanks heaps @Eric89GXL
cc @jmontoyam


Add captcha to online demo

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Summary 💡
From https://github.com/mui/mui-toolpad/issues/592
We may want to have a captcha in the demo, to be solved before users can create a new application.
Examples 🌈
Possible solutions:

https://www.google.com/recaptcha/about/ ?

(I'm not very familiar with captcha solutions)
Motivation 🔦
Reduce bot traffic in demo, or application spam.

I've used https://www.hcaptcha.com/ before, did the job well


FaceMesh solution in Python: How to set virtual camera parameters?

Please make sure that this is a solution issue.
System information (Please provide as much relevant information as possible)

Have I written custom code (as opposed to using a stock example script provided in Mediapipe): Using FaceMesh example with webcam capture for now
OS Platform and Distribution (e.g., Linux Ubuntu 16.04, Android 11, iOS 14.4): Windows, Python 3.8
MediaPipe version: 0.8.8
Bazel version: N/A
Solution (e.g. FaceMesh, Pose, Holistic): FaceMesh
Programming Language and version ( e.g. C++, Python, Java): Python 3.8

Describe the expected behavior:
N/A
Standalone code you may have used to try to get what you need :
N/A
If there is a problem, provide a reproducible test case that is the bare minimum necessary to generate the problem. If possible, please share a link to Colab/repo link /any notebook:
Other info / Complete Logs :
Include any logs or source code that would be helpful to
diagnose the problem. If including tracebacks, please include the full
traceback. Large logs and files should be attached:
The FaceMesh documentation here (https://google.github.io/mediapipe/solutions/face_mesh.html) suggests that virtual camera parameters can be set (e.g., camera intrinsics) but I don't see an API for this in the FaceMesh Python module. How is it currently estimating depth without this information and can the results be improved by supplying intrinsic parameters?

Hi @trzy , did you find out how they are doing it? or were you able to measure physical measurements of facial features?

Hello @trzy,
We are upgrading the MediaPipe Legacy Solutions to new MediaPipe solutions However, the libraries, documentation, and source code for all the MediaPipe Legacy Solutions will continue to be available in our GitHub repository and through library distribution services, such as Maven and NPM.
You can continue to use those legacy solutions in your applications if you choose. Though, we would request you to check new MediaPipe solutions which can help you more easily build and customize ML solutions for your applications. These new solutions will provide a superset of capabilities available in the legacy solutions.