Error in Lua 5.3 with pattern longger than 1

Example not work in Lua 5.3.
Seems any pattern length greater than 1 cause error.
Test Lua 5.1 is fine.
Coded in UTF8.
local utf8 = require('.utf8'):init()
print(utf8.find('abc',"a"))--ok
print(utf8.find('abc',"ab"))--crash

Error message like:
C:\ProgramFiles\ZeroBraneStudio\bin\lua53.exe: ...gramFiles\ZeroBraneStudio\lualibs/\utf8\regex_parser.lua:77: [string "12"]:24: unexpected symbol near '.0' stack traceback: 	[C]: in function 'assert' 	...gramFiles\ZeroBraneStudio\lualibs/\utf8\regex_parser.lua:77: in function '.utf8.regex_parser' 	...mFiles\ZeroBraneStudio\lualibs/\utf8\functions\lua53.lua:16: in function 'get_matcher_function' 	...mFiles\ZeroBraneStudio\lualibs/\utf8\functions\lua53.lua:24: in function '.utf8.functions.lua53.find' 	...sers\RobertLin\Documents\Lua\LuaAgain2015\PathSearch.lua:16: in main chunk 	[C]: in ?

Sorry, cannot reproduce this error. I downloaded the ZBS version 1.90 and ran this example script with all provided Lua interpreters (5.0, 5.2, 5.3) output is the following:
Program starting as '"C:\Users\Stepa\Downloads\ZeroBraneStudio\bin\lua53.exe" -e "io.stdout:setvbuf('no')" "C:\Users\Stepa\test.lua"'.
Program 'lua53.exe' started in 'C:\Users\Stepa' (pid: 1476).
1	1
1	2
Program completed in 0.04 seconds (pid: 1476).

My guess is you might be using outdated code version.

Sorry, cannot reproduce this error. I downloaded the ZBS version 1.90 and ran this example script with all provided Lua interpreters (5.0, 5.2, 5.3) output is the following:
Program starting as '"C:\Users\Stepa\Downloads\ZeroBraneStudio\bin\lua53.exe" -e "io.stdout:setvbuf('no')" "C:\Users\Stepa\test.lua"'.
Program 'lua53.exe' started in 'C:\Users\Stepa' (pid: 1476).
1	1
1	2
Program completed in 0.04 seconds (pid: 1476).

My guess is you might be using outdated code version.

Can you show program output with such configuration?
local utf8 = require('.utf8')
utf8.config = {
  debug = utf8:require("util").debug
}
utf8:init()
print(utf8.find('abc',"a"))--ok
print(utf8.find('abc',"ab"))--crash

Can you show program output with such configuration?
local utf8 = require('.utf8')
utf8.config = {
  debug = utf8:require("util").debug
}
utf8:init()
print(utf8.find('abc',"a"))--ok
print(utf8.find('abc',"ab"))--crash

Feel free to reopen the issue if this behaviour can be reproduced and you have a debug output.

Feel free to reopen the issue if this behaviour can be reproduced and you have a debug output.


Feature/4348 scenario 5 compile reports

Description
The 5th scenario for the E2E test suit
closes #4348
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[x] Changelog entry

Processing this pull request

Failed to merge changes into iso5 due to merge conflict. Please open a pull request for these branches separately by cherry-picking the commit that was made on the branch master (git cherry-pick 400d66ad90ac25629f1cf33d05a864da73236d0c).

Merged into branches master, iso6 in 400d66ad90ac25629f1cf33d05a864da73236d0c

Not closing this pull request due to previously commented issues for some of the destination branches. Please open a separate pull request for those branches by cherry-picking the relevant commit. You can safely close this pull request and delete the source branch.

This branch was not deleted as it seems to still be in use.

Processing this pull request

Pull request rejected by merge tool. No change entry file found


SkipCACheck/SkipCNCheck New-PSSession on non-Windows test failing on Debian 10

SkipCACheck and SkipCNCheck PSSession options are required for New-PSSession on non-Windows platforms.Verifies expected error when SkipCACheck option is missing
Failed 3h ago on 6dcfecda2e0b
Duration0:00:00.037
Failing buildReleaseAutomationTest-114865
OwnerPaul Higinbotham
Debug
Work items
Attachments
History
Error message
Expected 825, but got 0.
Stack trace
at , /home/vsts_azpcontainer/PSPackage/download/Test/test/powershell/engine/Remoting/PSSession.Tests.ps1: line 82
82:         $er.Exception.ErrorCode | Should -Be $expectedErrorCode
https://dev.azure.com/mscodehub/PowerShellCore/_build/results?buildId=117686&view=ms.vss-test-web.build-test-results-tab&runId=1096282&resultId=101189&paneView=debug
Steps to reproduce

Expected behavior

Actual behavior

Environment data

The problem is that it's looking for libpsrpclient.so in $pshome/linux-x64 folder.  Even after copying it there, it has some dependencies and the symlinks are going to the wrong version on the OS.

Dupe of https://github.com/PowerShell/PowerShell/issues/11128


Parity for source freshness task/command

Describe the feature
dbt source snapshot-freshness is quite limited and a bit verbose relative to other dbt task-commands.

Source freshness should support full node selection syntax, including things like:

--select tag:something (#2369)
--exclude and --selector (#2729)
--select +downstream_resource, i.e. check freshness of all sources upstream of downstream_resource. I think this would be especially compelling for exposures!

Should this be renamed to avoid confusion with dbt snapshot? I think yes, and it could be as simple as calling it dbt source freshness instead—although that's not a verb! Open to suggestions.

We'd obviously do the renaming in a way that's backwards-compatible. Ideally, we'd rename and add functionality in the same release.
Describe alternatives you've considered
Leaving dbt source snapshot-freshness as is: clunky to type, wonky to use
Additional context
Is this feature database-specific? Which database(s) is/are relevant? Please include any other relevant context here.
Who will this benefit?
All current and potential users of source freshness, which is a relatively underused + under-appreciated feature! Maybe in part because it feels a bit clunky :)

When running this command, I also think it should have a summary statement which it doesn't have right now (e.g. 10 models pass, etc.). Do you consider this part of parity or should it be a separate issue @jtcohen6?

When running this command, I also think it should have a summary statement which it doesn't have right now (e.g. 10 models pass, etc.). Do you consider this part of parity or should it be a separate issue @jtcohen6?

Good call @emilieschario! I think we could work that into this issue for now, and we'll split it out if we need to.
In general, we don't make the same commitments today about log / stdout stability as we now do for artifacts and user-supplied code. There's a lot of little stdout things I'd like to tidy up or touch up, but they're not high-priority prerequisites for 1.0.

Good call @emilieschario! I think we could work that into this issue for now, and we'll split it out if we need to.
In general, we don't make the same commitments today about log / stdout stability as we now do for artifacts and user-supplied code. There's a lot of little stdout things I'd like to tidy up or touch up, but they're not high-priority prerequisites for 1.0.

What is the exit criteria for this issue?

I think all constructs exist, exit criteria can be aligning selection behavior with other commands.

What are the high-level items of the work that need to be done (i.e. create x, split out y, etc.)

update cli parsing to add to sub parsers to handle selection args
update selection logic in the freshness task
create new command pointing to the same entry point

What are the open questions on this issue that still need answers?

what exactly should we rename the cli command?
does state selection make sense for this command?

@jtcohen6 2 quick questions:

I'm going back and forth here. What should we rename this cli command to?

dbt source freshness
dbt source-freshness
dbt data-freshness
dbt check freshness

Should the current dbt source snapshot-freshness command stay in tact (this is a simple alias) with a deprecation warning?

I'm leaning dbt source freshness. I realize it's a noun, not a verb (which other commands are), but I don't think that's so bad. The colloquial expression/documentation can refer to this as "checking source freshness."
Yes!

@jtcohen6
I am curious about --select +downstream_resource you mentioned
I would like to automatically check all upstream sources if they are fresh given the model
Does this work now?

@Kiollpt Yes, that should work now! Have you given it a try with a recent version of dbt (v0.21+)?

@jtcohen6 It works well after I tried.


Change Square brackets in URI fragment to round parentheses

See my comment on PR #94 - this change to support generic types generates invalid URI fragments, so the schemas generated by this library become invalid.
This change changes the square brackets to round parentheses - these are allowed in URIs. This makes the URIs looks nicer in json-schema files than percent-encoding of the square brackets.

Thanks for the PR. merged


Question about ssz illegal type

I see the following content in ssz spec

Illegal types
Empty vector types (Vector[type, 0], Bitvector[0]) are illegal.
Containers with no fields are illegal.
The None type option in a Union type is only legal as the first option (i.e. with index zero).

I'm not sure if an empty array or container are just meaningless, or if there's some reason will cause the ssz codec cannot work.

I got the reason from: https://github.com/ethereum/consensus-specs/issues/1863

I found the reason for the illegal type. But I would like to know how these types are handled in smart contract languages (such as solidity), I didn't find any constraints about empty structs in solidity's spec.

Asset

Asset


Adding armhf-docker-compiler

This commit contains a functional Dockerfile which will produce a zip file containing the latest armhf build of the lbrynet daemon.
PR Checklist
Please check all that apply to this PR using "x":

[X] I have checked that this PR is not a duplicate of an existing PR (open, closed or merged)
[X] I have checked that this PR does not introduce a breaking change
[ ] This PR introduces breaking changes and I have provided a detailed explanation below

PR Type
What kind of change does this PR introduce?
It equips the LBRY team with the ability to compile an armhf binary via Docker if they wish they can use Travis CI to do this as they use it for other builds as well.
Why is this change necessary?
Currently, @kodxana is building this binary at home on their Raspberry PI and it takes ages.  This reduces build times from hours to under an hour.  The other benefit is this means that automation can take over.

[ ] Bugfix
[X] Feature
[ ] Breaking changes (bugfix or feature that introduces breaking changes)
[ ] Code style update (formatting)
[X] Refactoring (no functional changes)
[X] Documentation changes
[ ] Other - Please describe:

Fixes
Issue Number: N/A
What is the current behavior?
Currently, @kodxana is building the binary on their volunteer hardware.
What is the new behavior?
You can now follow the new /lbry/docker/armhf-compiler/README.md to build the armhf container on any x86_64 host.
Other information
Someone will need to implement this in the travis-ci.yml if not me it'll need to be done by someone who manages this on the team.

Can you refactor this so that the install instructions are not duplicated between what's in .travis.yml for linux and what's in this PR (which is also for linux).
Since we use ubuntu on travis and you're using ubuntu in the docker container, it should be using the same script.

Closing after some discussion in slack, @Leopere will move this into https://github.com/lbryio/lbry-docker


Feat create doc from named tuple 1246

Goals:
This PR is for issue #1246
With this PR a user will be able to directly create models from a named tuple. It is a wrapper built around pydantic's create_model_from_namedtuple().

Could you ülease follow the contributing guideline and setup the pre-commit hook so that your code is formatted with code and ruff before your merge ?

new PR is https://github.com/docarray/docarray/pull/1344


Elytra commands like /flyto dont appear as real commands

Commands don't show up in the autocomplete menu properly. I'm not sure what exactly causes this, as it was working fine a few versions ago, but on 2.0.0 it does not.
Commands are still functional, but there's no option to autocomplete or list all commands.

Strange, the commands show up as normal for me. Did you test this in multiplayer?


Add "Explore Books" Feature to Navbar for Hacktoberfest Newcomers

Description: Add an "Explore Books" option in the navbar that will display a collection of books contributed by Hacktoberfest newcomers. Each book should be displayed as a card with a front image and title, and on hover, the card will flip to reveal the description on the back. This feature will serve as a collaborative space for participants to share their favorite books, improving interaction and engagement on the platform.
Tasks:
Navbar Addition:
Add an "Explore Books" option in the main navbar.
Ensure proper routing to a new page that lists all books submitted by contributors.
Card Design:
Create a responsive card layout that displays the book’s cover image and title on the front.
Implement a hover effect that flips the card to reveal the book description on the back.
Style the cards following the existing theme of the website (dark background, smooth transitions, etc.).
Hacktoberfest Integration:
Provide clear instructions for Hacktoberfest contributors to add their favorite books.
Each book submission should include:
Book Title
#Author
Cover Image URL (uploaded by contributors)
Book Description (100-150 words)
Store the book data in a JSON file (or another format if no database is involved).
Dynamic Content Loading:
Implement dynamic loading of book cards on the Explore Books page by reading the content from the file.
Ensure the page updates as new books are added by contributors during Hacktoberfest.
Card Flip Animation:
Use CSS to create the card flip effect on hover.
Ensure smooth transitions for both flipping and when showing/hiding the description.
Test the card flip animation on various devices to ensure it works responsively.
Acceptance Criteria:
The "Explore Books" option is visible in the navbar and routes correctly to a new page.
Book cards are displayed in a grid format, with a hover animation that flips the card to show the book description.
The design of the cards is responsive and follows the theme of the website.
Newcomers can easily add their favorite books via the GitHub repository during Hacktoberfest.
The book list dynamically updates as new contributions are made.

Is this task done?

No it's not @Tomkndn

Can you briefly explain the thing what things i have to build

check above issue description

assign

@aliabbasnagari  go ahead


Developer Guide: Update User Stories

Update User Stories

Coverage remained the same at 92.209% when pulling a50f7da5c9e56dceb84689fc07674b6bb211b1d5 on limcel:master into 71fea5f3e928120d9752040550b55fb2dd17ca1a on CS2103AUG2017-T16-B2:master.

Coverage remained the same at 92.209% when pulling abff52314a0ee563796bf1f3433d80cf80e0e22f on limcel:master into 71fea5f3e928120d9752040550b55fb2dd17ca1a on CS2103AUG2017-T16-B2:master.


make nextcord.Object work with the int converter

Summary
Nothing else that you told me
What is the feature request for?
The core library
The Problem
Nothing else that you told me
The Ideal Solution
Nothing else that you told me
The Current Solution
No response
Additional Context
No response

fixed with #41


Use specific version of shellcheck in static analysis

The current static-analysis github workflow is using a version of shellcheck that comes with the ubuntu-latest image. Additionally, when running locally make static-analysis may fail depending on shellcheck version.
This PR should:

[ ] Install an up to date, stable shellcheck in github actions.
[ ] Check the shellcheck version in make static-analysis and warn if it is not the same.

Thanks for that. Yes I suppose we should, although first we should fix the shellcheck errors from make static-analysis first :)


