IBFT PoS V3

Description
Please provide a detailed description of what was done in this PR
Changes include

[ ] Bugfix (non-breaking change that solves an issue)
[ ] New feature (non-breaking change that adds functionality)
[ ] Breaking change (change that is not backwards-compatible and/or changes current functionality)

Breaking changes
Please complete this section if any breaking changes have been made, otherwise delete it
Checklist

[ ] I have assigned this PR to myself
[ ] I have added at least 1 reviewer
[ ] I have tested this code
[ ] I have updated the README and other relevant documents (guides...)
[ ] I have added sufficient documentation both in code, as well as in the READMEs

Additional comments
Please post additional comments in this section if you have them, otherwise delete it

Closed and archived with tag archive/ibft--pos-v3
https://github.com/0xPolygon/polygon-sdk/releases/tag/archive%2Fibft-pos-v3


Peggy contracts tests

Can you check if the contracts are correct ? During testing I came up with various errors:

test/peggy.js:

TypeError: Cannot read property 'length' of undefined
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:30313:32
      at SolidityTypeAddress.SolidityType.encode (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:30324:11)
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:63949:29
      at Array.map (<anonymous>)
      at SolidityCoder.encodeParams (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:63948:34)
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:326828:22
      at Array.map (<anonymous>)
      at encodeConstructorParams (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:326827:8)
      at ContractFactory.new (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:326992:21)
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:316411:30
      at new Promise (<anonymous>)
      at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:316381:16
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:160:7)

tests/valset.js: when I call verifyValidators(bytes32 hash, uint[] signers, uint8[] v, bytes32[] r, bytes32[] s) the signature array is empty for some reason. This also prevents the update(address[] newAddress, uint64[] newPowers, uint[] signers, uint8[] v, bytes32[] r, bytes32[] s) function and tests to behave accordingly.

@fedekunze can you merge develop in once you are done.


Adding well-known prefix to encoded multiline strings

Fixes #36
Adds a "well-known prefix" and hex encodes any incoming multiline string sent to Set(). Updates Get() to only decode when the well-known prefix is present.
Warning: This implementation will corrupt any existing multiline strings already in the keychain! On the plus side, it should un-corrupt any non-multiline strings that are currently being corrupted by #36.
Kudos to @jaroslaw-bochniak for the tests.

:+1:

:+1:


ingress: move flag ingress-default-xff-num-trusted-hops to cell config

This commit moves the Cilium Operator flag ingress-default-xff-num-trusted-hops from the global Operator Config struct into the config struct of the corresponding Ingress hive cell.

/test


feature: Upsync Endpoints

Upsync Endpoints related to a Service, so that the standard KNative Service can find the Endpoints related to a deployment, and know that an Application is effectively being served.

Is this KNative specific? Are we building a KNative-specific upsyncer? How does this plug into a broader model?

We're definitely not building a KNative-specific upsyncer. However we know (and knative is an example) that a number of controllers may rely on the existence of an Endpoints resource beside the corresponding service as a proof that the service is effectively serving at least one Pod.
So upsyncing Endpoints is part of bringing more of Transparent in TMC.
Of course we could depend on some generic annotation on the synced service, or some configuration on the Syncer side, to opt-in / opt-out from this upsyncing

cc @lionelvillard

Of course we could depend on some generic annotation on the synced service, or some configuration on the Syncer side, to opt-in / opt-out from this upsyncing

@sttts @lionelvillard  wdyt of this ? Should we introduce some sort of Syncer parameters to defining a set of service annotations that will trigger the Upsyncing of the related Endpoints resource ?

It feels to me the parameters should be set on the placement object requesting the location to upsync the Endpoints.
The basic flow is this one:

create a new workspace
install Knative (or any controllers)
bind (or place) the workspace to an existing workload workspace and ask to upsync endpoints (or any resources that needs to be upsynced). For Knative specifically, ideally only endpoints associated to Knative services must be upsynced. Maybe a label selector can be used, I don't know. I'll have to check.


Issue with sample script

The sample PowerShell script for updating the MySQL RP has some kind of format/character issue. You can tell by the different color of -DefaultSSLCertificatePassword parameter (line 40) . If you copy and past it to PowerShell ISE that too shows a different color. You can resolve the issue by removing the backtick( ` ) at the end of the -AzureEnvironment $AzureEnvironment line 39.
If you run the scrip as is it will start, but you will be prompted for every parameter, even if you already filled it out (and accept the EULA). You will ultimately get an error and the deployment will fail due to a failure to deploy the MySQLAdapter. An Azure Stack Operator will be able to verify the failure is due to "Deployment template validation failed: 'The provided value for the template parameter 'setupPfxPassword' at line '121' and column '29' is not valid.'."
I had a successful upgrade by collapsing the parameters into a single line and was not prompted for any further input.

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

ID: 4b377dc6-ab2b-9f37-41a6-c0142bc0529a
Version Independent ID: 71f3378d-6db4-6941-4514-7ff63a9c5adc
Content: Update the MySQL resource provider in Azure Stack Hub - Azure Stack Hub
Content Source: azure-stack/operator/azure-stack-mysql-resource-provider-update.md
Service: azure-stack
GitHub Login: @BryanLa
Microsoft Alias: bryanla

@jamesorlando - thanks very much for your contribution, in spotting and reporting this.
It appears to have been caused by the fact that $PfxPass `  was missing a trailing space, after the backtick character. I've tested in our test environment. I have not tested the execution of the script, but it it resolves the color formatting issue. I'll be redeploying the revised article at 3pm Pacific today.

#please-close


⚠ Bofrost.be has degraded performance

In f3f1c91, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1585 ms

Resolved: Bofrost.be performance has improved in 0fa0601 after 6 minutes.


feat(cheatcodes): add vm.setBlockhash

Motivation
Closes #7929
Solution

hi @mattsse @DaniPopes, could you guide me how to run the integration test. when I run forge test it show the error :
Encountered invalid solc version in cancun/cheats/BlobBaseFee.t.sol: No solc version exists that matches the version requirement: ^0.8.25
Encountered invalid solc version in cancun/cheats/Blobhashes.t.sol: No solc version exists that matches the version requirement: ^0.8.25
Encountered invalid solc version in default/fork/DssExecLib.sol: No solc version exists that matches the version requirement: >=0.6.12, <0.7.0
Encountered invalid solc version in default/fork/LaunchFork.t.sol: No solc version exists that matches the version requirement: ^0.6.12
Encountered invalid solc version in default/fuzz/FuzzCollection.t.sol: No solc version exists that matches the version requirement: =0.8.15
Encountered invalid solc version in default/spec/ShanghaiCompat.t.sol: No solc version exists that matches the version requirement: =0.8.20
Encountered invalid solc version in multi-version/Importer.sol: No solc version exists that matches the version requirement: =0.8.17
Encountered invalid solc version in multi-version/cheats/GetCode17.t.sol: No solc version exists that matches the version requirement: =0.8.17

Sorry this is my first time contributing to Foundry, I haven't setup my formatter properly which cause ci fails. Thank you for your patience.

@TropicalDog17 No problem, thanks for contributing! Could you please enable "allow edits from maintainers" on the right side bar?

Hey @DaniPopes unfortunately this PR is coming from an organization-owned fork, which as I know doesn't have the allow edits from maintainers option. Could you provide the needed changes and I will update the PR asap. Thanks!

@TropicalDog17 could you please rebase/merge master?

Here's the patch I wanted to apply. This should fix the remaining tests.
diff --git a/crates/cheatcodes/src/evm.rs b/crates/cheatcodes/src/evm.rs
index b005ac54ab..bb6867fb39 100644
--- a/crates/cheatcodes/src/evm.rs
+++ b/crates/cheatcodes/src/evm.rs
@@ -569,15 +569,12 @@ impl Cheatcode for stopAndReturnStateDiffCall {

 impl Cheatcode for setBlockhashCall {
     fn apply_stateful<DB: DatabaseExt>(&self, ccx: &mut CheatsCtxt<DB>) -> Result {
-        let Self { blockNumber, blockHash } = self;
-        let block_number: U256 = *blockNumber;
+        let Self { blockNumber, blockHash } = *self;
         ensure!(
-            block_number <= ccx.ecx.env.block.number,
+            blockNumber <= ccx.ecx.env.block.number,
             "block number must be less than or equal to the current block number"
         );
-
-        ccx.ecx.db.set_blockhash(*blockNumber, *blockHash);
-
+        ccx.ecx.db.set_blockhash(blockNumber, blockHash);
         Ok(Default::default())
     }
 }
diff --git a/crates/evm/core/src/backend/cow.rs b/crates/evm/core/src/backend/cow.rs
index 7355d08e95..203ea97056 100644
--- a/crates/evm/core/src/backend/cow.rs
+++ b/crates/evm/core/src/backend/cow.rs
@@ -246,7 +246,7 @@ impl<'a> DatabaseExt for CowBackend<'a> {
     }

     fn set_blockhash(&mut self, block_number: U256, block_hash: B256) {
-        self.backend.to_mut().mem_db().to_owned().block_hashes.insert(block_number, block_hash);
+        self.backend.to_mut().set_blockhash(block_number, block_hash);
     }
 }

diff --git a/crates/evm/core/src/backend/mod.rs b/crates/evm/core/src/backend/mod.rs
index b09ced1057..48f4aa4b35 100644
--- a/crates/evm/core/src/backend/mod.rs
+++ b/crates/evm/core/src/backend/mod.rs
@@ -331,7 +331,7 @@ pub trait DatabaseExt: Database<Error = DatabaseError> + DatabaseCommit {
         Ok(())
     }

-    /// set the blockhash for the given block number
+    /// Set the blockhash for the given block number.
     fn set_blockhash(&mut self, block_number: U256, block_hash: B256);
 }

@@ -1375,7 +1375,11 @@ impl DatabaseExt for Backend {
     }

     fn set_blockhash(&mut self, block_number: U256, block_hash: B256) {
-        self.mem_db.block_hashes.insert(block_number, block_hash);
+        if let Some(db) = self.active_fork_db_mut() {
+            db.block_hashes.insert(block_number, block_hash);
+        } else {
+            self.mem_db.block_hashes.insert(block_number, block_hash);
+        }
     }
 }

