[ITensors] [BUG] nnz methods duplicated with SparseArrays

Description of bug
I believe that the nnz function for ITensors.jl should extend the one from SparseArrays. But this doesn't happen.
Minimal code demonstrating the bug or unexpected behavior
using ITensors, SparseArrays
A = sprand(10, 10, 0.5)
nnz(A)

This gives
julia> nnz(A)
ERROR: UndefVarError: `nnz` not defined in `Main`
Suggestion: check for spelling errors or missing imports.
Hint: a global variable of this name also exists in SparseArrays.
Hint: a global variable of this name also exists in NDTensors.
Hint: a global variable of this name also exists in ITensors.

Looking at the methods, it seems like this is probably an oversight:

julia> methods(ITensors.nnz)
# 5 methods for generic function "nnz" from NDTensors:
 [1] nnz(T::ITensor)
     @ ITensors ~/.julia/packages/ITensors/GkEpm/src/itensor.jl:855
 [2] nnz(::NDTensors.EmptyStorage)
     @ ~/.julia/packages/NDTensors/OehsJ/src/empty/empty.jl:69
 [3] nnz(bofs::Dictionaries.Dictionary{Block{N}, Int64} where N, inds)
     @ ~/.julia/packages/NDTensors/OehsJ/src/blocksparse/blockoffsets.jl:60
 [4] nnz(T::NDTensors.Tensor)
     @ ~/.julia/packages/NDTensors/OehsJ/src/tensor/tensor.jl:310
 [5] nnz(S::NDTensors.TensorStorage)
     @ ~/.julia/packages/NDTensors/OehsJ/src/tensorstorage/tensorstorage.jl:101

julia> methods(SparseArrays.nnz)
# 15 methods for generic function "nnz" from SparseArrays:
  [1] nnz(S::LinearAlgebra.LowerTriangular{<:Any, <:SparseArrays.AbstractSparseMatrixCSC})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsematrix.jl:222
  [2] nnz(x::SubArray{Tv, 1, <:AbstractSparseVector{Tv, Ti}, Tuple{Base.Slice{Base.OneTo{Int64}}}, false} where {Tv, Ti})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsevector.jl:119
  [3] nnz(x::SubArray{Tv, 1, <:AbstractSparseVector{Tv, Ti}, <:Tuple{AbstractUnitRange}, false} where {Tv, Ti})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsevector.jl:120
  [4] nnz(x::SubArray{Tv, 1, <:SparseArrays.AbstractSparseMatrixCSC{Tv, Ti}, Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, false} where {Tv, Ti})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsevector.jl:115
  [5] nnz(S::SubArray{Tv, 2, <:SparseArrays.AbstractSparseMatrixCSC{Tv, Ti}, Tuple{Base.Slice{Base.OneTo{Int64}}, I}} where {Tv, Ti, I<:(AbstractVector{<:Integer})})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsematrix.jl:223
  [6] nnz(lu::SparseArrays.UMFPACK.UmfpackLU)
     @ SparseArrays.UMFPACK /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/solvers/umfpack.jl:938
  [7] nnz(A::SparseArrays.CHOLMOD.Sparse{<:Union{Float32, Float64, ComplexF64, ComplexF32}, Int64})
     @ SparseArrays.CHOLMOD /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/solvers/cholmod.jl:601
  [8] nnz(A::SparseArrays.CHOLMOD.Sparse{<:Union{Float32, Float64, ComplexF64, ComplexF32}, Int32})
     @ SparseArrays.CHOLMOD /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/solvers/cholmod.jl:601
  [9] nnz(x::SparseArrays.AbstractCompressedVector)
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsevector.jl:114
 [10] nnz(S::SparseArrays.AbstractSparseMatrixCSC)
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsematrix.jl:218
 [11] nnz(S::Base.ReshapedArray{<:Any, 1, <:SparseArrays.AbstractSparseMatrixCSC})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsematrix.jl:219
 [12] nnz(S::LinearAlgebra.UpperTriangular{<:Any, <:SparseArrays.AbstractSparseMatrixCSC})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsematrix.jl:221
 [13] nnz(F::SparseArrays.CHOLMOD.Factor)
     @ SparseArrays.CHOLMOD /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/solvers/cholmod.jl:1268
 [14] nnz(a::NDTensors.SparseArrayInterface.AbstractSparseArray)
     @ NDTensors.SparseArrayInterface ~/.julia/packages/NDTensors/OehsJ/src/lib/SparseArrayInterface/src/abstractsparsearray/SparseArrayInterfaceSparseArraysExt.jl:6
 [15] nnz(S::Union{LinearAlgebra.Adjoint{var"#s15", var"#s14"}, LinearAlgebra.Transpose{var"#s15", var"#s14"}} where {var"#s15", var"#s14"<:SparseArrays.AbstractSparseMatrixCSC})
     @ /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/SparseArrays/src/sparsematrix.jl:220

Version information

Output from versioninfo():

julia> versioninfo()
Julia Version 1.11.0
Commit 501a4f25c2b (2024-10-07 11:40 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (x86_64-apple-darwin22.4.0)
  CPU: 16 × Intel(R) Xeon(R) W-2140B CPU @ 3.20GHz
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, skylake-avx512)
Threads: 1 default, 0 interactive, 1 GC (on 16 virtual cores)

Output from using Pkg; Pkg.status("ITensors"):

julia> using Pkg; Pkg.status("ITensors")
⌅ [9136182c] ITensors v0.7.1

Thanks for pointing that out, that sounds right. We were changing over the style of our code to use explicit imports, probably this got messed up during that process.

There's also permute which exists in SparseArrays too. But I'm not sure if you deliberately chose not extend that one as SparseArrays.permute does a row/column permutation whereas your permute reorders the indices.

There's also permute which exists in SparseArrays too. But I'm not sure if you deliberately chose not extend that one as SparseArrays.permute does a row/column permutation whereas your permute reorders the indices.

Thanks for the heads up about that. I feel less comfortable overloading SparseArrays.permute since as you identified ITensors.permute permutes/aligns the dimensions/indices, so they are pretty different concepts. Additionally, both are bad names for their respective operations, I don't understand why SparseArrays.permute(A, [4, 3, 2, 1], [1, 2, 3, 4]) even exists as an API since it should be the same as A[[4, 3, 2, 1], [1, 2, 3, 4]]. Additionally, ITensors.permute is a bad name since the input isn't a permutation, and we plan to rename it to something like align or aligndims, inspired by the existing/proposed APIs in NamedDims.jl, NamedPlus.jl, and PyTorch.
So in that case, I would recommend being explicit and qualifying the names with the modules, i.e. use ITensors.permute or SparseArrays.permute as needed (see https://docs.julialang.org/en/v1/manual/modules/#Handling-name-conflicts, https://github.com/ericphanson/ExplicitImports.jl).

Thanks!!


Support createSchema for MSSQL

Environment
Knex version: all
Database + version: MS SQL (all)
OS: (all)
Select applicable template from below.
MS SQL: @smorey2
Feature discussion / request

Explain what is your use case

MS SQL Supports Schemata almost the same way as Postgres (they are after all cousins). createSchema should work on both MSSQL. The implementation is nearly identical to Postgres's.

Explain what kind of feature would support this

This is a matter of adding support in MSSQL for a feature that works in Postgres and then altering the check in compiler.js for 'PGOnly' to support both PG and MSSQL.

Give some API proposal, how the feature should work

API is already implemented with a thrown error. This should just implement the missing functionality.

Any news on this? A multi database support for createSchema (+documentation) will be really good to have and not only a partial postgres hidden implementation


Exclude Unnecessary Files from Code Climate

Exclude non-code oriented files from Code Climate
Code Climate

Coveralls is now replacing Code Climate making this change unnecessary


Suppress this warning for exceptions in portable class libraries

As serialization doesn't seem to be available for Portable Class Libraries, I guess it is also OK to suppress this warning for exceptions in these libraries when the other three constructors are implemented.

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

ID: a55e7ba0-f8c0-68fb-d2db-c8b45d60c4ad
Version Independent ID: e21c9a8e-faf0-e484-f8b0-f8e991b1e601
Content: CA1032: Implement standard exception constructors - Visual Studio
Content Source: docs/code-quality/ca1032-implement-standard-exception-constructors.md
Service: unspecified
GitHub Login: @gewarren
Microsoft Alias: gewarren

@S-List were you seeing this warning from Roslyn-based FxCop analyzers, or the legacy FxCop?


Update Custom Callback Docs

What does this PR do?

Fixes #17149
@awaelchli

Before submitting

Was this discussed/agreed via a GitHub issue? (not for typos and docs)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
Did you make sure to update the documentation with your changes? (if necessary)
Did you write any new necessary tests? (not for typos and docs)
[ ] Did you verify new and existing tests pass locally with your changes?
Did you list all the breaking changes introduced by this pull request?
Did you update the CHANGELOG? (not for typos, docs, test updates, or minor internal changes/refactors)

PR review
Anyone in the community is welcome to review the PR.
Before you start reviewing, make sure you have read the review guidelines. In short, see the following bullet-list:

Reviewer checklist

[ ] Is this pull request ready for review? (if not, please submit in draft mode)
[ ] Check that all items from Before submitting are resolved
[ ] Make sure the title is self-explanatory and the description concisely explains the PR
[ ] Add labels and milestones (and optionally projects) to the PR so it can be classified

There is a problem building docs, locally it is the problem raised in #16158


[BUG] Typed bindings is not working as expected.

Is there an existing issue for this?

[X] I have searched the existing issues

Did you read the "Reporting a bug" section on Contributing file?

[X] I have read the "Reporting a bug" section on Contributing file: https://github.com/CommunityToolkit/Maui.Markup/blob/main/CONTRIBUTING.md#reporting-a-bug

Current Behavior
Typed binding breaks the working behavior of the controls, whereas classic binding works in the way it is designed.
Expected Behavior
Like how it works in classic binding, only the approach changes with improved type safety.
Steps To Reproduce

Clone the repository
Run the sample app
It hosts two controls on the Main page of the app, both are pickers, one with typed binding and the other with classic binding
Both are bound to the same Index property, which means a change in one picker should reflect in the other
Now change the value in the type picker and no response in the classic picker (the issue)
Then change the value in the classic picker, there is a change in the type picker (actual behavior)

Link to public reproduction project repository
https://github.com/egvijayanand/markup-issue-272
Environment
- .NET MAUI C# Markup CommunityToolkit: v4.0.0
- OS: Windows 11 v10.0.22631.2715
- .NET MAUI: v8.0.3

Anything else?
No response

Kindly wait for a few moments, will upload the sample app. Was waiting for the issue id.

Here's the GitHub repository with sample repo
Kindly let me know if I missed anything, as a last measure even tried using Two-way binding, but no change in the output.
It's not only to Picker as have tried with another sample that hosts a variety of controls, nothing is working after updating to Typed bindings.

Hey Vijay!
It looks like you've only implemented One-Way binding. You've bound the getter of Picker.ItemsSourceProperty to read MainViewModel.Index, but you haven't told the binding how to set the value when it changes.
You just need to add this as the setter for your Typed Binding:
static (MainViewModel vm, int index) => vm.Index = index

One-Way Binding (Read-Only)
 new Picker().Bind(Picker.ItemsSourceProperty, static (MainViewModel vm) => vm.Numbers)
                                .Bind(Picker.SelectedIndexProperty,
                                        static (MainViewModel vm) => vm.Index,
                                        mode: BindingMode.TwoWay),

Two-Way Binding (Read-Write)
 new Picker().Bind(Picker.ItemsSourceProperty, static (MainViewModel vm) => vm.Numbers)
                                .Bind(Picker.SelectedIndexProperty,
                                        static (MainViewModel vm) => vm.Index,
                                        static (MainViewModel vm, int index) => vm.Index = index,
                                        mode: BindingMode.TwoWay),

I'd love your help updating our docs to make this more clear!
Or point me to whatever resource where you were learning Typed Bindings and we'll see if we can update that 💯

I understand @brminnick, may be an understanding gap. Thanks.
But definitely feel it's an overhead, as most of the time we work with two-way data-binding and it writes back to the same property from where the read happens.
Is there a way to automate things so that we need to write the explicit setter only if there's logic involved?

But definitely feel it's an overhead, as most of the time we work with two-way data-binding and it writes back to the same property from where the read happens.

Yup - this is the biggest difference between the previous way of declaring bindings and Typed Bindings.

Is there a way to automate things so that we need to write the explicit setter only if there's logic involved?

It may be possible. It'd require a lot of forethought and unit testing to make sure we don't break any default behavior, though; I'm not sure if the TypedBinding class is meant to handle that scenario.
If you want to try it out feel free to submit a New Feature Proposal.

It may be possible. It'd require a lot of forethought and unit testing to make sure we don't break any default behavior, though; I'm not sure if the TypedBinding class is meant to handle that scenario.

Not fully sure, but seems possible. Let me try with a sample and get back on this.

Awesome! Yea, we'll want to test the new implementation against one-way bindings, two-way bindings, one-way-to-source bindings and one-time bindings.
There's also a DefaultBindingMode for every BindableObject, so we'll want to test it against BindableObjects that each have a different  DefaultBindingMode.
https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-8.0

Every .NET Multi-platform App UI (.NET MAUI) bindable property has a default binding mode that is set when the bindable property is created, and which is available from the DefaultBindingMode property of the BindableProperty object.

There's also a DefaultBindingMode for every BindableObject, so we'll want to test it against BindableObjects that each have a different DefaultBindingMode.

I'm a big fan of DefaultBinding (both property and mode). Last time when TypedBinding was in prototype, I asked for the possibility of having this in the context of typed too. Like Text property being the default for Label/Entry and so on and those are two-way too.
Let me check the implementation to validate the possibility.

SelectedIndex is default and two-way, that's why I didn't check it in deep. Thought mapping itself is good enough to do a two-way binding and that's the reason tried to set the binding mode to two-way explicitly.

Looks like, have cracked it.
I've already tried this. But just missed a single change while parsing the Func expression that made to hold that for so long.
Instead of adding a generic parameter, have assumed the return value of the Func expression as an object. Now have included that one.
This will work for default properties too :-)
Will add the extension methods to the same sample, publish a newer version, and will give an update.