[flutter_conductor] port codesign script to conductor

Closing this in favor of https://github.com/flutter/cocoon/pull/1861


Add Boss Transfer Task Capability

Hey @william-silversmith , What's the status on this?

It was depending on the last PR that we merged. I should whip this one into shape now that it has been.


Support Windows

 Support Windows

See related - https://github.com/bazelbuild/buildtools/issues/375

See related issue for grpc_java_plugin: https://github.com/grpc/grpc-java/issues/4859

Windows Subsystem for Linux (WSL)
The Windows Subsystem for Linux lets developers run GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a virtual machine.
How to install?
Please follow the guide - https://docs.microsoft.com/en-us/windows/wsl/about
Note: You may have to upgrade the version of Windows. If you need it you will know about it at the very beginning of the installation.
How to use StartupOS in WSL?
Just to follow instructions - https://github.com/google/startup-os#how-to-use-startupos
Productivity testing in the same machine:
Execution time ./build.sh
Ubuntu:
INFO: Elapsed time: 115.979s, Critical Path: 46.37s
INFO: 520 processes: 384 linux-sandbox, 56 local, 80 worker.
INFO: Build completed successfully, 806 total actions

Ubuntu on Windows:
INFO: Elapsed time: 471.787s, Critical Path: 102.78s
INFO: 605 processes: 494 processwrapper-sandbox, 111 worker.
INFO: Build completed successfully, 782 total actions

Execution time ./test.sh
Ubuntu:
INFO: Elapsed time: 24.577s, Critical Path: 24.08s
INFO: 15 processes: 13 linux-sandbox, 2 local.
INFO: Build completed successfully, 16 total actions

Ubuntu on Windows:
INFO: Elapsed time: 147.112s, Critical Path: 145.24s
INFO: 15 processes: 2 local, 13 processwrapper-sandbox.
INFO: Build completed successfully, 16 total actions

Looks great!
Please add documentation on Platforms:
https://github.com/google/startup-os#platforms


Fix misleading error on long startup

It is related to already closed #1474
The bug:

When Node does migration (so GRPC API is not responding for a long time) Smapp displays the error that it cannot connect to the Node and proposes to Restart, which does not make any sense.
Also I've tweaked the behavior of the "Restart" button to make it correspond better to an actual state:

Changing screens won't drop "Restarting..." status anymore,
It displays an actual state faster (once it is Restarted it will display a startup status)

@monikasmolarek thanks!

wait until smapp shows that the node is down (it takes a bit long IMHO)

It happened due to the debounced updating of node status, so sometimes you may trigger an error, and then have updated status (which is dropping the error). Now it is fixed.
Also fixed the case that the IsRunning Node status was not dropped when the Node crashed. It causes displaying "Lost connection" message after restarting the node (while it is compacting db).


StatusCodePages middleware

#66
Submitting for design feedback, it's not ready for a detailed code review yet. Are the handlers provided useful (response, redirect, tangent, re-execute)?
Entropy MVC sample: https://github.com/aspnet/Entropy/pull/38
Re-execute works OK with MVC. Static files would only work well with the redirect scenario due to all the request and response headers it uses, and the fact that it overwrites the status code. However you could do a simpler version of static files by going directly to the WebRootFileProvider and serving the content yourself.
@loudej @davidfowl @GrabYourPitchforks @yishaigalatzer

https://github.com/aspnet/HttpAbstractions/pull/180

All right, if nobody has any design feedback, how about normal code review feedback?

Minus a few small cleanup comments, this looks :shipit: to me!

@Praburaj Can you pull the code from my branch and take over this feature?
FYI @muratg

Looks good apart from the comments above. :shipit:
@Praburaj please feel free to take this over.

@Tratcher @muratg sure.

I have addressed all of the PR comments. I'm going to file a work item to put in a pre-compiled razor view for the default handler as soon as the feature goes in. @Eilon @muratg @Tratcher - let me know if you have any comments on these changes.

Updated the PR as well.

Looks :shipit: to me.

Thanks @Eilon. Will merge it in.


[v2] Issues with Build Server

While upgrading to Bref 2, I looked over at the Laravel bridge improvements and I decided to retire my own bridge.
I use AWS CodeBuild to build the project before releasing. That entails

Composer Install
PHPUnit run
Composer Install --no-dev

When Composer Installs without dev dependencies, it crashes with errors such as [...] CollisionServiceProvider not found. This seems to be caused by the fact that composer install will generate a cache of packages.php and services.php.
It might also be relevant that on the first run, BrefServiceProvider has not been downloaded yet and it's likely that the cache files are written down in bootstrap/cache/ standard folder.
I managed to fix this by doing two things: defining environment variables for the cache files and creating the storage directories outside of Lambda.
      - LAMBDA_TASK_ROOT=/var/task
      - APP_SERVICES_CACHE=/tmp/storage/bootstrap/cache/services.php
      - APP_PACKAGES_CACHE=/tmp/storage/bootstrap/cache/packages.php

These are the variables I added to my docker-compose setup for the build process.

The change to the original bootstrap/app.php seemed necessary because 1) the /tmp/storage folder does not exist by default and 2) the bref-init.php file is not being executed when running outside of Lambda (i.e. build server).
I'm not sure what recommendation/documentation/suggestion should be made to accommodate this usecase, so I thought I'd at least open a issue to allow folks to read through my approach to solving this.

This seems like a build pipeline issue, not so much one in this package. Or am I missing something? I can successfully run a composer install --no-dev on my projects.


Renaming firewall group doesn't change the group interface reference in the rule

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[x] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Describe the bug
If I rename a firewall group and I have a source in the rule set to that group, the Source in the rule will change from Group to "Single host or Network" and Name_of_the_group.
To Reproduce
Create a Group Group1. Create a firewall rule, that has a source set to Group1.
Edit the Group name, change to Group2.
Go back into the Firewall -> Group2.
Edit the rule, source remains Group1, selected Single host or Network.
Expected behavior
I would expect the source to automatically change to Group2 net.
Environment
Latest update, 21.1.7.
Intel(R) Core(TM) i3-6320 CPU @ 3.90GHz (4 cores)
16GB RAM

in the same corner as https://github.com/opnsense/core/issues/5035, probably best to look at both tickets a once.


Test build with latest master

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Cross-check build time with https://github.com/conda-forge/gz-sim-feedstock/pull/39#issuecomment-1881890169 .