diff --git a/crates/forge/tests/it/invariant.rs b/crates/forge/tests/it/invariant.rs
index 537569745a..06637f8e56 100644
--- a/crates/forge/tests/it/invariant.rs
+++ b/crates/forge/tests/it/invariant.rs
@@ -391,7 +391,7 @@ async fn test_shrink_fail_on_revert() {
     runner.test_options.fuzz.seed = Some(U256::from(119u32));
     runner.test_options.invariant.fail_on_revert = true;
     runner.test_options.invariant.runs = 1;
-    runner.test_options.invariant.depth = 100;
+    runner.test_options.invariant.depth = 1000;

     match get_counterexample!(runner, &filter) {
         CounterExample::Single(_) => panic!("CounterExample should be a sequence."),
diff --git a/testdata/default/cheats/SetBlockhash.t.sol b/testdata/default/cheats/SetBlockhash.t.sol
index 76ca854b67..f6c2af5f66 100644
--- a/testdata/default/cheats/SetBlockhash.t.sol
+++ b/testdata/default/cheats/SetBlockhash.t.sol
@@ -9,8 +9,8 @@ contract SetBlockhash is DSTest {

     function testSetBlockhash() public {
         bytes32 blockHash = 0x1234567890123456789012345678901234567890123456789012345678901234;
-        vm.setBlockhash(1, blockHash);
-        bytes32 expected = blockhash(1);
+        vm.setBlockhash(block.number - 1, blockHash);
+        bytes32 expected = blockhash(block.number - 1);
         assertEq(blockHash, expected);
     }
 }

We also have to document that blockhash(n) will still respect the EVM limits that it will only work for block.number - 256 ..= block.number - 1

Could you please push one more commit (empty or otherwise)? GitHub Actions was broken yesterday

one last thing is cargo cheats to update the spec


Landscape

Does weird things when starting in landscape and then rotate to portrait and back and forth
Again it has to be presented in landscape initially to start

Here's how I resolve this issue:
In EPCalendarPicker.swift add this:
`    override public func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
    coordinator.animateAlongsideTransition({ (context) in
        self.collectionView?.reloadData()

        }, completion: nil)
}`


Update to Sodium 0.5.8 and Minecraft 1.20.5

Nothing really much changed. just the gradle.properties and the fabric.mod.json.
Anyway, last time I made an unofficial ported version of Indium some experienced rendering issues with glass blocks in water??? so here's a preview with this ported version and Continuity connected glass.

And here's a compiled jar as always!
indium-1.0.30-dev.c8648d2+mc1.20.5-dirty.jar

Indium already works with Minecraft 1.20.5 - I've updated the Modrinth and CurseForge pages appropriately.


Documentation errors in R.swap examples

There are two errors in the documentation of R.swap examples.
Reference:
https://ramdajs.com/docs/#swap
First error:
R.swap(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'b', 'c', 'd', 'e', 'a'] list rotation

This is not list rotation. Rotating the list would result in ['b', 'c', 'd', 'e', 'f', 'a'].
Second error:
R.swap('a', 'b', {a: 1, b: 2}); //=> {a: 2, b: 2}

The result is incorrect, it should be {a: 2, b: 1}.
Thanks!

Thank you for the issue, agreed on both! Would you like to submit a PR?

@kedashoe With pleasure. PR submitted.

https://github.com/ramda/ramda/pull/3368


Update google-auth-library-oauth2-http to 1.6.0

Updates com.google.auth:google-auth-library-oauth2-http from 1.3.0 to 1.6.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Files still referring to the old version number
The following files still refer to the old version number (1.3.0).
You might want to review and update them manually.
build.sbt
docs/changelog.md

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.google.auth", artifactId = "google-auth-library-oauth2-http" } ]

labels: library-update, early-semver-minor, semver-spec-minor, old-version-remains, commit-count:1

Superseded by #354.


[Portal] Explore giving more control for layering

We currently apply the maximum z-index on portals and have had a few requests to allow more control here. This ticket is to explore ways of allowing that for a few reasons:

People have requested it
Can only override all portal instances via the data-radix-portal attribute atm
Other Radix components provide an API to control things (consistency)
The data-radix-portal attribute is an inconsistent escape hatch that we removed from other comps

An initial discussion on this topic provided a couple ideas:

A layer/zIndex prop for portalled parts, e.g. <DialogContent layer={3}>
~A Portal provider part exposed per component that provides its props to the internal portal, e.g. <DialogPortal style={{ zIndex: 3 }}><DialogContent /></DialogPortal>. The provider suggestion is because we need control internally of how/where/when the portal is rendered.~
Expose a Portal part for people to wrap when they want portals, e.g. Dialog.Portal. Examples.
Use Slot internally on the Portal. This would reduce elements rendered as an additional win but it wouldn't work with:

Popper based parts because popper wraps its own additional div for positioning
Parts that use https://github.com/theKashey/react-remove-scroll because portal needs to wrap the RemoveScroll part for it to work, and RemoveScroll isn't slot-aware.

Any more for any more?

This is great! Thanks!
One other reason why this is tricky is because most (if not all) of these components have Presence and the concept of a XxxImpl and the Portal needs to be inside the XxxImpl rather than inside the XxxContent to avoid it being rendered at all times.

and the Portal needs to be inside the XxxImpl rather than inside the XxxContent to avoid it being rendered at all times.

On this, I was just about to ask why we need the provider thing also. Because, like all parts we expose, we can control when/how they render still and if they're wrapping it around DialogContent then it will always be around RemoveScroll which solves that ordering issue.
Pseudo-code:
const DialogPortal = (props) => {
	return <Presence present={forceMount || context.open}><Portal {...props} /></Presence>
}

const DialogContent = (props) => {
	const forceMount = context.isInsidePortal || props.forceMount;
	return <Presence present={forceMount || context.open}><DialogContentImpl {...props} /></Presence>
}

And then we'd conditionally render the portal for them inside DialogContentImpl if !context.isInsidePortal?

Why do we need to conditionally render the Portal for them if the DialogPortal renders it?

Ha ok, you're talking about them always having to render the DialogPortal part then?

Yep, same way we make them always have to render Dialog.Content or Dialog.Trigger. Annoying thing there though is that if they want all their dialogs to portal they would have to wrap into their own parts:
export const DialogOverlay = (props) => {
	return <DialogPrimitive.Portal><DialogPrimitive.Overlay {...props} /></DialogPrimitive.Portal>;
}

export const DialogContent = () => {
	return <DialogPrimitive.Portal><DialogPrimitive.Content {...props} /></DialogPrimitive.Portal>;
}

Which isn't ideal, BUT, it does give them the control to do this https://github.com/radix-ui/primitives/discussions/345
Also, most people will want to close over things like Tooltip but we don't worry about it there.

It's definitely a DX concern. If we were to make all components that can be portalled have to render the portal part, then yes DX wise there's more work to do for each of those.

Yep agreed, that's why we've always avoided this historically and why I suggested the prop but I'm starting to wonder if it's that big of a deal. Most of our parts are required for the majority of use-cases but we always make folks have to render them too, it's an open API.
The docs would just provide examples they could copy/paste as always.
<Dialog.Root>
  <Dialog.Trigger>Open</Dialog.Trigger>
  <Dialog.Portal><Dialog.Overlay /></Dialog.Portal>
  <Dialog.Portal><Dialog.Content /></Dialog.Portal>
</Dialog.Root>

<Dialog.Root>
  <Dialog.Trigger>Open</Dialog.Trigger>
  <Dialog.Portal>
    <Dialog.Overlay>
      <Dialog.Content />
    </Dialog.Overlay>
  </Dialog.Portal>
</Dialog.Root>

I dunno... I was against it before but starting to re-consider. It aligns so much better with my opinions on composability. I've always been against boolean props that render parts for this reason because obviously, if we just give the parts to consumers they can choose when to enable them and where to wrap them.
Would still like to see what else we can come up with though. I feel like the Slot approach would be the ideal when we build our own RemoveScroll but I dunno how we get around the Popper issue. Perhaps we just need to do some thinking there?

Another benefit of providing separate Portal parts for our components:
https://discord.com/channels/752614004387610674/803656530259738674/872829639742078976

Coming here from this: https://discord.com/channels/752614004387610674/875105353568768010/875333950392926238
I would absolutely be in favor of the Portal!
My use case is to be able to center <Dialog.Content /> without the transform method.

Someone wanted to achieve a grid layout with Dialog but isn't able to because we don't give them control of how the Overlay and Content are composed: https://discord.com/channels/752614004387610674/803656530259738674/881179052692602881
Exposing the Dialog.Portal as a separate part would solve this for them.

@MildTomato Is there a particular bug you're experiencing?

Sorry - i think i was using older version of both Dialog and Dropdown (or maybe just 1 of them).
Thanks for checking though 🚀 💯

Ran into a similar layout issue. I wanted to render a sidebar dialog, but it can't have the highest z-index and it needs to fill the height of a container. Dialogs couldn't work because the default portal can't be turned off, and Popover is too difficult for this scenario since it depends on an anchor and I can't turn off positioning.

While @vladmoroz was building the new primitives docs site he wanted to inject the dialog into a different container instead of the body. The Portal has a containerRef prop for this purpose but he cannot use it because we don't expose it to consumers. Instead, he will have to use an iframe so preventing this part from being exposed is introducing unnecessary complexity for him.

I would also love to see this. My use case is that I have a form inside a dialog; if form submission fails, I show an error message in a toast widget [which is more consistent with the rest of our UI than putting the error message inside the dialog content]. Right now, the dialog overlay is covering up the toast, which obviously needs to be on top.

@jjenzz YES!

For my tooltips I need to control where the tooltip portal renders. So more control would be really nice here

Can we do this for Dropdown as well? I have a dropdown that has drag-n-drop list inside it, and during dragging i have a floating item that needs to be layered above the Dropdown.

@sikanhe The plan is to do it for all of our portalled components I believe.

Exploration was done, and validated with Dialog and AlertDialog.


Installation Error for SuperReads

Hi,
I was able to build and install stringtie.
However, when I am trying to install SuperRead. I given following error messages. Please suggest how to fix the issues
SuperReadsR/gtest.mk:15: library used but `RANLIB' is undefined
SuperReadsR/gtest.mk:15:   The usual way to define `RANLIB' is to add `AC_PROG_RANLIB'
SuperReadsR/gtest.mk:15:   to `configure.ac' and run `autoconf' again.
SuperReadsR/Makefile.am:188:   `SuperReadsR/gtest.mk' included from here
jellyfish/gtest.mk:5: Libtool library used but `LIBTOOL' is undefined
jellyfish/gtest.mk:5:   The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
jellyfish/gtest.mk:5:   to `configure.ac' and run `aclocal' and `autoconf' again.
jellyfish/gtest.mk:5:   If `AC_PROG_LIBTOOL' is in `configure.ac', make sure
jellyfish/gtest.mk:5:   its definition is in aclocal's search path.
jellyfish/Makefile.am:216:   `jellyfish/gtest.mk' included from here
quorum/gtest.mk:5: Libtool library used but `LIBTOOL' is undefined
quorum/gtest.mk:5:   The usual way to define `LIBTOOL' is to add `AC_PROG_LIBTOOL'
quorum/gtest.mk:5:   to `configure.ac' and run `aclocal' and `autoconf' again.
quorum/gtest.mk:5:   If `AC_PROG_LIBTOOL' is in `configure.ac', make sure
quorum/gtest.mk:5:   its definition is in aclocal's search path.
quorum/Makefile.am:111:   `quorum/gtest.mk' included from here
autoreconf: automake failed with exit status: 1

Autoconf/2.69-goolf-1.4.10 is in path as mentioned.
It looks like that some library is needed and its not able to find.
While building StringTie  required GCC compiler was loaded all went fine.
Thanks!

Got it resolved. Some GCC libraries were not available. In the module. Changes the appropriate module and it worked out.

Hello!
We have managed to partially solve the same problem by installing libtool. However, the following error keeps rising. It is related somehow with swig and jellyfish. By the way, it also happened when we tried to install masurca from source code. The installation of swig didn't solve the problem.
Here is the error. Any help would be appreciated (with some detailed explanation please :) )
[...]
swig/perl5/swig_wrap.cpp:322:10: fatal error: string.h: No such file or directory
  322 | #include <string.h>
      |          ^~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:1656: swig/perl5/swig_perl5_jellyfish_la-swig_wrap.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/jellyfish'
make[1]: *** [Makefile:2435: install] Error 2
make[1]: Leaving directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/jellyfish'
Making install in ufasta pwd /media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1
make[1]: Entering directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/ufasta'
make  install-am
make[2]: Entering directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/ufasta'
make[3]: Entering directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/ufasta'
make[3]: Nothing to be done for 'install-data-am'.
 /usr/bin/mkdir -p '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/bin'
  /bin/bash ../libtool   --mode=install /usr/bin/install -c ufasta '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/bin'
libtool: install: /usr/bin/install -c ufasta /media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/bin/ufasta
make[3]: Leaving directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/ufasta'
make[2]: Leaving directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/ufasta'
make[1]: Leaving directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/ufasta'
Making install in quorum pwd /media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1
make[1]: Entering directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/quorum'
make  install-am
make[2]: Entering directory '/media/raul/DiscDur/Programs/stringtie-2.2.1/SuperReads_RNA/global-1/quorum'
  CXX      src/error_correct_reads.o
  CXX      src/create_database.o
  CXX      src/merge_mate_pairs.o
  CXX      src/split_mate_pairs.o
src/create_database.cc:23:10: fatal error: jellyfish/mer_dna.hpp: No such file or directory
   23 | #include <jellyfish/mer_dna.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:931: src/create_database.o] Error 1
make[2]: *** Waiting for unfinished jobs....
src/merge_mate_pairs.cc:4:10: fatal error: jellyfish/stream_manager.hpp: No such file or directory
    4 | #include <jellyfish/stream_manager.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:931: src/merge_mate_pairs.o] Error 1
src/error_correct_reads.cc:25:10: fatal error: jellyfish/atomic_gcc.hpp: No such file or directory
   25 | #include <jellyfish/atomic_gcc.hpp>

[...]

Thanks,


Swift 1.2 migration

Runs Xcode automatic migration to compile with Swift 1.2
Test target runs and passes 19 tests

I see only now that there are already 2 open PRs for the same thing. Closing this.


Can not  input in mobile phone browser with gotty

Can not  input in mobile phone browser with gotty ，Chrome

Hit the same problem here, Chrome can't recognize it as input area

This could be fixed by switching to xterm.js?
Let me know if there is a library that supports mobile web browsers.

https://github.com/tsl0922/ttyd
ttyd which use xterm.js  can be input  in  mobile phone browser  .

will be fixed in #147

Should be ok now. confirmed on Chrome on iPhone.

Was this resolved? It doesn't work for me on Chrome on iPhone.


Supporting multiple value types

This is just a question.
What if I want to support multiple value types beside integers in my bytecode VM.
• My first attempt was to create a Value interface and representing each type by a class that implement the Value interface, the problem is during the execution a lot of allocations happens (e.g. iterating 10000 times create 10000 object).
public interface Value {}
public class Int implement Value {}
• My second attempt was to use a byte array to store those types (int, long, float, double and boolean) to stick with primitives, but I run into a lot of limitations because of this approach. I've used this approach just to minimize the allocations during the execution of the program to only initializing those byte arrays.
Anyway both worked but the first approach is super flexible and accept changes without breaking code, so I think I'll stick with it, but do you have any suggestions about how to do this in a performant way?

Hi. Sorry, I haven't looked at this project in years and I don't have time to dig in. :(

I am just asking in general not specifically for this project, I'm just interested in bytecode interpreters and I wanna know.

Sorry. yeah, I don't even have time to think...

Aah thank you for your time. I'm sorry for bothering you (≧▽≦).


Adding the ability to convert nested JSONObjects & JSONArrays

Also parses Doubles into Ruby Floats.
Additionally, "null" responses from a JSON server response became "java.lang.JSONObject$1" objects so I added a bit of logic to make sure those became nils in Ruby.

Looks great - thanks so much!


Edits to QuickTC and polishing SERVO32 documentation

Summary
Brief explanation of the proposed changes.
Basic example
Include a basic example, screenshots, or links.
Motivation
Why are we doing this? What use cases does it support? What is the expected outcome?
Checks

[ ] Read Create a Pull Request
[ ] Supports all screen sizes (if relevant)
[ ] Supports both light and dark mode (if relevant)
[ ] Passes npm run test

LINT error:
[12](https://github.com/FactoryOptic/documentation/runs/7658250678?check_suite_focus=true#step:5:13)
content/en/docs3/getting started/charging.md:24 MD001/heading-increment/header-increment Heading levels should only increment by one level at a time [Expected: h3; Actual: h4]```

@cyunis - I fixed the heading on your branch. Merging.


[template-webpack-typescript] replace fork-ts-checker-webpack-plugin

Pre-flight checklist

[X] I have read the contribution documentation for this project.
[X] I agree to follow the code of conduct that this project uses.
[X] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Electron Forge version
7.4.0
Electron version
32.1.0
Operating system
Windows 11
Last known working Electron Forge version
No response
Expected behavior
In the @electron-forge/template-webpack-typescript, the fork-ts-checker-webpack-plugin dependency is removed and replaced with another dependency or is handled internally in forge.
No warnings in console log.
Actual behavior
Steps to reproduce

yarn init
yarn set version berry
yarn add @electron-forge/template-webpack-typescript
See Warning in the console log:➤ YN0002: │ @electron-forge/template-webpack-typescript@workspace:packages/template/webpack-typescript doesn't provide typescript (pd370b), requested by fork-ts-checker-webpack-plugin.
➤ YN0002: │ @electron-forge/template-webpack-typescript@workspace:packages/template/webpack-typescript doesn't provide webpack (p738c5), requested by fork-ts-checker-webpack-plugin.
➤ YN0002: │ electron-forge@workspace:. doesn't provide eslint-plugin-ava (pa3622), requested by @malept/eslint-config.

Additional information
Related #3635

I don't think removing this plugin is what we actually want.


Consider writing up a Data User Agreement and Data Processing Agreement for all of our users to sign to ensure we are following data protection laws

Need to make sure our system, its developers, and its users meet the requirements of data privacy frameworks, cybersecurity frameworks, and data protection laws as described in https://github.com/trendscenter/coinstac/issues/1699.

Similar to: https://ora.stanford.edu/resources/data-use-agreements

Definitely get gsu legal involved in this
I’m certain they will want their own legalese and compliance statements in
this
On Thu, Mar 9, 2023 at 16:22 Paul Prae @.***> wrote:

Similar to: https://ora.stanford.edu/resources/data-use-agreements
—
Reply to this email directly, view it on GitHub
https://github.com/trendscenter/coinstac/issues/1700#issuecomment-1462841916,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAY564WPTSTVIFUZ4MSPHALW3JCYHANCNFSM6AAAAAAVVUJZWU
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Agreed. We should also look into being GDPR compliant:
A data processing agreement (DPA) is a contract between a business (a data controller) and a service provider (a data processor), meant to ensure compliance with the GDPR. It stipulates the nature, purpose, and duration of data processing activities related to the main agreement between both sides.
https://gdpr.eu/what-is-data-processing-agreement/

Hi -- I think we need to be careful about what we can and cannot claim and what we do and do not provide. For example, are we a data holder?


Current nixos livedvd fails at stage 1 boot

I downloaded the current nixos dvd.
http://releases.nixos.org/nixos/unstable/nixos-14.02pre39344.42c083d/
It fails to get past stage 1 boot. There is a fatal modprobe error "Scsi-wait-scan not found".
The hardware is an AMD FX-8350 Eight-Core system with a Gigabyte 990FXA-UD3 motherboard and a MSI r7850  video card. I have successfully installed Ubuntu 13.10 on this hardware, so linux does in fact work with this hardware.

Okay, this is out of date. Close @jagajaga


New embed

Solve #354 and trivial things (add cases to prevent flood of warning, add fallback img for statuses as well). Biggest change is the debug engine. It was previously Oembed, now is changed to Iframely for more sophisticated result. Example of the effect, check tweet no. 2:

Old version on live: http://test.loklak.net/search?q=%23mozweekend
New version on my server: http://gofullstack.me:3001/search?q=%23mozweekend

In additions to rendering successfully the link, provider name of the articale is shown as well, e.g. SitePoint, Github etc

@sudheesh001  Please delete the branch after merging.


feat: Error When Trying to Load jesse.cb.id on Domains Page

Feature Request
When attempting to load the domain jesse.cb.id on the Domains page, an error is thrown, preventing users from viewing or interacting with the domain. The rest of the page loads as expected, but the domain details for jesse.cb.id fail to load correctly.
Acceptance Criteria:

[x] The domain jesse.cb.id should load properly on the Domains page without any errors.

how do you know it is working?

it doesn't seem to be working on the ENS dapp as well. we got to find another offchain domain to test it.

@pikonha you can use barmstrong.cb.id (CEO of Coinbase)

doesn't seem to be working

@pikonha Fixed it. You can try again now

https://dev.name.ful.xyz/domains/barmstrong.cb.id?tab=Profile

still unable to see it working on our dapp, although I can see it working on the ens dapp

@pikonha that's weird. It works here

and sometimes that happens with the ENS dApp


Update Typography

@frano-m I have some new numbers for typography in the styleguide. Seeing it live, some of my original numbers were too big.
I highlighted updates in blue. Didn't update some of the header styles, can you put all these styles on a page that I can take a look in browser?

@frano-m Can we make "m" the default copy rather than "l"?


Add support for ipyreact

shinywidgets version: 0.3.3
Python version: 3.9
Operating System: mac osx

Description
Currently, I'm using ipyreact to create interactive tables in reactable-py. ipyreact is built on Anywidget, and I noticed there's quak support here, but I was unable to get ipyreact react to work 😓 .
What I Did
Note that in the express app below, I could see a div prepared for the widget, but no content:
from shiny.express import ui, render
from ipyreact import Widget
from shinywidgets import render_widget

@render_widget
def out():
    return Widget(_type="button", children=["click me"], events={"onClick": print})

I double checked some of the shinywidgets._dependency pieces, and it looks like it's finding / loading the necessary javascript. However, I'm not what might be different about ipyreact here 😬
edit: updated example to import ipyreact first. importing after shiny widgets was causing an error (see #163)

After investigating this with @machow, we discovered ipyreact has it's own way of importing dependencies that only works for a Jupyter context (ipyreact.define_module). As long as that is avoided, ipyreact widgets do seem to render OK with shinywidgets.

I did some more digging, and wonder if this issue is related to #163.
It seems like the challenge is this:

ipyreact defines Modules to represent dependencies.
it doesn't make sense to render these in shiny, but if they're not rendered, they won't do their work (of registering dependencies)

Here's an example app, where explicitly rendering a Module representing reactable's javascript code allows it to be rendered.
from shiny.express import ui
from reactable import Reactable
from reactable.data import cars_93
from shinywidgets import render_widget
import ipyreact

# setup ----

from pathlib import Path
from importlib_resources import files

STATIC_FILES = files("reactable.static")
ui.include_css(Path(str(files("reactable.static") / "reactable-py.esm.css")))

# render the module in order to create the dependency -----
@render_widget
def out2():
    # normally this is just defined inside reactable-py, and picked up automatically
    # but explicitly rendering it registers dependency (but has side-effect of outputting UI)
    mod = ipyreact.define_module("reactable", Path(str(STATIC_FILES / "reactable-py.esm.js")))
    return mod

# table we want to render ----

@render_widget
def out():
    from shinywidgets._dependencies import jupyter_extension_destination, jupyter_extension_path

    Reactable(cars_93).to_widget()

I wonder if part of the issue with #163 is that ipyreact is instantiating widgets on import, which jupyter  (and by extension quarto) end up using.

@maartenbreddels is there any chance you might be able to help give a sense for how ipyreact handles the Module widgets created by ipyreact.define_module?
I'm trying to figure out what triggers their "rendering". I noticed that ipyreact.Widget has all the dependency Module names as the default for ipyreact.Widget._dependencies, but I'm not sure how those get picked up and rendered.
I'm loving ipyreact, and super close to getting reactable-py out the door! It works really nicely in solara, so I'm guessing there's some small piece I've overlooked here 😓.

I’m without a keyboard, but I can give some short hints. Solara avoids the global widgets by monkey patching define_module:
https://github.com/widgetti/solara/blob/master/solara/server/esm.py
https://github.com/widgetti/solara/blob/master/solara/server/patch.py (see patch_ipyreact)
https://github.com/widgetti/solara/blob/4cfc3a4adb95271db80249ddcfaaf78491cc093b/solara/server/app.py#L375
Maybe using the same code in shiny will also work. Good luck, I can elaborate more next week when I’m behind a keyboard again.
Regards,
Maarten

Ah, thanks -- this is helpful to see! Looking closer, I'm realizing that maybe the key here is what ipywidgets.Widget does on initialization. It looks like...

ipywidget.Widget sends a message about its state on initialization (via .open())
This is how ipyreact is able to create the js blob for each ipyreact.Module initialized (and add it to the import shim)

The issue comes then, because this is never run by py-shinywidgets, since...

shinywidgets comm runs via the ipywidget.Widget.on_widget_constructed hook, BUT
shinywidgets no-ops this during import, since the shiny app starts up after app code is run
and because there's no kernel, .open() no-ops on the ipywidget side

It sounds like, once it's ready, shinywidgets should run through all the widgets it no-op'd and run their on_widget_constructed hook (or something?).
I.e.

record the widget being skipped over on init in shinywidgets (here in this no-op code)
once ready, run init_shiny_widget() on each one.

Here's a minimal example using shiny's @reactive.calc to ensure the Module reactable-py needs runs its on construction hook, but without rendering it into the shiny app. Sorry this is so chaotic, but this was super helpful for wrapping my head around the ipywidgets lifecycle 😁 :
from shiny.express import ui
from shiny import reactive
from reactable import Reactable
from reactable.data import cars_93
from shinywidgets import render_widget
import ipyreact

from pathlib import Path
from importlib_resources import files

STATIC_FILES = files("reactable.static")

ui.include_css(Path(STATIC_FILES / "reactable-py.esm.css"))

# Reactive calc: define the reactable Module -----

@reactive.calc
def out2():
    # Module needs to be created here, because shiny won't run the on construction hook, until the
    # shiny app is running, and that is after all the code is initially run...
    mod = ipyreact.define_module("reactable", Path(str(STATIC_FILES / "reactable-py.esm.js")))
    return mod

# Uses the calc before rendering, to ensure the Module is loaded ----

@render_widget
def out():
    out2()
    return Reactable(cars_93).to_widget()


Issue with token auth

I followed the instructions to integrate ZenDesk with VSTS but still keep coming up with an error .

Is it possible, I am just missing something simple? I have downloaded the latest 6.2 and per the instruction, I keep username blank and populate the password with the token I created in VSTS.
Please advise.

I am trying it via Google Chrome and I get this error:
index.html:1 Uncaught (in promise) {readyState: 4, responseText: "DNS resolution error while resolving csd-phx", responseJSON: null, status: 502, statusText: "Bad Gateway"}readyState: 4responseJSON: nullresponseText: "DNS resolution error while resolving csd-phx"status: 502statusText: "Bad Gateway"__proto__: Object Promise.then (async) (anonymous) @ base_app.js:256 when @ base_app.js:252 _callee20$ @ app.js:1044 tryCatch @ runtime.js:65 invoke @ runtime.js:303 prototype.(anonymous function) @ runtime.js:117 step @ app.js:25 (anonymous) @ app.js:25 (anonymous) @ app.js:25 onAppActivated @ app.js:1081 _callee29$ @ app.js:1467 tryCatch @ runtime.js:65 invoke @ runtime.js:303 prototype.(anonymous function) @ runtime.js:117 step @ app.js:25 (anonymous) @ app.js:25 (anonymous) @ app.js:25 onLoginClick @ app.js:1488 dispatch @ lodash@2.4.2(lodash.underscore.min.js),handlebarsjs@1.3.0,jquery@2.2.4,momentjs@2.9.0,bootstrap@2.3.2:73 r.handle @ lodash@2.4.2(lodash.underscore.min.js),handlebarsjs@1.3.0,jquery@2.2.4,momentjs@2.9.0,bootstrap@2.3.2:73

Check out this little app i found this on the zendesk marketplace.
https://www.zendesk.com/apps/support/integratecloud-connector-for-vsts/?source=app_directory

hi @sotiriszegiannis ,
I did try that one a while back and was unsuccessful getting it to work.
Cheers!


refactor(share/ipld): Use consts for node type determination

Self-explanatory

Codecov Report

Merging #1244 (4fac101) into main (d239616) will increase coverage by 0.05%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #1244      +/-   ##
==========================================
+ Coverage   55.86%   55.92%   +0.05%
==========================================
  Files         160      160
  Lines        9725     9719       -6
==========================================
+ Hits         5433     5435       +2
+ Misses       3756     3749       -7
+ Partials      536      535       -1

Impacted Files
Coverage Δ

share/ipld/namespace_hasher.go
100.00% <100.00%> (ø)

fraud/bad_encoding.go
63.00% <0.00%> (-3.00%)
:arrow_down:

state/core_access.go
12.28% <0.00%> (-0.84%)
:arrow_down:

service/rpc/state.go
0.00% <0.00%> (ø)

share/ipld/get.go
92.66% <0.00%> (+1.37%)
:arrow_up:

header/core/listener.go
58.49% <0.00%> (+5.66%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Preflight verbiage for RHEL & OpenStack certs

Add a sentence about how Preflight is required for OpenStack and RHEL certs.

/test 4.8-e2e

coverage: 83.377%. remained the same
when pulling eedb806bc1e6d71dd822f78303f7eb8082a2f5fd on jfrancin-patch-1
into 82aca791eaab681802a3147a32e95254a3e6c66a on main.

coverage: 83.377%. remained the same
when pulling eedb806bc1e6d71dd822f78303f7eb8082a2f5fd on jfrancin-patch-1
into 82aca791eaab681802a3147a32e95254a3e6c66a on main.


User guide tutorial

Cleanly applied patch of the user guide tutorial by Kenny and me, take 3 (4?). Full history can be found here.

I just got started with converting the original HTML tutorial to RST.


 For some reason the ports keep changing on me. For example, before I set ark_Port=7777 and the server starts up with it being set to 7778.
I tried to solve the issue by exposing the ports with a different port on the host system. (Current docker run command) But the server started it up with port 7777 rather 7778.
I checked the configuration file in /ark/config/arkmanager.cfg and the enviromental variables are correct in there. Just for some reason when the server starts the arguments are different.
Additional Information

Run logs of the current docker run command:
2020-05-26 02:53:31: Running /ark/server/ShooterGame/Binaries/Linux/ShooterGameServer Valguero_P\?RCONPort=32330\?SessionName=ButterNuggetz\ server\?GameModIds=760199681\,749172455\,749172455\,736236773\,874109084\,725398419\,847495728\,754885087\,926028694\,722649005\,922859221\,943290066\,702828089\,679529026\,558651608\,821530042\,756389708\,854186603\,731604991\,880871931\,793605978\,538827119\,708807240\,1139775728\,1091147617\,1400323349\,2041551342\,2043866694\,2024119790\?MaxPlayers=8\?QueryPort=27015\?ServerPassword=abc123\?ServerAdminPassword=abc123\?Port=7777\?RCONEnabled=True\?listen -log

Hey @catzoo. By default the dedicated server will open up two ports, both the one you specify and then another for RawSockets, typically the one you specified +1. So in your case, it would be opening the following:
7777 - the one you specified
7778 - the RawSocket port.
More information on the RawSockets stuff can be found here: https://ark.gamepedia.com/Dedicated_Server_Setup
As far as fixing the issue, I'd recommend just opening both ports on the container.
Sorry, I should've put more info in my issue. When I set am_ark_port=7777 for some reason in the run arguments it has ?Port=7778. I also tried it using the default environment port 7778 and the run arguments go in reverse and have ?Port=7777. I mean when I looked at the logs and when it runs the ark server with those arguments.
Or is that normal since it opens both 7777 and 7778?
I will modify my run command to the one you gave me and try it again.
Thanks!

There might've not been an issue. I run the ark_server and i'm still seeing the ?Port argument different, this time it was set to ?Port=7776.
But I successfully joined the ark server.
Sorry about that and thanks for your help.

No problem @catzoo, glad you were able to get it figured out.

oh sorry to comment on a closed issue. I found more information and a solution to the problem I was having.
If anyone is having this issue, it decrease the port by one. So if you're trying to set the port to 7777-7778, set Port to 7778.
More information here: https://github.com/FezVrasta/ark-server-tools/issues/887


Box ref: No overload matches this call.

I was using Gestalt with TypeScript and trying to recreate Flyout Example and got this error. @types/gestalt v1.15.3 was installed along with gestalt v5.2.3.
Code
function FlyoutExample() {
  const [open, setOpen] = React.useState(false);
  const anchorRef = React.useRef();
  return (
    <Box>
      <Box display="inlineBlock" ref={anchorRef}>
        <Button
          accessibilityExpanded={!!open}
          accessibilityHaspopup
          onClick={() => setOpen(!open)}
          text="Help"
        />
      </Box>
      {open &&
        <Layer>
          <Flyout
            anchor={anchorRef.current}
            idealDirection="up"
            onDismiss={() => setOpen(false)}
            positionRelativeToAnchor={false}
            size="md"
          >
            <Box padding={3} display="flex" alignItems="center" direction="column" column={12}>
              <Text align="center" weight="bold">
                Need help with something? Check out our Help Center.
              </Text>
              <Box paddingX={2} marginTop={3}>
                <Button color="red" text="Visit the help center" />
              </Box>
            </Box>
          </Flyout>
        </Layer>}
    </Box>
  );
}

Error
No overload matches this call.
  Overload 1 of 2, '(props: Readonly<BoxProps>): Box', gave the following error.
    Type 'MutableRefObject<undefined>' is not assignable to type 'string | ((instance: Box | null) => void) | RefObject<Box> | null | undefined'.
      Type 'MutableRefObject<undefined>' is not assignable to type 'RefObject<Box>'.
        Types of property 'current' are incompatible.
          Type 'undefined' is not assignable to type 'Box | null'.
  Overload 2 of 2, '(props: BoxProps, context?: any): Box', gave the following error.
    Type 'MutableRefObject<undefined>' is not assignable to type 'string | ((instance: Box | null) => void) | RefObject<Box> | null | undefined'.
      Type 'MutableRefObject<undefined>' is not assignable to type 'RefObject<Box>'.

Sorry @v4iv, we don't use TypeScript at Pinterest (yet). The type definitions in DT were created by a random contributor and they're pretty out of date at this point. If you'd like to submit an update, you're more than welcome. You may even find some luck in porting over the flow types from the Gestalt source.

Can you remove the references from the README then?


Get yamlfmt into official Debian repositories

It would be great to have yamlfmt into Debian and other Debian-based Linux distributions.

Not debian but, in the same spirit, I sent a PR for Alpine Linux: https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/68120

I don't think I personally will have the capacity to do all the work required to get it upstreamed into Debian. I'm happy to try and support if someone wants to take the helm on it, but I don't think I'm going to be able to myself any time soon.


Add proper .gitignore

If some code is added accidentally to the directory, git should ignore it.

The problem is that adding any code to the .gitignore would mean there is code. And .gitignore itself should also be ignored...

I'm using a custom .gitignore file in my nocode projects. Feel free to use it too:

There is easy workaround:
git config --global core.excludesfile $HOME/.gitignore.global
echo '*' > $HOME/.gitignore.global


Android notification while app is in foreground not calling callback function

On Android when application is in foreground, incoming push notification is not calling callback function which is set by:
window.FirebasePlugin.onNotificationOpen(function (notification) {
        console.log(notification);
      }, function (error) {
        console.log("onNotificationOpen error " + error);
      });

and also not showing notification.
On iOS notification shows and also callback if fired.
In Android native application method onMessageReceived(RemoteMessage remoteMessage) is called when app is in foreground and we can access to incoming notification by calling remoteMessage.getNotification()
Cordova lib should also run callback as in native application when in foreground.

I am having this problem aswell, onNotificationOpen is not called when the app is in foreground.

Any update here? or any ionicnative plugin which we can use, which supports onMessage instead of just onNotificationOpen?


Why Unikernels may soon replace Docker?

Proposed title of article
Why Unikernels may soon replace Docker?
Introduction:
As the cloud-native ecosystem evolves, it is beginning to appear as if a challenger to containerization has emerged. In this article, I'm going to dive into what Unikernels are, and why they will be the most likely candidate to replace container-based infrastructure.
Key takeaways:
In this article, the learner will understand:

what is meant by Unikernels
comparisons between  containers and Unikernels
the reason why containers may soon be replaced by Unikernels

References:
N/A

Approved - @ogoti-lilian


[FIX] Logo scroll fix & Extra Unnecessary lines removed

Logo Scroll Fix & Extra Lines Removed

Fixes #447

resolve conflicts

@mansiruhil13 Conflicts resolved !

Always assign the PR while merging.
It is the GSSoC official rule for every PR.


Add Swiftly installation instructions

Resolves #37

I don't know if we should mention installing curl or not 🤔.
It could be something like this:
Installation
To download Swiftly and install Swift, first make sure you have curl installed:
apt update && apt install curl

Then install Swiftly, and follow the next instructions:
curl -L https://raw.githubusercontent.com/swift-server/swiftly/main/install/swiftly-install.sh | bash

Oppsie, that was a misclick 😅


Symfony 5 compatibility

Hi, I tried to install the package on my project with SF 5 and got the problem shown in the image. Can you help me please?

Hello,
You just need to configure the mandatory "secret_key" parameter as mentioned in the screen ouput.
See: https://github.com/nayzo/NzoUrlEncryptorBundle#configure-your-applications-configyml


Cvat debugger model latest update issues

(.env) root@ip-172-31-73-231:/home/ubuntu/cvat# python manage.py migrate
Traceback (most recent call last):
File "manage.py", line 21, in
execute_from_command_line(sys.argv)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/init.py", line 401, in execute_from_command_line
utility.execute()
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/init.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/base.py", line 85, in wrapped
res = handle_func(*args, **kwargs)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 75, in handle
self.check(databases=[database])
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/management/base.py", line 396, in check
databases=databases,
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/checks/registry.py", line 70, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/checks/urls.py", line 13, in check_url_config
return check_resolver(resolver)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/core/checks/urls.py", line 23, in check_resolver
return check_method()
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/urls/resolvers.py", line 408, in check
for pattern in self.url_patterns:
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/utils/functional.py", line 48, in get
res = instance.dict[self.name] = self.func(instance)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/urls/resolvers.py", line 589, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/utils/functional.py", line 48, in get
res = instance.dict[self.name] = self.func(instance)
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/urls/resolvers.py", line 582, in urlconf_module
return import_module(self.urlconf_name)
File "/usr/lib/python3.6/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/ubuntu/cvat/cvat/urls.py", line 27, in
path('', include('cvat.apps.engine.urls')),
File "/home/ubuntu/cvat/.env/lib/python3.6/site-packages/django/urls/conf.py", line 34, in include
urlconf_module = import_module(urlconf_module)
File "/usr/lib/python3.6/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 994, in _gcd_import
File "", line 971, in _find_and_load
File "", line 955, in _find_and_load_unlocked
File "", line 665, in _load_unlocked
File "", line 678, in exec_module
File "", line 219, in _call_with_frames_removed
File "/home/ubuntu/cvat/cvat/apps/engine/urls.py", line 7, in
from . import views
File "/home/ubuntu/cvat/cvat/apps/engine/views.py", line 1180
if (provider_type := self.request.query_params.get('provider_type', None)):
^
SyntaxError: invalid syntax

I see operator := which was added in Python 3.8. But CVAT supports Python 3.6 according to CONTRIBUTING.md, so I suppose it is a bug.
@Marishka17, did you write this file?

I see operator := which was added in Python 3.8. But CVAT supports Python 3.6 according to CONTRIBUTING.md, so I suppose it is a bug.
@Marishka17, did you write this file?

Fixed in PR


Added Notebook Saving

Partially working for regular jupyter notebooks - only saves the session history. Works fully for Colab.

If the repo doesn't exist, it gives the following error message about the branch being missing, which doesn't guide the user in the right direction.
RuntimeError: Failed to get default branch for repository. Please specify a branch and make sure repository details are correct.

We should catch it, and do one of the following:

Present an informative error message that the repo doesn't exist
Ask the user if they want to open a new repo (based on the name they gave)
Open the repo for them

I think the first option is the best solution.


Create topic "MEAN stack"

Please confirm this pull request meets the following requirements:

[x] I followed the contributing guidelines: https://github.com/github/explore/blob/main/CONTRIBUTING.md.
[x] I am not the sole author or employee of a company who created the topic or collection I am changing.

Which change are you proposing?

[ ] Suggesting edits to an existing topic or collection
[x] Curating a new topic or collection
[ ] Something that does not neatly fit into the binary options above

Editing an existing topic or collection
I'm suggesting these edits to an existing topic or collection:

[ ] Image (and my file is *.png, square, dimensions 288x288, size <= 75 kB)
[ ] Content (and my changes are in index.md)

Please replace this line with an explanation of why you think these changes should be made.

Curating a new topic or collection

[x] I've formatted my changes as a new folder directory, named for the topic or collection as it appears in the URL on GitHub (e.g. https://github.com/topics/[NAME] or https://github.com/collections/[NAME])
[ ] My folder contains a *.png image (if applicable) and index.md
[x] All required fields in my index.md conform to the Style Guide and API docs: https://github.com/github/explore/tree/main/docs

By all MEANs: If we have a JAMstack topic, we need one for this, too

Something that does not neatly fit into the binary options above

[ ] My suggested edits are not about an existing topic or collection, or at least not a single one
[ ] My suggested edits are not about curating a new topic or collection, or at least not a single one
[ ] My suggested edits conform to the Style Guide and API docs: https://github.com/github/explore/tree/main/docs

Please replace this line with an explanation of your proposed changes.

Please note: we will close your PR without comment if you do not check the boxes above and provide ALL requested information.

Yeah, it definetely needs some anger management 😂


Performance question

I can't test it out right now and am just looking for useful resources/libraries for my current project.
I am curious on how it performs with huge sets of data. Does it allocate and keep every newly generated list entry in memory? Not sure if you are familiar with the android ecosystem, but there is a component called RecyclerView that basically re-uses the UI elements and only changes the data that they display, making it super memory efficient and reduces the lag created by allocating all UI elements and keeping them alive.
Thanks!

I don't have metrics for you but it should be performant and based on what you've stated/asked, it sounds like you've not checked the documentation on the Flutter website. I'd suggest you start from there as a search would provide links like the following that would answer your question
https://flutter.io/cookbook/lists/long-lists/
https://flutter.io/flutter-for-android/#how-do-i-update-listviews-dynamically
https://docs.flutter.io/flutter/widgets/ListView-class.html
Note that this library uses the ListView.builder constructor

Ah I missed that one. I'm quite new to flutter :smile: Thanks you!


[BUG] Emoji combinations are erroneously stripped from messages.

Basic information

Program version: 0.2.0 (plus local modifications for new message types)
Python version: 3.10.6
Operating system: Arch Linux
Site: YouTube

Describe the bug
Unicode supports combining multiple characters like so: 🙏+ 🏼 = 🙏🏼. YouTube handles these by providing custom emoji graphics for these combinations as it does for uncombined emojis. These "combined" emojis have no "name" field (since it's not one emoji), but it does have an emoji_id field.
chat_downloader handles these nameless fields by dropping them, due to the logic here, which only adds an emoji with a defined name.
My proposed solution: make name optional, just like the other fields, and only rely on the presence of emoji_id. Also, if name is undefined, then use emoji_id for the message instead, as a fallback.
Output
Raw emoji received from YouTube (via yt-dlp --write-subs --sub-langs live-chat), which was completely stripped from the output json:
{
  "emoji": {
    "emojiId": "🙏🏼",
    "image": {
      "thumbnails": [
        {
          "url": "https://www.youtube.com/s/gaming/emoji/0f0cae22/emoji_u1f64f_1f3fc.svg"
        }
      ],
      "accessibility": {
        "accessibilityData": {
          "label": "🙏🏼"
        }
      }
    }
  }
}

Expected behavior
The emoji should still be saved in the JSON output, and the message should still properly render when using the default formatter.

While working on a similar project, I came across 🆘 :SOS_button: / :sos: not having a shortcut/searchTerms so it is not only limited to grapheme clusters/emoji combinations it seems. I would avoid relying on shortcut/searchTerms being present for non-custom emoji. Another solution could be to use the emoji library to get the CLDR short name/alias from emojiId and use that.

@krichbanana Thanks for the report! Can you provide a link for me to test with?
PS: Sorry for the late response... been quite busy recently 😓

Not OP, but I see it at the beginning of 7KwGABMjpMU with the "2⃣" messages, message ID CkUKGkNJN2gtN0tGOXZJQ0ZWTGl3UW9kbVI0Q2hREidDTHpGOTVpRjl2SUNGU21BbFFJZEpqSU1fZzE2MzEzMzMxMDY3Mjc%3D in Tiw1tYMMNig with "👏🏼" and message ID ChwKGkNMbVBrZXpoNnVvQ0ZSVmJXQW9kUG5VQjhn in the UlemRwXYWHg unit test with "㊗".

Fixed 👍  Let me know if you still have any issues


Add documentation for setAllowNewEmailAccounts and teeny cleanup

@samtstern Moved the setAllowNewEmailAccounts method to a nicer position and added documentation.
Updated butterknife: https://github.com/JakeWharton/butterknife/blob/master/CHANGELOG.md#version-851-2017-01-24.
Removed otherwise = VisibleForTesting.PRIVATE because I found out it was the default for @VisibleForTesting().

:+1:


[multimodal] undo changes to num_workers

Issue #, if available:
#2756
Description of changes:
The root cause of the issue is that https://github.com/autogluon/autogluon/commit/93fcbb955eb628b6896b8d277386a4c9a9345384 changed num_workers=2
Here is a visualization before and after the change #2416 that could affect the overall evaluation time of beginner_image_cls.ipynb .

By removing ‘num_workers=2’, we can reduce predictor.fit from 206 seconds to 128 seconds. Training throughput increased from 3.92s/it to 0.68s/it (aka 1.46it/s).
Code to reproduce the results
import pandas as pd
import time
import os
import shutil

from autogluon.multimodal.utils.misc import shopee_dataset
from autogluon.multimodal import MultiModalPredictor

def main():
    download_dir = './ag_automm_tutorial_imgcls'
    train_data_byte, test_data_byte = shopee_dataset(download_dir, is_bytearray=True)
    model_path = f"./tmp/automm_shopee"
    if os.path.exists(model_path):
        shutil.rmtree(model_path)
    predictor = MultiModalPredictor(label="label", path=model_path)
    tic = time.time()
    predictor.fit(
        train_data=train_data_byte, # you can use train_data_byte as well
        time_limit=30, # seconds
    ) # you can trust the default config, e.g., we use a `swin_base_patch4_window7_224` model
    print(f"elapsed (fit): {(time.time()-tic)*1000:.1f} ms")

if __name__=="__main__":
    main()

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Canceling this PR for now, in favor of #2776


[CI] add diplomacy_research

See https://github.com/ALLAN-DIP/baseline_bots/issues/29#issuecomment-1261339549_

Look at the test_CI branch and develop there.

Removing assigned people as we are escalating this issue.


go-pluginserver process cost too much CPU resource!

When I benchmark test kong with go plugin go-hello , go-pluginserver cost almost all CPU resource !! QPS with go-hello only half of no plugin

(pprof) top 10
Showing nodes accounting for 5.27mins, 88.89% of 5.93mins total
Dropped 468 nodes (cum <= 0.03mins)
Showing top 10 nodes out of 107
flat  flat%   sum%        cum   cum%
2.01mins 33.92% 33.92%   2.01mins 33.92%  runtime.pthread_cond_signal
1.14mins 19.17% 53.09%   1.14mins 19.19%  runtime.pthread_cond_wait
0.98mins 16.45% 69.54%   1.01mins 17.04%  syscall.syscall
0.30mins  5.12% 74.66%   0.30mins  5.14%  runtime.kevent
0.26mins  4.43% 79.09%   0.26mins  4.43%  runtime.gorecover
0.20mins  3.37% 82.46%   1.10mins 18.54%  net/rpc.(*service).call
0.12mins  2.07% 84.54%   0.49mins  8.31%  github.com/ugorji/go/codec.(*Decoder).Decode
0.12mins  1.97% 86.50%   0.42mins  7.12%  runtime.netpoll
0.09mins  1.56% 88.06%   0.09mins  1.57%  runtime.usleep
0.05mins  0.83% 88.89%   0.05mins  0.89%  runtime.step

LOCK need to be improve

If you reduce the use of the kong object to the minimal expresion this is improved. Every time the kong object is accessed to get a header, to set a query event to write a simple log a two way message rpc is travelling an consuming cpu....
I have also i

@ealogar What are your thoughts on running go plugins in production. I just finished writing a plugin in go and soon will be deploying it Heroku and I am concerned about the kong calls too. I chose go over lua because of the available libraries and eco system in general but if there is a CPU hog then this should have been mentioned in the docs.

@primableatom  What I can tell you is that we have increased the cpu of the containers running kong 120% to be able to cope with go; the cpu is consumed mainly in the messages interchange
I have tested that if you do not write logs and just to what is needed with kong the cpu is reduced, but a simple kong.Log increase cpu usage.
Another thing is that you can only run plugins in go if they do not change configuration from the initial setup, otherwise as the reload event is not propagated it won't take effect

@hhofchina @ealogar Are you able to provide me with the config to repro this issue? I will be looking into it!

@ealogar is correct, most of the overhead is the IPC between Kong and the Go process, and this happens for every event and PDK call.
@hhofchina in my tests, when adding the CPU of all nginx processes, it's usually around 3x that of Go.  The go process rises to the top because it's a single multithreaded process, while nginx is many single-threaded workers, so it doesn't stand out so much.
If you're seeing something different, please tell.

Closing for lack of feedback


[Device Support Request] ADEO LDSENK08 contact and vibration detector

Is your feature request related to a problem? Please describe.
ADEO (Lexman) LDSENK08 device is a contact sensor with a vibration sensor.
The device only shows a IasZone sensor in ZHA with the contact and vibration events mixed. You cannot know if it is a vibration or an open contact event.
The type of event can be found by reading the zone_status property :

if ZONE_STATUS first bit is set, it's an open contact
if ZONE_STATUS second bit is set, it's a vibration event

Integration has been done in zigbee2mqtt : https://www.zigbee2mqtt.io/devices/LDSENK08.html
PS : the device also gives tamper and low battery details on bits 3 and 4 but I guess this will be addressed here : https://github.com/home-assistant/core/issues/72828
Describe the solution you'd like
I would like to separate contact and vibration sensors in ZHA.
I've made a quirk which works by adding 2 endpoints for the contact and vibration sensors and using a bus to pass the events depending on the Iaszone zone_status bits.
It's my first quirk and I am not sure it's done the right way. I would like your opinion before opening a PR.
"""Device handler for ADEO Lexman LDSENK08 smart door window sensor with vibration"""
import logging

from typing import Any, List, Optional, Union

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice, CustomCluster
import zigpy.types as t
from zigpy.zcl.clusters.general import (
    Basic,
    Identify,
    Ota,
    PollControl,
    PowerConfiguration,
)
from zigpy.zcl.clusters.homeautomation import Diagnostic
from zigpy.zcl.clusters.security import IasZone
from zigpy.zcl import foundation

from zhaquirks import Bus, LocalDataCluster
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
    ZONE_STATUS,
    ZONE_TYPE,
    ON,
    OFF,
)

_LOGGER = logging.getLogger(__name__)

class IasMultiZoneCluster(CustomCluster, IasZone):
    """Multi Zone Cluster."""
    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Standard_CIE}

    def handle_cluster_request(
        self,
        hdr: foundation.ZCLHeader,
        args: List[Any],
        *,
        dst_addressing: Optional[
            Union[t.Addressing.Group, t.Addressing.IEEE, t.Addressing.NWK]
        ] = None,
    ):
        """Handle a cluster command received on this cluster."""
        if hdr.command_id == 0:
            #If we have bit 2, it's a vibration
            if (args[0] & 2) > 0:
                self.endpoint.device.ias_bus.listener_event("vibration_event", ON)
            else:
                self.endpoint.device.ias_bus.listener_event("vibration_event", OFF)
            #If we have bit 1, it's open
            if (args[0] & 1) > 0:
                self.endpoint.device.ias_bus.listener_event("contact_event", ON)
            else:
                self.endpoint.device.ias_bus.listener_event("contact_event", OFF)
        super().handle_cluster_request(hdr, args, dst_addressing=dst_addressing)

class VibrationCluster(CustomCluster, IasZone):
    """Vibration Sensor."""
    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Vibration_Movement_Sensor}

    def __init__(self, *args, **kwargs):
        """Init."""
        super().__init__(*args, **kwargs)
        self.endpoint.device.ias_bus.add_listener(self)

    def vibration_event(self, value):
        """Vibration event."""
        self._update_attribute(ZONE_STATUS, value)

class ContactCluster(LocalDataCluster, IasZone):
    """Open/close Sensor."""
    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Contact_Switch}

    def __init__(self, *args, **kwargs):
        """Init."""
        super().__init__(*args, **kwargs)
        self.endpoint.device.ias_bus.add_listener(self)

    def contact_event(self, value):
        """Contact event."""
        self._update_attribute(ZONE_STATUS, value)

class AdeoLdsenk08(CustomDevice):
    """Adeo contact and vibration sensor controller."""

    def __init__(self, *args, **kwargs):
        """Init device."""
        self.ias_bus = Bus()
        super().__init__(*args, **kwargs)

    signature = {
        #  <SimpleDescriptor endpoint=1 profile=260 device_type=1026
        #  device_version=1
        #  input_clusters=[0, 1, 3, 32, 1280, 2821]
        #  output_clusters=[25]>
        MODELS_INFO: [("ADEO", "LDSENK08")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,  # 260
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,  # 2048
                INPUT_CLUSTERS: [
                    Basic.cluster_id,  # 0
                    PowerConfiguration.cluster_id,  # 1
                    Identify.cluster_id,  # 3
                    PollControl.cluster_id,  # 32
                    IasZone.cluster_id,  # 1280
                    Diagnostic.cluster_id  # 2821
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id  # 25
                ],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,  # 0
                    PowerConfiguration.cluster_id,  # 1
                    Identify.cluster_id,  # 3
                    PollControl.cluster_id,  # 32
                    IasMultiZoneCluster,  # 1280
                    Diagnostic.cluster_id  # 2821
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id  # 25
                ],
            },
            2: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    VibrationCluster,  # 1280
                ],
                OUTPUT_CLUSTERS: [],
            },
            3: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    ContactCluster,  # 1280
                ],
                OUTPUT_CLUSTERS: [],
            },
        },
    }