Have pushed the updated version. Have suffixed the Bind methods with v2 as the parameter types clash with those from the package.
The method that parses the Property name from the LINQ expression definitely requires refactoring as it was written years ago.
@brminnick  Let me know your thoughts on this.

No way! That was quick!!
Where can I find the code?

Same repo. Just pull the latest version.
Regards,
Vijay Anand E G

From: Brandon Minnick @.>
Sent: Wednesday, November 29, 2023 10:24:19 AM
To: CommunityToolkit/Maui.Markup @.>
Cc: Vijay Anand E G @.>; Author @.>
Subject: Re: [CommunityToolkit/Maui.Markup] [BUG] Typed bindings is not working as expected. (Issue #272)
No way! That was quick!!
Where can I find the code?
—
Reply to this email directly, view it on GitHubhttps://github.com/CommunityToolkit/Maui.Markup/issues/272#issuecomment-1831216044, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ATRGWDB5OJEY5D64HFNWBRTYG25XXAVCNFSM6AAAAAA76SNMJ2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMZRGIYTMMBUGQ.
You are receiving this because you authored the thread.Message ID: @.***>

Further discussion here - #343


sync fails and report wrong size

this happens always for this file: encoder/encoder_cases_test.go???
It cannot make it through...
[root@ctadevjulien rclone]# (xrootd-devel) ./rclone sync ./lib atlastest:tmp/te
2020/05/27 22:55:40 ERROR : encoder/encoder_cases_test.go: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 22:55:40 ERROR : root://eosctaatlaspps:1094//eos/ctaatlaspps/tmp/te: not deleting files as there were IO errors
2020/05/27 22:55:40 ERROR : root://eosctaatlaspps:1094//eos/ctaatlaspps/tmp/te: not deleting directories as there were IO errors
2020/05/27 22:55:40 ERROR : Attempt 1/3 failed with 1 errors and: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 22:55:40 ERROR : encoder/encoder_cases_test.go: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 22:55:40 ERROR : root://eosctaatlaspps:1094//eos/ctaatlaspps/tmp/te: not deleting files as there were IO errors
2020/05/27 22:55:40 ERROR : root://eosctaatlaspps:1094//eos/ctaatlaspps/tmp/te: not deleting directories as there were IO errors
2020/05/27 22:55:40 ERROR : Attempt 2/3 failed with 1 errors and: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 22:55:40 ERROR : encoder/encoder_cases_test.go: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 22:55:41 ERROR : root://eosctaatlaspps:1094//eos/ctaatlaspps/tmp/te: not deleting files as there were IO errors
2020/05/27 22:55:41 ERROR : root://eosctaatlaspps:1094//eos/ctaatlaspps/tmp/te: not deleting directories as there were IO errors
2020/05/27 22:55:41 ERROR : Attempt 3/3 failed with 1 errors and: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 22:55:41 Failed to sync: corrupted on transfer: sizes differ 2048147 vs 4096

this is a checkout of commit 4f977c5e5bcd876af1cfbd5a2f4c1f60e193fe61

[root@ctadevjulien encoder]# (xrootd-devel) ../../../rclone/rclone sync encoder_cases_test.go atlastest:tmp/te
2020/05/27 23:09:24 ERROR : encoder_cases_test.go: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 23:09:24 ERROR : Attempt 1/3 failed with 1 errors and: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 23:09:24 ERROR : encoder_cases_test.go: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 23:09:24 ERROR : Attempt 2/3 failed with 1 errors and: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 23:09:24 ERROR : encoder_cases_test.go: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 23:09:24 ERROR : Attempt 3/3 failed with 1 errors and: corrupted on transfer: sizes differ 2048147 vs 4096
2020/05/27 23:09:24 Failed to sync: corrupted on transfer: sizes differ 2048147 vs 4096

This single file fails, why?

I did not manage to attach the file, but here is the md5sum:
[root@ctadevjulien encoder]# (xrootd-devel) md5sum encoder_cases_test.go
13eb50781dbff3f5e32983ae5a514284  encoder_cases_test.go

should be fixed with 30f3515f2dae1b0370171827bbdc4550ec088ccd
as the real underlying issue was the larger files copy


pysim: init at unstable-2023-08-11

Description of changes
This packages pysim for nixpkgs and its necessary dependencies.
~Marked as draft, because there's one patch to the setup.py waiting to be merged upstream.~
Things done

Plug in SIM card into PC/SC reader
Invoke result/bin/pySim-shell -p 0
select ADF.USIM
select EF.IMSI
read_binary_decoded
See your imsi.
Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 248897 run on x86_64-linux 1

16 packages built:

python310Packages.gsm0338
python310Packages.gsm0338.dist
python310Packages.pysim
python310Packages.pysim.dist
python310Packages.pytlv
python310Packages.pytlv.dist
python310Packages.smpp_pdu
python310Packages.smpp_pdu.dist
python311Packages.gsm0338
python311Packages.gsm0338.dist
python311Packages.pysim
python311Packages.pysim.dist
python311Packages.pytlv
python311Packages.pytlv.dist
python311Packages.smpp_pdu
python311Packages.smpp_pdu.dist

I validated being able to read the IMSI at least, and all requested changes were only regarding tests, so it shouldn't affect functionality. Thanks for the review!


Add RPC endpoints for retrieving routing table info for state and history networks

What was wrong?
Trin has no way of retrieving a list of the nodes in the routing tables of each overlay network.
How was it fixed?

Added portal_historyRoutingTableInfo & portal_stateRoutingTableInfo endpoints.
Add corresponding tests to ethportal-peertest.

The json output format (under the "result" key) of these endpoints is:
"buckets": {
      "246": [
        {
          "enr": "enr:-IS4QHq0W0mPXc5L5FkWnSB1vygIhnhSUh_xD2ddIZYCD3ycdBeHfU4S7wKLOB20zi93GEjfAa4qHHcE_i6eJaIwJPIBgmlkgnY0gmlwhEFsKgOJc2VjcDI1NmsxoQMlZcyp8md8ISz7m6TQlyYqSZPvZgRmtkV3MYgKLexwzIN1ZHCCI6Y",
          "node_id": "0x5e5feed5e2835682437c7bcae4e56ef55079bb80ace5d4482e2a2b684c86dcfb",
          "radius": "18446744073709551615",
          "status": "Connected"
        }
      ],
      "249": [
        {
          "enr": "enr:-IS4QI3GqhE7c_ufMjFYT7MXz98MqmzNlenWBKqvtFKvNqFHYVwMdM6jhtq8y4NzVYWUaJETm6jeK_V1nmmP0gJsXRgBgmlkgnY0gmlwhEFsKgOJc2VjcDI1NmsxoQNR97HGmoGUsgxt497YSsVl6RqIkrJHobZxBvBX14gEdoN1ZHCCI5I",
          "node_id": "0x5c43a5d46e81bb8cd329230ebc5d9db032c66c9ae97110c9b49e28de94b51f66",
          "radius": "18446744073709551615",
          "status": "Connected"
        }
      ],
      "252": [
        {
          "enr": "enr:-IS4QOA4voX3J7-R_x8pjlaxBTpT1S_CL7ZaNjetjZ-0nnr2VaP0wEZsT2KvjA5UWc8vi9I0XvNSd1bjU0GXUjlt7J0BgmlkgnY0gmlwhEFsKgOJc2VjcDI1NmsxoQI7aL5dFuHhwbxWD-C1yWH7UPlae5wuV_3WbPylCBwPboN1ZHCCI44",
          "node_id": "0x4f42329a2f4aebf4e488b4daa639f5bd03230865e4f5b4a232234618025b0ba8",
          "radius": "18446744073709551615",
          "status": "Connected"
        },
        {
          "enr": "enr:-IS4QNd_PFZkR7zizTltwbLbnYmDhT3TgH3xXH9ai_abUofLBkWr0_8kEdiapiR67Aurecu-E0C6-VPW4HFrHb-eENoBgmlkgnY0gmlwhE7JWtOJc2VjcDI1NmsxoQK8aBdTCqEfDB8D1xucsLrSzg_o7mOL5f6CR7QUNWXLfoN1ZHCCIzE",
          "node_id": "0x550b28434b38cf04cbd745e461ca62a81ec018e16c991d0d6a4a1aa6bb2708e0",
          "radius": "18446744073709551615",
          "status": "Disconnected"
        }
      ],
    },
    "numBuckets": 3,
    "numConnected": 3,
    "numNodes": 4
  }
}

