LanguageTag canonicalization

Canonicalization requires referencing the ISO 639 registry for language codes and subtags (or whatever else they're called).
The easiest thing to do would be to include/hardcode the contents of the registry in a file along with other deployment artifacts. However, the registry changes over time (probably not very frequently), so we'd need to produce a new release in order to include registry updates.
Maybe an alternative is to have a separate rust-locale/iso639-registry repo or a crate that we depend on in Cargo.toml. Seems like overkill. But it could work.
It would be inappropriate for rust-locale to perform network communication in order to query the registry during canonicalization.
BTW, the same problem exists for other data, like timezone info.

the ISO 639 registry isn't part of CLDR, is it? If it is, then solving the CLDR delivery problem is all we have to do, and this issue can be closed.

There are two steps to canonicalization:

case normalization and variant and extension sorting, which does not require any data and
replacing the deprecated forms with the standard ones, which does.

The first should be simple.
The later, I think we don't need to be all that precise with it. Basically I think if we come across a tag we don't know about, we'll just let it be. So we would only need to know about the tags that need to be replaced.
Actually, for practical reasons I think we should only do the later during matching. The reason is that somebody might be using a tag and then the tag gets added in the registry and we start to replace it and it will stop working for them.

the ISO 639 registry isn't part of CLDR

That does not matter. There is nothing that would require us distribute exactly CLDR content as and only that.
However in practice we'll have to distribute it separately, because it will be needed at lower layer than CLDR.

Ok, so I've pushed prototype that syntactically normalizes the tags and gets the tag from the POSIX locale variables to the next branch. @mrhota, care to review?
So far:

I based the parsing on your regexps. Somehow I had mental block against them before you created that, but they do look more readable than the manual parsing I started to write. I haven't done the subparsing of the variants and extensions yet though and proper handling of that is going to be somewhat complicated (especially the -u- extension has quite a bit of its own substructure).
I moved it into a subcrate that will eventually move into separate repository. I want to have the locale always depend on the latest version so that the global Locale instances will be shared even if multiple versions of the main locale crate get pulled in one binary due to incompatible version requirements. It can, of course, always happen to locale_core too, but as long as nobody will use it directly, we should avoid it in practice.
I have done an example, locale-core-info, that will print the tag it derived from environment.

What's the use-case for users pulling in multiple versions of the locale crate? Would someone do that on purpose?

It just happens as various crates are updated to newer version of their dependencies at different times. At a time, exa was getting linked to libc 0.1 and libc 0.2, because locale still used 0.1 while other dependencies were already upgraded. And for locale

it is likely other libraries will depend on it and
it is likely to go through some major revisions given the scope and the rate at which features are added to CLDR.

Because unfortunately quite many changes are breaking in Rust.
Having multiple versions of locale might still cause problems though, because if two libraries depend on locale to implement Localizable for their types, but end up implementing different versions of it, it won't be usable for formatting anyway.

Why is this something we should care about and write code to try to work around? It seems like the problem in exa was that two versions of the lib were pulled in, not that exa lacked code to handle that possibility. If you're pulling in two versions of locale, isn't that the bug?

No, that isn't a bug. It is what Rust does by design. And for most libraries there is absolutely no problem. The only moment a problem occurs is when there is a user-settable global variable. Which is rare, but locale is special and needs one.

Actually, problem also occurs when implementing traits from other libraries, but if that problem occurs, the compilation will fail. On the other hand with the global instance it will silently split, so everything compiles, but then some things will silently not work in a way that will be hard to analyse. That's why I want to avoid it for the global instances (GLOBAL_LOCALE and CURRENT_LOCALE) specifically.

Let's keep this issue about langtag canonicalization. If you want to deal with the fallout from introducing global mutable state and its bad interactions with cargo, we can have a new issue for it where it can be tracked and discussed separately from what I think are more pressing concerns.
Cargo issue 2363 is relevant to the multi-version + global-mutable-state problem, if you create an issue for it.
Our issues should be focused, and we should break out new ones as needed.

So, back to the canonicalization. I looked in the second part of BCP47, RFC4647 and it says:

A basic language range differs from the language tags defined in RFC4646 only in that there is no requirement that it be "well-formed" or be validated against the IANA Language Subtag Registry.

And the semantic difference is that RFC5646 tags identify language of resources while the RFC4647 ranges identify required or accepted language. And the Locale does the later.
The Locale and the LanguageTags that compose it still need to be syntactically valid and should be case-normalized and possibly ordered to simplify matching, but we shouldn't try to fix unknown subtags, at least not automatically.
We will probably want to support it, but only as:

add-on functionality for applications that need to tag resources and
understand the deprecated subtags when looking up desired resources as courtesy to users with legacy setups.

To clarify: are you suggesting breaking canonicalization into two or more subparts: case-normalization, sorting, validity checks against the ISO 639 DB?
If so, then I vigorously agree.

and validity checks against the ISO 639 db should be entirely optional

Yes, precisely.

I did some research and it looks like ISO 639 (or something very similar) is provided with CLDR (supplemental/aliases.json).
Installing CLDR data (which should be a separate crate) will therefore allow us to provide validity checks and perform full canonicalization for language tags if we want.

… now where does that live in http://unicode.org/repos/cldr/. Oh, right, http://unicode.org/repos/cldr/tags/latest/common/supplemental/supplementalMetadata.xml

yes, i think so. also, the files in common/validity.
I'm not sure of the state of xml parsing libs in rust, which is why I
pointed at the json file first. Obviously, the XML files are more complete,
if a bit tougher to parse with pure rust.
Perhaps we should start a cldr-data repo to start discussing delivery and
packaging mechanisms.
On May 13, 2016 12:48 AM, "Jan Hudec"<EMAIL_ADDRESS>wrote:

… now where does that live in http://unicode.org/repos/cldr/. Oh, right,
http://unicode.org/repos/cldr/tags/latest/common/supplemental/supplementalMetadata.xml
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/rust-locale/rust-locale/issues/12#issuecomment-218957532

Perhaps we should start a cldr-data repo to start discussing delivery and
packaging mechanisms.

Yes, we should.
I need to push out the subtag getters for LanguageTag that I have prepared except test for -t- extension and then we should start thinking about the CLDR data.

I'm not sure of the state of xml parsing libs in rust

It does not have to be in Rust. It will be just code-generation and we can do that in anything, e.g. XSLT.

Ok, I pushed https://github.com/rust-locale/rust-locale/commit/9bb840770f83a35d4bf12a6f64c765a25478fb29 and that is about as far as I want to go in the locale_core submodule. So now we should plan the split, the interfaces and the storage format for CLDR data.

Inbound tags are RFC4647 and that does not call for canonicalization, therefore we won't do any!
When looking up match in the data, we will understand canonical tags, by virtue of taking the list from CLDR, and their grandfathered aliases imported from the registry, but that isn't canonicalization.
Closing as invalid.


Assignment8- 6ITA - Ayush Vadodariya

For #449
📋 Description
This pull request introduces a new image classification model designed to categorize individuals into three physique categories: fat, slim, and fit. use kaggle for dataset.
📸 Screenshots

Please check the class labels from the model output!


⚠ Bofrost.be has degraded performance

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

HTTP code: 200
Response time: 1583 ms

Resolved: Bofrost.be performance has improved in 76b80df.


Handle unknown user URNs gracefully

Is your feature request related to a problem? Please describe.
If a user cannot be retrieved from the database (might be an owner, in an audit record or somewhere else), the UI displays an error. This is hard to debug because the page doesn't show any useful information.
This case occurs because the architecture puts the onus on either the rest client or the MCE job to validate relationships. It is hard to do this in a rest client because various jobs are dealing with collecting data from disparate parts of the system. How does a database crawler verify that all users that are table owners or have access permissions are already in DataHub.
MCE could validate every entity and create any missing ones, but that would be a performance hit. MCE currently validates some users and rejects dataset changes if the user is not found.
Describe the solution you'd like
When we know the user that we are looking for, return a dummy user that populates the URN and possibly sets the display name to something like "URN (unknown)". That would at least let users see the id of the owners, but also that additional information is missing. That would When the user record is created, those details will be resolved.
Describe alternatives you've considered
As mentioned above, have the MCE jobs detect that users are missing and create the user record.
Another option would be to force the rest clients to guarantee all user entities are created before sending other data types. Forcing every rest client to have perfect knowledge of all users and datasets seems like it would require all collected data to be staged before sending to DataHub. That greatly reduces the value of the kafka message bus and consumers.
Additional context
Add any other context or screenshots about the feature request here.

This is an excellent question and showed that you have gained deep understanding of the architecture. You're completely correct that MCE is free to contain "dangling URN" for entities that yet to have any aspect stored in GMS. This is indeed by design to support asynchronous collection of metadata from different sources and would be difficult, or undesirable, to change.
The key issue here is the behavior of a GET to GMS for an entity that contains no aspect. By default it returns 404 Not Found which means the client will need to handle the exception accordingly. One options it to provide a "get or set/return default" style of API as suggested. Another is to just handle this in UI in a more graceful manner. What's your thoughts here @theseyi ?

In the client app we can definitely improve handling of 404s so it's clear that this metadata is missing. @ben5448 Can you provide a few instances, so we have a bit more context and appreciation of the problem from your perspective? Thanks for reporting

The issue you are describing is a different problem. I am seeing a 500 "internal server error" with a message about a null reference. The root cause sounds very similar.
In my case the set of corporate users come from an LDAP directory where we have usernames, display names and email addresses. Datasets have multiple owner relationships associated based on database grants, file/group ownership and jobs that create the datasets. In some cases these dataset owners are not in LDAP because they are service accounts or users that were purged from the system.
When the dataset is created, these dataset owners do not match any corporate users in the MySQL database. When the website requests the set of owners for the dataset, the frontend returns a 500 internal server error and a message about referencing a null pointer. None of the owners are returned. The web page displays an error with an option to retry. The user has no idea how many users, if any, are associated with the dataset much less the id (urn) of those users.
As mentioned, there are multiple ways to solve this problem. I prefer isolating the issue to the back end (GMS or MCE) so the problem is transparently handled without having to reimplement in every collection script. My preference would be to return the urn or account to the web user so they can see which accounts are associated with the dataset. This provides the web user as much information as possible. (If GMS detected an unknown user, it could autocreate an entry for that user in the database, but if handled consistently that is not necessary and could slow web performance.)
Other options are for MCE to detect new corporate users if they do not exist (slows kafka consumption) or provide a "create if not existing" semantic for rest dataset clients to always pass in dummy users while preventing these dummy users from overwriting records that contain detailed information.

I see. 500 definitely sounds wrong to me. Could you include the stacktrace so we can debug it further? The endpoint should return 404 in the case of dangling URN reference, which then the UI can handle correctly.

The request is: http://<IP_ADDRESS>:9001/api/v2/datasets/urn:li:dataset:(urn:li:dataPlatform:hive,SampleHiveDataset,PROD)/owners
Response: {"msg":"java.lang.NullPointerException"}
Stack trace:
14:59:04 [application-akka.actor.default-dispatcher-456] ERROR application - Fetch owners fail
java.lang.NullPointerException: null
at com.linkedin.datahub.util.OwnerUtil.toWhOwner(OwnerUtil.java:30)
at com.linkedin.datahub.dao.view.OwnerViewDao.lambda$fillDatasetOwner$0(OwnerViewDao.java:57)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
at com.linkedin.datahub.dao.view.OwnerViewDao.fillDatasetOwner(OwnerViewDao.java:59)
at com.linkedin.datahub.dao.view.OwnerViewDao.getDatasetOwners(OwnerViewDao.java:45)
at controllers.api.v2.Dataset.getDatasetOwners(Dataset.java:146)
at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$23$$anonfun$apply$23.apply(Routes.scala:838)
at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$23$$anonfun$apply$23.apply(Routes.scala:838)
at play.core.routing.HandlerInvokerFactory$$anon$3.resultCall(HandlerInvoker.scala:134)
at play.core.routing.HandlerInvokerFactory$$anon$3.resultCall(HandlerInvoker.scala:133)
at play.core.routing.HandlerInvokerFactory$JavaActionInvokerFactory$$anon$8$$anon$2$$anon$1.invocation(HandlerInvoker.scala:108)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:88)
at play.http.DefaultActionCreator$1.call(DefaultActionCreator.java:31)
at play.mvc.Security$AuthenticatedAction.call(Security.java:69)
at play.core.j.JavaAction$$anonfun$9.apply(JavaAction.scala:138)
at play.core.j.JavaAction$$anonfun$9.apply(JavaAction.scala:138)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:56)
at play.api.libs.streams.Execution$trampoline$.execute(Execution.scala:70)
at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:48)
at scala.concurrent.impl.Future$.apply(Future.scala:31)
at scala.concurrent.Future$.apply(Future.scala:494)
at play.core.j.JavaAction.apply(JavaAction.scala:138)
at play.api.mvc.Action$$anonfun$apply$2.apply(Action.scala:96)
at play.api.mvc.Action$$anonfun$apply$2.apply(Action.scala:89)
at play.api.libs.streams.StrictAccumulator$$anonfun$mapFuture$2$$anonfun$1.apply(Accumulator.scala:174)
at play.api.libs.streams.StrictAccumulator$$anonfun$mapFuture$2$$anonfun$1.apply(Accumulator.scala:174)
at scala.util.Try$.apply(Try.scala:192)
at play.api.libs.streams.StrictAccumulator$$anonfun$mapFuture$2.apply(Accumulator.scala:174)
at play.api.libs.streams.StrictAccumulator$$anonfun$mapFuture$2.apply(Accumulator.scala:170)
at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:52)
at play.api.libs.streams.StrictAccumulator.run(Accumulator.scala:207)
at play.core.server.AkkaHttpServer$$anonfun$14.apply(AkkaHttpServer.scala:357)
at play.core.server.AkkaHttpServer$$anonfun$14.apply(AkkaHttpServer.scala:355)
at akka.http.scaladsl.util.FastFuture$.akka$http$scaladsl$util$FastFuture$$strictTransform$1(FastFuture.scala:41)
at akka.http.scaladsl.util.FastFuture$$anonfun$transformWith$extension1$1.apply(FastFuture.scala:51)
at akka.http.scaladsl.util.FastFuture$$anonfun$transformWith$extension1$1.apply(FastFuture.scala:50)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:91)
at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
at akka.dispatch.BatchingExecutor$BlockableBatch$$anonfun$run$1.apply(BatchingExecutor.scala:91)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:90)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:43)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