Device signature
{
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4727, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": 260,
          "device_type": "0x0402",
          "in_clusters": [
            "0x0000",
            "0x0001",
            "0x0003",
            "0x0020",
            "0x0500",
            "0x0b05"
          ],
          "out_clusters": [
            "0x0019"
          ]
        }
      }
    }

Diagnostic information
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 35566,
    "manufacturer": "ADEO",
    "model": "LDSENK08",
    "name": "ADEO LDSENK08",
    "quirk_applied": true,
    "quirk_class": "sensor_ldsenk08.AdeoLdsenk08",
    "manufacturer_code": 4727,
    "power_source": "Battery or Unknown",
    "lqi": null,
    "rssi": null,
    "last_seen": "2023-03-03T17:32:07",
    "available": true,
    "device_type": "EndDevice",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4727, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": 260,
          "device_type": "0x0402",
          "in_clusters": [
            "0x0000",
            "0x0001",
            "0x0003",
            "0x0020",
            "0x0500",
            "0x0b05"
          ],
          "out_clusters": [
            "0x0019"
          ]
        }
      }
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "binary_sensor.capteur_fenetre_sous_sol_1_iaszone",
        "name": "ADEO LDSENK08"
      },
      {
        "entity_id": "button.capteur_fenetre_sous_sol_1_identify",
        "name": "ADEO LDSENK08"
      },
      {
        "entity_id": "sensor.capteur_fenetre_sous_sol_1_battery",
        "name": "ADEO LDSENK08"
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "IAS_ZONE"
      }
    ],
    "user_given_name": "Capteur fen\u00eatre sous-sol 1",
    "device_reg_id": "18908c59f20baa5018193bd17fa3521d",
    "area_id": "sous_sol",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "IAS_ZONE",
          "id": 1026
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "ADEO"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "LDSENK08"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0001": {
            "endpoint_attribute": "power",
            "attributes": {
              "0x0020": {
                "attribute_name": "battery_voltage",
                "value": 29
              },
              "0x0021": {
                "attribute_name": "battery_percentage_remaining",
                "value": 128
              },
              "0x0031": {
                "attribute_name": "battery_size",
                "value": 255
              },
              "0x0033": {
                "attribute_name": "battery_quantity",
                "value": 0
              }
            },
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0020": {
            "endpoint_attribute": "poll_control",
            "attributes": {
              "0x0000": {
                "attribute_name": "checkin_interval",
                "value": 13200
              }
            },
            "unsupported_attributes": {}
          },
          "0x0500": {
            "endpoint_attribute": "ias_zone",
            "attributes": {
              "0x0000": {
                "attribute_name": "zone_state",
                "value": 1
              },
              "0x0001": {
                "attribute_name": "zone_type",
                "value": 0
              },
              "0x0002": {
                "attribute_name": "zone_status",
                "value": 48
              },
              "0x0010": {
                "attribute_name": "cie_addr",
                "value": "e0:79:8d:ff:fe:74:16:62"
              },
              "0x0011": {
                "attribute_name": "zone_id",
                "value": 0
              },
              "0x0013": {
                "attribute_name": "current_zone_sensitivity_level",
                "value": 1
              }
            },
            "unsupported_attributes": {
              "0x0012": {
                "attribute_name": "num_zone_sensitivity_levels_supported"
              }
            }
          },
          "0x0b05": {
            "endpoint_attribute": "diagnostic",
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Additional logs
Paste any additional debug logs here.
Don't remove the extra line breaks outside the ``` marks.

Additional context

Doesn't look bad! Nice job.
The docs are a bit outdated though, you might be able to remove all Bus stuff and update the attributes on another cluster directly. Normally it's done like this: self.endpoint.ias_zone.update_attribute(ZONE_STATUS, ON)
However, since you have multiple ias_zone clusters and they're on different endpoints, that probably won't work.
I'll need to have a look later, but maybe you already want to experiment a bit.
Perhaps you could try something self.endpoint.device.endpoints[2].ias_zone.update_attribute(ZONE_STATUS, ON) and see if that works?
VibrationCluster and ContactCluster could have their __init__ and x_event functions removed then, so they would just contain _CONSTANT_ATTRIBUTES.

Thanks for the feedback !
Your solution is definitively working :clap: , the code is a lot cleaner :
"""Device handler for ADEO Lexman LDSENK08 smart door window sensor with vibration"""
from typing import Any, List, Optional, Union

from zigpy.profiles import zha
from zigpy.quirks import CustomDevice, CustomCluster
import zigpy.types as t
from zigpy.zcl.clusters.general import (
    Basic,
    Identify,
    Ota,
    PollControl,
    PowerConfiguration,
)
from zigpy.zcl.clusters.homeautomation import Diagnostic
from zigpy.zcl.clusters.security import IasZone
from zigpy.zcl import foundation

from zhaquirks import LocalDataCluster
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
    ZONE_STATUS,
    ZONE_TYPE,
    ON,
    OFF,
)