I weighed a few different formats, and I think that this format strikes the best balance between human-readable and client-parseable. The previous formats were:

flat structure where the top level key is nodes and each node object has a bucket_index key
keyless structure where each node is represented by a 5-element list. It could be argued that this would save bandwidth by removing all of the repeated keys and just using known indices.

Open to reverting to either if anyone has strong opinions.
To-Do

[x] Add entry to the release notes (may forgo for trivial changes)
[ ] Clean up commit history

To-Do
- [ ] Clean up commit history

Just a reminder to check the to-dos before merging, to avoid having commits like "Fix PR Feedback" in master :)
Other than that, looks all good 👍🏻

I figured squashing it all into one commit was sufficient cleanup. Though that still leaves the commit messages in the extended single commit's message, so I'll clean that message up too going forward.

Yea, I figured squashing it all into one commit was sufficient cleanup.

Oh, maybe I'm misreading the PR somehow, I thought it was a new merge commit with these 9 commits in the history

Interesting! I can't really tell by looking at this PR history that it was a squash commit. I could only tell by navigating away to master to see the latest commit and double-checking it's parent. That feels like a github UI bug to me...


⚠ Jenkins Plugins Artifactory has degraded performance

In 8ae9838, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1188 ms

Resolved: Jenkins Plugins Artifactory performance has improved in 9c87ac6 after 32 minutes.


Duplicate entry-point mappings inside dev & prod mode (with & without file name extensions)

dist/dev:

dist/prod:

i searched quite a bit for tickets and inside the docs for a config, but did not find it.
is there one already in place? if not, this would be a feature request.
for the https://github.com/neomjs/neo context, i just added cross apps & examples split chunks. Meaning: there can be 50+ entry points and the duplicate mappings really do add up on the output file size.
i just need the version containing the file name extensions. since the real dev mode runs inside the browser directly, it is impossible to use imports without the file name extensions anyway.
thanks for your input!
best regards, tobias

Please use the issue template, otherwise I will be close without answer

Hi Alexander,
I am mostly sticking to the issue templates. Thought this would be an easy one, so there would not be much value with doing so. I can change the description to match the template, if you really like me to do so.
The entry points do get created with using dynamic imports like this one:
        return import(
            /* webpackInclude: /\/app.mjs$/ */
            /* webpackExclude: /\/node_modules/ */
            /* webpackChunkName: "chunks/[request]" */
            /* webpackMode: "lazy" */
            `../../${path}`
        );

It is related to the "cross apps split chunks" topic (not needed to read this for this ticket, but a nice out of the box use case for  webpack): https://medium.com/@tobiasuhlig/cross-app-bundling-a-different-approach-for-micro-frontends-e4f212b6a9a?source=friends_link&sk=a0b098b4ac792f05348b20cdc007d83c
Best regards, Tobi

I don't understand your problem

simply put:
        var s = {
            "./apps/covid/app"                                     : [18, 0, 1, 2, 3, 9],
            "./apps/covid/app.mjs"                                 : [18, 0, 1, 2, 3, 9],
            "./apps/myapp/app"                                     : [45, 0, 1, 10],
            "./apps/myapp/app.mjs"                                 : [45, 0, 1, 10],
            "./apps/realworld/app"                                 : [20, 0, 1, 11],
            "./apps/realworld/app.mjs"                             : [20, 0, 1, 11],
            "./apps/realworld2/app"                                : [17, 0, 1, 2, 3, 12],
            "./apps/realworld2/app.mjs"                            : [17, 0, 1, 2, 3, 12],
            "./apps/sharedcovid/app"                               : [19, 0, 1, 2, 3, 13],
            "./apps/sharedcovid/app.mjs"                           : [19, 0, 1, 2, 3, 13],
            "./apps/sharedcovidchart/app"                          : [46, 0, 1, 14],
            "./apps/sharedcovidchart/app.mjs"                      : [46, 0, 1, 14],
            "./apps/sharedcovidgallery/app"                        : [47, 0, 1, 15],
            "./apps/sharedcovidgallery/app.mjs"                    : [47, 0, 1, 15],
            "./apps/sharedcovidhelix/app"                          : [48, 0, 1, 16],
            "./apps/sharedcovidhelix/app.mjs"                      : [48, 0, 1, 16],
            "./apps/sharedcovidmap/app"                            : [49, 0, 1, 17],
            "./apps/sharedcovidmap/app.mjs"                        : [49, 0, 1, 17],
            "./apps/shareddialog/app"                              : [31, 0, 1, 2, 5, 18],
            "./apps/shareddialog/app.mjs"                          : [31, 0, 1, 2, 5, 18],
            "./apps/shareddialog2/app"                             : [32, 0, 1, 2, 5, 19],
            "./apps/shareddialog2/app.mjs"                         : [32, 0, 1, 2, 5, 19],
            "./apps/website/app"                                   : [23, 0, 1, 2, 3, 20],
            "./apps/website/app.mjs"                               : [23, 0, 1, 2, 3, 20],
            "./docs/app"                                           : [22, 0, 1, 2, 3, 21],
            "./docs/app.mjs"                                       : [22, 0, 1, 2, 3, 21],
            "./examples/button/base/app"                           : [50, 0, 1, 2, 22],
            "./examples/button/base/app.mjs"                       : [50, 0, 1, 2, 22],
            "./examples/button/split/app"                          : [39, 0, 1, 2, 23],
            "./examples/button/split/app.mjs"                      : [39, 0, 1, 2, 23],
            "./examples/calendar/basic/app"                        : [21, 0, 1, 2, 3, 24],
            "./examples/calendar/basic/app.mjs"                    : [21, 0, 1, 2, 3, 24],
            "./examples/charts/app"                                : [51, 0, 1, 25],
            "./examples/charts/app.mjs"                            : [51, 0, 1, 25],
            "./examples/component/chip/app"                        : [52, 0, 1, 2, 26],
            "./examples/component/chip/app.mjs"                    : [52, 0, 1, 2, 26],
            "./examples/component/circle/app"                      : [33, 0, 1, 2, 27],
            "./examples/component/circle/app.mjs"                  : [33, 0, 1, 2, 27],
            "./examples/component/coronaGallery/app"               : [25, 0, 1, 2, 6, 28],
            "./examples/component/coronaGallery/app.mjs"           : [25, 0, 1, 2, 6, 28],
            "./examples/component/coronaHelix/app"                 : [26, 0, 1, 2, 7, 29],
            "./examples/component/coronaHelix/app.mjs"             : [26, 0, 1, 2, 7, 29],
            "./examples/component/dateSelector/app"                : [53, 0, 1, 2, 8, 30],
            "./examples/component/dateSelector/app.mjs"            : [53, 0, 1, 2, 8, 30],
            "./examples/component/gallery/app"                     : [15, 0, 1, 2, 6, 31],
            "./examples/component/gallery/app.mjs"                 : [15, 0, 1, 2, 6, 31],
            "./examples/component/helix/app"                       : [16, 0, 1, 2, 7, 32],
            "./examples/component/helix/app.mjs"                   : [16, 0, 1, 2, 7, 32],
            "./examples/container/app"                             : [54, 0, 1, 33],
            "./examples/container/app.mjs"                         : [54, 0, 1, 33],
            "./examples/dialog/app"                                : [40, 0, 1, 5, 34],
            "./examples/dialog/app.mjs"                            : [40, 0, 1, 5, 34],
            "./examples/fields/app"                                : [27, 0, 1, 2, 3, 35],
            "./examples/fields/app.mjs"                            : [27, 0, 1, 2, 3, 35],
            "./examples/form/field/chip/app"                       : [34, 0, 1, 2, 3, 36],
            "./examples/form/field/chip/app.mjs"                   : [34, 0, 1, 2, 3, 36],
            "./examples/form/field/date/app"                       : [55, 0, 1, 2, 8, 37],
            "./examples/form/field/date/app.mjs"                   : [55, 0, 1, 2, 8, 37],
            "./examples/form/field/email/app"                      : [41, 0, 1, 2, 38],
            "./examples/form/field/email/app.mjs"                  : [41, 0, 1, 2, 38],
            "./examples/form/field/number/app"                     : [56, 0, 1, 2, 39],
            "./examples/form/field/number/app.mjs"                 : [56, 0, 1, 2, 39],
            "./examples/form/field/picker/app"                     : [57, 0, 1, 2, 40],
            "./examples/form/field/picker/app.mjs"                 : [57, 0, 1, 2, 40],
            "./examples/form/field/select/app"                     : [35, 0, 1, 2, 3, 41],
            "./examples/form/field/select/app.mjs"                 : [35, 0, 1, 2, 3, 41],
            "./examples/form/field/text/app"                       : [58, 0, 1, 2, 42],
            "./examples/form/field/text/app.mjs"                   : [58, 0, 1, 2, 42],
            "./examples/form/field/textarea/app"                   : [59, 0, 1, 2, 43],
            "./examples/form/field/textarea/app.mjs"               : [59, 0, 1, 2, 43],
            "./examples/form/field/time/app"                       : [60, 0, 1, 2, 3, 44],
            "./examples/form/field/time/app.mjs"                   : [60, 0, 1, 2, 3, 44],
            "./examples/form/field/trigger/copyToClipboard/app"    : [42, 0, 1, 2, 45],
            "./examples/form/field/trigger/copyToClipboard/app.mjs": [42, 0, 1, 2, 45],
            "./examples/list/base/app"                             : [36, 0, 1, 2, 3, 46],
            "./examples/list/base/app.mjs"                         : [36, 0, 1, 2, 3, 46],
            "./examples/list/chip/app"                             : [28, 0, 1, 2, 3, 47],
            "./examples/list/chip/app.mjs"                         : [28, 0, 1, 2, 3, 47],
            "./examples/panel/app"                                 : [43, 0, 1, 48],
            "./examples/panel/app.mjs"                             : [43, 0, 1, 48],
            "./examples/tab/container/app"                         : [61, 0, 1, 2, 49],
            "./examples/tab/container/app.mjs"                     : [61, 0, 1, 2, 49],
            "./examples/table/container/app"                       : [29, 0, 1, 2, 4, 50],
            "./examples/table/container/app.mjs"                   : [29, 0, 1, 2, 4, 50],
            "./examples/tableFiltering/app"                        : [24, 0, 1, 2, 3, 51],
            "./examples/tableFiltering/app.mjs"                    : [24, 0, 1, 2, 3, 51],
            "./examples/tablePerformance/app"                      : [37, 0, 1, 2, 4, 52],
            "./examples/tablePerformance/app.mjs"                  : [37, 0, 1, 2, 4, 52],
            "./examples/tableStore/app"                            : [38, 0, 1, 2, 4, 53],
            "./examples/tableStore/app.mjs"                        : [38, 0, 1, 2, 4, 53],
            "./examples/tabs/app"                                  : [44, 0, 1, 2, 4, 54],
            "./examples/tabs/app.mjs"                              : [44, 0, 1, 2, 4, 54],
            "./examples/todoList/version1/app"                     : [62, 0, 55],
            "./examples/todoList/version1/app.mjs"                 : [62, 0, 55],
            "./examples/todoList/version2/app"                     : [30, 0, 1, 2, 3, 56],
            "./examples/todoList/version2/app.mjs"                 : [30, 0, 1, 2, 3, 56],
            "./examples/viewport/app"                              : [63, 0, 1, 57],
            "./examples/viewport/app.mjs"                          : [63, 0, 1, 57]
        };