Got it. Looks like it's the mid-tier, rather than GMS, that's crapping out. @keremsahin1 could you take a look at this?

@ben5448 Thanks for the error log, it helps a lot. Seems like mid-tier code doesn't handle optional fields in the Pegasus schema. I will send a fix for this.

Pushed a fix: https://github.com/linkedin/datahub/commit/fba5cd8c5e40309fe435f6cb10db525b3f23426b
Please confirm it that's fixing your issue.

That resolves the issue. The ownership pages now shows the user urn with an "inactive" banner beside it. That is much better. Thank you!


add retry for 503 error

At the start of the contest, leetcode will receive a high volume of requests which may trigger a 503 rate limit.

some retry library:
https://github.com/avast/retry-go
https://github.com/cenkalti/backoff


README: update info about how testing is done for SputnikVM

Misinformation is spreading that we only do jsontests. Let's correct that. :)

🤖 🚀


Added a Readme file

I have created a pull request template

@bahebwashidah The PR template is located at .github/workflows/pull_request_template.md. You submitted a README.md instead.


examples(multi-tenant): enables tenant-based cookie handling based by domain

Enables tenant-based cookie handling based by domain (commented out to leave functionality out by default)

Removes 2.0 multi-tenant example

Updates examples/multi-tenant-single-domain --> examples/multi-tenant

Looks like this is still named multi-tenant-single-domain


RBAC Enabled, but endpoints aren't exposed at /rest_api/api

Airflow Version: 1.10.10
Rest API Plugin Version: 1.0.0
Flask-Login: 0.4.1
Flask-JWT-Extended: 3.25.1
Flask: 1.1.4
Flask-Admin: 1.5.4
Flask-AppBuilder: 2.3.4
airflow.cfg: rbac = True
(I also displayed {{rbac_authentication_enabled}} on the index.html just to confirm that the plugin is correctly picking up the rbac setting)
I thought maybe the exposed enpoint logic https://github.com/eBay/airflow-rest-api-plugin/blob/master/plugins/rest_api_plugin.py#L320 may have been needed to be changed to: @app_builder_expose('/rest_api/api', methods=["GET", "POST"])  # for Flask AppBuilder
But this doesn't seem to have any effect:

And login is still at /api/ not /rest_api/api/:

Thoughts?

@seanmuth  Hello, thank you for reporting this.
The login api is the offcial api of airflow, /rest_api/api only working on the customized api in plugins.


The most simple communication between two lolin32 wemos. (IDFGH-1833)

What is the most simple communication between two lolin32 wemos plates (esp32) using esp-idf?

Thanks for reporting the issue. Would you please help provide more details as suggested in the issue template? Information like elf, sdk configuration, backtrace, log outputs, commit ID, hardware and etc. would help us debug further. For "how" questions, you could raise a post at our forum https://esp32.com. Thanks. @mintcats


typo

Current coverage is 95.37%

Merging #1190 into master will increase coverage by +0.03% as of 0a6a1e4

@@            master   #1190   diff @@
======================================
  Files           78      78
  Stmts         9173    9173
  Branches      1713    1713
  Methods          0       0
======================================
+ Hit           8746    8749     +3
+ Partial         92      90     -2
+ Missed         335     334     -1

Review entire Coverage Diff as of 0a6a1e4

Powered by Codecov. Updated on successful CI builds.

thx!


langchain-mongodb: add history_size attribute to MongoDBChatMessageHistory

Description: This PR introduces a new attribute, history_size, to the MongoDBChatMessageHistory class, allowing users to set a maximum number of messages to store in the MongoDB database. This feature helps manage memory more effectively by limiting the history size. The implementation includes logic to automatically trim the oldest messages when the history limit is exceeded.
Issue: None
Dependencies: None

If this pull request is accepted, I plan to add examples demonstrating the use of the new history_size attribute in the MongoDBChatMessageHistory class. These examples will be included in the existing notebook at https://github.com/langchain-ai/langchain/blob/master/docs/docs/integrations/memory/mongodb_chat_message_history.ipynb. This will help users understand how to implement and utilize this new feature effectively.

I think it would be better to use the same trim_messages function documented for message histories here: https://python.langchain.com/v0.2/docs/how_to/chatbots_memory/#modifying-chat-history


PowerSag

Hello,
somebody on Linuxmusicians mentioned PowerSag as a useful plugin. Could you please port it? Thank you!

PowerSag was ported with 1680ebbf9ce167d5841d67be2a940942668193ff. My PowerSag2 port still has some issues. I'll see when I have the time to fix them and commit the port.

PowerSag was ported with 1680ebb. My PowerSag2 port still has some issues. I'll see when I have the time to fix them and commit the port.

No rush, thank you for your work, as always :smile:

And PowerSag2 is here as well (97e80a06b5d8827567c69fe81939754d41d7c23d).

My PowerSag2 port still has some issues.

Turns out the MacVST I was testing against doesn't null with itself either. Sometimes, one of both channels cranks out a signal during the null test for something like half a second (looking at the code, I'd probably say 16386 samples). So, as this behavior seems to be kind of expected, I didn't dig deeper into the code. I think this is fine.


[Bug]: FFmpeg exited with code: 1 and signal: null (Error) Doorbell

What happened?
Eufy doorbell (2K wired) is paired with Homebase 2. The iOS Eufy app works perfectly, and the Homekit native support works for the 2 cameras also associated with the Homebase2. I was really wanting the doorbell so I installed this plugin under Homebridge.
I've tried installing the plugin under homebridge running as a Docker on Synology but also a fresh install on my Mac, and no matter which install I do, I get this error when trying to use the Doorbell camera:
[12/5/2021, 12:59:08 AM] [EufySecurity] Adding new accessory: Homebase
[12/5/2021, 12:59:08 AM] [EufySecurity] Adding new accessory: Doorbell
[12/5/2021, 12:59:45 AM] [EufySecurity] Starting video stream: 1280 x 720, 30 fps, 299 kbps (AAC-eld) Doorbell
[12/5/2021, 12:59:45 AM] [EufySecurity] FFmpeg exited with code: 1 and signal: null (Error) Doorbell
[12/5/2021, 12:59:45 AM] [EufySecurity] Stopped video stream. Doorbell
[12/5/2021, 12:59:52 AM] [EufySecurity] Starting video stream: 1280 x 720, 30 fps, 299 kbps (AAC-eld) Doorbell
[12/5/2021, 12:59:52 AM] [EufySecurity] FFmpeg exited with code: 1 and signal: null (Error) Doorbell
[12/5/2021, 12:59:52 AM] [EufySecurity] Stopped video stream. Doorbell
The thumbnail shows an old image from the last motion event but touching it just gives a spinner and these errors.
I reinstalled/installed ffmpeg on my M1Pro Macbook Pro using
brew install ffmpeg
and
sudo npm i ffmpeg-for-homebridge -g
Device Type
Doorbell (Supported)
Plugin Version
v1.0.x (Supported)
HomeBridge Version
v1.3.x (Supported)
NodeJS Version
v16 (Supported)
Operating System
Mac OS X
Relevant log output
[12/5/2021, 12:59:07 AM] Homebridge v1.3.8 (HAP v0.9.7) (Homebridge xxx) is running on port 51731.
[12/5/2021, 12:59:08 AM] [EufySecurity] Adding new accessory: Homebase
[12/5/2021, 12:59:08 AM] [EufySecurity] Adding new accessory: Doorbell
[12/5/2021, 12:59:45 AM] [EufySecurity] Starting video stream: 1280 x 720, 30 fps, 299 kbps (AAC-eld) Doorbell
[12/5/2021, 12:59:45 AM] [EufySecurity] FFmpeg exited with code: 1 and signal: null (Error) Doorbell
[12/5/2021, 12:59:45 AM] [EufySecurity] Stopped video stream. Doorbell
[12/5/2021, 12:59:52 AM] [EufySecurity] Starting video stream: 1280 x 720, 30 fps, 299 kbps (AAC-eld) Doorbell
[12/5/2021, 12:59:52 AM] [EufySecurity] FFmpeg exited with code: 1 and signal: null (Error) Doorbell
[12/5/2021, 12:59:52 AM] [EufySecurity] Stopped video stream. Doorbell

Yes - unfortunately none of those worked - my doorbell is associated with the Homebase, but if I tell the plugin to ignore the Homebase, it strikes out the attached doorbell as well, then nothing shows up in Homekit.
As mentioned above for Livestream issues, I also did do
sudo npm i ffmpeg-for-homebridge -g
and still the same  "FFmpeg exited with code: 1 and signal: null (Error) Doorbell" error.
So, in summary I tried both suggestions under the "Livestream" and "Wired Doorbell" sections.

I'm having the same issue.

Exact same issue for me, only other item of note for me at least is I'm running the latest version of node, it doesn't say on this plugin that it's supported though...

It appears to have started with the update to 1.0.6. I tried rolling back to 1.0.4 but now am getting the '204 No Content' error from Eufy's API that https://github.com/samemory/homebridge-eufy-security/commit/481e16f07ac2a2d4c24700efad5846aaf051df41 fixed.

It seems the error appears as soon as the plugin tries to run FFmpeg on the stream itself. I enabled debug logging and found the following command is called right before the error message appears:
/homebridge/node_modules/homebridge-eufy-security/node_modules/ffmpeg-for-homebridge/ffmpeg -i  -an -sn -dn -codec:v libx264 -pix_fmt yuv420p -color_range mpeg -r 30 -f rawvideo -preset ultrafast -tune zerolatency -filter:v scale='min(1280,iw)':'min(720,ih)':force_original_aspect_ratio=decrease,scale=trunc(iw/2)*2:trunc(ih/2)*2 -b:v 299k -payload_type 99 -ssrc 4494580 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params some_hash_here srtp://<IP_ADDRESS>:52653?rtcpport=52653&pkt_size=1316 -vn -sn -dn -codec:a aac -profile:a aac_eld -flags +global_header -f null -ar 16k -b:a 24k -ac 1 -payload_type 110 -ssrc 2157077 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params some_other_hash_here srtp://<IP_ADDRESS>:54716?rtcpport=54716&pkt_size=188 -loglevel level -progress pipe:1