class IasMultiZoneCluster(CustomCluster, IasZone):
    """Multi Zone Cluster."""
    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Standard_CIE}

    def handle_cluster_request(
        self,
        hdr: foundation.ZCLHeader,
        args: List[Any],
        *,
        dst_addressing: Optional[
            Union[t.Addressing.Group, t.Addressing.IEEE, t.Addressing.NWK]
        ] = None,
    ):
        """Handle a cluster command received on this cluster."""
        if hdr.command_id == 0:
            #If we have bit 2, it's a vibration
            if (args[0] & 2) > 0:
                self.endpoint.device.endpoints[2].ias_zone.update_attribute(ZONE_STATUS, ON)
            else:
                self.endpoint.device.endpoints[2].ias_zone.update_attribute(ZONE_STATUS, OFF)
            #If we have bit 1, it's open
            if (args[0] & 1) > 0:
                self.endpoint.device.endpoints[3].ias_zone.update_attribute(ZONE_STATUS, ON)
            else:
                self.endpoint.device.endpoints[3].ias_zone.update_attribute(ZONE_STATUS, OFF)
        super().handle_cluster_request(hdr, args, dst_addressing=dst_addressing)

class VibrationCluster(LocalDataCluster, IasZone):
    """Vibration Sensor."""
    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Vibration_Movement_Sensor}