should get (optionally) reduced to:
         var s = {
            "./apps/covid/app.mjs"                                 : [18, 0, 1, 2, 3, 9],
            "./apps/myapp/app.mjs"                                 : [45, 0, 1, 10],
            "./apps/realworld/app.mjs"                             : [20, 0, 1, 11],
            "./apps/realworld2/app.mjs"                            : [17, 0, 1, 2, 3, 12],
            "./apps/sharedcovid/app.mjs"                           : [19, 0, 1, 2, 3, 13],
            "./apps/sharedcovidchart/app.mjs"                      : [46, 0, 1, 14],
            "./apps/sharedcovidgallery/app.mjs"                    : [47, 0, 1, 15],
            "./apps/sharedcovidhelix/app.mjs"                      : [48, 0, 1, 16],
            "./apps/sharedcovidmap/app.mjs"                        : [49, 0, 1, 17],
            "./apps/shareddialog/app.mjs"                          : [31, 0, 1, 2, 5, 18],
            "./apps/shareddialog2/app.mjs"                         : [32, 0, 1, 2, 5, 19],
            "./apps/website/app.mjs"                               : [23, 0, 1, 2, 3, 20],
            "./docs/app.mjs"                                       : [22, 0, 1, 2, 3, 21],
            "./examples/button/base/app.mjs"                       : [50, 0, 1, 2, 22],
            "./examples/button/split/app.mjs"                      : [39, 0, 1, 2, 23],
            "./examples/calendar/basic/app.mjs"                    : [21, 0, 1, 2, 3, 24],
            "./examples/charts/app.mjs"                            : [51, 0, 1, 25],
            "./examples/component/chip/app.mjs"                    : [52, 0, 1, 2, 26],
            "./examples/component/circle/app.mjs"                  : [33, 0, 1, 2, 27],
            "./examples/component/coronaGallery/app.mjs"           : [25, 0, 1, 2, 6, 28],
            "./examples/component/coronaHelix/app.mjs"             : [26, 0, 1, 2, 7, 29],
            "./examples/component/dateSelector/app.mjs"            : [53, 0, 1, 2, 8, 30],
            "./examples/component/gallery/app.mjs"                 : [15, 0, 1, 2, 6, 31],
            "./examples/component/helix/app.mjs"                   : [16, 0, 1, 2, 7, 32],
            "./examples/container/app.mjs"                         : [54, 0, 1, 33],
            "./examples/dialog/app.mjs"                            : [40, 0, 1, 5, 34],
            "./examples/fields/app.mjs"                            : [27, 0, 1, 2, 3, 35],
            "./examples/form/field/chip/app.mjs"                   : [34, 0, 1, 2, 3, 36],
            "./examples/form/field/date/app.mjs"                   : [55, 0, 1, 2, 8, 37],
            "./examples/form/field/email/app.mjs"                  : [41, 0, 1, 2, 38],
            "./examples/form/field/number/app.mjs"                 : [56, 0, 1, 2, 39],
            "./examples/form/field/picker/app.mjs"                 : [57, 0, 1, 2, 40],
            "./examples/form/field/select/app.mjs"                 : [35, 0, 1, 2, 3, 41],
            "./examples/form/field/text/app.mjs"                   : [58, 0, 1, 2, 42],
            "./examples/form/field/textarea/app.mjs"               : [59, 0, 1, 2, 43],
            "./examples/form/field/time/app.mjs"                   : [60, 0, 1, 2, 3, 44],
            "./examples/form/field/trigger/copyToClipboard/app.mjs": [42, 0, 1, 2, 45],
            "./examples/list/base/app.mjs"                         : [36, 0, 1, 2, 3, 46],
            "./examples/list/chip/app.mjs"                         : [28, 0, 1, 2, 3, 47],
            "./examples/panel/app.mjs"                             : [43, 0, 1, 48],
            "./examples/tab/container/app.mjs"                     : [61, 0, 1, 2, 49],
            "./examples/table/container/app.mjs"                   : [29, 0, 1, 2, 4, 50],
            "./examples/tableFiltering/app.mjs"                    : [24, 0, 1, 2, 3, 51],
            "./examples/tablePerformance/app.mjs"                  : [37, 0, 1, 2, 4, 52],
            "./examples/tableStore/app.mjs"                        : [38, 0, 1, 2, 4, 53],
            "./examples/tabs/app.mjs"                              : [44, 0, 1, 2, 4, 54],
            "./examples/todoList/version1/app.mjs"                 : [62, 0, 55],
            "./examples/todoList/version2/app.mjs"                 : [30, 0, 1, 2, 3, 56],
            "./examples/viewport/app.mjs"                          : [63, 0, 1, 57]
        };

which is half the size.

You can fix that by making the .mjs part of the path static, so we know at compile-time that all requests will have .mjs.
if(path.endsWith(".mjs")) import(`../../${path.slice(0, -4)}.mjs`)

In webpack 5 this works fine even without changes as .mjs is no longer a extension that is automatically appended.

nice one, thanks. i was not aware that adjusting the import paths with a file name extension would reduce the mappings as well. we can definitely do this for neo apps, since the entry point is always app.mjs.


Add read/write to Redox

These functions are required for alloc_system now

Thanks! Looks like tidy is failing?

Lines were probably too long

@bors: r+

:pushpin: Commit 7d57f03 has been approved by alexcrichton

:hourglass: Testing commit 7d57f039c45375ee98d63621174abe0044bb7909 with merge e5fd61e98e02424b4a5f6257e34bde4968dd824f...

:sunny: Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing e5fd61e98e02424b4a5f6257e34bde4968dd824f to master...

@alexcrichton We need the libc submodule to be updated in the rust repo, as well


UI bugs on the expand view

Describe the bug

[x] Border bug on the expand view

Actual: Do not show border in cases:

Scan QR screen

Popup full width (Confirmation, Select Validator)

[x] Ui bugs on the small screen resolution

Expect:

If the large screen resolution -> Show bottom group icon
If the small screen resolution -> Hide bottom group icon

[x] Do not show Sorting screens when select collator/dApp in case unstake

Expect: Hide the Sorting button in this Select collator/dApp screen

Version test: https://file.cdmteck.com/s/4oimk9zDJ8R5Aai/download?path=%2F&files=./upgrade-ui-pr-1570-build-1.0.11-2023-06-28T08-25-40UTC.zip
Validation passed.


Mobile Browser Crashing due to Memory Limit