(Some values stripped out, just in case)
After some careful editing of the command to include quotes around some arguments, I ran it manually and got the following FFmpeg error, also with an exit code of 1:
[error] -an: No such file or directory

I suspect that I'm missing something still, and am keen to continue debugging.

The same issue here. HomeBridge in docker. Also tried to move back to an older version of the container image. No chance. Stream isn't working with 1.0.6 ... plugin is crashing with 1.1.1 beta.

Notice the double space between the -i and -an.  I think the RTMP stream url should be there but for some reason it's now missing.  I think this might be due to a move to P2P streaming that's doesn't seem to work when rolling the plugin back from some reason.  I'm sure that why ffmpeg is giving the error you've pasted at least.

You're right about the double space between the -i and -an arguments.  The RTMP stream url used to be there but for some reason it's now missing.  I think this might be due to a move to P2P streaming that's doesn't seem to work when rolling the plugin back from some reason.  I'm sure that why ffmpeg is giving the error you've pasted at least.
You might want to try the beta version - it doesn't work for me, but I only have the floodlight camera which doesn't seem to be properly supported yet.

Beta actually works, at least on my 2k camera, stream starts, but after I stop stream HB restarts straight away. So as suggested somewhere above, really temporary and "some sort of working" solution can be to convert plugin to child bridge, so it won't break HB totally and will just quickly restart child bridge. Still not the best UX option.

You're right about the double space between the -i and -an arguments. The RTMP stream url used to be there but for some reason it's now missing. I think this might be due to a move to P2P streaming that's doesn't seem to work when rolling the plugin back from some reason. I'm sure that why ffmpeg is giving the error you've pasted at least.
You might want to try the beta version - it doesn't work for me, but I only have the floodlight camera which doesn't seem to be properly supported yet.

I believe this is related to an upstream issue. See the following:
https://github.com/bropat/eufy-security-client/issues/79

You're right about the double space between the -i and -an arguments. The RTMP stream url used to be there but for some reason it's now missing. I think this might be due to a move to P2P streaming that's doesn't seem to work when rolling the plugin back from some reason. I'm sure that why ffmpeg is giving the error you've pasted at least.
You might want to try the beta version - it doesn't work for me, but I only have the floodlight camera which doesn't seem to be properly supported yet.

I believe this is related to an upstream issue. See the following: bropat/eufy-security-client#79

OMG, IT WORKS! Just checked and used your workaround, removed "User-Agent": "okhttp/3.12.1". It worked like a charm. Thx a lot and much appreciated. Just in case, in my setup, file that I've tweaked is located here:
/usr/local/lib/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/build/http/api.js

@njuart did you install the beta version, then edited the api.js file?

@njuart did you install the beta version, then edited the api.js file?

Nope, not related to beta, as beta uses local streaming, I've rolled back to 1.0.6 and tweaked file.

@njuart did you install the beta version, then edited the api.js file?

Nope, not related to beta, as beta uses local streaming, I've rolled back to 1.0.6 and tweaked file.

I can confirm that, installing 1.0.6 and editing the api.js file as per https://github.com/bropat/eufy-security-client/issues/79 to remove the User-Agent key from the payload, then restarting Homebridge, works.

Also, plz note, that out of like 15-20 attempts I saw stream only 3 times, but it's a known issue. Just giving a heads up if after fix you won't see stream straight away, keep trying. Also error in HB logs disappeared.