class ContactCluster(LocalDataCluster, IasZone):
    """Open/close Sensor."""
    _CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Contact_Switch}

class AdeoLdsenk08(CustomDevice):
    """Adeo contact and vibration sensor controller."""

    signature = {
        #  <SimpleDescriptor endpoint=1 profile=260 device_type=1026
        #  device_version=1
        #  input_clusters=[0, 1, 3, 32, 1280, 2821]
        #  output_clusters=[25]>
        MODELS_INFO: [("ADEO", "LDSENK08")],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,  # 260
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,  # 2048
                INPUT_CLUSTERS: [
                    Basic.cluster_id,  # 0
                    PowerConfiguration.cluster_id,  # 1
                    Identify.cluster_id,  # 3
                    PollControl.cluster_id,  # 32
                    IasZone.cluster_id,  # 1280
                    Diagnostic.cluster_id  # 2821
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id  # 25
                ],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,  # 0
                    PowerConfiguration.cluster_id,  # 1
                    Identify.cluster_id,  # 3
                    PollControl.cluster_id,  # 32
                    IasMultiZoneCluster,  # 1280
                    Diagnostic.cluster_id  # 2821
                ],
                OUTPUT_CLUSTERS: [
                    Ota.cluster_id  # 25
                ],
            },
            2: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    VibrationCluster,  # 1280
                ],
                OUTPUT_CLUSTERS: [],
            },
            3: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.IAS_ZONE,
                INPUT_CLUSTERS: [
                    ContactCluster,  # 1280
                ],
                OUTPUT_CLUSTERS: [],
            },
        },
    }