Select causes parent Dialog to fail on outside click

Bug report
Current Behavior
If you open the Dialog then open the child Select, then click outside, you can no longer open the dialog.
Expected behavior
No parent dialogs should be closed when clicking outside the Select.
Reproducible example
I just took the demo Dialog from the website and shoved in the demo Select from the website
CodeSandbox
https://github.com/radix-ui/primitives/assets/631812/9f00a78b-6c3d-4ae7-8878-8f095cef7d08
Suggested solution
The way Select disables pointer down on the body causes us headaches with other Floating-UI-based components. I'm guessing a similar thing is happening to the Radix Dialog.
The body is being left with pointer-events: none;

Additional context

Your environment

Software
Name(s)
Version

Radix Package(s)
react-dialog
latest (1.0.5)

Radix Package(s)
react-select
latest (1.2.2)

React
n/a
18.2.0

Browser
Chrome
Version 125.0.6422.77 (Official Build) (arm64)

Assistive tech

Node
n/a

npm/yarn

Operating System
OSX
14.1.1 (23B81)

This is a duplicate of https://github.com/radix-ui/primitives/issues/1088
It happens when a version of an internal dependency that manages the dismissible layer goes out of sync between components such as the select/dialog/popover/etc. We just released new versions for all primitives though, so for now just upgrade to the current version should work around the problem. (Also I'd recommend to pin the versions and not rely on "latest" or even "^" to avoid this problem until it's resolved).


BUG: The subscribe button is not functional

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
The subscribe button for the news letter in the footer section is not working. I would like to add an email container and add functionality to subscribe button
https://github.com/user-attachments/assets/69d4672f-e1a6-4466-951e-477f34fb7645
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

Please assign this issue to me @anuragverma108

Assigned @samarsajad


FLEX-4126 ~ Removes OSLP queues from protocol info table.

All is well.

This pull request makes the build fail.

SonarQube analysis reported 2 issues

 2 major

Watch the comments in this conversation to review them.
1 extra issue
Note: The following issues were found on lines that were not modified in the pull request. Because these issues can't be reported as line comments, they are summarized here:

 DeviceMonitoringService.java#L76: Method has 7 parameters, which is greater than 6 authorized.

All is well.

SonarQube analysis reported 2 issues

 2 major

Watch the comments in this conversation to review them.
1 extra issue
Note: The following issues were found on lines that were not modified in the pull request. Because these issues can't be reported as line comments, they are summarized here:

 DeviceMonitoringService.java#L76: Method has 7 parameters, which is greater than 6 authorized.

All is well.

SonarQube analysis reported 2 issues

 2 major

Watch the comments in this conversation to review them.
1 extra issue
Note: The following issues were found on lines that were not modified in the pull request. Because these issues can't be reported as line comments, they are summarized here:

 DeviceMonitoringService.java#L76: Method has 7 parameters, which is greater than 6 authorized.

All is well.

SonarQube analysis reported 2 issues

 2 major

Watch the comments in this conversation to review them.
1 extra issue
Note: The following issues were found on lines that were not modified in the pull request. Because these issues can't be reported as line comments, they are summarized here:

 DeviceMonitoringService.java#L76: Method has 7 parameters, which is greater than 6 authorized.

All is well.


Idea: shot-scraper multi --if-not-exists or --skip-existing

Only does the screenshot if the output: file doesn't exist yet.
This could be used to build a very neat GitHub mechanism for creating a portfolio of screenshots of your projects.

I don't really like either of these option names.

Options:

shot-scraper multi shots.yml --if-not-exists
shot-scraper multi shots.yml --skip-existing
shot-scraper multi shots.yml --skip

Are there other command-line tools with similar options I can borrow syntax for?

I tried using GPT-3 for inspiration but it didn't come up with anything better:

Command line option names for an option that skips a file if it already exists:
--skip-if-existing
--skip-existing
--skip-if-file-exists
--skip-if-duplicate
Shorter options:
-s
-S
Single word options:
--skip
--existing

This prompt worked better:

Command line tools with a skip existing option:

cp with the -n or --no-clobber option
mv with the -n or --no-clobber option
ln with the -n or --no-target-directory option
tar with the --skip-existing option

I think I like -n/--no-clobber here, since it's already used by cp and mv.

Updated documentation: https://github.com/simonw/shot-scraper/blob/1007d0f2135926f87dc45b2ad13dabfdf22312fc/README.md#taking-multiple-screenshots

Feedback on Twitter: --no-clobber makes no sense at all to non-English speakers, whereas --skip-existing does: https://twitter.com/kim_vanwyk/status/1516114233255202827

wget calls it no-clobber which I understood when I read it. I did wonder though if "clobber" is meaningful to non-British-english speakers. It strikes me as British slang.

I think I'm going to embrace the Britishness of it though.


Support for Googles hosted domain parameter