I can't find the origin of this function:
 async startStream() {         // Start the camera stream and return the RTSP URL.         try {             const response = await this.api.request("post", "v1/web/equipment/start_stream", {                 device_sn: this.rawDevice.device_sn,                 station_sn: this.rawDevice.station_sn,                 proto: 2             }).catch(error => {                 this.log.error("Error:", error);                 return error;             });             this.log.debug("Response:", response.data);             if (response.status == 200) {                 const result = response.data;                 if (result.code == 0) {                     const dataresult = result.data;                     this._isStreaming = true;                     this.log.info(Livestream of camera ${this.rawDevice.device_sn} started);                     return dataresult.url;                 }                 else {                     this.log.error("Response code not ok", { code: result.code, msg: result.msg });                 }             }             else {                 this.log.error("Status return code not 200", { status: response.status, statusText: response.statusText });             }         }         catch (error) {             this.log.error("Generic Error:", error);         }         return "";     }
And it seems to be causing all the problems with the stream.
I've tried another plugin and streaming works there as a charm. Can you guys help me find the location of the above? The thing in common is that both plugins receive a quite old snapshot. Is there any way to enforce eufy to refresh the snapshot before the call?

New screenshot can only be achieved through local streaming which is in the beta. But not working reliably.

editing api.js fixes the issue!

I'll make a PR when bropat fixes the client library.

Worked for me on 1.0.6.
On the Homebridge Terminal:

cd /usr/local/lib/node_modules/homebridge-eufy-security/node_modules/eufy-security-client/build/http/
sudo nano api.js
Use arrow keys to go down and remove "User-Agent": "okhttp/3.12.1"
Ctrl + X to exit, Y for yes, Enter to save.
Restart Homebridge, doorbell cam should work now.

Confirmed, this restored video stream from the doorbell for me following the steps above.

Version 1.0.8 published. Resolved issue.

Anybody else still experiencing issues, after updateting to 1.0.8??
I don't get the error any longer, and it does works intermittently..
But most of the time the live steam doesn't start, and the log says the following:
[22.12.2021 12.13.18] [EufySecurity] Starting video stream: 1280 x 720, 30 fps, 299 kbps (AAC-eld) Doorbell
[22.12.2021 12.13.46] [EufySecurity] Stopped video stream. Doorbell
Also the thumbnail picture isn't updating every 10sec.
For the first 10sec it stays on the last live stream image, before going back to an older thumbnail picture.

Not sure what I am doing wrong, but I am seeing this as soon as I try to view a camera ...
[12/22/2021, 3:59:05 PM] [EufySecurity-1.0.8] DEBUG: Video stream requested: 1920 x 1080, 30 fps, 802 kbps Doorbell false
[12/22/2021, 3:59:05 PM] [EufySecurity-1.0.8] INFO:  Starting video stream: 1920 x 1080, 30 fps, 802 kbps (AAC-eld) Doorbell
[12/22/2021, 3:59:05 PM] [EufySecurity-1.0.8] DEBUG: Stream command: ffmpeg -i rtmp://p2p-vir-8.eufylife.com XXXX REDACTED XXX -loglevel level -progress pipe:1 Doorbell false
[12/22/2021, 3:59:07 PM] [EufySecurity-1.0.8] ERROR: FFmpeg exited with code: null and signal: SIGABRT (Unexpected) Doorbell

Not resolved for me :(

[12/22/2021, 2:13:49 PM] [EufySecurity-1.0.8] ERROR: FFmpeg process creation failed: spawn ffmpeg ENOENT Doorbell

Yeah.


Fix imagenet example's replacement file for test

This fixes an error in the example test:
[2019-11-20 10:20:24] E               test_utils.ReplacementFileCorrectnessError: Replacement file correctness check failed: Line mismatch between the original and the replacement file.
[2019-11-20 10:20:24] E
[2019-11-20 10:20:24] E               If you're seeing this error message, it's likely that you edited a file within the example directory but did not edit the matching replacement file which is used for testing. Please ensure the two files are synchronized.
[2019-11-20 10:20:24] E
[2019-11-20 10:20:24] E               Original file: /home/travis/build/chainer/chainer/examples/imagenet/train_imagenet.py
[2019-11-20 10:20:24] E               Replacement file: /home/travis/build/chainer/chainer/examples/imagenet/.testdata/replacements/train_imagenet.py
[2019-11-20 10:20:24] E               Line number in the original file: 116
[2019-11-20 10:20:24] E               Line number in the replacement file: 117
[2019-11-20 10:20:24] E               Original line: [        n_threads = args.loaderjob]
[2019-11-20 10:20:24] E               Replacement line: [        num_threads = args.loaderjob]
[2019-11-20 10:20:24]
[2019-11-20 10:20:24] /home/travis/build/chainer/chainer/examples/test_utils.py:225: ReplacementFileCorrectnessError
[2019-11-20 10:20:24] =============================================== short test summary info ================================================
[2019-11-20 10:20:24] FAIL examples/tests/test_imagenet.py::TestImagenet::test_1
[2019-11-20 10:20:24] =============================================== 1 failed in 0.77 seconds ===============================================

Duplicate: #8463


We need to clean up the extensionsAllowed attribute in the HED schema

Three things need to be fixed:

The top level Custom tag should have the extensionsAllowed attribute.

All tags under the top level Attribute tag should have their extensionsAllowed Attributes removed as they inherit from Attribute.

All tags under the top level Item tag should have their extensionsAllowed Attributes removed as they inherit from Item.

1- Done.
2- Done.
3- I think you mean under Item/Object since Item does not have extensionAllowed, only Object does. Done.


[PDI-13754] LDAP Input Step - Using variable for "Trust store path"

-added resolving variable for trust store path

Build Completed
:x: This pull request has errors. They will need to be addressed before it can be accepted. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f engine/build.xml clean-all resolve jacoco && ant -Dtestreports.dir=bin/reports/integration-test -f engine/build.xml jacoco-integration checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  engine/src/org/pentaho/di/trans/steps/ldapinput/LdapSslProtocol.java

Unit test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.job.entries.evalfilesmetrics.JobEntryEvalFilesMetrics

Branch Change: -.39%:small_red_triangle_down:
Complexity Change: -.51%:small_red_triangle_down:
Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.job.entries.waitforsql.JobEntryWaitForSQL

Branch Change: -.66%:small_red_triangle_down:
Complexity Change: -.93%:small_red_triangle_down:
Instruction Change: -.13%:small_red_triangle_down:

org.pentaho.di.trans.step.StepMeta

Instruction Change:  + .19%
Line Change:  + .27%

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Instruction Change: -.09%:small_red_triangle_down:

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change:  + .11%

org.pentaho.di.trans.steps.groupby.GroupByMeta

Branch Change: -2.08%:small_red_triangle_down:
Complexity Change: -2.11%:small_red_triangle_down:
Instruction Change: -.14%:small_red_triangle_down:
Line Change: -.37%:small_red_triangle_down:

org.pentaho.di.trans.steps.ifnull.IfNullMeta

Branch Change:  + 2.00%
Complexity Change:  + 1.89%
Instruction Change:  + .17%

org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta

Instruction Change: -.05%:small_red_triangle_down:

org.pentaho.di.trans.steps.ldapinput.LdapSslProtocol

Instruction Change: -.14%:small_red_triangle_down:
Line Change: -.15%:small_red_triangle_down:

org.pentaho.di.trans.steps.ldapoutput.LDAPOutputMeta

Instruction Change: -.06%:small_red_triangle_down:

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change: -2.35%:small_red_triangle_down:
Complexity Change: -2.70%:small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -.07%:small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.trans.steps.singlethreader.SingleThreaderMeta

Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.trans.steps.synchronizeaftermerge.SynchronizeAfterMergeMeta

Instruction Change:  + .04%

org.pentaho.di.trans.steps.systemdata.SystemDataMeta

Branch Change:  + 2.04%
Complexity Change:  + 2.04%
Instruction Change:  + .32%
Line Change:  + .81%

org.pentaho.di.trans.steps.webservices.WebServiceMeta

Branch Change: -1.79%:small_red_triangle_down:
Complexity Change: -1.19%:small_red_triangle_down:
Instruction Change: -.07%:small_red_triangle_down:

License header violations

:heavy_exclamation_mark: Copyright year is not the current year on engine/src/org/pentaho/di/trans/steps/ldapinput/LdapSslProtocol.java. Found 2013. Was expecting 2016

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
ant -Dtestreports.dir=bin/reports/unit-test -f engine/build.xml clean-all resolve jacoco && ant -Dtestreports.dir=bin/reports/integration-test -f engine/build.xml jacoco-integration checkstyle publish-local

Cleanup Commands
rm -r ~/.ivy2/local || echo no publish local to remove

Changed files
  engine/src/org/pentaho/di/trans/steps/ldapinput/LdapSslProtocol.java

Unit test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.job.entries.waitforsql.JobEntryWaitForSQL

Branch Change: -.66%:small_red_triangle_down:
Complexity Change: -.93%:small_red_triangle_down:
Instruction Change: -.13%:small_red_triangle_down:

org.pentaho.di.trans.steps.constant.ConstantMeta

Instruction Change: -.10%:small_red_triangle_down:

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Instruction Change:  + .09%

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change:  + .11%

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Branch Change:  + .63%
Complexity Change:  + .40%
Instruction Change:  + .49%
Line Change:  + .23%

org.pentaho.di.trans.steps.groupby.GroupByMeta

Branch Change: -3.12%:small_red_triangle_down:
Complexity Change: -3.16%:small_red_triangle_down:
Instruction Change: -.14%:small_red_triangle_down:
Line Change: -.37%:small_red_triangle_down:

org.pentaho.di.trans.steps.ifnull.IfNullMeta

Branch Change: -2.00%:small_red_triangle_down:
Complexity Change: -1.89%:small_red_triangle_down:
Instruction Change: -.17%:small_red_triangle_down:

org.pentaho.di.trans.steps.ldapinput.LdapSslProtocol

Instruction Change: -.14%:small_red_triangle_down:
Line Change: -.15%:small_red_triangle_down:

org.pentaho.di.trans.steps.ldapoutput.LDAPOutputMeta

Instruction Change: -.06%:small_red_triangle_down:

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change: -2.35%:small_red_triangle_down:
Complexity Change: -2.70%:small_red_triangle_down:
Instruction Change: -.18%:small_red_triangle_down:
Line Change: -.48%:small_red_triangle_down:

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Instruction Change: -.07%:small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.trans.steps.sortedmerge.SortedMergeMeta

Instruction Change:  + .18%

org.pentaho.di.trans.steps.symmetriccrypto.symmetriccryptotrans.SymmetricCryptoTransMeta

Branch Change: -3.33%:small_red_triangle_down:
Complexity Change: -1.85%:small_red_triangle_down:
Instruction Change: -.28%:small_red_triangle_down:

org.pentaho.di.trans.steps.synchronizeaftermerge.SynchronizeAfterMergeMeta

Instruction Change: -.04%:small_red_triangle_down:

org.pentaho.di.trans.steps.uniquerows.UniqueRowsMeta

Instruction Change: -.18%:small_red_triangle_down:

org.pentaho.di.trans.steps.webservices.WebServiceMeta

Branch Change:  + 1.79%
Complexity Change:  + 1.19%
Instruction Change:  + .07%

Integration test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.trans.step.BaseStep

Branch Change:  + .29%
Complexity Change:  + .18%
Instruction Change:  + .05%
Line Change:  + .08%

@mbatchelor Could you please review and merge it?
My changes have minor affect on unit test coverage change
org.pentaho.di.trans.steps.ldapinput.LdapSslProtocol
Instruction Change: -.14%:
Line Change: -.15%:
It contains one changed string  but it is difficult to test. LdapSslProtocol doesn't have access method for "trust store path" variable.


Sign-In Support For Multiple Tenents

My account has access to multiple tenants. I would need to specify which one so that it can find the subscriptions.
Currently it finds no subscription from any of my tenants.

After browsing your source code I saw that you use the Azure Account extension. This does look like it has the options I need.

I am going to look into adding my use case to the documentation.

https://github.com/Microsoft/vscode-azure-account/pull/107

https://github.com/Microsoft/vscode-azureeventgrid/pull/38

Feel free to take my suggested edits with a large grain of salt. :)

Fixed in https://github.com/Microsoft/vscode-azureeventgrid/pull/38


Typo: suppliest

The issue was created by @jdholbrook81 from https://github.com/MicrosoftDocs/feedback/issues/624
🛑 IMPORTANT: You can get your feedback addressed faster if you use the comment section for the article in which you encountered a problem.
I don't see a comment section on this article
Link to article:
Tell us where exactly a problem occurs.
https://docs.microsoft.com/en-us/rest/api/vsts/git/pull request query/get?view=vsts-rest-4.1
also the v5.0 article contains the same type
Problem:
What's wrong with the article?
Contains the string "Search for pull requests that merged the suppliest commits." suppliest should be supplied.

Working on resolving this


SharpCompress v0.12.4 NuGet package causes payload errors when building with Visual Studio 2015 Update 3

Hello,
After I have updated Visual Studio to the latest Update 3 (Anniversary edition) and tried to build Universal application project, where SharpCompress NuGet package is used along with Microsoft.NETCore.UniversalWindowsPlatform v.5.1.0, I've started getting following errors during build:
Error		Payload contains two or more files with the same destination path 'Microsoft.Win32.Primitives.dll'. Source files:
C:\Users\Admin.nuget\packages\Microsoft.Win32.Primitives\4.0.0\lib\dotnet\Microsoft.Win32.Primitives.dll
C:\Users\Admin.nuget\packages\runtime.win.Microsoft.Win32.Primitives\4.0.1\runtimes\win\lib\netstandard1.3\Microsoft.Win32.Primitives.dll
and similar errors for assemblies: System.Diagnostics.Tools.dll , System.Globalization.Calendars.dll, System.Threading.Timer.dll and System.Net.Sockets.dll
Such errors happens just with empty UWP project created with latest Visual Studio and with added SharpCompress NuGet package ialong with Microsoft.NETCore.UniversalWindowsPlatform v.5.1.0
I'm not sure how can I handle this issue correctly, it will be great if you will able to provide some suggestions regarding this,
Thank you,
Max

Looks like UWP 5.1.0 is really old and drags in old dependencies.
5.2.2 is what you want: https://www.nuget.org/packages/Microsoft.NETCore.UniversalWindowsPlatform/5.2.2

Thank you very much for the answer!
Just moment ago I have solved dependencies issue by embedding all sources directly into the project.
Yes, with 5.2.2 it seems work fine! (but one another lib complain with 5.2.2 =) )