I have 2 questions left before maybe opening a PR :

In the quirk, is it possible to change the default display names of the added Iaszones ? It may be confusing to have 3 sensors named "Iaszone" even if the icons indicate the zone type.
The vibration sensitivity of the device can be adjusted. I have managed to do so by reading and writing the current_zone_sensitivity_level attribute while the device is active. Is it possible (and a good idea) to add a configuration item for this in the UI ? Also the device sends a checkin command on cluster_id 32 every hour or so ; my guess is that it is used to update the configuration of the device in the manufacturer solution (documentation - in french - https://enkiapp.zendesk.com/hc/fr/articles/360018121540-Utilisation-du-détecteur-de-vibration-Lexman-avec-Enki)

Anyway, those 2 points would just be nice to have ; the main problem is fixed (distinguish vibration and open/close sensors).

is it possible to change the default display names of the added Iaszones ?

At the moment, I don't think it's possible to change the default sensor name. ZHA should probably generate it from the device class. See:
https://github.com/home-assistant/core/blob/96bd7143643a813689c86f6f7512008c187a4766/homeassistant/components/zha/binary_sensor.py#L159-L175

add a configuration item for this in the UI ?

It would probably be possible to create a config entity for this, but it'll also only write if the device is awake. It also has to be added in ZHA itself at the moment (see select.py with some examples for motion sensitivity which write a different attribute).
From what I can see, the device actually follows spec pretty closely, but ZHA has no way to create different sensor for this one attribute at the moment (and it would generate it for all IAS devices). It's definitely something that should be supported better.
Also, I think you might be able to shorten if (args[0] & 2) > 0: to if args[0] & 2

Thanks again for your explanations and another code improvement suggestion.
I need to look how to add some tests and after that I will open a PR referencing this issue.

Reopening support request, as the PR is still open:

https://github.com/zigpy/zha-device-handlers/pull/2298


Add Japanese README

I created Japanese translated README.

I will check and merge it later this week. Thx in advance.

Thx~


[feature] screen splitting/panes

Having the ability to display multiple consoles side by side would be very nice.

Duplicate of #49


Make Pixmap safe to dispose if already disposed

Pixmap seems to be the only Disposable class that is not safe to dispose() if already disposed. Unless there's a good reason for this we should treat this scenario more leniently. Issue originally raised in https://github.com/libgdx/libgdx/pull/7334.

You last commit title is weird :D

From my understanding, once a pixmap is disposed, a reference to the pixmap probably shouldn't exist anymore.
Doing a double dispose might mean, that after initial disposal, a reference to the Pixmap was still around somewhere.
However, I would be fine with this, if together with this, we would set pixmap to null after disposale and setting "basePtr" to "-1" here after freeing: https://github.com/libgdx/libgdx/blob/7bed7d3666d3b343aebeb1c3f733eae63380dd10/gdx/src/com/badlogic/gdx/graphics/g2d/Gdx2DPixmap.java#L170-L171
This should prevent use after dispose better I think.

From my understanding, once a pixmap is disposed, a reference to the pixmap probably shouldn't exist anymore. Doing a double dispose might mean, that after initial disposal, a reference to the Pixmap was still around somewhere.

But for that to occur you don't need a double disposal, a reference might be kept afer a single disposal and the problem you describe would already apply. This is something that can occur with all Disposable assets, if you keep a reference and do stuff with it it will fail. Pixmap already does this check on some of its methods such as getPixels() (it's possible more of those checks are required). I think a crash in those cases is the right approach as there's something wrong in the app code that may be more serious (more than just calling `dispose() twice).