I created a presentation that ended up crashing mobile browsers 100% of the time (be it Mobile Safari/Chrome, iPhone/iPad, etc.) This seems linked to a memory limit when looking in the crash logs. Now, this is rather tied to the complexity of the presentation itself, but I'm thinking Impress.JS can/should have an option to enable a "Mobile-optimized" version of the presentation playback that makes it so the memory limit isn't exceeded on mobile devices. This makes it so the ideal presentation can be made for desktop, but it can still be viewed (at least doesn't crash) on mobile.
I have an actual fix to this memory limit crash. It effectively detects mobile browsers, and hides all slides except for the current, next, and previous when viewed on a mobile device. Here's a link to a gist of the code snippet that's simply added to the <head> of the presentation's HTML: https://gist.github.com/KZeni/6735287
Now, this is a fix that's added to a presentation that's already built out, but I'm wondering if Impress can actually have an option that enables a mode that does this for mobile devices without any added code (aside from enabling the option). Also, I don't recommend this being the default behavior as presentations that don't crash on mobile might as well continue to show all slides.

Edit @FagnerMartinsBrack, see below:

[ ] Create an issue or PR to update the README so that browser support is clear.
[ ] Create an issue to discuss if the memory footprint should be handled in impress.js or in the userland.

@bilus @KZeni

I'm sorry to hear that it have given you a headache on launch day, but impress.js README has quite a large and detailed section about browser support

...

I honestly don't think it's sufficiently explained in the Readme

I am not sure if the README is still in the same state as at the time this issue was created. But I guess the best action here would be to review the README so that it is clearer on what the project supports and what it does not.
Currently we have:

but some tablets are good enough to run it, so it should work quite well on iPad (iOS 5, or iOS 4 with HTML5 polyfills) and Blackberry Playbook. Inform us of any bug and we will try to fix this.

and in another point of the README:

Mobile browsers are currently not supported.

It is not clear what "mobile" means here, if it is just smartphones or it also includes tablets (it doesn't seems so).
We need to remove this subjective interpretation from the README.
Actions from this issue:

Create an issue or PR to update the README so that browser support is clear.
Create an issue to discuss if the memory footprint should be handled in impress.js or in the userland.

If you are wondering why you are receiving a response on this after so many time, take a look here for a little bit of context.

What made it weird for me was the fact that it worked fine on my iPad at the time when I had started making the presentation, but then only started crashing after a certain number of graphical elements & image resources were being shown (which I then don't want to compromise the presentation to accommodate the technical limitation). So it seemed to work until a not necessarily predictable slide/resource limit.
My code in my first commend above had made it so the presentation slides would only show the recent & upcoming slides so it could be scalable and work regardless of the size of the images and overall presentation (though the code itself wasn't necessarily the best implementation of adding performance scaling).
I'm not sure what the best way to re-write the browser support section of the README would be or know the very best way to implement the performance scaling, but I'm glad to hear it's being worked on/taken into consideration.

@KZeni
This issue might take some time to be addressed, in the meantime, since you seems to be still tracking this, could you keep testing this issue in browsers and posting the results here so that we know how the state of things are changing over time?
It would also be amazing if you could attach any Chromium/Firefox/Safari issue tracker that can somehow be related to this so that we can have some context of the browsers that might be willing to fix this in their side, if any?

Hi @KZeni
I think your idea of hiding steps that are not in the immediate vicinity of the current step is a good way to significantly reduce memory consumption on smaller mobile devices. In any case, since using this is completely optional, up to the author using css, I've added your code as [a plugin|https://github.com/henrikingo/impress.js/tree/myfork/src/plugins/mobile] into my impress.js fork. Please have a look.

mobile plugin is now merged to master. Thanks @KZeni !

Does anyone still find this to be a problem - crashing because it's too big?
I had something like the above gist in place and it created blank pages when I started navigating around with goto()'s
I think the newer mobile browsers have the power ;)


Font styles and weights naming

Hi! I’m testing Tailwind, and have a question about some class naming.
I was expecting these rules to be declared by these classes:

font-style: normal from .font-normal or .normal
font-weight: regular from .font-regular or .regular

But Tailwind works this way:

font-style: normal from .roman
font-weight: regular from .font-normal

I find that very misleading, because:

When I encounter .font-normal, I think about font-style: normal, not about font-weight: regular
If I’m coding a website not using a latin alphabet (let’s say Chinese or Arabic), the word roman does not resonate in any way with font-style: normal.
Also, roman makes me think to list-style-type: lower-roman (or upper-roman).

What are other people views on this? Can you consider to rename classes in a further breaking update?

You can change .font-normal to .font-regular in your own config if you like; we chose the font weight names based on this document from the W3C:
https://www.w3.org/TR/css-fonts-3/#font-weight-numeric-values
The .roman situation is admittedly more annoying. We wanted .italic for italicized text, so similarly wanted a single word class for undoing italic text at different breakpoints. We bikeshedded over .unitalic, .no-italics, .not-italic and others before eventually settling on .roman because "roman" is the word typographers use to refer to upright text vs. italic text:
https://en.wikipedia.org/wiki/Roman_type
I'm not opposed to changing that name but I don't want to use a name that uses the font- prefix because it would be the only class that isn't a font weight or font family class that starts with font-.

Having not thought about the roman stuff in like 5 months, I think I'd be happy with .not-italic if that works for others.

Renamed .roman to .not-italic for 0.5.0 which will be out today. We might change the default font weight utility names one day but right now it's not in our plans.

Good solution from my point of view. Also more consistent with .no-underline.

Welp I remembered why we didn't use not-italic; it breaks cssnext:
https://github.com/postcss/postcss-selector-not/issues/10
So now I've got a broken 0.5.0 build on my hands for anyone using cssnext 😔Need a new name that doesn't start with not because I don't expect that package to fix that issue any time soon.

I've reverted back to .roman for now, hopefully that package will fix that issue and we can revisit this then.


runtime error: invalid memory address when plan.json exists

Given this TF:
variable "allowed_ssh_cidrs" {
  description = "List of CIDRs that can SSH into instances"
  type        = list(string)
  default     = ["<IP_ADDRESS>/32"]
}

resource "aws_security_group" "example_sg" {
  name        = "example_sg"
  description = "Example Security Group"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = var.allowed_ssh_cidrs
  }
}

> select path from terraform_resource
+----------------------------------------------------+
| path                                               |
+----------------------------------------------------+
| /home/jon/terraform-examples/dynamic.tf |
+----------------------------------------------------+

Now:
terraform plan -var 'allowed_ssh_cidrs=["<IP_ADDRESS>/0"]' -out=plan.tfplan
terraform show -json plan.tfplan > plan.json

> select path from terraform_resource

Error: runtime error: invalid memory address or nil pointer dereference (SQLSTATE HV000)

+----------------------------------------------------+
| path                                               |
+----------------------------------------------------+
| /home/jon/terraform-examples/dynamic.tf |
+----------------------------------------------------+

Actually I don't think it's var-related.
provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "my_bucket" {
  bucket = "jon-test-project-foo-bucket-01"
}

> select path from terraform_resource
+-----------------------------------------------------------+
| path                                                      |
+-----------------------------------------------------------+
| /home/jon/terraform-examples/bucket.tf         |
+-----------------------------------------------------------+

terraform plan -out=plan.tfplan
terraform show -json plan.tfplan > plan.json

> select path from terraform_resource

Error: runtime error: invalid memory address or nil pointer dereference (SQLSTATE HV000)

rm path.json

> select path from terraform_resource
+---------------------------------------------------+
| path                                              |
+---------------------------------------------------+
| /home/jon/terraform-examples/bucket.tf |
+---------------------------------------------------+

I was able to reproduce locally with both of these connection configs:
connection "terraform" {
 plugin = "terraform"
 plan_file_paths = ["tfplan.json"]
}

connection "terraform" {
 plugin = "terraform"
 plan_file_paths = ["*.tfplan.json"]
}

So it doesn't seem like the wildcard affects this particular bug (unlike https://github.com/turbot/steampipe-plugin-terraform/issues/55).

@bigdatasourav this didn't fix #54 :-(
The above examples still fail in the same way, and nuking plan.json is still the workaround.
My config:
configuration_file_paths = ["/home/jon/terraform-examples/*.tf"]
plan_file_paths          = ["/home/jon/terraform-examples/p*.json"]
state_file_paths         = ["/home/jon/terraform-examples/*.tfstate"]

OK all good, I just had to use pkill -f steampipe in order to get the rebuilt branch to take effect. Thanks @bigdatasourav!
!


Updated versions of Rust and crates

I'd like to update the Rust nightly version and the crates versions before the hackathon. Thanks!

Closing this PR for now, as there are a few more updates coming.


Add Twitter, Facebook back to footer

https://github.com/academicpages/academicpages.github.io/commit/2a269d2fae2c5a2313e5fa7afa809fec79385d9f mistakenly removed the Twitter and Facebook following options. I have added these back.
I tested this works by setting variables and verified the Follow section does not show up if all of these socials are not in the config.

Thanks for the contribution, but these were intentionally removed from the footer.


Method BIND_TABLE - Unable to have columns with same name (method adds an index to the column)

solved with commit https://github.com/ivanfemia/abap2xlsx/commit/9ef116622af60a07206b9bd02613de9621b91165

The solution add a special char insted of the counter to the column name in order to avoid visible differences between columns


AU-574: Update tests & translations

AU-574

What was done

Updated tests and related translations

How to test

make test-robot

Bank account update fails? Should it?

Yeah, some Tunnistamo stuff changed, I'll mark this PR as WIP


[ART-1353] Add script to identify buildroot of golang packages

Adding this script to aos-cd-jobs, so we can either use it standalone or call
it from our other tools (doozer/elliott)
$ ./golang-built-rpms -h
golang-built-rpms v0.0.1

Find golang-built RPMs and print out their corresponding buildroots.

Usage:
    $ golang-built-rpms OCP_VERSION [OPTIONS]...

Options:
    -f    --format     Choose an output format.
                       Available formats: csv yaml
                       default: csv

    -v    --verbose    Print skipped packages to STDERR
                       default: 0

    -h    --help       Print this help

Examples:
    Most basic usage:
    $ golang-built-rpms 3.11

    Logging skipped (non-golang) packages to file:
    $ golang-built-rpms 4.1 -v 2> non-golang-pkgs.log

    YAML output to file
    $ golang-built-rpms 4.2 -f yaml > pkg-buildroots.yaml

$ time ./golang-built-rpms 4.2 -v -f csv >4.2-golang-built-rpms.csv 2>skipped.log

real    4m34.810s
user    10m26.645s
sys     3m43.020s

Output files from command above are attached to https://issues.redhat.com/browse/ART-1353

Just realized that -v --verbose is not making any difference ... fixing it now

/hold
We intend to discuss a potential new home for this tool on today's arch meeting.

/unhold

WIP: testing latest changes

limited concurrency to 1000 parallel processes (it was freezing my computer everytime)
trying to fix multiple "latest_candidates" (1 for rhel-7 and 1 for rhel-8) ... my code was assuming only one would be returned at all times

fixed the issues I found, I'm already making use of it for ART-1547.
There is one small detail though ... I commented latest_build because I wasn't use it to get any further info, and seems a pain to map multiple latest_builds with their corresponding latest_candidates ... I'd like to discuss with y'all what do we loose by not having this field.

one more thing ... i was really expecting podman and cri-o to be picked on 4.2 ... (they are recognized as golang RPMs on 4.3, but got skipped on 4.2)
is there any outside reason for that, or my script is just flawed ?

they are recognized as golang RPMs on 4.3, but got skipped on 4.2

the el7 version of cri-o isn't skipped. the el8 version is because:
🐚 rpm -qp --requires http://download.eng.bos.redhat.com/brewroot/vol/rhel-8/packages/cri-o/1.13.12/6.dev.rhaos4.1.git8abaaeb.el8_0/src/cri-o-1.13.12-6.dev.rhaos4.1.git8abaaeb.el8_0.src.rpm
compiler(go-compiler)
git
glib2-devel
glibc-static
go-md2man
gpgme-devel
libassuan-devel
libseccomp-devel
pkgconfig(systemd)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1

no golang in there :-) have to look for go-compiler too apparently.
I found a couple other things to tweak. Will add a commit and merge.

one other note: looking up latest builds individually is pretty slow (lot of brew calls, each has to negotiate tls and auth...).
you could do this all at once with ```
brew list-tagged --latest --inherit $tag

remove V and R to get N, then set up an associative array and you have an instant lookup (although slightly tricky since there could be two entries).

you might even be able to filter out containers at the same time (not have to look up their buildinfo). they are inherited from a different tag when they're shipped, e.g.

$ brew list-tagged --latest --inherit rhaos-3.11-rhel-7
search-guard-ssl-<IP_ADDRESS>_redhat_1-1.el7  rhaos-3.7-rhel-7      rmeggins
snapshot-controller-container-v3.11.170-5  rhaos-3.11-rhel-7-container-released  ocp-build/buildvm.openshift.eng.bos.redhat.com
[...]

regarding latest shipped vs latest candidate... let's see how this shakes out when used in earnest. we are likely interested in both (what built what we've shipped, and do our candidate builds fill the gap?).


Add support for the local storage API

Also provides new functionality to save all recent clips since the last refresh call.
Tests added to cover new functionality.
A brief doc (local_storage.rst) was added to describe the API.

Description:
The library doesn't support the local storage API.  I think that the cloud storage and local storage are not used at the same time.  But if you canceled your subscription and the re-subscribed you will have dual storage options.
This PR adds support for retrieving video clips from the sync module local storage.
Related issue (if applicable): fixes #594
Checklist:

[x] Local tests with tox run successfully PR cannot be meged unless tests pass
[x] Changes tested locally to ensure platform still works as intended
[x] Tests added to verify new code works

@fronzbot I've made the changes as you suggested.  I left response comments on the parts that I think need to remain.
Here is how I've been testing against my personal cameras.  I only have the local storage mode enabled though.
> python
>>> # I have a little script that does the auth flow and enables debug logging:
>>> exec(open("./initialize_blink.py").read()); blink = start(); blink.cameras

>>> # Trigger some cameras via motion or call record() on a camera.
>>> blink.cameras["camera_name"].record()

>>> # Call refresh:
>>> blink.refresh()

>>> # Test downloading the most recent clip:
>>> blink.cameras["camera_name"].video_to_file("/tmp/clip.mp4")

>>> # Test downloading all the recent clips (need to trigger the camera more than once to test multiple):
>>> blink.cameras["camera_name"].save_recent_clips(output_dir="/tmp")

In a different terminal:
> vlc /tmp/*.mp4

All of this should work the same if the clips are stored in the Blink cloud.  I don't have the ability to test that directly though.  If you are using the cloud storage option, it would be good to check that these steps work as expected.
I plan on testing these changes in HA, but I haven't done that before.  I believe I have my HA development environment set up correctly.  I have forked the core repo and have been able to run hass.  Maybe I'm close, dunno.
Anyway, please give the PR another look.

@fronzbot I'm finished with my changes/updates.
I've been chasing a race condition where there is a new clip in the manifest, but it isn't found in the recent time window.  It could possibly be a small difference in the clock that the sync module uses and my laptop uses.
Other than that, I am pretty confident that it is working as desired.
Would you like me to squash all the commits back into a single commit?

A good run:
[sync_module.py:453] Found 6 new clip(s) in local storage manifest id=7259
2022-12-06:12:13:38,193 INFO     [sync_module.py:351] Found 6 new items in local storage manifest since last manifest read at 2022-12-06 12:10:40.943173-05:00.
2022-12-06:12:13:38,408 INFO     [camera.py:304] 'South Yard' has 2 clips available for download
2022-12-06:12:13:38,906 INFO     [camera.py:304] 'Living Room' has 3 clips available for download
2022-12-06:12:13:39,665 INFO     [camera.py:304] 'Kitchen' has 1 clips available for download
2022-12-06:12:13:44,226 INFO     [camera.py:384] Saved 2 of 2 recent clips from 'South Yard' to directory /tmp/
2022-12-06:12:13:46,738 INFO     [camera.py:384] Saved 3 of 3 recent clips from 'Living Room' to directory /tmp/
2022-12-06:12:13:46,738 INFO     [camera.py:382] No recent clips to save for 'Front Yard'.
2022-12-06:12:13:46,738 INFO     [camera.py:382] No recent clips to save for 'Back Door'.
2022-12-06:12:13:53,036 INFO     [camera.py:384] Saved 1 of 1 recent clips from 'Kitchen' to directory /tmp/

I've been chasing a race condition where there is a new clip in the manifest, but it isn't found in the recent time window. It could possibly be a small difference in the clock that the sync module uses and my laptop uses.

But right after that it misses some.  It has got to be a race condition, right?
2022-12-06:12:14:56,251 INFO     [sync_module.py:453] Found 2 new clip(s) in local storage manifest id=7259
2022-12-06:12:14:56,282 INFO     [sync_module.py:356] No new local storage videos since last manifest read at 2022-12-06 12:13:28.193932-05:00.
True
2022-12-06:12:14:59,975 INFO     [camera.py:382] No recent clips to save for 'South Yard'.
2022-12-06:12:14:59,975 INFO     [camera.py:382] No recent clips to save for 'Living Room'.
2022-12-06:12:14:59,975 INFO     [camera.py:382] No recent clips to save for 'Front Yard'.
2022-12-06:12:14:59,975 INFO     [camera.py:382] No recent clips to save for 'Back Door'.
2022-12-06:12:14:59,975 INFO     [camera.py:382] No recent clips to save for 'Kitchen'.

@fronzbot:
I added the save_recent_clips service to the HA Blink integration in a development environment.  The blinkpy updates work well for me.  Although it looks like HA is running the refresh in 3 different SyncWorkers.  I'm not sure why that is happening.  And it was happening before I made any of my changes.
https://github.com/home-assistant/core/compare/dev...perdue:core:perdue/wip/add_services_to_blink?expand=1
So I am now waiting for you to approve and merge.  Once I have a blinkpy version to target, I can put up a PR for the blink integration changes.  Thanks!

If you want to add some tests in with expire_clips=True that would be immensely helpful, but I'm not going to have it gate merging this PR

Do you mean more of a integration test that uses expire_clips=True?  The unit test for the function is here:  https://github.com/fronzbot/blinkpy/blob/cb1aca8c6ad30b69900f1e075ee1706074a1f584/tests/test_camera_functions.py#L178

@fronzbot: Do you think you will have a chance to merge this soon?

This is great - is there some example code or similar to get started with?

This is great - is there some example code or similar to get started with?

I've been testing it like this:
import logging
import time
from os import environ
from blinkpy.blinkpy import Blink
from blinkpy.auth import Auth
from blinkpy.helpers.util import json_load

logging.basicConfig(
    format="%(asctime)s,%(msecs)03d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s",
    datefmt="%Y-%m-%d:%H:%M:%S",
    level=logging.INFO,
)

HOME = environ.get("HOME")
CREDFILE = environ.get("CREDFILE", default=HOME + "/.blinkapp/creds")

def start():
    """Startup blink app."""
    blink = Blink()
    blink.auth = Auth(json_load(CREDFILE))
    blink.start()
    blink.save(CREDFILE)

    while True:
        blink.refresh()
        time.sleep(59)
        for name in blink.cameras:
            blink.cameras[name].save_recent_clips("/tmp")

I've also started a WIP to add the save_recent_clips service to Home Assistant:  https://github.com/home-assistant/core/compare/dev...perdue:core:perdue/wip/add_services_to_blink

Perfect - that should be a good start - did you find a way to check if refresh is done -rather than sleep - seems less elegant to sleep :-)

Well refresh() is a synchronous function - so it is done when it is done.  But the whole code base is designed as a way poll endpoints.  It is up to you how you want to set up that polling loop.


Wrong python location

Issue description

E:\pp\mlc\spark>which python
/c/Anaconda3/python

E:\pp\mlc\spark>pipenv --python 3.6
Creating a virtualenv for this project...
Pipfile: E:\pp\mlc\spark\Pipfile
Using C:\msys64\mingw64\bin\python3.6m.exe (3.6.5) to create virtualenv...
Environment creation aborted.

Expected result

E:\pp\mlc\spark>which python
/c/Anaconda3/python

E:\pp\mlc\spark>pipenv --python 3.6
Creating a virtualenv for this project...
Pipfile: E:\pp\mlc\spark\Pipfile
Using C:\Anaconda3\python.exe to create virtualenv...
Environment creation aborted.

Steps to replicate

Add C:\Anaconda3\  to environment, add C:\msys64\mingw64\bin(need install same python) behind it .
pipenv --python 3.6

Pipenv(or pythonfinder) has a logic to decide which Python should be picked. It may be because C:\msys64\mingw64\bin\python3.6m.exe has higher priority than anaconda's Python interpreter under the specifier of 3.6.
You can pass the full path explicitly to --python option.

I think pipenv should follow first come, first served principle .
Keep same behaviour as system.

pipenv will search python3.6 first, but there is no such executable in anaconda.
For your case, simply pipenv --python python will do the trick.

If you don’t specify a python argument at all it will behave as requested. The point of the argument is to explicitly not use the first python in your path.

@frostming But my anaconda is 3.6.5 too
E:\pp\mlc\spark>which python
/c/Anaconda3/python

E:\pp\mlc\spark>python
Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>


Resource.make and Concurrent.timeoutTo causes an infinite lock

Monix version: 3.2.0
The snippet
import cats.data.EitherT
import cats.effect.{Concurrent, Resource}
import monix.eval.Task
import monix.execution.Scheduler

import scala.concurrent.duration._

object Test {

  def main(args: Array[String]): Unit = {
    type F[A] = EitherT[Task, String, A]

    implicit val S: Scheduler = Scheduler.global
    implicit val F: Concurrent[F] = Concurrent.catsEitherTConcurrent

    val resource = Resource.make(F.delay[Unit](throw new RuntimeException("Boom")))(_ => F.unit)
    val fa = resource.use(_ => F.unit)
    val orElse = F.unit

    val result = Concurrent.timeoutTo(fa, 5.millis, orElse).value.attempt.runSyncUnsafe()

    println(s"Result $result")
  }

}

Output
The program hangs forever and the message is not printed.
Expected output
Printed in the console:
Left(java.lang.RuntimeException: Boom)

There are several situations when the program works fine:

With increased timeout (e.g. 500.millis)

val result = Concurrent.timeoutTo(fa, 500.millis, orElse).value.attempt.runSyncUnsafe()

With Resource.liftF instead of Resource.make

val resource = Resource.liftF(F.delay[Unit](throw new RuntimeException("Boom")))

Without Concurrent.timeoutTo

val result = fa.value.attempt.runSyncUnsafe()

With  cats.effect.IO instead of monix.eval.Task

Potential root cause
The program works fine with Monix 3.1.0.
Perhaps such behavior caused by https://github.com/monix/monix/pull/1087.

Thanks for the detailed report - I will investigate today and release 3.2.1 if necessary because we need to do it anyway due to ScalaJS 1.0.0 issue in browsers

I have included the fix in 3.2.1

@Avasil awesome! Thank you for the quick fix.


Enforce LF in gitattributes and editorconfig

After a fresh clone I had problem with the line breaks on my Windows PC.
Since they are already enforced as LF in the .jscsrc file I enforced them even in gitattributes and editorconfig.

Good one! Thanks


@Persisted List goes through different decoding path than old-style property

How frequently does the bug occur?
All the time
Description
The new-style property wrapper @Persisted is a great convenience, but it goes through a different decoding path than the old-style accessors. Somehow, my extension on KeyedDecodingContainer isn't hit when a new-style object's automatically synthesized init(with decoder: Decoder) is used, although it is if I implement that init manually. This prevents me from handling missing keys from my API.
I've tried implementing similar overrides on Unkeyed and SingleValueDecodingContainer, but they're not hit either, although the backtrace indicates that the List is initialized via a SingleValueDecodingContainer.
Stacktrace & log output
No response
Can you reproduce the bug?
Yes, always
Reproduction Steps
// This is called any time TestModel1 is decoded, but only when TestModel2 has a manual `init(with decoder: Decoder)` implemented
extension KeyedDecodingContainer {
    public func decode<T>(_ type: T.Type, forKey key: KeyedDecodingContainer<K>.Key) throws -> T where T: RealmCollection, T: Decodable {
        try decodeIfPresent(T.self, forKey: key) ?? List<T.Element>() as! T
    }
}

@objcMembers class TestModel1: Object, Codable {
    dynamic var id: String?
    var list = List<Int>()
}

class TestModel2: Object, Codable {
    @Persisted var id: String?
    @Persisted var list: List<Int>

	#if false
	required override init() {
        super.init()
    }

	required init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        id = try values.decodeIfPresent(String.self, forKey: .id)
        list = try values.decode(List<Int>.self, forKey: .list)
    }
	#endif
}

let json = "{}"

let model1 = try JSONDecoder().decode(TestModel1.self, from: json.data(using: .utf8)!)
let model2 = try JSONDecoder().decode(TestModel2.self, from: json.data(using: .utf8)!)

Version
10.18.0
What SDK flavour are you using?
Local Database only
Are you using encryption?
No, not using encryption
Platform OS and version(s)
iOS 14 and 15
Build environment
ProductName:	macOS
ProductVersion:	11.5.2
BuildVersion:	20G95

/Applications/Xcode.app/Contents/Developer
Xcode 13.1
Build version 13A1030d

/opt/homebrew/bin/pod
1.11.2
Realm (10.18.0)
RealmSwift (10.18.0)
RealmSwift (~> 10)

/bin/bash
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin20)

carthage not found
(not in use here)

/usr/bin/git
git version 2.30.1 (Apple Git-130)

Hm, looks like it is literally just a different path: decoding the property wrapper rather than the property. This seems to work:
extension KeyedDecodingContainer {
    public func decode<T>(_ type: T.Type, forKey key: Self.Key) throws -> T where T: Persistable, T.Value: RealmCollection, T: Decodable {
        try decodeIfPresent(T.self, forKey: key) ?? Persisted(wrappedValue: List<T.Value.Element>() as! T.Value) as! T
    }
}


Use BuildDescription.traverseModules to get the target targets of a SwiftPM package

Depends on https://github.com/swiftlang/sourcekit-lsp/pull/1620

https://github.com/swiftlang/swift-package-manager/pull/7868
@swift-ci please test

https://github.com/swiftlang/swift-package-manager/pull/7868
@swift-ci Please test

swiftlang/swift-package-manager#7868
@swift-ci Please test Windows

swiftlang/swift-package-manager#7868
@swift-ci Please test


Add explanation about validation for stochastic.

Discussed on #33

Yes! LGTM, just have the merge conflict now.

Yes! LGTM, just have the merge conflict now.

Cool. The MC was in the pdf, merging :+1:


Eslint can't recognise nullish coalescing operator with plugin:n/recommended

"eslint": "8.24.0"
"eslint-plugin-n": "15.6.0"
.eslintrc.yml:
root: true
env:
  node: true
  es2021: true
parserOptions:
  sourceType: module
extends:
  - eslint:recommended
  - plugin:n/recommended
  - prettier

package.json:
  "engines": {
    "node": "16"
  },

VSCode shows the following error for nullish coalescing operator:

Parsing error: Unexpected token ?

According to node.green, this operator is supported in Node v16: https://node.green/#ES2020-features--nullish-coalescing-operator-----
Running eslint with --print-config shows:
"ecmaVersion": 2019

Perhaps, this is the cause. But why is it 2019?
Disabling plugin:n/recommended removes the above mentioned eslint error, but it brings back another error about instance class fields, which is part of ES2022. This feature is supported by Node v16, but I can't specify "ecmaVersion": 2022 because Node v16 does not support it fully. This was my motivation for using eslint-plugin-n.

We currently support node >= v16 and eslint >= v7
Support was dropped in #90


Homebridge main UI Screen - Message - Yolink Slows Homebridge

Describe The Bug:
[4/1/2023, 1:46:04 PM] [homebridge-yolink] This plugin slows down Homebridge. The read handler for the characteristic 'On' was slow to respond!
To Reproduce:
Start Homebridge with Yolink plugin installed
Expected behavior:
No Error Message
Logs:
Show the Homebridge logs here, remove any sensitive information.

Plugin Config:
Show your Homebridge config.json here, remove any sensitive information.

Screenshots:

Environment:

Plugin Version:1.3.4
Homebridge Version: <1.6.0>
Node.js Version:
NPM Version:
Operating System: <!--  macOS ->

Thanks David. Very solid plugin!
Best,
Eric

Closing this issue as the problem is, unfortunately, somewhat expected and resolves itself after some time.


chore: add scripts for creating smart gate

add script to run createAndAnchorGate:devnet from cli

@rhubarbgarden  There is already script to do the same createAndAnchorGate : https://github.com/projectawakening/world-chain-contracts/blob/develop/end-to-end-tests/script/ConfigureSmartGate.s.sol#L76. Is there a reason to include this in end-to-end tests again ?

It's sometimes useful for front-end testing to be able to create smart gates on their own without going through the configure/link process.


Tech team scan mono-skia v1.58.0

Type: Incorrect
Summary:
Tech team scan mono-skia v1.58.0
Details:
incorrect license for GPL v2.0 and LGPL v2.1 - removed "or later" SPDX qaualifier
Resolution:
Removed "or later" for GPL 2 and LGPL 2.1, should be:
[MPL v1.1] or [GPL v2] or [LGPL v2.1]
Affected definitions:

skia 79502c2199bcf7364e055371a9a0e2a12478de20

@clearlyoss - I  am closing to close this PR w/o merging because this was more of a 'test' PR and there are too many changes I would need to make to the yaml to merge and I think that causes problems with the tooling.  Thank you


Clarity & consistency changes

Good catch, @lko3001! I made one additional adjustment. Merging after a successful build ...


add skipped cmps options

(follow up of the ticket #302 )
It adds a menu (skip, forward icon) that allows you to add a comma separated list of Ignored Components.
It works well when view is not in grouped mode
I have a concern about pcbdata.bom.skipped entri, since in the current state you have to remove the entries in pcbdata.bom.both|front|back
(it looks like skipped is not really used, except fr stats mayybe ??)
I added a filter in populateTable / entries

Sorry, I don't think I can merge this for the following reasons:

It doesn't affect grouped view which it intuitively should
The feature has a very narrow use case. Usually users will just specify the exclude list at bom generation time.
It introduces one more menu to the top row which is already near it's limits in terms of easy UI navigation and what can fit on narrow/mobile displays.

First reason can be fixed, the others not so much.
This feature is a perfect use case for the user customization. If you can reformat your change into user* files I'll add this as an example to Customization wiki.


Locks not showing in homekit

I have the tesla integration and HomeKit integration. Any ideas why the trunk/frunk and door locks are not populating?

You need to add a new HomeKit integration only including 'lock' domains. It will create a new HomeKit accessory, and then new accessories for each relevant lock for the car. You can individually add the locks from the QR codes created in notifications.

I don't use homekit but I assume this was resolved. Thanks @lankthedank


Day80: LeetCode-811. Subdomain Visit Count - HashTable

Subdomain Visit Count
https://leetcode.com/problems/subdomain-visit-count/
A website domain "discuss.leetcode.com" consists of various subdomains. At the top level, we have "com", at the next level, we have "leetcode.com" and at the lowest level, "discuss.leetcode.com". When we visit a domain like "discuss.leetcode.com", we will also visit the parent domains "leetcode.com" and "com" implicitly.
A count-paired domain is a domain that has one of the two formats "rep d1.d2.d3" or "rep d1.d2" where rep is the number of visits to the domain and d1.d2.d3 is the domain itself.
For example, "9001 discuss.leetcode.com" is a count-paired domain that indicates that discuss.leetcode.com was visited 9001 times.
Given an array of count-paired domains cpdomains, return an array of the count-paired domains of each subdomain in the input. You may return the answer in any order.

Example 1:
Input: cpdomains = ["9001 discuss.leetcode.com"]
Output: ["9001 leetcode.com","9001 discuss.leetcode.com","9001 com"]
Explanation: We only have one website domain: "discuss.leetcode.com".
As discussed above, the subdomain "leetcode.com" and "com" will also be visited. So they will all be visited 9001 times.
Example 2:
Input: cpdomains = ["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]
Output: ["901 mail.com","50 yahoo.com","900 google.mail.com","5 wiki.org","5 org","1 intel.mail.com","951 com"]
Explanation: We will visit "google.mail.com" 900 times, "yahoo.com" 50 times, "intel.mail.com" once and "wiki.org" 5 times.
For the subdomains, we will visit "mail.com" 900 + 1 = 901 times, "com" 900 + 50 + 1 = 951 times, and "org" 5 times.


integration test "provider not configured" error

integration test crashes with "Error: provider not configured: you must configure a path to your kubeconfig or explicitly supply credentials via the provider block or environment variables."
problem was traced to this commit in coda-automation
https://github.com/MinaProtocol/coda-automation/commit/141db8821a133501d3d4ed9b739fcad1f9b88bef

result of running terraform plan:
`helenl1@artful-machine:~/work/mina/coda-automation/terraform/testnets/ci-net$ /home/helenl1/work/terraform_0.12.29_linux_386/terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:

create
<= read (data resources)

Terraform will perform the following actions:
module.ci_testnet.data.local_file.genesis_ledger will be read during apply
(config refers to values not yet known)
<= data "local_file" "genesis_ledger"  {
+ content        = (known after apply)
+ content_base64 = (known after apply)
+ filename       = "genesis_ledger.json"
+ id             = (known after apply)
}
module.ci_testnet.helm_release.archive_node[0] will be created

resource "helm_release" "archive_node" {

atomic                     = false
chart                      = "archive-node"
cleanup_on_fail            = false
create_namespace           = false
dependency_update          = false
disable_crd_hooks          = false
disable_openapi_validation = false
disable_webhooks           = false
force_update               = false
id                         = (known after apply)
lint                       = false
max_history                = 0
metadata                   = (known after apply)
name                       = "archive-node-1"
namespace                  = "ci-net"
recreate_pods              = false
render_subchart_notes      = true
replace                    = false
repository                 = "https://coda-charts.storage.googleapis.com"
reset_values               = false
reuse_values               = false
skip_crds                  = false
status                     = "deployed"
timeout                    = 300
values                     = (known after apply)
verify                     = false
version                    = "0.4.3"
wait                       = false
}

module.ci_testnet.helm_release.archive_node[1] will be created

resource "helm_release" "archive_node" {

atomic                     = false
chart                      = "archive-node"
cleanup_on_fail            = false
create_namespace           = false
dependency_update          = false
disable_crd_hooks          = false
disable_openapi_validation = false
disable_webhooks           = false
force_update               = false
id                         = (known after apply)
lint                       = false
max_history                = 0
metadata                   = (known after apply)
name                       = "archive-node-2"
namespace                  = "ci-net"
recreate_pods              = false
render_subchart_notes      = true
replace                    = false
repository                 = "https://coda-charts.storage.googleapis.com"
reset_values               = false
reuse_values               = false
skip_crds                  = false
status                     = "deployed"
timeout                    = 300
values                     = (known after apply)
verify                     = false
version                    = "0.4.3"
wait                       = false
}

module.ci_testnet.helm_release.block_producers will be created

resource "helm_release" "block_producers" {

atomic                     = false
chart                      = "block-producer"
cleanup_on_fail            = false
create_namespace           = false
dependency_update          = false
disable_crd_hooks          = false
disable_openapi_validation = false
disable_webhooks           = false
force_update               = false
id                         = (known after apply)
lint                       = false
max_history                = 0
metadata                   = (known after apply)
name                       = "ci-net-block-producers"
namespace                  = "ci-net"
recreate_pods              = false
render_subchart_notes      = true
replace                    = false
repository                 = "https://coda-charts.storage.googleapis.com"
reset_values               = false
reuse_values               = false
skip_crds                  = false
status                     = "deployed"
timeout                    = 600
values                     = (known after apply)
verify                     = false
version                    = "0.4.3"
wait                       = false
}

module.ci_testnet.helm_release.seed will be created

resource "helm_release" "seed" {

atomic                     = false
chart                      = "seed-node"
cleanup_on_fail            = false
create_namespace           = false
dependency_update          = false
disable_crd_hooks          = false
disable_openapi_validation = false
disable_webhooks           = false
force_update               = false
id                         = (known after apply)
lint                       = false
max_history                = 0
metadata                   = (known after apply)
name                       = "ci-net-seed"
namespace                  = "ci-net"
recreate_pods              = false
render_subchart_notes      = true
replace                    = false
repository                 = "https://coda-charts.storage.googleapis.com"
reset_values               = false
reuse_values               = false
skip_crds                  = false
status                     = "deployed"
timeout                    = 600
values                     = (known after apply)
verify                     = false
version                    = "0.4.3"
wait                       = false
}

module.ci_testnet.helm_release.snark_workers will be created

resource "helm_release" "snark_workers" {

atomic                     = false
chart                      = "snark-worker"
cleanup_on_fail            = false
create_namespace           = false
dependency_update          = false
disable_crd_hooks          = false
disable_openapi_validation = false
disable_webhooks           = false
force_update               = false
id                         = (known after apply)
lint                       = false
max_history                = 0
metadata                   = (known after apply)
name                       = "ci-net-snark-worker"
namespace                  = "ci-net"
recreate_pods              = false
render_subchart_notes      = true
replace                    = false
repository                 = "https://coda-charts.storage.googleapis.com"
reset_values               = false
reuse_values               = false
skip_crds                  = false
status                     = "deployed"
timeout                    = 600
values                     = (known after apply)
verify                     = false
version                    = "0.4.3"
wait                       = false
}

module.ci_testnet.kubernetes_namespace.testnet_namespace will be created

resource "kubernetes_namespace" "testnet_namespace" {

id = (known after apply)

metadata {

generation       = (known after apply)
name             = "ci-net"
resource_version = (known after apply)
self_link        = (known after apply)
uid              = (known after apply)
}
}

module.ci_testnet.kubernetes_role_binding.helm_release will be created

resource "kubernetes_role_binding" "helm_release" {

id = (known after apply)

metadata {

generation       = (known after apply)
name             = "admin-role"
namespace        = "ci-net"
resource_version = (known after apply)
self_link        = (known after apply)
uid              = (known after apply)
}

role_ref {

api_group = "rbac.authorization.k8s.io"
kind      = "ClusterRole"
name      = "admin"
}

subject {

api_group = (known after apply)
kind      = "ServiceAccount"
name      = "default"
namespace = "ci-net"
}
}

module.ci_testnet.null_resource.block_producer_key_generation will be created

resource "null_resource" "block_producer_key_generation" {

id = (known after apply)
}

module.ci_testnet.null_resource.block_producer_uploads will be created

resource "null_resource" "block_producer_uploads" {

id = (known after apply)
}

module.ci_testnet.null_resource.prepare_keys_for_deployment will be created

resource "null_resource" "prepare_keys_for_deployment" {

id = (known after apply)
}

Plan: 10 to add, 0 to change, 0 to destroy.

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.`

my local env
helenl1@artful-machine:~/work/mina$ env
SHELL=/bin/bash
SESSION_MANAGER=local/artful-machine:@/tmp/.ICE-unix/2022,unix/artful-machine:/tmp/.ICE-unix/2022
CAML_LD_LIBRARY_PATH=/home/helenl1/.opam/ocaml-base-compiler.4.07.1/lib/stublibs:/home/helenl1/.opam/ocaml-base-compiler.4.07.1/lib/ocaml/stublibs:/home/helenl1/.opam/ocaml-base-compiler.4.07.1/lib/ocaml
QT_ACCESSIBILITY=1
OCAML_TOPLEVEL_PATH=/home/helenl1/.opam/ocaml-base-compiler.4.07.1/lib/toplevel
COLORTERM=truecolor
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
XDG_MENU_PREFIX=gnome-
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LANGUAGE=en_US:en
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
LC_ADDRESS=en_US.UTF-8
GNOME_SHELL_SESSION_MODE=ubuntu
LC_NAME=en_US.UTF-8
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
AWS_DEFAULT_REGION=us-west-2
XMODIFIERS=@im=ibus
DESKTOP_SESSION=ubuntu
LC_MONETARY=en_US.UTF-8
SSH_AGENT_PID=1994
EDITOR=vim
GTK_MODULES=gail:atk-bridge
PWD=/home/helenl1/work/mina
NIX_PROFILES=/nix/var/nix/profiles/default /home/helenl1/.nix-profile
XDG_SESSION_DESKTOP=ubuntu
LOGNAME=helenl1
XDG_SESSION_TYPE=x11
MANPATH=:/home/helenl1/.nix-profile/share/man:/home/helenl1/.opam/ocaml-base-compiler.4.07.1/man
NIX_PATH=/home/helenl1/.nix-defexpr/channels
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
XAUTHORITY=/run/user/1000/gdm/Xauthority
GOOGLE_CLOUD_KEYFILE_JSON=/home/helenl1/work/o1labs-gcp-192920-cd2c1759278d.json
OPAM_SWITCH_PREFIX=/home/helenl1/.opam/ocaml-base-compiler.4.07.1
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
WINDOWPATH=2
HOME=/home/helenl1
USERNAME=helenl1
IM_CONFIG_PHASE=1
LC_PAPER=en_US.UTF-8
LANG=en_US.UTF-8
LS_COLORS=
XDG_CURRENT_DESKTOP=ubuntu:GNOME
VTE_VERSION=6003
NIX_SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/cbc6d538_294f_4c1d_ba65_bdde4caec71f
AWS_SECRET_ACCESS_KEY=
INVOCATION_ID=38d590a5135d4975840dd41abac8169e
MANAGERPID=1818
GJS_DEBUG_OUTPUT=stderr
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
TERM=xterm-256color
LC_IDENTIFICATION=en_US.UTF-8
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
LESSOPEN=| /usr/bin/lesspipe %s
USER=helenl1
GNOME_TERMINAL_SERVICE=:1.154
VISUAL=vim
DISPLAY=:1
SHLVL=1
AWS_ACCESS_KEY_ID=
LC_TELEPHONE=en_US.UTF-8
QT_IM_MODULE=ibus
LC_MEASUREMENT=en_US.UTF-8
PAPERSIZE=letter
XDG_RUNTIME_DIR=/run/user/1000
LC_TIME=en_US.UTF-8
JOURNAL_STREAM=9:45752
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
PATH=/home/helenl1/.opam/ocaml-base-compiler.4.07.1/bin:/home/helenl1/.cargo/bin:/home/helenl1/.nix-profile/bin:/home/helenl1/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GDMSESSION=ubuntu
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
LC_NUMERIC=en_US.UTF-8
OLDPWD=/home/helenl1
_=/usr/bin/env


[flutter_test] Add flag to send device pointer events to the framework

#107976 was an alternative to overcome the limitation of how pointer events from adb shell input and other physical taps cannot be received by the app.
The reason for this limitation is that these events surface as TestBindingEventSource.device, and are not propagated to the actual gesture handlers when TestWidgetsFlutterBinding is used. Specifically for LiveTestWidgetsFlutterBinding, these events result in a diagnostic message on finders that can be used to interact with widgets at the location of the tap.
This PR adds a shouldPropagateDevicePointerEvents flag to send these pointer events to the actual gesture handlers when it is true, so customer: money will be able to use adb shell input to control the app in tests.
Fixes #107934
b/239762849
Pre-launch Checklist

[x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
[x] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
[x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
[x] I signed the [CLA].
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is [test-exempt].
[x] All existing and new tests are passing.

I haven't had time to add the tests yet, but @dnfield @goderbauer do let me know what you think about this approach in the meantime 🙂.
cc @HelioStrike

Ping :)

If customer: money wants to test their native views, they might want to check out Patrol.


Godot 4: LightOccluder2D leaks when using Vulkan renderer

Godot version
4.0
System information
Windows 10, GTX 1070, Vulkan Forward+ and Mobile
Issue description
LightOccluder2D leaks on project/game exit when running on Vulkan (Forward+ & Mobile):

Steps to reproduce

Add a LightOccluder2D node.
Construct an OccluderPolygon2D.
run project and exit.
Observe leak.

Minimal reproduction project
N/A

The code for freeing all seems to be there, so someone needs to investigate why its not getting called.
Called from renderer_canvas_cull
https://github.com/godotengine/godot/blob/c1128e911ccd6f1e8c35646df804d894652a58f1/servers/rendering/renderer_canvas_cull.cpp#L2223
Calls into renderer_canvas_render_rd
https://github.com/godotengine/godot/blob/c1128e911ccd6f1e8c35646df804d894652a58f1/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp#L2690
Calls occluder_polygon_set_shape() which should delete the old buffers:
https://github.com/godotengine/godot/blob/c1128e911ccd6f1e8c35646df804d894652a58f1/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp#L1869-L1881

Looks like this is actually a duplicate of https://github.com/godotengine/godot/issues/53722. Closing so we can track the issue in one place


Update code owners for cosmos

@kushagraThapar Anyone else you would like to add here? This entry controls who gets added as code reviewers on a PR that touches any of the files in the cosmos JS SDK

/check-enforcer override

@kushagraThapar If there is no one else you need here at the moment, can you approve the PR?

❤


iptables

implement iptables rules for NAT and MASQ setup.  At this time, no tear
down is being proposed.
Signed-off-by: Brent Baude<EMAIL_ADDRESS>

/lgtm


Detect if Virtual Machine is offline

Right now Kitematic just stops responding if the VM goes offline or is deleted. There should be better detection and error messages for this.

+1!

Perhaps this should go into where KM should have better timeout;


Fix typo in manual

It took me forever to figure out why vim mode wasn't working, and all because the manual said to set the "keymap" option and not the "keyMap" option. I also added quotes to make it clear that "vim" is a string.

Thanks for taking the time time submit a PR and protecting the next person from getting confused. Merged as 188ae75


Please update the code in README 5.

The README file still shows the old (broken) code.   Below "mappings", "doc" has been changed to "properties", but this is not reflected in the README.
Current README
PUT /amazon_products_with_features
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "analysis": {
      "analyzer": {}
    }
  },
  "mappings": {
    "doc": {
      "id": {
        "type": "keyword"
      },

Should be:
PUT /amazon_products_with_features
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "analysis": {
      "analyzer": {}
    }
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "keyword"
      }

@Sturzgefahr Can you please specify which chapters README file because in default one and in the chapter 5's .txt file I can not find such instance.
Thank you


PHP tutorial #3 (publish/subcribe) binding failure

Hi folks. Just getting started with RabbitMQ so I thought I'd give your splendid tutorials a shot, using PHP. First two tutorials went by without a problem. Now I'm at the end of the third PHP tutorial and logs are not being received.
Then I switched to Python and everyhing worked right off the bat. Maybe it's a php-amqplib problem (I'm using latest / 2.10), or is it a tutorial problem? I'm downloading the PHP and Python scripts right from github.
Here's some extra info (PHP)
$ sudo rabbitmqctl list_bindings
Listing bindings for vhost /...
source_name	source_kind	destination_name	destination_kind	routing_key	arguments
	exchange	task_queue	queue	task_queue	[]
	exchange	hello	queue	hello	[]

And the same command for Python
$ sudo rabbitmqctl list_bindings
Listing bindings for vhost /...
source_name	source_kind	destination_name	destination_kind	routing_key	arguments
	exchange	task_queue	queue	task_queue	[]
	exchange	hello	queue	hello	[]
	exchange	amq.gen-Pw4ktidN_Gc-5wwNCodabg	queue	amq.gen-Pw4ktidN_Gc-5wwNCodabg	[]
logs	exchange	amq.gen-Pw4ktidN_Gc-5wwNCodabg	queue	amq.gen-Pw4ktidN_Gc-5wwNCodabg	[]

I was using a wrong version of receive_logs.php... my bad!


The ' must be escaped in the "generated" code, otherwise syntax error.

Fixes an issue with the plugin generated from 'skpm init'

good catch, thanks!