Special case of encoding for utcDateTime blocks desirable use cases

The openapi3 (and autorest) have the following special case for @encode:

encoding a utcDateTime or offsetDateTime will produce this format date-time-<encoding> (e.g. date-time-rfc7231 for rfc7231 encoding)

While this special case might be handy for the date-time-rfc7231 format, it prevents the use of @encode for the http-date format and possibly other date formats in the OpenAPI Format Registry.
The existing behavior can be preserved by simply special casing "rfc7231" -- just as "unixTimestamp" is currently special cased.

look to make sure current mappings are in the openapi3 registry as well

est: 2

I'm going to try to knock this one out myself.

Here's an interesting wrinkle: the "Next" version of the docs for the HTTP library says:

I interpret this to mean that the openapi3 emitter should render a utcDateTime in a header with "format: http-date-rfc7231" (changing to "http-date" with the fix for this issue), but this is not the behavior I see in the playground.
Playground example
Should I fix this?


4.1.3 navbar toggle button not closing when opened

MacOs Samsung mobile using chrome
The navbar toggle button does not close once opened.
i had to downgrade to 4.1.0 for the toggle button to work correctly.

Hi all sorry, I realized the issue was with subresource integrity clashing with rails gems being the issue. closed


Calex RGBWW LED strip (tesco uk)

Firmware dump only:
CalexOriginalLEDStripFirmware.zip
"Calex Holland Smart Multi Color Led Strip 900023.1"
https://www.tesco.com/groceries/en-GB/products/306856095

bump, did this profile cause the device to show an A- ap after the exploit ran?

Bought another of these yesterday.
(successful) Exploit log below.
device appeared as 'wlan0' in my router.
Will now try to OpenBeken it....
@notkmhn - Once I have openbeken on, I may be able to pull the config section if it still exists; although it's never seen the  app or the cloud?  What flash address is the config?