But for that to occur you don't need a double disposal, a reference might be kept afer a single disposal and the problem you describe would already apply.

Yes, I agree, I just wanted to point out, that throwing a exception on double disposale can unveil those bugs.

Pixmap already does this check on some of its methods such as getPixels() (it's possible more of those checks are required).

Yes, thats what I wanted to say with my second paragraph. I don't see a downside on making Pixmap more lenient against double disposal, if the other use after dispose guards are enforced stronger (by e.g. setting pixmap to null)

Yes, thats what I wanted to say with my second paragraph. I don't see a downside on making Pixmap more lenient against double disposal, if the other use after dispose guards are enforced stronger (by e.g. setting pixmap to null)

Ok, I'd go with the controlled exception instead of the nullpointer crash though, is there any particular method you think we should add checks on in addition to getPixels() to avoid those potential issues?

there any particular method you think we should add checks on in addition to getPixels() to avoid those potential issues?

I would say every method, that assumes an undisposed pixmap. However, the list is long, so I thought doing a uncontrolled NPE is good enough.
At first glance, basically setFilter/setBlending, all fill* methods and draw* methods, getPixel* methods and setPixels

I would say every method, that assumes an undisposed pixmap. However, the list is long, so I thought doing a uncontrolled NPE is good enough.

I don't like the NPE approach as users won't know what's going and that's an approach we don't follow afaik on any Disposable class.

At first glance, basically setFilter/setBlending, all fill* methods and draw* methods, getPixel* methods and setPixels

That's a bit too much tbh and I don't think it's worth it.
What about setting basePtr to -1, what would happen if user attempts using an already disposed Pixmapin that case?

What about setting basePtr to -1, what would happen if user attempts using an already disposed Pixmapin that case?

Undefined behaviour, but in nearly all cases a segfault. While I think it is better than a use-after-free, I think it shouldn't be the usual thing what happens, when working on a disposed Pixmap. I only suggested it as a fail-safe after the "pixmap is null" guard, to fully prevent use-after-free cases.

What about setting basePtr to -1, what would happen if user attempts using an already disposed Pixmapin that case?

Undefined behaviour, but in nearly all cases a segfault. While I think it is better than a use-after-free, I think it shouldn't be the usual thing what happens, when working on a disposed Pixmap. I only suggested it as a fail-safe after the "pixmap is null" guard, to fully prevent use-after-free cases.

Ok, I guess setting pixmap to null is not that bad as we can always add the disposed check + exception on any methods we want a more informative crash. I'll make the change.

What about setting basePtr to -1, what would happen if user attempts using an already disposed Pixmapin that case?

Undefined behaviour, but in nearly all cases a segfault. While I think it is better than a use-after-free, I think it shouldn't be the usual thing what happens, when working on a disposed Pixmap. I only suggested it as a fail-safe after the "pixmap is null" guard, to fully prevent use-after-free cases.

Ok, I guess setting pixmap to null is not that bad as we can always add the disposed check + exception on any methods we want a more informative crash. I'll make the change.

Not possible as it is, I'd need to remove the final qualifier. I'm leaning to leaving it as it is. Let's see if there's more opinions on this.

BTW, it's a good illustration when broken encapsulation obstructs refactoring/enhancement

I prefer the fail hard immediately with an exception, but this is more consistent with other implementation of Disposable, so think its ok.


TestPR

Summary
Brief summary of the changes made, ie "what?"
Background
Brief background on why these changes were made, ie "why?"
Changes

List changes which were made.

Testing
How are these changes tested?
Metrics

List out metrics added by PR, delete section if none.

Breaking Changelist

Bulleted list of breaking changes, any notes on migration. Delete section if none.

Related Issues
Link any issues that are related, prefer full github links.
closes

Closing because this is probably no longer needed and was just a test.