Adds support for the hosted domain (hd) parameter (https://developers.google.com/identity/protocols/OpenIDConnect). This allows to restrict the login to users of a specific G Suite domain.
Example configuration:
'google' => [
    'class'        => 'dektrium\user\clients\Google',
    'clientId'     => 'CLIENT_ID',
    'clientSecret' => 'CLIENT_SECRET',
    'hostedDomain' => 'mydomain.com',
],

Q
A

Is bugfix?
no

New feature?
yes

Breaks BC?
no

Fixed issues

Merged. Thanks!


Randomly fail tests

Randomly fail tests with error
            Cannot read property 'owner' of undefined
        stack: >
            TypeError: Cannot read property 'owner' of undefined
                at authenticateSession (http://localhost:7357/assets/test-support.js:26625:29)
                at Context._callee$ (http://localhost:7357/assets/tests.js:4076:59)
                at tryCatch (http://localhost:7357/assets/vendor.js:11748:40)
                at Generator.invoke [as _invoke] (http://localhost:7357/assets/vendor.js:11986:22)
                at Generator.prototype.(anonymous function) [as next] (http://localhost:7357/assets/vendor.js:11800:21)
                at step (http://localhost:7357/assets/tests.js:4038:32)
                at http://localhost:7357/assets/tests.js:4056:16
                at new Promise (<anonymous>)
                at Context.<anonymous> (http://localhost:7357/assets/tests.js:4035:14)
                at http://localhost:7357/assets/test-support.js:28442:25```

```js
import { setupApplicationTest } from 'ember-mocha';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { authenticateSession } from 'ember-simple-auth/test-support';

describe('Acceptance | Edit language page', function () {
  let hooks = setupApplicationTest();
  setupMirage(hooks);

  const user = {
    email<EMAIL_ADDRESS>    id: '1',
  };
  beforeEach(async function () {
    await authenticateSession({ user: user });
  });
});

Do you have any ideas?

You need to pass the application instance to the authenticateSession helper when using mocha.


Crashes with esp32_ble_tracker

Seeing a lot of crashes with proposed esp32_ble_tracker configuration on esp32-wroom-32d. Most of the time I can't even finish OTA update, I get a crash and connection reset by peer message. Tried using default esp32_ble_tracker configuration by just leaving esp32_ble_tracker: in the yaml and I get no crashes, but lots of remote button presses are missed.
Is esp32 just not up to the task?

Enabling/using esp32_ble_tracker on a single core ESP32 isn't suggested. Using a dual core ESP32 works fine for me.

Yes, isn't esp32-wroom-32d dual core?

All yeelight devices are equipped with single core ESP32. So I will rephrase my question: Do you use the ESP32 of your yeelight or do you use a dedicated board/esp32?

Please use parts (esp32_ble_tracker.scan_parameters) of this configuration as starting point:
https://github.com/syssi/esphome-yeelight-ceiling-light/pull/32/files#diff-28732135f1ce36041cea23f051289d9b9c27d5c84cac31f1e15cfecd068f15f4

It looks like the
  framework:
    type: esp-idf

framework is broken / doesn't compile at the most recent esphome version. I hope this will be fixed soon.

All yeelight devices are equipped with single core ESP32. So I will rephrase my question: Do you use the ESP32 of your yeelight or do you use a dedicated board/esp32?

I have bought a separate esp32 module and replaced it with that one.

Good job! Could you provide your configuration? I would like to try to reproduce the issue.

give me a few minutes

here's mine with your recommended ble_tracker values:
https://gist.github.com/jvitkauskas/95d7f8952f5ac69f926663039839b320
It's C2001C450 + ylyk01yl + ylkg07yl, but reproducable with C2001C450 + ylyk01yl too.

to reproduce the issue just install that yaml and keep pressing buttons on a remote for a minute or so and you'll see a connection loss
INFO Disconnected from ESPHome API for esphome-web-0aad1c.local
WARNING Disconnected from API
INFO esphome-web-0aad1c.local: Ping Failed: Error while reading data: [Errno 104] Connection reset by peer
INFO Successfully connected to esphome-web-0aad1c.local```

@syssi could you reproduce the issue? I am not sure, maybe it's related to the chip I am using. I see there are newer ones available.

I had to reduce you config a bit because I've flashed the configuration to a wemos d1 mini. The reduced config is stable:
$ esphome logs test-ylyk01yl.yaml
INFO Reading configuration test-ylyk01yl.yaml...
INFO Updating https://github.com/syssi/esphome-yeelight-ceiling-light.git@add-yeedimmer-ylkg07yl-support
Found multiple options, please choose one:
  [1] /dev/ttyUSB0 (CP2104 USB to UART Bridge Controller - CP2104 USB to UART Bridge Controller)
  [2] Over The Air (test-ylyk01yl.local)
(number): 2
INFO Starting log output from test-ylyk01yl.local using esphome API
INFO Successfully connected to test-ylyk01yl.local
[12:45:02][I][app:102]: ESPHome version 2022.1.1 compiled on Feb  6 2022, 12:43:43
[12:45:02][C][wifi:488]: WiFi:
[12:45:02][C][wifi:350]:   Local MAC: FF:FF:FF:FF:FF:FF
[12:45:02][C][wifi:351]:   SSID: '...'
[12:45:02][C][wifi:352]:   IP Address: ...
[12:45:02][C][wifi:354]:   BSSID: FF:FF:FF:FF:FF:FF
[12:45:02][C][wifi:355]:   Hostname: 'test-ylyk01yl'
[12:45:02][C][wifi:357]:   Signal strength: -68 dB ▂▄▆█
[12:45:02][C][wifi:361]:   Channel: 3
[12:45:02][C][wifi:362]:   Subnet: <IP_ADDRESS>
[12:45:02][C][wifi:363]:   Gateway: ...
[12:45:02][C][wifi:364]:   DNS1: ...
[12:45:02][C][wifi:365]:   DNS2: <IP_ADDRESS>
[12:45:02][C][logger:236]:   Hardware UART: UART0
[12:45:02][C][xiaomi_ylyk01yl:012]: Xiaomi YLYK01YL
[12:45:02][C][xiaomi_ylyk01yl:013]:   Keycode 'last button pressed'
[12:45:02][C][xiaomi_ylyk01yl:013]:     State Class: ''
[12:45:02][C][xiaomi_ylyk01yl:013]:     Unit of Measurement: ''
[12:45:02][C][xiaomi_ylyk01yl:013]:     Accuracy Decimals: 1
[12:45:02][C][esp32_ble_tracker:706]: BLE Tracker:
[12:45:02][C][esp32_ble_tracker:707]:   Scan Duration: 60 s
[12:45:02][C][esp32_ble_tracker:708]:   Scan Interval: 250.0 ms
[12:45:02][C][esp32_ble_tracker:709]:   Scan Window: 250.0 ms
[12:45:02][C][esp32_ble_tracker:710]:   Scan Type: PASSIVE
[12:45:02][C][ota:082]: Over-The-Air Updates:
[12:45:02][C][ota:083]:   Address: test-ylyk01yl.local:3232
[12:45:02][C][api:134]: API Server:
[12:45:02][C][api:135]:   Address: test-ylyk01yl.local:6053
[12:45:02][C][api:139]:   Using noise encryption: NO
[12:45:02][C][mdns:084]: mDNS:
[12:45:02][C][mdns:085]:   Hostname: test-ylyk01yl
[12:45:04][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:04][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:04][D][main:275]: Button minus pressed
[12:45:04][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:04][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:04][D][main:275]: Button minus pressed
[12:45:05][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:05][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:05][D][main:275]: Button minus pressed
[12:45:05][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:05][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:05][D][main:275]: Button minus pressed
[12:45:05][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:05][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:05][D][main:275]: Button minus pressed
[12:45:05][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:05][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:05][D][main:275]: Button minus pressed
[12:45:06][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:06][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:06][D][main:275]: Button minus pressed
[12:45:06][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:06][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:06][D][main:275]: Button minus pressed
[12:45:06][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:06][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:06][D][main:275]: Button minus pressed
[12:45:08][D][esp32_ble_tracker:720]: Found device 7B:24:49:93:E9:95 RSSI=-97
[12:45:09][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[12:45:15][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:15][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:15][D][main:275]: Button minus pressed
[12:45:18][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:18][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:18][D][main:275]: Button minus pressed
[12:45:18][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:18][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:18][D][main:275]: Button minus pressed
[12:45:19][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:19][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:19][D][main:275]: Button minus pressed
[12:45:19][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:19][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:19][D][main:275]: Button minus pressed
[12:45:29][D][esp32_ble_tracker:720]: Found device CA:04:E7:CE:74:94 RSSI=-97
[12:45:29][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:45:32][D][esp32_ble_tracker:720]: Found device A4:C1:38:A1:9F:81 RSSI=-96
[12:45:32][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:45:33][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:33][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:33][D][main:275]: Button minus pressed
[12:45:33][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:33][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:33][D][main:275]: Button minus pressed
[12:45:33][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:45:33][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:45:33][D][main:275]: Button minus pressed
[12:45:36][D][esp32_ble_tracker:214]: Starting scan...
[12:45:36][D][esp32_ble_tracker:720]: Found device 7B:BB:BB:40:FE:E9 RSSI=-87
[12:45:36][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[12:45:36][D][esp32_ble_tracker:720]: Found device 7E:67:AF:27:82:93 RSSI=-80
[12:45:36][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[12:45:37][D][esp32_ble_tracker:720]: Found device FA:04:EA:2C:92:17 RSSI=-83
[12:45:37][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:45:37][D][esp32_ble_tracker:720]: Found device 58:2D:34:53:AA:3A RSSI=-85
[12:45:37][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:45:39][D][esp32_ble_tracker:720]: Found device 88:0F:10:85:01:73 RSSI=-94
[12:45:39][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:45:40][D][esp32_ble_tracker:720]: Found device C4:7C:8D:62:30:B3 RSSI=-90
[12:45:40][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:07][D][esp32_ble_tracker:720]: Found device CA:04:E7:CE:74:94 RSSI=-92
[12:46:07][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:17][D][api:098]: Accepted <IP_ADDRESS>
[12:46:17][W][api.connection:083]: aioesphomeapi (<IP_ADDRESS>): Connection closed
[12:46:17][D][api:098]: Accepted <IP_ADDRESS>
[12:46:18][D][api.connection:779]: Home Assistant 2021.12.10 (<IP_ADDRESS>): Connected successfully
[12:46:26][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:26][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:26][D][main:263]: Button m pressed
[12:46:26][D][esp32_ble_tracker:720]: Found device 64:88:FF:6A:CB:A5 RSSI=-69
[12:46:26][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:26][D][esp32_ble_tracker:743]:   Name: 'yee-rc'
[12:46:26][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:26][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:26][D][main:263]: Button m pressed
[12:46:27][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:27][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:27][D][main:263]: Button m pressed
[12:46:27][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:27][D][sensor:125]: 'last button pressed': Sending state 2.00000  with 1 decimals of accuracy
[12:46:27][D][main:257]: Button sun pressed
[12:46:27][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:27][D][sensor:125]: 'last button pressed': Sending state 2.00000  with 1 decimals of accuracy
[12:46:27][D][main:257]: Button sun pressed
[12:46:28][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:28][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:28][D][main:275]: Button minus pressed
[12:46:28][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:28][D][sensor:125]: 'last button pressed': Sending state 3.00000  with 1 decimals of accuracy
[12:46:28][D][main:269]: Button plus pressed
[12:46:29][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:29][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:29][D][main:275]: Button minus pressed
[12:46:29][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:29][D][sensor:125]: 'last button pressed': Sending state 1.00000  with 1 decimals of accuracy
[12:46:29][D][main:251]: Button off pressed
[12:46:29][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:29][D][sensor:125]: 'last button pressed': Sending state 1.00000  with 1 decimals of accuracy
[12:46:29][D][main:251]: Button off pressed
[12:46:31][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:31][D][sensor:125]: 'last button pressed': Sending state 0.00000  with 1 decimals of accuracy
[12:46:32][D][main:245]: Button on pressed
[12:46:32][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:32][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:32][D][main:275]: Button minus pressed
[12:46:33][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:33][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:33][D][main:275]: Button minus pressed
[12:46:33][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:33][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:33][D][main:263]: Button m pressed
[12:46:34][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:34][D][sensor:125]: 'last button pressed': Sending state 1.00000  with 1 decimals of accuracy
[12:46:34][D][main:251]: Button off pressed
[12:46:34][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:34][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:34][D][main:275]: Button minus pressed
[12:46:35][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:35][D][sensor:125]: 'last button pressed': Sending state 1.00000  with 1 decimals of accuracy
[12:46:35][D][main:251]: Button off pressed
[12:46:35][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:35][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:35][D][main:263]: Button m pressed
[12:46:36][D][esp32_ble_tracker:214]: Starting scan...
[12:46:36][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:36][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:36][D][main:263]: Button m pressed
[12:46:36][D][esp32_ble_tracker:720]: Found device 64:88:FF:6A:CB:A5 RSSI=-64
[12:46:36][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:36][D][esp32_ble_tracker:720]: Found device 7E:67:AF:27:82:93 RSSI=-80
[12:46:36][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[12:46:36][D][esp32_ble_tracker:720]: Found device 7B:BB:BB:40:FE:E9 RSSI=-86
[12:46:36][D][esp32_ble_tracker:741]:   Address Type: RANDOM
[12:46:36][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:36][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:36][D][main:275]: Button minus pressed
[12:46:36][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:36][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:36][D][main:275]: Button minus pressed
[12:46:37][D][esp32_ble_tracker:720]: Found device FA:04:EA:2C:92:17 RSSI=-82
[12:46:37][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:37][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:37][D][sensor:125]: 'last button pressed': Sending state 0.00000  with 1 decimals of accuracy
[12:46:37][D][main:245]: Button on pressed
[12:46:37][D][esp32_ble_tracker:720]: Found device CA:04:E7:CE:74:94 RSSI=-97
[12:46:37][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:37][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:37][D][sensor:125]: 'last button pressed': Sending state 4.00000  with 1 decimals of accuracy
[12:46:37][D][main:263]: Button m pressed
[12:46:38][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:38][D][sensor:125]: 'last button pressed': Sending state 1.00000  with 1 decimals of accuracy
[12:46:38][D][main:251]: Button off pressed
[12:46:38][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:38][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:38][D][main:275]: Button minus pressed
[12:46:39][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:39][D][sensor:125]: 'last button pressed': Sending state 1.00000  with 1 decimals of accuracy
[12:46:39][D][main:251]: Button off pressed
[12:46:39][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:39][D][sensor:125]: 'last button pressed': Sending state 0.00000  with 1 decimals of accuracy
[12:46:39][D][main:245]: Button on pressed
[12:46:39][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:39][D][sensor:125]: 'last button pressed': Sending state 0.00000  with 1 decimals of accuracy
[12:46:39][D][main:245]: Button on pressed
[12:46:39][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:39][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:39][D][main:275]: Button minus pressed
[12:46:40][D][esp32_ble_tracker:720]: Found device C4:7C:8D:62:30:B3 RSSI=-94
[12:46:40][D][esp32_ble_tracker:741]:   Address Type: PUBLIC
[12:46:40][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:40][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:40][D][main:275]: Button minus pressed
[12:46:40][D][xiaomi_ble:324]: Got Xiaomi YLYK01YL (64:88:FF:6A:CB:A5):
[12:46:40][D][sensor:125]: 'last button pressed': Sending state 5.00000  with 1 decimals of accuracy
[12:46:40][D][main:275]: Button minus pressed

substitutions:
  name: test-ylyk01yl
  # ylyk01yl bluetooth remote control
  remote_mac: "64:88:FF:6A:CB:A5"

globals:
 - id: color_temperature_preset
   type: int
   restore_value: no
   initial_value: '0'

esphome:
  name: ${name}

esp32:
  board: esp32doit-devkit-v1

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

ota:
api:
logger:

esp32_ble_tracker:
  scan_parameters:
    interval: 250ms
    window: 250ms
    duration: 1min
    active: false

external_components:
  - source: github://syssi/esphome-yeelight-ceiling-light@add-yeedimmer-ylkg07yl-support
    refresh: 0s

xiaomi_ylyk01yl:
  mac_address: "${remote_mac}"
  last_button_pressed:
    name: "last button pressed"
  on_button_on:
    then:
      - logger.log: "Button on pressed"
  on_button_off:
    then:
      - logger.log: "Button off pressed"
  on_button_sun:
    then:
      - logger.log: "Button sun pressed"
  on_button_m:
    then:
      - logger.log: "Button m pressed"
  on_button_plus:
    then:
      - logger.log: "Button plus pressed"
  on_button_minus:
    then:
      - logger.log: "Button minus pressed"

Replaced chip with ESP32-S and all issues disappeared


Xml Strings in a filter?

Hey all, I'm trying to use a filter that has xml in a substring, but I keep getting the following error:
Error: Invalid filter: <c
at _filterStringToStack (/home/craigb/workspace/nodejs/webService/node_modules/ldapjs/lib/filters/index.js:79:15)
at _parseString (/home/craigb/workspace/nodejs/webService/node_modules/ldapjs/lib/filters/index.js:102:15)
at Object.parseString (/home/craigb/workspace/nodejs/webService/node_modules/ldapjs/lib/filters/index.js:337:12)
at Client.search (/home/craigb/workspace/nodejs/webService/node_modules/ldapjs/lib/client.js:608:30)
at /home/craigb/workspace/nodejs/webService/routes/index.js:40:10
at callbacks (/home/craigb/Desktop/node_modules/express/lib/router/index.js:272:11)
at param (/home/craigb/Desktop/node_modules/express/lib/router/index.js:246:11)
at pass (/home/craigb/Desktop/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/home/craigb/Desktop/node_modules/express/lib/router/index.js:280:4)
at Object.handle (/home/craigb/Desktop/node_modules/express/lib/router/index.js:45:10)
And here's my code:
var opts = {
filter: "&(CentralUIEnrollments="+groupName+"*)(objectClass=User)",
scope: "sub"
};
client.search("o=central",opts, function(err,res){
...
});
I've also tried putting single quotes around the xml substring I'm looking for, as well as escaping the all < and > with , but all throw the same error.  Is there an escape character used in the filter parser?
Also, I've had to write some javascript in the past to convert a canonical ldap filter string into a DSML document, and it seems to handle xml ok because it builds an operator / operand tree in memory.  By doing this it can tell the difference between an xml tag and a greater or less than operator (as long as the filter is well formed at least).  If you would like to look at that code let me know.

Awesome, thanks for the workaround!

If anyone else is interested in this workaround, you need 1 extra thing to get it working.  Assuming you're doing
var ldap = require('ldap')
then you need to access AndFilter and EqualityFilter through the ldap object.  IE:
new ldap.AndFilter(...) or new ldap.EqualityFilter(...)

Ok, I tried this out, and it does work.  You need to insert '\' in your strings (i.e., one to escape the \ in JS, and 1 to escape the special characters.
var str = '(&(CentralUIEnrollments=\\<mydoc\\>*)(objectClass=User))';
I added a test anyway just to ensure going forward it's there.

Well, hold that thought for a minute - I thought it was right, but now that I'm looking more there might still be a bug here.

Ok.  Right now I'm working on plugging in my old javascript filter code into lib/filters/index.js (replacing the _parseString function) just to see if it works.  If it does work then you shouldn't need to escape anything since its a bit more robust.  If you want to hold off on fixing this bug I can fork this project and add in my code.  Interested?

Yeah if you get it working correctly - I was actually looking at that
code, and the RFC, and remembered I just hacked this without full
regard for the RFC, and forgot to fix it up.
On Thu, Jan 19, 2012 at 10:14 AM, cbaker118
<EMAIL_ADDRESS>wrote:

Ok.  Right now I'm working on plugging in my old javascript filter code into lib/filters/index.js (replacing the _parseString function) just to see if it works.  If it does work then you shouldn't need to escape anything since its a bit more robust.  If you want to hold off on fixing this bug I can fork this project and add in my code.  Interested?

Reply to this email directly or view it on GitHub:
https://github.com/mcavage/node-ldapjs/issues/48#issuecomment-3571347


Fix for uplink syndicate bomb timeout

About the PR
A small fix for this PR: #20214 left my testing time limit in the config for the syndicate bomb. 😩
Why / Balance
Correct issue on previous PR
Technical details
Updated config on YML to 30min instead of 10min for syndicate bomb
Media

[X] I have added screenshots/videos to this PR showcasing its changes in game, or this PR does not require an in game showcase

Breaking changes
None
Changelog
Fixes correct time for syndicate bomb lockout. don't think it needs in game changelog.

@LankLTE Just because you are familiar with this one from the PR would you be able to take a look? 🙏

Thank you for your quick fix.


Reuse zakhar_pycore from pipy.org

[ ] Remove submodule zakhar_pycore
[ ] Use a version installed via pip

Not relevant anymore


[RFC] Move compute and eigen libraries to external_libs folder

As the number of third-party dependencies is growing, I think it will be good to keep their source files in one place. external_libs folder looks good for this purpose. We already store fast_double_parser and fmt there.

I'm +1 on this

I'm +1 on this


The solution contained in released zip won't compile.

For example,
https://github.com/lextm/obfuscar/releases/tag/2.2.6
Because the source files in submodule ilspy@6a58560 wasn't included.

Dup #69

Cloned via git, but still get errors:

\obfuscar\Console\Program.cs(33,7,33,11): error CS0246: The type or namespace name 'Mono' could not be found (are you missing a using directive or an assembly reference?)
\obfuscar\Console\Program.cs(34,7,34,20): error CS0246: The type or namespace name 'RollbarDotNet' could not be found (are you missing a using directive or an assembly referenc
\obfuscar\Console\Program.cs(42,38,42,47): error CS0246: The type or namespace name 'OptionSet' could not be found (are you missing a using directive or an assembly reference?)

Finally it compiles successfully. Thanks~

You have to check out the code of this repo via Git, and also check out all the submodules.

Duplicate to #96


Fixes rendering issue on the category component when changing attributes

This PR also fixes a bug that rendered and empty list of ramps when the bin number from the server was bigger than the biggest default one (7).
Fixes #7680

CR: @xavijam


Invalid types for binary operation is reachable

A comment in the source code says it's not, but someone made the compiler throw that error (there is no full repro):

I was comparing address and slice

I think this is fixed with PR #127. Please, reopen if this is not right


Release 0.7.1

/test-all

Unfortunately I have to release even though the Jenkins jobs are failing because of https://github.com/vmware-tanzu/antrea/issues/805


Click Listeners Added To All Cells

Click listeners are added to all cells, even if the outer consumer of the adapter never registers a click listener. This is especially relevant to ViewGroupAdapterConverter as list view cells have their own click listener logic. Doing this in a ViewGroup which is contained in a parent view which is intended to be clickable causes issues as clicking these children cells will be clickable and trap touch events. This means that even if the consumer of the adapter doesn't register a click listener, the parent view will not receive touch events that are inside the children cells.
Click listeners on child cells should be added if and only if a click listener is registered with the adapter itself.

Fixed in commit @ 03788d24e5670296fd9f961be7087bfd81637007.
Published in version 2.2.4 (@4484fb9e472c81e297b52036ec721bfb7fb84a35)


Cannot embed icon to PE file in linux

What version of Go are you using (go version)?

go version go1.13.5 linux/amd64

Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/us/.cache/go-build"
GOENV="/home/us/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/us/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build934510905=/tmp/go-build -gno-record-gcc-switches"

What did you do?
I'm trying to build windows executable file from linux. This is working without problem. Where problems comes in is when I try to embed an icon file.
I've created syso file. With that syso file, I can build my application in windows with icon. But in linux, when I use command $ env GOOS=windows GOARCH=386 go build main.go it generates PE file but there is no icon in it. I've double checked it on linux and windows. There is surely no icon. Is this because compiler only embeds an icon file on windows environment?
What did you expect to see?
PE file with icon.
What did you see instead?
PE file without icon.

You  probably need to set the environment variable CGO_ENABLED=1 when cross-compiling.  This will require you to have a GNU/Linux -> Windows cross-compiler installed, with CC set to the cross-compiler.


reformatted testdata files to be more readable and allow more flexible testing

Old testdata files would generate oddly, especially for feature groups that included admin/client/server APIs that shared the same request or response types. Now each test has its own fill...request to

make it clearer which request types are being used by which test
allow multiple tests that happen to share a request type to define their own request data rather than being forced to share


ability to observe a particular element's connectedness.

For example,
const observer = new ConnectionObserver((connected) => {
  if (connected) console.log('connected')
  else console.log('disconnected')
})

observer.observe(el)

Or, we already have EventTarget in the web, why did we need a new API shape (MutationObserver) again????
el.addEventListener('connected', () => console.log('connected'))
el.addEventListener('disconnected', () => console.log('didconnected'))

It's an interesting thing to do. Will share what I find possible with realdom

@trusktr you can now observe cross-roots mutations. Just set options.subtree to cross-roots.
Also, we've now introduced a help method for observing an element's connectedness: the .track() method. (But maybe there's a better name, dunno.)
const p = document.createElement('p');
realtime(document).track(p, state/*Bool*/ => {
    console.log('connectedness:', state);
});
document.appendChild(p); // connectedness: true
p.remove(); // connectedness: false

Next would be exploring an event model. I really do like that one.


[OSF-8695] Prevent sendgrid from spamming when used locally.

Purpose
This PR hopefully prevents use of sendgrid to send emails to unintended recipients by adding a whitelist for local development.
Changes
In defaults.py, SENDGRID_WHITELIST_MODE is added and defaults to False to make sure this does not affect Sendgrid on prod/staging. Also added SENDGRID_EMAIL_WHITELIST.
In local-dist.py, SENDGRID_WHITELIST_MODE is added and defaults to True to make sure no spamming could happen locally. Also added SENDGRID_EMAIL_WHITELIST.
In tasks.py, the _send_with_sendgrid is modified to check whether the app in SENDGRID_WHITELIST_MODE. If so, it would further check to see if the recipient is in the whitelist specified in settings file. Added sentry logs to report failures to send emails in case whitelist mode is accidentally turned on on staging/prod.
Side effects
None
Ticket
https://openscience.atlassian.net/browse/OSF-8695

@adlius Based on the current setup, will there need to be devops changes in order to keep emails running, or will existing environments work properly as near as you can tell?

@brianjgeiger In defaults.py, SENDGRID_WHITELIST_MODE is set to False. As long as settings file on prod/staging does not override that variable (which I can be sure), then email should work as usual on staging without any devops changes.


Pop-up appearing out of page when the date picker button is at the right side of screen

As you can see, if the button is at the right side of screen, pop-out did not adjust itself to appear at a correct position.

Current I can add to solve this, but could you plz make it detect position automatically? :
::v-deep() {
    .v3dp__popout {
        right: 0;
    }
}

@icehaunter
It be nice if you will add detect position automatically


length_value macro assumes fixed size parsers

In length_value macro, if second parser returns Needed::Size(length) then the macro returns  Needed::Size(length_token + length*number of items). This seems to assume that each iteration/item consumes equal amount of input, which seems fragile.
More correct implementation would have a counter which counts how many bytes are consumed on each iteration and use that value for calculating how many bytes are needed in total. If I'm not mistaken, this would make the macro significantly less efficient because it would cause the first items to be repeatedly parsed until the input buffer contains all the items.

Yes, the current implementation is a tradeoff. There may be a more flexible way to do it, though. Any ideas?

My personal preference would be to remove the macro in its current state, but I might be bit biased because I just happened to trip on it. But I don't think it can currently be implemented both so that it is generically correct and performant, with the way the parsers are structured currently. I'd love to be proved wrong.
One idea that comes to mind is somehow marking parsers that consume fixed amount of input in the type system so the compiler then could forbid using length_value! (and possibly others) with incompatible parsers. Not being exactly an expert on Rust, macros or parsers I don't know how feasible such idea is.
Another thing would be allowing parsers to store some state in themselves, so length_value! could store partially parsed results internally. Or maybe have some way of returning/handling partial results from parsers.
In any case the documentation for length_value! could certainly be improved to include a mention of the current limitation.

I'm not sure if I've run into this also but I'm seeing the following:
src/serial.rs:3184:57: 3184:63 error: unexpected end of macro invocation
src/serial.rs:3184                     length_value!(le_u32, pair!(le_u64, le_u64))

I can't seem to combine length_value with a pair! parser.  It works if I don't use pair!

the length_* combinators changed behaviour in 2.0


chore: move to cargo workspace

This is useful for several reasons:

inlining development tooling such as benchmarks/integration tests in the repository
splitting out core functionality from the pretty_assertion crate into new crates, if desired.

Codecov Report

Merging #74 (0df5d7a) into main (da3cf9a) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #74   +/-   ##
=======================================
  Coverage   98.96%   98.96%
=======================================
  Files           2        2
  Lines         193      193
=======================================
  Hits          191      191
  Misses          2        2

Impacted Files
Coverage Δ

pretty_assertions/src/lib.rs
98.36% <ø> (ø)

pretty_assertions/src/printer.rs
99.24% <ø> (ø)

Continue to review full report at Codecov.

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


inputComponent: ConditionalFields breaks hotspot

Hi there,
Although this isn't the core to what you made, I still thought I'd want to mention that hotspot on image assets stops working, when using your ConditionalFields script.

Hey there @dnlmzw !
Can you let me know what you mean?
Are the hotspot options not showing up for figure fields used in conditional fields? Or are you not seeing hotspots being applied on the front-end? Or something else?
Just a few preliminary comments:

If you are adding new image fields you'll need to use the imageMeta GROQ from the api to ensure the hotspot data makes it into the frontend.
If you have that in place are you able to log the photo data somewhere to see if your hotspot data is coming through?
If the hotspot options aren't showing up in your Studio, this tells me it's an issue with the custom Conditional Field plugin, which was adapted from here: https://gist.github.com/coxmi/f41aef54d46588fff27651cd0d35212f

Thanks! Option 3 is what's happening, so I'll head over there and see if there's anything to be done.


Deal with readOnly in the --volume cmd line option.

This readOnly flag in --volume is currently not being used, it's shadowed by the readOnly field in the mountPoints in image manifest. However maybe we want to overwrite the image manifest's readOnly setting sometime.
I am trying to find some use cases in k8s.
@jonboulle

@yifan-gu could you take a stab at fixing this?

@jonboulle So what are the semantics we want?

manifest
cmdline
result

RO
RO
RO

RO
RW
RO ? RW?

RW
RO
RO ? RO?

RW
RW
RW

@jonboulle I think we can let RO overwrite RW, this feels safer for me... And I haven't find any use cases that will let RO be overwritten by RW yet. So I think I will go with this:

manifest
cmdline
result

RO
RO
RO

RO
RW
RO

RW
RO
RO

RW
RW
RW

Do you have any other concerns?

This kinda ties in to the more generic question of the relationship between IM/cmdline/CRM. Essentially, today we have:
IM --> cmdline --> CRM (execution)
and in future (#294) we'll have:
IM --> CRM (template) --> cmdline --> CRM (execution)
My initial thinking is that each step is an opportunity for overrides, so cmdline options would always take precedence.

I prefer to have the cmdline to be an override, rather than specifying a default. This would be:

manifest
cmdline
result

RO
--volume name,kind=host,source=/
RO

RO
--volume name,kind=host,source=/,readonly
RO

RO
--volume name,kind=host,source=/,readwrite
RW

RW
--volume name,kind=host,source=/
RW

RW
--volume name,kind=host,source=/,readonly
RO

RW
--volume name,kind=host,source=/,readwrite
RW

@alban right, that is what I was proposing basically.
@yifan-gu thoughts?

@jonboulle +1 for @alban
Let me update the #641

@alban @jonboulle
But I think we need to change appc, either change readOnly from bool to *bool or to string. Otherwise we cannot tell if its unset or false.
I updated the patch with change to *bool. But might prefer string personally. Want to hear your thoughts :)

Er, I dunno, if it's a string then you need to implement a bool on top of it. What is wrong with *bool?

@jonboulle Did the *bool


[Bug] can't launch betterdiscord installer [LINUX]

Describe the Bug
The .AppImage crashes upon launch
To Reproduce

cd into the .AppImage's directory
apply sudo chmod u+x
Run it (./)

Expected Behavior
It launches and I get to repair betterdiscord (though I hear discord recently broke it)
Screenshots

Discord Version
Stable
> ./BetterDiscord-Linux\ \(1\).AppImage
Better Discord Installer 1.1.1
[9660:0216/184725.240723:FATAL:gpu_data_manager_impl_private.cc(439)] GPU process isn't usable. Goodbye.
[1]    9660 trace trap (core dumped)  ./BetterDiscord-Linux\ \(1\).AppImage`

Try using betterdiscordctl

After some quick research this appears to be an electron bug which becomes apparent with recent versions of glibc present on the system and is fixed in the latest patch releases of electron version 13+ (we are still on 9). For an immediate workaround give running the installer with either --no-sandbox or --disable-gpu-sandbox a try.

Thanks for the replies! betterdiscordctl works just fine so I'll be using that from now on

The --no-sandbox flag also works


Error when load Animation Blueprint in CPP

class SOMEGMAE_API ACharacter_Base : public AAlsCharacterExample {
    ACharacter_Base();
};

ACharacter_Base::ACharacter_Base(){
    GetMesh()->SetAnimClass(LoadClass<UAnimInstance>(nullptr, TEXT("/Als/ALS/Character/AB_Als.AB_Als_C")));
}

Error:
Plugins\ALS-Refactored\Content\ALS\Editor\B_Als_AnimationModifier_FootSyncMarkers.uasset: CreateExport:
Failed to load Class /Script/AnimationModifierLibrary.FootstepAnimEventsModifier as Parent
for BlueprintGeneratedClass /ALS/ALS/Editor/B_Als_AnimationModifier_FootSyncMarkers.B_Als_AnimationModifier_FootSyncMarkers_C - both will fail to load
UE 5.4

Please avoid hard coding asset path in code though.

I've always thought that filling in the necessary properties in the code so they're not blank would be more friendly to other people, especially people who don't know programming.

Thank you for your suggestion

IMO, that's better be done with a blueprint base class instead of in code which is error-prone.


update country list to utf-8 friendly list + corrections

howdy. thought the country list needed some updating.
notes
i made a script to generate the output if you're interested. can easily add it as a bin to the repo. this fixes all the effed utf8 chars.

the source database the script uses is https://raw.githubusercontent.com/datasets/country-codes/master/data/country-codes.csv

also i intentionally spaced it out like that so it's commit friendly.

Thanks, @moimikey!


Moving to different sortable list triggers a reorder in original list

This is from the Sortable / Multiple containers / Basic setup storybook. When you move a card down to reorder the current list, then move it to another list, the original list will reorder again. Not sure what's causing this.
I assume it's partly because the card doesn't actually move position in the DOM until onDragEnd.
Also, this only happens the first time you move it to another list, it won't happen again during the same drag.
https://user-images.githubusercontent.com/26363886/123172662-ba81c780-d47d-11eb-8f42-2cde9bca6174.mp4

This is because the droppable changes from the card (and so gets positioned after it) to the column (and so gets added to the start of the column). Easier to see if you highlight which droppable is being matched:
https://user-images.githubusercontent.com/1896376/127077757-589baf46-7e1e-41a8-b09c-1478f9be74cf.mov

This is now fixed in the stories. This isn't something that can be fixed automagically for all consumers, it really depends on the use-case and collision detection strategy in use.
https://5fc05e08a4a65d0021ae0bf2-rvnnplhsjm.chromatic.com/?path=/story/presets-sortable-multiple-containers--basic-setup


Adopt storage redesing

Description
Changes proposed in this pull request:

Adapt all entities to use views

/hold

/hold cancel


Updating to the new API

This attempt is a few weeks old, so the API may have further changed.
But this was my attempt at correcting the discrepancies.
It would actually compile just fine, but would fail to link in ways I didn't understand.
Hopefully this effort can be useful to you as you address #14 .

I'm looking into this... The 'strange link errors': was it "undefined reference to rmw_create_node()" and a few other rmw_ functions?  I'm running into that now on some of the demo/composition targets (for example).

I think I've got it.  I pushed a change (mostly based on your work, with a couple small modifications).
Hope that helps.
Thanks!


Possible approach to auto-refreshing dicts

https://gist.github.com/nhenriksen/5b09e7557281886f54ba56cdd6f3e1c2
Bit of a witches brew here ... cobbled together a little of this and that from various stack overflow comments.  I understand about 85% of what it is doing.

Good work. I haven't really looked carefully, but one quick question: one class uses @path.setter and the other uses a built-in function def __setitem__(self,key,value). These both kinda, sorta do the same thing, right? By that, I mean they can set (reset?) class variables later?

I'm not sure how similar they are under the hood ... But I couldn't figure out how to use @path.setter to deal with dictionary values that have interdependencies.

See below for implementation:
https://github.com/slochower/pAPRika/blob/3ded7850df71132bb983874e34af7fc393165893/paprika/amber.py#L46
https://github.com/slochower/pAPRika/blob/3ded7850df71132bb983874e34af7fc393165893/paprika/amber.py#L121
https://github.com/slochower/pAPRika/blob/3ded7850df71132bb983874e34af7fc393165893/paprika/amber.py#L164


Fix broken link to href-no-hash eslint rule

This fixes the broken link to removed href-no-hash.md file, which is no longer available in the eslint-plugin-jsx-a11y plugin (since 6.0.0).

Great catch! Thanks. 😄


Add default_value and descriptor to characteristic macro

Current gatt service macro fills 0s as the AttributeData:
https://github.com/embassy-rs/trouble/blob/224f37194d593cd884f736c0f168b097f9b61a5d/host-macros/src/service.rs#L149
It would be very useful if users could set the value of AttributeData.
I found the following code blocks in host-macro, it seems value and descriptor macro args are not implemented. May I ask that is there any plan to finish this?
https://github.com/embassy-rs/trouble/blob/224f37194d593cd884f736c0f168b097f9b61a5d/host-macros/src/characteristic.rs#L115-L126

It is on the to-do list yes 😊, you're welcome to PR an implementation, but also good to know it's a wanted feature so we can prioritise it.

yeah, this is commonly used in HID over BLE, for example, setting hid  info and report map

Agreed, I think that could be useful for the device information service as well.

Do we have a preference on the interface for descriptors? I can't work out how they are expected to look in Softdevice but I was wondering if they should be also part of the #[characteristic(...)] or if we should also have #[descriptor(...)] too and allow multiple of them per characteristic.
@petekubiak  and I have got the default value stuff working with nice type checking and error messages, I'll open a draft now to show that.

It should be possible to use multiple descriptors per characteristic (in fact someone is already doing that, see https://github.com/embassy-rs/trouble/issues/95)

cool, I'll take a look at that, I hadn't spotted thanks.

ah sorry on the multiple descriptors front I meant either something like:
// Battery service
#[gatt_service(uuid = "180f")]
struct BatteryService {
    #[characteristic(uuid = "2a19", read, write, notify, descriptior = (uuid = "1234", value = "something"), descriptor = (uuid = "2345", value = "something else"))]
    level: u8,
}

or
// Battery service
#[gatt_service(uuid = "180f")]
struct BatteryService {
    #[characteristic(uuid = "2a19", read, write, notify)]
    #[descriptor(uuid = "1234", value = "something")]
    #[descriptor(uuid = "2345", value = "something else")]
    level: u8,
}

ah sorry on the multiple descriptors front I meant either something like:
// Battery service
#[gatt_service(uuid = "180f")]
struct BatteryService {
    #[characteristic(uuid = "2a19", read, write, notify, descriptior = (uuid = "1234", value = "something"), descriptor = (uuid = "2345", value = "something else"))]
    level: u8,
}

or
// Battery service
#[gatt_service(uuid = "180f")]
struct BatteryService {
    #[characteristic(uuid = "2a19", read, write, notify)]
    #[descriptor(uuid = "1234", value = "something")]
    #[descriptor(uuid = "2345", value = "something else")]

This variant gets my vote, I think it is more readable.

i prefer the second, too

I've got docstrings parsing and being put back into the generated gatt_service structs, but for some reason it doesn't show up in rust analyzer :/


Fix typo in README.md

The typo is also in line 86, I fixed both in this PR https://github.com/google/rune/pull/7

Fixed


[Pilot] Missing iPad Pro icon while trying to upload to iTunesConnect.

Issue Description
During TestFlight upload using Pilot, iTunes Connect would complain about missing iPad Pro icons, even though they were set and correctly configured on the repo.
Complete output when running fastlane, including the stack trace and command used
[13:54:27]: -------------------
[13:54:27]: --- Step: pilot ---
[13:54:27]: -------------------
[13:54:28]: Login to iTunes Connect (*******)
[13:54:31]: Login successful
[13:54:31]: Ready to upload new build to TestFlight (App: *******)...
[13:54:33]: Going to upload updated app to iTunes Connect
[13:54:33]: This might take a few minutes, please don't interrupt the script
[13:55:12]: [Transporter Error Output]: ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro."
[13:55:12]: Transporter transfer failed.
[13:55:12]:
[13:55:12]: ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro."
[13:55:12]: ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro."
Return status of iTunes Transporter was 1: ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro."
The call to the iTMSTransporter completed with a non-zero exit status: 1. This indicates a failure.

Environment
Jenkins CI
fastlane version: 1.94.1

As figured, the problem was being caused due to the Xcode version on the CI machine (7.1.1), which is incompatible with the iPad Pro. That said, the files existed, but were being ignored as xcodebuild didn't know how to handle them, hence the problem while uploading.

Perfect, thanks for sharing the problem and its solution 👍


Support for Php7.1 and Php7.2

This library supports up to Php 7.0, thank you for this great job.
Do you think of adding support for Php 7.1 and 7.2 to this library soon?

I dont have plan to migrate to phpparser:^4.* if someone can make a PR, this will be welcome


Ha 2024.5.0 issue fixes

Attempt to resolve coroutine issues
Update manifest

Does this not cause performance problems?
It seems you have changed from starting a task to handle receiving, to scheduling receives on the HA event loop.  Since the tinytuya library is not async, this will block the HA event loop for up to 5 seconds every time we check for updates.
The other change to use schedule_update_ha_state instead of async_write_ha_state should not be necessary if the receive loop is running on the HA event loop, but without a change to async_refresh, will result in extra polling of the device, which may be what is making the difference.

I am not sure why the test failure is occuring, maybe coroutines need to be top level functions outside of a class.
It will also be necessary to save the result of the call that creates the task so it can be awaited when the device is stopped (after ensuring that the receive loop will be terminated).


[ENH] Pivot longer faster

PR Description
Please describe the changes proposed in the pull request:

Primary goal was to make it faster, or at least as fast as pd.wide_to_long
Cleaner syntax
group column added if names_sep or names_pattern is a list/tuple
dtypes change no longer needed within the pivot_longer function, it can be applied outside with astype

This PR resolves #755 .

PR Checklist

Please ensure that you have done the following:

[x] PR in from a fork off your branch. Do not PR from <your_username>:dev, but rather from <your_username>:<feature-branch_name>.

[x] If you're not on the contributors list, add yourself to AUTHORS.rst.

[x] Add a line to CHANGELOG.rst under the latest version header (i.e. the one that is "on deck") describing the contribution.

Do use some discretion here; if there are multiple PRs that are related, keep them in a single line.

Quick Check
To do a very quick check that everything is correct, follow these steps below:

[x] Run the command make check from pyjanitor's top-level directory. This will automatically run:

black formatting
flake8 checking
running the test suite
docs build

Once done, please check off the check-box above.
If make check does not work for you, you can execute the commands listed in the Makefile individually.
Code Changes

If you are adding code changes, please ensure the following:

[x] Ensure that you have added tests.
[x] Run all tests ($ pytest .) locally on your machine.

[x] Check to ensure that test coverage covers the lines of code that you have added.
[x] Ensure that all tests pass.

Documentation Changes

If you are adding documentation changes, please ensure the following:

[ ] Build the docs locally.
[ ] View the docs to check that it renders correctly.

Relevant Reviewers

Please tag maintainers to review.

@ericmjl

@loganthomas ; need your help here with the darglint errors. Not sure what to do.

@samukweku @ericmjl
Looks like a recent release of darglint is trying to handle nested function definitions (see the darglint changelog for 1.5.6 here).
I did some investigation and the pipeline is failing at these locations (chemistry line 130, functions line 280, 1623 , and 4482):

If you take a look at the source code, we are using lambda functions with the arguments x and d. This is what is causing the error.
We have two options:

Roll back darglint to a version that doesn't try to parse nested functions (we were using 1.5.4 when we first introduced darglint)

Append a darglint ignore statement (.. # noqa: DAR101 <var>)  as the last line of the docstrings that use a lambda function within the function's source code body.

Note: the .. prefix is important as it will ensure the noqa comment doesn't appear in the docs
Note: the var needs to be filled in with whatever input variable the lambda function takes. So, for groupby_topk that would be .. # noqa: DAR101 d. For the others, it would be .. # noqa: DAR101 x
Example

@pf.register_dataframe_method
def groupby_topk(
    df: pd.DataFrame,
    groupby_column_name: Hashable,
    sort_column_name: Hashable,
    k: int,
    sort_values_kwargs: Dict = None,
) -> pd.DataFrame:
    """

    ...

    :param df: A pandas dataframe.
    :param groupby_column_name: Column name to group input dataframe `df` by.
    :param sort_column_name: Name of the column to sort along the
        input dataframe `df`.
    :param k: Number of top rows to return from each group after sorting.
    :param sort_values_kwargs: Arguments to be passed to sort_values function.
    :returns: A pandas dataframe with top `k` rows that are grouped by
        `groupby_column_name` column with each group sorted along the
        column `sort_column_name`.
    :raises ValueError: if `k` is less than 1.
    :raises ValueError: if `groupby_column_name` not in dataframe `df`.
    :raises ValueError: if `sort_column_name` not in dataframe `df`.
    :raises KeyError: if `inplace:True` is present in `sort_values_kwargs`.

    .. # noqa: DAR101 d
    """  # noqa: E501

I tested out both options and they both worked on my local machine.
@ericmjl any preference here? I will fill out an issue on darglints GitHub page and point to it here.

Roll back darglint to a version that doesn't try to parse nested functions (we were using 1.5.4 when we first introduced darglint)

@loganthomas @ericmjl I believe the first option is the better option, less intrusive changes within the code

@samukweku @ericmjl
Looks like darglint already released a new version to help us out 🙌 .
See 1.5.7 here
Let's see if we can re-run the pipeline without any edits/rollbacks and get it to pass.

Success! 🎉
Now the pipeline is only failing due to a long line:
./janitor/functions.py:4890:80: E501 line too long (88 > 79 characters)

@loganthomas Thanks! I will work on it once I get back to my computer.

Wonderful, thank you @loganthomas and @samukweku!

@ericmjl @loganthomas @hectormz  and others, as a general question, is it worthwhile to add speed tests, comparing to say pandas wide to long ?

@ericmjl @loganthomas @hectormz and others, as a general question, is it worthwhile to add speed tests, comparing to say pandas wide to long?

Hey @samukweku! We haven't, though I do know @zbarry has had concerns over the speed of some functions before. (Prior context: the concerns surrounded whether we should do an explicit df.copy() on each function call, but... I think we generally worked around that problem by relying on calling pandas'/other package's native API.)
Adding speed tests is a tricky matter though. What were you thinking of doing with speed tests? Was it to sanity check that the function fully executes within an upper-bounded time budget? (Anything fancier, like checking for speed regressions, need fancier setups I think.)

@ericmjl , I was thinking more of pivot_longer can do the same thing as pandas' wide_to_long, and in some cases, can be faster/slower. So, using jupyter's %timeit to show the timings.

@samukweku looks like this one only failed on Flake8. Once it's fixed, we can merge.

@ericmjl errors fixed. I'll wait till weekend for another review before merging, if that's ok.

Thanks @samukweku! I'm approving, and going to merge :)


FUND THIS PROJECT

As state in README, this plugin is focusing on experience on Android, and it is not my best interest to support different use cases, I was hoping the community could help each other and more PRs are sent, clearly it did not work very well, this results in growing number of open issues. I would like to change the situation, I am wondering if there will be any financial support from the community.
Here are the list of possible improvements,

Better Ionic support, potentially rewrite with TypeScript for good integration
Improve documentation for different use cases
A diagnostic tool / guide
Potentially rewrite iOS code in Swift, testing will be limited to simulator unless the funding is sufficient enough to buy a testing iOS device.
Find better way to handle promise polyfill
Integrate CI

Please comment on this issue if you would financial support this project, the preferred way and which/any further improvements you would like to see.

I have only been using your plugin for a week or so. My problem with adding and testing some small changes is: You cannot directly install this plugin from git. I like using PhoneGap Build for testing on real devices. This leads to problems if you actually have to call npm install before you can build the app. I don't know how many users of your plugin have the same problem (maybe it's just me) but this is the first plugin I have seen so far that can't be installed from a git repo.
I was adding some smaller changes to add basic support for the iPhone X. But to make sure it doesn't break anything, I wanted to test it on my real iPad as well (to see if the banner still remains at the bottom here 😄). In my case, I usually do this though PGB. Also, for testing in the simulator, I'd like to be able to directly fetch the code from my repo.
So that's another improvement that could be made.
Oh, maybe you should add a link to this issue in the readme? Don't know how many users scroll through the issues page 😃
One question about your list: What could (3.) A diagnostic tool look like? I can't really imagine what can be tested with a tool here.
Still: As far as I can see, I really like this plugin. Especially the fact that there is no remote controlling of my app ^^

With this being a "Ionic Native" plugin, does Ionic offer any type of support?

@ratson I was hoping more people would have commented on this by now... Have you made a decision what you are going to do? I would be willing to pay a reasonable monthly fee for you to make a paid version. Maybe if enough people paid this fee it would be worth it for you to work on? I know this project started because the lack of honesty in some of the other admob-plugins, one in particular with a "free" version and a paid version but can see now how it might have happened.

Honestly I think no one is going to fund this project being a paid version, but good luck anyway.
I can help with some code, I don't mind, and also with a lot of testing.
Has @bflopez commented I think we should get some help from Ionic. They also encourage people to use this version instead the other one (https://ionicframework.com/docs/native/admob-pro/)

I just tried out the admob-pro version tonight and loading a banner ad is brutal to the FPS. I show an ad on start up and it would be a terrible experience if I continued to use the pro version with the hit to performance. I am hoping to use this but currently running into iPhone X issues.

@aabdolla Personally, I would be really careful with the admob-pro plugin. It seems like the author is taking a few percent of your revenue.

@MBuchalik Oh really? Even if you pay for the license?

@aabdolla I didn't know you are using a paid license. I am not using this plugin so I can't tell you if paying for a license will remove the ad sharing in all cases. That's something you should ask the author. (As far as I can see, the issues page was removed so it looks like you can't really ask questions there... Maybe, there is some sort of forum where you can ask this question...)
Anyways, using cordova-plugin-admob-free should be a "safe" alternative if it's working with your configuration.
Also, we probably shouldn't discuss that question in this issue 😄

@aabdolla @MBuchalik Thank you for bring up the issue, I did not realize the links are broken, just updated the README to document what was there.

@ratson , This appears to be a great plugin but unfortunately I'm not able to make it working using phonegap and iOS (did not test Android yet). I agree with you and It would be great if someone could add the steps for this in phonegap. I use the Phonegap App on iOS to test before building and I have several plugins working in my app, but i cannot put this one to work, even with a blank App and your example.
One aspect that you could also add is the donate button or a contribution fee .

So, currently I am using the admob pro plugin. But as the author closed the issues page I lost confidence in the trustability of it, also seeing some random issues with it sometimes, so I was hoping I could switch to this plugin here.
Honestly, I am currently only investing money into my apps, not getting any relevant revenue (yet). But as soon as I am able to make some money with it, I would be willing (and always had that plan) to regularly donate a small percentage for core plugins like this one.

I will be more than happy to pay a quality plugin if I can make it work for my app. I have an old ionic 1.x app. Still struggling with getting the plugin work.

I suggest whoever uses this plugin in production should support the work of the maintainers financially. I am not using it yet but I will be the first one to donate. where is the donate button @ratson

Sorry, but it's funny that being the first option on internet to monetise our apps you're not making money with this. The irony...
We're too many devs and we can't fix the issues that we have. Can't really understand what is stopping us to get this working.
Can we get a list of options with what we need and take some actions?

more devs to fix issues and open PR
testers
time problems (other stuff to do)
fundation problems

According to this: https://www.npmjs.com/package/cordova-plugin-admob-free
your library has been downloaded 852 times just on one week. Let's say that everyone downloaded it 3 times. That makes a total of 284 people on just one week or 1136 a month.
$1 donated for every dev, just $1 (it could be maybe $5 for example) you could earn $1136 a month. Just saying

@ratson Just want to confirm that I'm gonna be using it in production and now I am more than happy to donate. Please let me know how I can donate and the amount you'd expect. And I want to thank you and thank all the people who helped to make this plugin.

@lolaswift @erperejildo Thank you for the kind words and encouragement.

According to this: https://www.npmjs.com/package/cordova-plugin-admob-free
your library has been downloaded 852 times just on one week. Let's say that everyone downloaded it 3 times. That makes a total of 284 people on just one week or 1136 a month.
$1 donated for every dev, just $1 (it could be maybe $5 for example) you could earn $1136 a month... just saying.

It is a very optimistic estimation. I added the Github issue template few months ago, asking every issue opener to give feedback to this issue. As you see the result, just few of you are here.
But anyway, I am going to spend the next few weeks to come up something.

@ratson I suggest putting the information in the Readme and make it noticeable. To be honest, I almost missed that link. I believe lots of people just didn't bother opening that link. Thousands of people have paid for Admob pro because there wasn't any other good choice. The advantages of this plugin are no Ad sharing and no remote control. Lots of people might not mind paying but most people might think remote control is not acceptable. Especially,here in the Europe, we have strict privacy law. To be honest, the quality of Admob pro is really good and I liked it so much and I was willing to pay even more than he asked. I Emailed him about my concern but he didn't bother to answer. Anyway, my advice would be focusing on improving the plugin, do it from your heart and make it the no 1. in the market.

Totally agree with @lolaswift. I am sure people will be willing to pay for a high quality plugin directly related to their income. Additionally, the admob pro plugin is calling home and blocking app start of my ionic app by several seconds (trying it in airplane mode, the delay is gone!) But this plugin looks not stable enough to me from what I can see in the issues so I have admob pro with high quality but unacceptable issues (privacy, blocking app start) integrated but I would love to switch away from it.
Idea: Why don't you start a kickstarter campaign to get some initial financial boost and then ask prominently for donations? I think ionic would be willing to push this kickstarter campaign over their social media channels giving it a boost.

For those follow my Github activity closely, may have discover that I have been working very hard on admob-suite (apparently no one is following as the project has still zero stars).
I finally have setup a funding page, this is the first time I create it for myself, may not work as expected. Now is waiting the first brave sponsor to verify it works. Feedback and suggestions are welcome.
Functions for Interstitial Ad is complete, but missing docs, it should be ready to try out by the end of this week. Please open issue for the features you are using, which will help me prioritise what to work on next.

Awesome @ratson!
What's the main difference from the actual repo?
Also I think it would be nice if you had a donate button also, not only subscription option. Both with open donations.

Pretty much everything said in the top of this issue, you may also read here for details.

"which is also fork from cordova-plugin-admob"
That's the pro version, right? Wouldn't you have any problem with the other user?
Sounds good. I'm pretty sure you will make money with it but more importantly you will be able to dedicate it more time.
Don't forget as soon as you have a testable version get in touch with Ionic team to update their documentation.

I would also prefer to see a one-time donation button on the funding page. Doesn't mean I would donate multiple times, but then someone can donate based on their current apps success dynamically.

"which is also fork from cordova-plugin-admob"
That's the pro version, right? Wouldn't you have any problem with the other user?

@erperejildo You may read https://admob-plus.github.io/blog/2018/07/15/history-of-cordova-plugin-admob-free.html for the answer.
@Screeze I have explained the rationale in the FAQ. Do you still think I should add a open donation button after reading it?

@ratson Gdevelop game engine community praising your plugin "cordova-plugin-admob-free" and we have recommended it to developers and they consider it in the next release of the open source engine. I think this will be a huge step towards gaining more users and more donations.
So Are you going to continue to work on cordova-plugin-admob-free? or you are going to abandon it and focusing only on cordova-plugin-admob-plus?
Please let us know so we can adept the right plugin