Click to expand log
```
Successfully built docker image
[?] Select the brand of your device: Calex
   Arlec
   Avatar
   Ayococr
 > Calex
   CASENL
   CLOUDY_BAY
   DIY
   Euarne
   Fcmila
   Feit
   FLSNT
   Gosund
   Helloify
[?] Select the article number of your device: Holland-LED-Strip-900023.1
E27-A60-RGBCCT-429004.1-v2.0

Holland-LED-Strip-900023.1
UK-900018.1-v1.0

==> Toggle Tuya device's power off and on again 6 times, with ~1 sec pauses in between, to enable AP mode. Repeat if your device's SSID doesn't show up within ~30 seconds. For smart plugs long press the reset button on the device for about 5 seconds. See https://support.tuya.com/en/help/_detail/K9hut3w10nby8 for more information.
Wiping NetworkManager configs
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Found access point name: "SmartLife-BD20", trying to connect..
Device 'wlan0' successfully activated with '4e905258-7741-4d01-bd1e-011717604924'.
Connected to access point.
Waiting 1 sec to allow device to set itself up..
Running initial exploit toolchain..
Exploit run, saved device config to!
output=/work/configured-devices/reDRgL8mdMWJ.deviceconfig
Saved device config in /work/configured-devices/reDRgL8mdMWJ.deviceconfig
==> Turn the device off and on again once. Repeat 6 more times if your device's SSID doesn't show up within ~5 seconds. For smart plugs long press the reset button on the device for about 5 seconds. See https://support.tuya.com/en/help/_detail/K9hut3w10nby8 for more information.
Wiping NetworkManager configs
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Found access point name: "SmartLife-BD20", trying to connect..
Error: Connection activation failed: (53) The Wi-Fi network could not be found.
Wiping NetworkManager configs
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Scanning for "A-" "Geeni-" "GRID-" "iHome-" "LDV SMART+-" "Merkury-" "Nexxt Home-" "SL-CreeLighting-" "SL-FLSNT-" "SmartLife-" "TreatLife-SL-" SSID...
Found access point name: "A-BD20", trying to connect..
Device 'wlan0' successfully activated with '742b3353-c388-4d8b-9644-526408fa4fee'.
Connected to access point.
Configured device to connect to 'cloudcutterflash'
Device is connecting to 'cloudcutterflash' access point. Passphrase for the AP is 'abcdabcd' (without ')
Cutting device off from cloud..
==> Wait for 20-30 seconds for the device to connect to 'cloudcutterflash'. This script will then show the activation requests sent by the device, and tell you whether local activation was successful.
Using WLAN adapter: wlan0
Oct  9 07:56:21 dnsmasq[15]: started, version 2.80 cachesize 150
Oct  9 07:56:21 dnsmasq[15]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfile
Oct  9 07:56:21 dnsmasq-dhcp[15]: DHCP, IP range <IP_ADDRESS> -- <IP_ADDRESS>, lease time 12h
Oct  9 07:56:21 dnsmasq-dhcp[15]: DHCP, sockets bound exclusively to interface wlan0
Oct  9 07:56:21 dnsmasq[15]: read /etc/hosts - 5 addresses
Configuration file: /dev/stdin
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:eb:b9:38:a0 and ssid "cloudcutterflash"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
Oct  9 07:56:25 dnsmasq-dhcp[15]:<PHONE_NUMBER> available DHCP range: <IP_ADDRESS> -- <IP_ADDRESS>
Oct  9 07:56:25 dnsmasq-dhcp[15]:<PHONE_NUMBER> client provides name: wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> DHCPDISCOVER(wlan0) 50:8a:06:7b:bd:20
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> tags: wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> DHCPOFFER(wlan0) <IP_ADDRESS> 50:8a:06:7b:bd:20
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> requested options: 1:netmask, 3:router, 28:broadcast, 6:dns-server
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> next server: <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  1 option: 53 message-type  2
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 54 server-identifier  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 51 lease-time  12h
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 58 T1  6h
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 59 T2  10h30m
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  1 netmask  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 28 broadcast  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  3 router  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  6 dns-server  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> available DHCP range: <IP_ADDRESS> -- <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> client provides name: wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> DHCPDISCOVER(wlan0) 50:8a:06:7b:bd:20
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> tags: wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> DHCPOFFER(wlan0) <IP_ADDRESS> 50:8a:06:7b:bd:20
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> requested options: 1:netmask, 3:router, 28:broadcast, 6:dns-server
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> next server: <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  1 option: 53 message-type  2
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 54 server-identifier  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 51 lease-time  12h
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 58 T1  6h
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 59 T2  10h30m
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  1 netmask  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 28 broadcast  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  3 router  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  6 dns-server  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> available DHCP range: <IP_ADDRESS> -- <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> client provides name: wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> DHCPREQUEST(wlan0) <IP_ADDRESS> 50:8a:06:7b:bd:20
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> tags: wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> DHCPACK(wlan0) <IP_ADDRESS> 50:8a:06:7b:bd:20 wlan0
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> requested options: 1:netmask, 3:router, 28:broadcast, 6:dns-server
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> next server: <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  1 option: 53 message-type  5
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 54 server-identifier  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 51 lease-time  12h
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 58 T1  6h
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 59 T2  10h30m
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  1 netmask  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option: 28 broadcast  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  3 router  <IP_ADDRESS>
Oct  9 07:56:28 dnsmasq-dhcp[15]:<PHONE_NUMBER> sent size:  4 option:  6 dns-server  <IP_ADDRESS>
Oct  9 07:56:29 dnsmasq[15]: query[A] h3.iot-dns.com from <IP_ADDRESS>
Oct  9 07:56:29 dnsmasq[15]: config h3.iot-dns.com is <IP_ADDRESS>
Oct  9 07:56:37 dnsmasq-dhcp[15]: 396177513 available DHCP range: <IP_ADDRESS> -- <IP_ADDRESS>
Oct  9 07:56:37 dnsmasq-dhcp[15]: 396177513 client provides name: wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 DHCPDISCOVER(wlan0) 84:e3:42:48:7e:32
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 tags: wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 DHCPOFFER(wlan0) <IP_ADDRESS> 84:e3:42:48:7e:32
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 requested options: 1:netmask, 3:router, 28:broadcast, 6:dns-server
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 next server: <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  1 option: 53 message-type  2
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 54 server-identifier  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 51 lease-time  12h
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 58 T1  6h
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 59 T2  10h30m
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  1 netmask  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 28 broadcast  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  3 router  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  6 dns-server  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 available DHCP range: <IP_ADDRESS> -- <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 client provides name: wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 DHCPDISCOVER(wlan0) 84:e3:42:48:7e:32
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 tags: wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 DHCPOFFER(wlan0) <IP_ADDRESS> 84:e3:42:48:7e:32
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 requested options: 1:netmask, 3:router, 28:broadcast, 6:dns-server
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 next server: <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  1 option: 53 message-type  2
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 54 server-identifier  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 51 lease-time  12h
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 58 T1  6h
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 59 T2  10h30m
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  1 netmask  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 28 broadcast  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  3 router  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  6 dns-server  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 available DHCP range: <IP_ADDRESS> -- <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 client provides name: wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 DHCPREQUEST(wlan0) <IP_ADDRESS> 84:e3:42:48:7e:32
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 tags: wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 DHCPACK(wlan0) <IP_ADDRESS> 84:e3:42:48:7e:32 wlan0
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 requested options: 1:netmask, 3:router, 28:broadcast, 6:dns-server
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 next server: <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  1 option: 53 message-type  5
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 54 server-identifier  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 51 lease-time  12h
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 58 T1  6h
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 59 T2  10h30m
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  1 netmask  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option: 28 broadcast  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  3 router  <IP_ADDRESS>
Oct  9 07:56:40 dnsmasq-dhcp[15]: 396177513 sent size:  4 option:  6 dns-server  <IP_ADDRESS>
Oct  9 07:56:48 dnsmasq[15]: query[A] h3.iot-dns.com from <IP_ADDRESS>
Oct  9 07:56:48 dnsmasq[15]: config h3.iot-dns.com is <IP_ADDRESS>
Using PSK v1 - Received PSK ID version 01
[I 221009 07:56:48 web:2239] 200 POST /v1/url_config (<IP_ADDRESS>) 5.95ms
[LOG] Client request PATH: /d.json - QS: a=tuya.device.active&et=1&t=81&uuid=reDRgL8mdMWJ&v=4.4&sign=73d250a5c6fda45e8af6d97d255f0a1d
[LOG] ==== Client request body ===
{'token': 'AAAAAA', 'softVer': '1.1.6', 'productKey': 'keyqwsdet7drnvue', 'protocolVer': '2.2', 'baselineVer': '40.00', 'productKeyStr': 'keyqwsdet7drnvue', 'hid': '508a067bbd20', 'modules': '[{"type":9,"softVer":"1.1.6","online":true}]', 'devAttribute': 515, 'cadVer': '1.0.2', 'cdVer': '1.0.0', 'options': '{"isFK":true}', 't': 81}
[LOG] ==== End client request body ===
tuya.device.active - response: {'result': {'schema': '[{"type":"obj","mode":"rw","property":{"type":"bool"},"id":20},{"mode":"rw","property":{"range":["white","colour","scene","music"],"type":"enum"},"id":21,"type":"obj"},{"mode":"rw","property":{"type":"string","maxlen":255},"id":24,"type":"obj"},{"mode":"rw","property":{"type":"string","maxlen":255},"id":25,"type":"obj"},{"type":"obj","mode":"rw","property":{"min":0,"max":86400,"scale":0,"step":1,"type":"value"},"id":26},{"mode":"wr","property":{"type":"string","maxlen":255},"id":27,"type":"obj"},{"mode":"wr","property":{"type":"string","maxlen":255},"id":28,"type":"obj"}]', 'devId': 'FxGRwY7BLeqOFfVABzXy', 'resetFactory': False, 'timeZone': '+02:00', 'capability': 1025, 'secKey': 'eXxgrnvsqDmicGKp', 'stdTimeZone': '+01:00', 'schemaId': '00000209tu', 'dstIntervals': [[1648342800,<PHONE_NUMBER>], [1679792400,<PHONE_NUMBER>], [1711846800,<PHONE_NUMBER>], [1743296400,<PHONE_NUMBER>], [1774746000,<PHONE_NUMBER>]], 'localKey': '2EiJ28ReFLQr16xV'}, 't':<PHONE_NUMBER>, 'success': True}
[I 221009 07:56:48 web:2239] 200 POST /d.json?a=tuya.device.active&et=1&t=81&uuid=reDRgL8mdMWJ&v=4.4&sign=73d250a5c6fda45e8af6d97d255f0a1d (<IP_ADDRESS>) 17.52ms
[LOG] Client request PATH: /d.json - QS: a=tuya.device.dynamic.config.get&devId=FxGRwY7BLeqOFfVABzXy&et=1&t=1665302208&v=1.0&sign=c3962c5b3d919d670a4d7da14cc94feb
[LOG] ==== Client request body ===
{'t':<PHONE_NUMBER>}
[LOG] ==== End client request body ===
tuya.device.dynamic.config.get - response: {'result': {'ackId': '0-0', 'validTime': 1800, 'time':<PHONE_NUMBER>, 'config': {'stdTimeZone': '+01:00', 'dstIntervals': [[1648342800,<PHONE_NUMBER>], [1679792400,<PHONE_NUMBER>]]}}, 't':<PHONE_NUMBER>, 'success': True}
[I 221009 07:56:49 web:2239] 200 POST /d.json?a=tuya.device.dynamic.config.get&devId=FxGRwY7BLeqOFfVABzXy&et=1&t=1665302208&v=1.0&sign=c3962c5b3d919d670a4d7da14cc94feb (<IP_ADDRESS>) 18.71ms
[LOG] Client request PATH: /d.json - QS: a=tuya.device.uuid.pskkey.get&et=1&t=1665302211&uuid=reDRgL8mdMWJ&v=1.0&sign=5eb4b39a2541682e0f5cfb3c8578310a
[LOG] ==== Client request body ===
{'t':<PHONE_NUMBER>}
[LOG] ==== End client request body ===
tuya.device.uuid.pskkey.get - response: {'result': {'pskKey': ''}, 't':<PHONE_NUMBER>, 'success': True}
[I 221009 07:56:52 web:2239] 200 POST /d.json?a=tuya.device.uuid.pskkey.get&et=1&t=1665302211&uuid=reDRgL8mdMWJ&v=1.0&sign=5eb4b39a2541682e0f5cfb3c8578310a (<IP_ADDRESS>) 9.77ms
device_id='FxGRwY7BLeqOFfVABzXy', ip='<IP_ADDRESS>', local_key='2EiJ28ReFLQr16xV'
Device should be successfully onboarded on WiFi AP!
</details>

This post has been tagged as new-dump-needed and has had not response.  This issue is being closed as stale.  To re-open this issue, please provide a new dump following the guildines in the device dumps section of the Readme.

I'm not sure where to put these file that a pulled off the Calex smart multi color LED strip I brought from tesco years ago but i used esphome-kickstarter and UPK2ESPHome grab for kickstarter option hope they are helpful.
Merkury EW003 LED Strip - schema ID 000002hqnb.json
Merkury EW003 Smart LED Strip Storage Data.json
This is the box they came in:


Added Spacemesh Meetup

Title says it all :-)

Thanks for submitting this!
Be aware the body of the event can't make links clickeable; they will be displayed as text. For reference, look at the synopsis of this event: https://blockchainweek.berlin/events/zero-knowledge-summit/

I can live with that :-)


ListView rows don't refresh when the state change.

RN: 0.35
It also exists in 0.37.0
I have two state. One is rowId, the other is showRecord. the rowId is types of Number, the showRecord is types of Boolean.
when I press on the row, the showRecord is true to show the hidden view. the rowId to judge which row.
This is my renderRow.
  renderRow(data, sectionId, rowId) {
    let source;
    if (rowId === this.state.rowId && this.state.showRecord) {
      source = require('../../image/up_arrow.png')
    } else {
      source = require('../../image/down_arrow.png');
    }
   console.log('test====');
    return (
      <View>
        <TouchableOpacity
          style={styles.recordBtn}
          onPress={() => this.recordPress(rowId)}
        >
          <Text style={styles.recordTxt}>record</Text>
          <Text style={styles.recordTxt}>time</Text>
          <Image source={source}/>
        </TouchableOpacity>
        {rowId === this.state.rowId && this.state.showRecord ? <Text>this is a test </Text> : null}
      </View>
    )
  }

and there is my renderPress:
  recordPress(rowId) {
    if (this.state.rowId != rowId) {
      this.setState({showRecord: true, rowId});
    } else {
      this.setState({showRecord: !this.state.showRecord, rowId})
    }
  }

And there is my issue:
when the row's length is 5, or 6 .  the code is  normal.
when the row's length is more than 20, the state is change anyway.  but the code isn't normal. the row isn't refresh. there is a console.log, but it wont run.

You should update the list view datasource to let the row refresh.

this happens to me too. previous versions of RN works, the individual rows rerender. refreshing the datasource won't be ideal.

@haibinyu should I assign the showRecord and rowId to dataSource's rowData ? when i press the row, i get the rowId, and change the dataSource's showRecord by the rowId. oh...

Can you reproduce this on rnplay.org? Please provide a link.

https://rnplay.org/apps/14G3XA
you can change the dataSource to this.arr2 in the function componentDidMount, reload and tap the row,  you will see the issue.

Closing as ListView is deprecated in 0.43. Use FlatList.


Doubt On Increased Gradient

Hi all, I've trained tacotron-1 on my own English dataset with both global and monotonic Bahdanau attention. One problem that bothers me is that max_gradient_norm seems to increase as training goes further. Does anyone know potential reasons?

First pic is global and second is monotonic.


Cache rotation scores in redis for perf.

Travis tests have failed
Hey @bakert,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
1st Build
View build log

     echo $CMD

python dev.py mypy

     $CMD

$ $CMD
CONFIG: production=False
decksite/views/rotation.py:55: error: Incompatible types in assignment (expression has type "List[Tuple[str, int]]", variable has type "Optional[List[str]]")
decksite/views/rotation.py:56: error: Value of type variable "T" of "store" cannot be "None"
decksite/views/rotation.py:57: error: Incompatible types in assignment (expression has type "Union[str, Any]", variable has type "int")
decksite/views/rotation.py:57: error: Value of type "Optional[List[str]]" is not indexable
decksite/views/rotation.py:60: error: Item "None" of "Optional[List[str]]" has no attribute "__iter__" (not iterable)
decksite/views/rotation.py:61: error: Argument 2 to "process_score" of "Rotation" has incompatible type "Union[str, Any]"; expected "int"

Exit status: 1 (Failure)
7 issues

TravisBuddy Request Identifier: 3bde49c0-c743-11e8-9635-dbb2b967f3c5

Abandoning this because it's a partial solution and the typing is too difficult.


Ambiguous behavior for timestamp with timezone

After retrieval it seems has a timezone shift. See Integration test [testcases/select_all.sql]

@zhexuany I believe this has been fixed?

fixed. Closing.


added frame_id argument to go_to

Basic Info

Info
Please fill out this column

Issue(s) this addresses
Add frame_id argument to go_to

ROS2 version tested on
Humble

Aerial platform tested on
Ignition

Description of contribution in a few bullet points

Added frame_id argument to go_to simplifications

Codecov Report

Merging #267 (27be8b3) into main (eab31b2) will decrease coverage by 0.07%.
The diff coverage is n/a.

:exclamation: Current head 27be8b3 differs from pull request most recent head 09e2301. Consider uploading reports for the commit 09e2301 to get more accurate results

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff            @@
##            main    #267      +/-   ##
========================================
- Coverage   3.06%   2.99%   -0.07%
========================================
  Files        100      97       -3
  Lines       5251    5235      -16
  Branches     455     470      +15
========================================
- Hits         161     157       -4
+ Misses      4952    4924      -28
- Partials     138     154      +16

Flag
Coverage Δ

unittests
2.99% <ø> (-0.07%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 51 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Week 2: Continuous Integration Using GitHub Actions

Topics: Understand Terraform and its integration with OpenStack

Tasks:

Terraform Basics:

Install Terraform and go through basic configuration and commands (e.g., init, plan, apply).
Write a Terraform script to deploy an OpenStack instance (define resources like networks, images, flavors, and instances).
Use and configure variables to make the Terraform configuration more flexible.
Deploy an OpenStack instance using Terraform and ensure it is correctly provisioned.
Ensure that all the all is documented i.e.  Terraform code and troubleshooting steps.

Terraform Advanced Scripting:

Automate network configurations, security groups, and floating IPs.
Write configurations to deploy multiple instances with load balancers or scaling groups.
Use Terraform to scale up and down the infrastructure on OpenStack.
Push Terraform code to a GitHub repository to enable collaboration.
Document challenges and differences when scaling infrastructure.

Hey Team @thinacalana1 @NomAsh2247 @DCSpear @TebogoDira
As we approach the end of week 2, just wanted to check in.
Hope the exams are going well, and do not hesitate to ask should you have any questions.
All the best :)

Hey @mmhashatsi thank you for checking in.
Yes, we have a hectic two weeks ahead of us, the exams are fine it's the assignment deadlines that are killing us.
However, we know this is all part of uni life.

Hey @DCSpear
These should be treated more like timelines rather than deadlines, so we structured it this way because we didn't want it to be overwhelming, but as a team it is up to you to manage your time. When school gets hectic focus on that, just be careful not to leave everything for the last minute.
The most important date is the deadline for the poster and of course the conference, so feel free to move the tasks around and set your own timelines as long as you are able to meet the final deadline.
Hope this helps.

Hi Team,
If you are done with these tasks, let us know so that this issue can be closed.

@nyameko task complete


docs: Update SCIM doc to not mention add_scim_client.

add_scim_client was removed in 55342efd33cc482daecdf9d0f560b4f32122540f.
This is trivial enough that I don't think needs any other review, so will tag integration review

Merged, thanks @mateuszmandera!

Backported to 7.x as 6c18abddb62e88a0d53aabc91c62ee1041b6ad14.


support for cpp syntax

Preview is available here:http://soroban-docs-pr501.previews.kube001.services.stellar-ops.com/


Backport 2.7: Clarify that the full config enables everything that can be tested together

This is a partial backport of #3190. It is very similar to the 2.16 backport. A few commits didn't cherry-pick cleanly, but are replicated with the same semantics: sort lists. some places to split USAGE, file name where fileno needs to be declared, fewer all.sh components with MBEDTLS_PLATFORM_NV_SEED_ALT.

It seems the CI is not completely happy though.

It turns out that 2.7 hadn't had the benefit of https://github.com/ARMmbed/mbedtls/pull/1198/commits/2682edf205177a9639d2126238d6f83e19fd5d71. That patch changes how some library files are built, and I'd prefer not to do that in an LTS branch if there isn't a good reason. “It breaks on some platform that someone cares about” would be a good reason, but I don't think “it removes a difference between branches” is.
So I'm going to rework this PR to not start doing a build in strict c99 mode with the platform code enabled. In 2.7, unlike the more recent versions, only no-platform builds pass in strict c99 mode.


Generated  models and request builders

This pull request was automatically created by Azure Pipelines. Important Check for unexpected deletions or changes in this PR.

closing as impacted by the parent interface type for errors issue