Disable automatic anchor placement at the edges of rigid bodies

Currently, connectors are moved away from their nodes automatically, and moved to the edge of a rigid body.
For example, see the tgBoxAnchorDebug branch,  and the app in dev/apsabelhaus/tgBoxAnchorDebugDemo/AppTgBoxAnchorDebugDemo, as of commit 9a80587. The spring should connect the centers of the two rods (discs), but instead is moved to their outer edge.
There should be a way to disable this functionality so that cables can be placed precisely when needed. Also, this should be documented in our API properly.
Feedback needed:

What classes/methods implement this automatic anchor movement?
Where do folks think a "do-not-automatically-move-anchors" flag should go? In the config of the connector, or the config of the rigid body?

I have a deadline to get my force sensor working, for which I need to disable anchor movement, so feedback is much appreciated as soon as possible.

Drew,
Remember that cables placed at the center of a rod provide no rotation
constraint in NTRT, so that rods with those types of placements will rotate
uncontrollably. Not what we want for a default behavior.
That said, if you look at tgSpringCableActuator's config:
http://ntrt.perryb.ca/doxygen/structtg_spring_cable_actuator_1_1_config.html
You'll see a "rotation" parameter that can be used to specify where on the
outer circle a cable can be placed.
What I'd recommend doing, to facilitate precise placement, is adding a
"radius" parameter to that config, and using it to control how close to the
center the cable is placed. 0 for dead center, and 1 for outside
(maintaining the current default).
As far as the current behavior, have a look at these:
https://github.com/NASA-Tensegrity-Robotics-Toolkit/NTRTsim/blob/bb272ea71e26d00468e02202bc64dcd133ceab02/src/tgcreator/tgBasicActuatorInfo.cpp
tgBasicActuatorInfo::createTgBulletSpringCable()
https://github.com/NASA-Tensegrity-Robotics-Toolkit/NTRTsim/blob/bb272ea71e26d00468e02202bc64dcd133ceab02/src/tgcreator/tgRodInfo.cpp
Brian
On Sun, Aug 7, 2016 at 11:30 AM, Drew Sabelhaus<EMAIL_ADDRESS>wrote:

Currently, connectors are moved away from their nodes automatically, and
moved to the edge of a rigid body.
For example, see the tgBoxAnchorDebug branch, and the app in
dev/apsabelhaus/tgBoxAnchorDebugDemo/AppTgBoxAnchorDebugDemo, as of
commit 9a80587
https://github.com/NASA-Tensegrity-Robotics-Toolkit/NTRTsim/commit/9a8058745590fc9303035e38156c3d77d1fb8099.
The spring should connect the centers of the two rods (discs), but instead
is moved to their outer edge.
There should be a way to disable this functionality so that cables can be
placed precisely when needed. Also, this should be documented in our API
properly.
Feedback needed:

What classes/methods implement this automatic anchor movement?
Where do folks think a "do-not-automatically-move-anchors" flag
should go? In the config of the connector, or the config of the rigid body?

I have a deadline to get my force sensor working, for which I need to
disable anchor movement, so feedback is much appreciated as soon as
possible.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/NASA-Tensegrity-Robotics-Toolkit/NTRTsim/issues/195,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFRj4OwO104e9LgSJD18RDqDA074lzsCks5qdiQ8gaJpZM4Jejm7
.

Thanks Brian! The motivation makes sense, for sure. Free-spinning rods should not occur. (Also, I had no idea that's what "rotation" meant!)
As of commit 2695c90, I've provided a boolean inside the config of tgBasicActuator that can disable cable anchor movement. That seemed a bit easier than trying to add a radius: since I'm trying to use this with tgBox, I can't assume a circular face, and writing functions to do the math for different shapes seemed inefficient if I was going to set radius=0 anyway!. The default is still cable anchor placement at the edge. There are ample warnings in the tgBasicActuator file about using this flag, too.
Brian and others, let me know if you think this solution should be changed. I've written everything such that no one else's code should be effected (knock on wood.)
Also, if folks have thoughts about the naming of this boolean flag, please let me know or just go ahead and make the change. The best I could think of was moveCablePointToEdge = true (default).
I'm going to close this issue now, but do re-open if a problem arises.

Hi Drew,
I have been using this solution for my particular problem. But now I have a problem. My tensegrity model is standing on 4 rods and due to the free-spinning rods the model is like "floating" away. Do you have any idea how I could fix this?
Regards,
Guido


Fixes typo in PowerShell command, and makes formatting consistent for a few other PowerShell commands

Fixes extra backslash () before < in:
"Run Remove-AppxPackage -Package \<packagefullname>."
Makes PowerShell cmdlet formatting consistent.
Pull request guidance
Thank you for submitting your contribution to our support content! Our team works closely with subject matter experts in CSS and PMs in the product group to review all content requests to ensure technical accuracy and the best customer experience. This process can sometimes take one or more days, so we greatly appreciate your patience.
We also need your help in order to process your request as soon as possible:

We won't act on your pull request (PR) until you type "#sign-off" in a new comment in your pull request (PR) to indicate that your changes are complete.

After you sign off in your PR, the article will be tech reviewed by the PM or SME if it has more than minor changes. Once the article is approved, it will undergo a final editing pass before being merged.

#sign-off


Minimap is not compatible with new notification bar.

See this image:

@BjornRasmussen Yeah we should move the mini map to the right side.


nixos/resolvconf: allow disabling

Motivation for this change
For systems without internet connections, it doesn't make sense to
require the existence of an /etc/resolv.conf file to disable
resolvconf, so let's expose networking.resolveconf.enable as a public
option that can be set to false.
Things done

Built on platform(s)

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

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

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

LGTM but I think this warrants a changelog entry

We can live without a changelog entry :)


Ems refresh status

Add ems refresh status
EMS Refresh Status consists of two new fields on ext_management_system:

last_refresh_error: stores any error that occurred during the most recent refresh, nil if no error
last_refresh_date:  stores the date of the most recent refresh

There is also a virtual column on ExtManagementSystem for showing the refresh status:

error:   last_refresh_error is not nil
success: last_refresh_error is nil and last_refresh_date is not nil
never:   last_refresh_date is nil

For testing a failed refresh, a VCR cassette has been hand-edited to simulate a failing OpenStack Havana Refresh.
The only time a refresh is considered to fail (and therefore report an error) is when an exception occurs during the refresh process.  The exception information is stored in the ExtManagementSystem#last_refresh_error to indicate what error occurred during refresh.  After each refresh, the last_refresh_date is updated regardless of the error condition.

Looks good! :+1: Will wait for green.

@dclarizio, I added UI elements for ems_refresh_status, can you review those changes?

Rebased/squashed, and I think I'll update the original PR comment, too.  I like the description I have in the first commit.

Looks good to me.   @d clarification or @h-kataria can you just review the UI portion?

@blomquisg Code looks good . . . if you can drop in some screen shots, that would be great.

@dclarizio will do.  Good suggestion!

Ems Cloud Provider List page showing two Cloud Providers.  MIQ Amazon's refresh status is "unknown" (or no inventory captured yet).  QE Rhos' refresh status is an error.

Ems Cloud Provider Details page showing QE Rhos' error status information.

The tooltip that shows up when hovering over the refresh status message.  (I couldn't get a screencap that showed this inline).

Ems Cloud Provider List page showing two Cloud Providers.  MIQ Amazon's refresh status is "unknown" (or no inventory captured yet).  QE Rhos' refresh status is success.

Ems Cloud Provider Details page showing QE Rhos' success status information.

@blomquisg I think it would be nice if the error was included in the Last Refresh box, something like:
 Error - 25 Minutes Ago: <Fog> excon....

@dclarizio Sounds good.  I'll edit and rebase.

@dclarizio It's in the tooltip for the error line.  It can get pretty long.

@Fryguy I'm looking at some of the display options for the texual summary.  Looks like there's a multiline option.  I'll play with that and see if it works visually.  If it doesn't, then it should probably have something like:
Error - 2 min ago (hover for details)

@Fryguy @blomquisg It just didn't seem obvious from the screen shot how to see the error . . . perhaps we can truncate it if it's too long.

@Fryguy, @dclarizio:  here's an example of using a multiline textual summary.
Keep in mind that I'm sorta guessing at the error message.  We're just doing a exception.to_s to capture the error message.  So, it's possible that the exception message could be much longer than that.

Maybe use .truncate(n) on the error message.  That way the ... from truncate will indicate there's more and to hover for more?

I truncated to 120.  This particular error message is 111 chars, so it doesn't get truncated.  And, I feel that if an exception message can't convey something important in the first 120 chars, it's got other problems.

Fixes #752


Error updating from 1.14.1 -> 1.15.x (1.14.7)

Gitea Version
1.14.1
Git Version
git version 2.30.2
Operating System
Debian (official docker image)
How are you running Gitea?
Docker gitea/gitea
Database
SQLite
Can you reproduce the bug on the Gitea demo site?
No

Description
Hi,
I'm currently stuck on the 1.14.x Branch.
Everytime I update the container to 1.14.7 or higher the Database seems to break. Gitea itself starts, but repositories belonging to organisations produce an error 500 upon opening. Additionally the lists of repositories on the right side of the users start page is empty showing 0 repositories, but activities, graphs etc are showing up normally.
Logs show errors like this:
2022/02/16 07:54:36 Started GET /assets/img/avatar_default.png for <IP_ADDRESS>:0
2022/02/16 07:54:36 Completed GET /assets/img/avatar_default.png 200 OK in 438.475µs
2022/02/16 07:54:38 Started GET /DK/FlashUI_2021 for <IP_ADDRESS>:0
2022/02/16 07:54:38 ...ules/context/repo.go:343:repoAssignment() [E] GetUserRepoPermission: skipObjectDecoder: expect object or null, error found in #0 byte of ...|&\003d{\003d}\003d|..., bigger context ...|&\003d{\003d}\003d|...
2022/02/16 07:54:38 Completed GET /DK/FlashUI_2021 500 Internal Server Error in 5.065862ms

When directly updating to 10.16.1 the same behaviour is seen, with the following error:
2022/02/16 07:57:57 ...ules/context/repo.go:351:repoAssignment() [E] GetUserRepoPermission: invalid character '&' looking for beginning of value

I've tried directly updating the docker container version by version (from 1.14.1 upwards breaking things at 1.14.7 and above), as well as restoring a previous sql dump directly on 1.15.1.
None of this worked so far.
Is there anything I can do?

Please upgrade to 1.15.11 directly

Hi thanks for your reply, unfortunately the error is the same:
2022/02/16 11:06:19 cmd/web.go:102:runWeb() [I] Starting Gitea on PID: 19
2022/02/16 11:06:19 cmd/web.go:146:runWeb() [I] Global init
2022/02/16 11:06:19 routers/init.go:76:GlobalInit() [I] Git Version: 2.30.2, Wire Protocol Version 2 Enabled
2022/02/16 11:06:19 routers/init.go:79:GlobalInit() [I] AppPath: /app/gitea/gitea
2022/02/16 11:06:19 routers/init.go:80:GlobalInit() [I] AppWorkPath: /app/gitea
2022/02/16 11:06:19 routers/init.go:81:GlobalInit() [I] Custom path: /data/gitea
2022/02/16 11:06:19 routers/init.go:82:GlobalInit() [I] Log path: /data/gitea/log
2022/02/16 11:06:19 routers/init.go:83:GlobalInit() [I] Run Mode: Prod
2022/02/16 11:06:19 ...dules/setting/log.go:286:newLogService() [I] Gitea v1.15.11 built with GNU Make 4.3, go1.16.13 : bindata, timetzdata, sqlite, sqlite_unlock_notify

...

2022/02/16 11:06:34 Started GET /api/v1/repos/search?sort=updated&order=desc&uid=1&team_id=0&q=&page=1&mode= for <IP_ADDRESS>:0
2022/02/16 11:06:34 Started GET /api/v1/repos/search?sort=updated&order=desc&uid=1&team_id=0&q=&page=1&limit=15&mode=&archived=false for <IP_ADDRESS>:0
2022/02/16 11:06:34 Completed GET /api/v1/repos/search?sort=updated&order=desc&uid=1&team_id=0&q=&page=1&limit=15&mode=&archived=false 500 Internal Server Error in 21.234973ms
2022/02/16 11:06:34 Completed GET /api/v1/repos/search?sort=updated&order=desc&uid=1&team_id=0&q=&page=1&mode= 500 Internal Server Error in 3.234973ms

...

2022/02/16 11:10:34 ...ules/context/repo.go:344:repoAssignment() [E] GetUserRepoPermission: skipObjectDecoder: expect object or null, error found in #0 byte of ...|&\000{\000}\000|..., bigger context ...|&\000{\000}\000|...
2022/02/16 11:10:34 Completed GET /DK/FlashUI_2021 500 Internal Server Error in 3.329414ms

Have you restored from the dump? If that, maybe you should take a look at break reminder at https://blog.gitea.io/2021/12/gitea-1.15.8-is-released/

Hi,
that fixed the problem. Thank you very much!
The Database was not restored from a dump.


Resolve Based Code Actions

Code Action Resolve Support
Implement Interface, Implement Abstract Class

Fixes: https://github.com/dotnet/aspnetcore/issues/25918
Generate Constructor

Generate Constructor with Arguments

Fixes: https://github.com/dotnet/aspnetcore/issues/26167
Generate Equals and GetHashCode

Fixes: https://github.com/dotnet/aspnetcore/issues/26299
Add Null Checks

Fixes: https://github.com/dotnet/aspnetcore/issues/26300
Testing:

WIP

Coming Soon

~Code action formatting in a @{ ... block~
Multi-part edit formatting. Disabled code actions requiring multi-part edits:

Add 'DebuggerDisplay' attribute
Create and assign property [XYZ]
Create and assign field [XYZ]
Implement interface with [XYZ] pattern ex. Implement interface with Dispose pattern

Thanks @ajaybhargavb for your wonderful formatting APIs which really simplified the process!

You're telling me not to review but that GIF is cool af. So mean!

You're telling me not to review but that GIF is cool af. So mean!

Was still putting together a description, and accidentally CTRL+ENTERed it 😄

Merging this in, please do let me know if there are any remaining concerns and I can address them in another PR.
Known issue: https://github.com/dotnet/aspnetcore/issues/26501


Repetitive entries in Analyzer reports

I have build my project with clang 19.1.3 version and ran the ClangBuildAnalyzer for the same and I am observing repetitive entries for compiler frontend. Is there a reason for it to show repetition in object files.

Hi  @aras-p, thank you for the reply. We have build clang from source but only for one target without any cross compilation, i.e. Clang target = x86 in windows x64 machine.
I am attaching a csv where we have extracted the total frontend and backend timings and the compiler frontend and backend files from our ClangBuildAnalyzer report for your reference.
ClangBuildAnalyzer_llama_report.csv

ClangBuildAnalyzer_llama_report.xlsx
@aras-p , sorry forgot about the access, here's the excel file for the same

Ok but that still does not help in any way to know why it happened. The way ClangBuildAnalyzer works, is it tries to find all .json files under the build directory, checks which ones look like they are output by clang -ftime-trace, and aggregates info from them. So to understand why there are duplicates, I'd need a gather of all .json files under the directory that you use ClangBuildAnalyzer on.

output_all_json_files.zip
Here is a zip of all the json files generated under my build directory for your reference.

@jenetscaria-mcw is that with the folder structure intact? I can see there are e.g. 16 files named get-model.cpp.json, but inside the zip file they all are under "root folder", and so they can't be properly unpacked.
My wild guess at this point would be that either you have some symbolic links under your build folder that point to the same folder several times, or that somehow under your build folder you ended up with json files from multiple builds, and now ClangBuildAnalyzer analyzes all of them.

@jenetscaria-mcw running ClangBuildAnalyzer on these json files does not result in any duplicate entries, as far as I can tell.

x86_102_report_1.txt
I am getting duplicate entries still. Attaching a result file generated from ClangBuildAnalyzer for your reference.


utils: Rewrite deprecate_cobot to be generic

This make plugin generic to any deprecated prefix.
Fixes https://github.com/coala/corobo/issues/373
Reviewers Checklist

[ ] Appropriate logging is done.
[ ] Appropriate error responses.
[ ] Handle every possible exception.
[ ] Make sure there is a docstring in the command functions. Hint: Lookout for
botcmd and re_botcmd decorators.
[ ] See that 100% coverage is there.
[ ] See to it that mocking is not done where it is not necessary.

Also, could you move this into plugins/ , as it is now a normal re-usable plugin.

@meetmangukiya Changes applied. Tests now passed. But, i'm not really sure did it right.

Change Fixes  to Closes  .  This isnt a bug; it is an enhancement .

Done

Done

ack https://github.com/coala/corobo/pull/400/commits/2c2ae5e0685d5629820a0c10101395dc03bb7357

@rultor merge

@rultor merge

@jayvdb OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@jayvdb Done! FYI, the full log is here (took me 2min)


Usage when using ERC20 and ERC721

Hi, whats happening when using ERC20 and ERC721 modes ?
Do you deploy a test ERC20 and ERC721 contract automatically or do you need to specify an address ?

Hey @lucgerrits,
We covered these modes extensively in our docs:
https://docs.madz-lab.com/pandoras-box/engine/runtime/erc20
The gist of it is - the transactions for these modes are method calls (in case of ERC20 - transfer, in case of ERC721 - mint) to a contract that has been deployed beforehand by the distributor account (pandora knows the address because it facilitates this deployment)


Need a way to mark/unmark UID as primary

Hi Paul, we need a convenience methods in the SecretKeyRingEditor to do the following:

Mark certain UID as primary (should only perform actual action if a given UID is not marked primary).
Unmark certain UID as primary (should only perform actual action if a given UID is marked primary).

We have recently found that this is flag based and not order based. See https://datatracker.ietf.org/doc/html/rfc4880#section-<IP_ADDRESS>
@Jerbell @rrrooommmaaa @tomholub FYI

The new signature builder API (that is still WIP, but close to be ready for merging) will enable you to do that.
Can you point me to other implementations APIs for doing this? I'd like to know whether or not I'm on the right track in terms of API design :D

Hi Paul, sorry, but I did not check how to do it with BC and unlikely will do in the nearest time. So it is now up to you to figure out how to do that properly. It should be like adding another self-signature stating that certain UID is primary. Then, in case of multiple such signatures, primary UID should be resolved to the latest valid signature (standard recommends to do so, but only recommends). I did not check how BC and PGPainless do this. Will this work?

@rrrooommmaaa has discovered following:
As there may be several userids marked as primary, they should be ordered somehow more or less deterministically. This is not strictly documented by RFC4880.
OpenPGP.js, for example orders userids this way: revoked ASC, isPrimaryUserID DESC, created DESC.
Those 3 are attributes of a signature packet found by getLatestValidSignature() for this UserID.

Currently, if we just set new uid that we need to be primary, to a first position, while retaining old uid, it just doesn't work - primary uid still the old one, and I assume it is based on the fact that primary uid is flag-based, not position based. we need a way to make first uid primary and remove primary mark for all other uids. Whatever chain of signatures PGPainless would construct, must be compatible with OpenPGP.js.

I think it might be a good idea to resolve the situation where there are multiple primary-marked user-ids by sorting them by signature creation date and accepting the most recent one as being primary.
If we change the primary user-id on a key lets say from "A" to "B", I would create new signatures for both "A" and "B", where "A" would not carry a primary user-id flag while "B" would.
I will try to get the signature builder finished as quickly as possible, so that we can add some convenience methods on top.

This can now be implemented as follows:
        PGPSecretKeyRing secretKeys = ... // key with primary user-id = "Alice"

        KeyRingInfo info = PGPainless.inspectKeyRing(secretKeys);
        assertEquals("Alice", info.getPrimaryUserId());

        // mark user-id "Bob" as primary, unmark "Alice"
        secretKeys = PGPainless.modifyKeyRing(secretKeys)
                .addUserId("Bob",
                        new SelfSignatureSubpackets.Callback() {
                            @Override
                            public void modifyHashedSubpackets(SelfSignatureSubpackets hashedSubpackets) {
                                hashedSubpackets.setPrimaryUserId(); // mark new user-id as primary
                            }
                        },
                        protector)
                .addUserId("Alice", protector) // overwrite "Alice" as non-primary user-id
                .done();

        info = PGPainless.inspectKeyRing(secretKeys);
        assertEquals("Bob", info.getPrimaryUserId());

Please try the new release (there have been some refactoring, so it might take some work to apply changes) and let me know what you think :)

Thank you, will try

@vanitasvitae I have a code:
    val generate = generateKeyRing()
      .setPrimaryKey(KeySpec.getBuilder(keypairAlgo.signingKeyType, KeyFlag.SIGN_DATA, KeyFlag.CERTIFY_OTHER))
      .addSubkey(KeySpec.getBuilder(keypairAlgo.encryptionKeyType, KeyFlag.ENCRYPT_COMMS, KeyFlag.ENCRYPT_STORAGE))

With pgpainless-1.0.0-rc4 it is no longer compiler. Missing method setPrimaryKey. What should I do instead?

@vanitasvitae I have another code:
            val selectionStrategy = SelectUserId.or(
              SelectUserId.containsEmailAddress(uid.email),
              SelectUserId.exactMatch(uid.email)
            )
            editor.deleteUserId(selectionStrategy, unprotectedProtector)

As you recommended, I've tried to change deleteUserId() to revokeUserId(), however there is no overloaded method revokeUserId() which takes selection strategy as parameter. Please add such one.

There are these methods in KeyRingUtils which can be used to delete user-ids.

@vanitasvitae Can you please put this:
.addUserId("Bob",
                        new SelfSignatureSubpackets.Callback() {
                            @Override
                            public void modifyHashedSubpackets(SelfSignatureSubpackets hashedSubpackets) {
                                hashedSubpackets.setPrimaryUserId(); // mark new user-id as primary
                            }
                        },
                        protector)

into new method addPrimaryUserId() which takes only userId and protector?

Another question - assume you have a key and a list of user ids. Some user of user ids on the list are already present on the key and some not. How would you do the following thing with PGPainless: transform a key so that list of its effective user ids would be equal to the given list of user ids? Will the following work:

Add user ids that are not yet on the key
Revoke user ids that are no longer on the key?

I'd do something like
KeyRingInfo info = PGPainless.inspectKeyRing(keys);
List<String> currentIds = info.getValidUserIds(); // contains only currently valid identities, not expired or revoked identities

List<String> missingIds = new ArrayList<>(expectedIds);
missingIds.removeAll(currentIds);
List<String> removalIds = new ArrayList<>(currentIds);
removalIds.removeAll(expectedIds);

SecretKeyRingEditorInterface editor = PGPainless.modifyKeyRing(secretKeys);
for (String userId : missingIds) {
     editor.addUserId(userId, ...);
}
for (String userId : removalIds) {
    editor.revokeUserId(userId, ...); // provide a "soft" revocation reason to allow recertification
}
keys = editor.done();

@vanitasvitae That's good idea.
Can you please add the above into SecretKeyRingEditor as setUserIds()?
Also see above request for addPrimaryUserId().

I hope it is okay for you if I defer addijg this feature for about two weeks. I try to keep the delta to 1.0.0-rc5 as small as possible in order to make life easier for the cure53 team.

PGPainless is currently under security review, so Paul's trying to minimize changes while security review is undergoing. So there will be a few weeks "feature freeze" to focus on security.

ok

@vanitasvitae which one should I use for this: "provide a "soft" revocation reason to allow recertification"?
        NO_REASON((byte) 0),
        KEY_SUPERSEDED((byte) 1),
        KEY_COMPROMISED((byte) 2),
        KEY_RETIRED((byte) 3),
        USER_ID_NO_LONGER_VALID((byte) 32),

KEY_SUPERSEDED, KEY_RETIRED are soft. The others (including NO_REASON) are hard as they indicate an incident.

ok, and which one of these two (in your opinion) fits better to this situation and why? I have used KEY_RETIRED for now.

I think I've got an answer from exception:
  Caused by: java.lang.IllegalArgumentException: Reason 3 - KEY_RETIRED can only be used for key revocations, not to revoke certificates.

But just to check - am I doing correct thing at all?
          val revocationAttributes = RevocationAttributes.createCertificateRevocation()
            .withReason(RevocationAttributes.Reason.KEY_SUPERSEDED)
            .withDescription("")
          editor.revokeUserIds(
            selectionStrategy,
            unprotectedProtector,
            object : RevocationSignatureSubpackets.Callback {
              override fun modifyHashedSubpackets(hashedSubpackets: RevocationSignatureSubpackets?) {
                hashedSubpackets?.setRevocationReason(revocationAttributes)
              }
            }
          )

Hmm, looks like I need to do "key revocation", because these two "soft" types fall into this category.

Ah I just noticed, for user-ids you want to use USER_ID_NO_LONGER_VALID which is soft and intended for user-ids. Right now your code will throw an exception since you are trying to use a key-revocation reason for a user-id certification revocation (sorry for my wrong recommendation :P)
You do not need to provide a signature callback in this case, as PGPainless will set the revocation reason for you.

I was wrong again. Sorry for that. Your attempt is actually mostly correct in that you need to provide a revocation reason.
This code should be correct to softly revoke user-ids that match a SelectUserId filter:
          val revocationAttributes = RevocationAttributes.createCertificateRevocation()
            .withReason(RevocationAttributes.Reason.USER_ID_NO_LONGER_VALID)
            .withDescription("")
          editor.revokeUserIds(
            selectionStrategy,
            unprotectedProtector,
            object : RevocationSignatureSubpackets.Callback {
              override fun modifyHashedSubpackets(hashedSubpackets: RevocationSignatureSubpackets?) {
                hashedSubpackets?.setRevocationReason(revocationAttributes)
              }
            }
          )

Thank you, restored back my previous code with change to USER_ID_NO_LONGER_VALID :))

I decided to do a last release before the audit starts, so I added addPrimaryUserId() methods to the SecretKeyRingEditor.
I have however not yet implemented a setUserIds(List) method, as I'm not yet sure, whats the best way of doing this generically.

A new release will be published sometime before monday.

Thank you!

@vanitasvitae such approach works, but then I have another issue:
  private fun doUpdateKeyExpiration(
    secretKeyRing: PGPSecretKeyRing,
    expiration: Instant?,
    protector: SecretKeyRingProtector
  ): PGPSecretKeyRing {
    val parsed = parse(secretKeyRing)
    val subkeyIds = parsed.allIds.filter { it != parsed.id }.map { OpenPgpV4Fingerprint(it) }
    val date = if (expiration == null) null else Date.from(expiration)
    val editor = PGPainless.modifyKeyRing(secretKeyRing).setExpirationDate(date, protector)
    subkeyIds.forEach { editor.setExpirationDate(it, date, protector) }
    return editor.done()
  }

After running this on the key with modified users (added new primary user), primary user changes back to the old one.
Sample key:
keypair-950EED2D-prv.txt

I think I know why this happens. This is a prime example of what complexities one encounters with the OpenPGP spec :D
PGPainless current logic for modifying the expiration date is to re-create the last signature on that datum with a modified expiration date.
Lets say that originally you had user-id A as primary user-id and then marked B as primary. Now B is recognized as the primary user-id since both A and B are marked as such, but B has the newer signature.
Now, if you change the expiration date, the signatures are re-created, which can result in A getting a signature newer than B, resulting in A now being recognized as primary once again.
I'll have to rethink how to deal with this. In the mean time, you could consider "packing" modifications on the key into "transactions", such that instead of creating several signatures, only one signature per datum is sufficient.
You could for example let your user make their desired changes in the UI and then resolve how to make the changes on the key as a single (or maybe some few) signatures.
Lets say the user wants to mark B as primary and set an expiration date of 3y. You could implement this via addUserId("A", ...) and pass a subpacket callback which marks the user-id as primary + set an expiration date.
I hope you get the idea and why this is rather complex and can get messy :D

@vanitasvitae So I suggest to add one more parameter to addPrimaryUserId() - @Nullable KeyExpirationTime primaryKeyExpirationTime.
Here is what I have implemented as extension method now:
fun SecretKeyRingEditorInterface.addPrimaryUserId(
  userId: String,
  primaryKeyExpirationTime: KeyExpirationTime?,
  secretKeyRingProtector: SecretKeyRingProtector
): SecretKeyRingEditorInterface = addUserId(
  userId,
  object : SelfSignatureSubpackets.Callback {
    override fun modifyHashedSubpackets(hashedSubpackets: SelfSignatureSubpackets?) {
      hashedSubpackets?.setPrimaryUserId()
      hashedSubpackets?.setKeyExpirationTime(primaryKeyExpirationTime)
    }
  },
  secretKeyRingProtector
)

@vanitasvitae please also make public this one: SignatureSubpacketGeneratorUtil.getKeyLifetimeInSeconds()

@vanitasvitae please also make public this one: SignatureSubpacketGeneratorUtil.getKeyLifetimeInSeconds()

I'll make it public and move it to SignatureSubpacketsUtil as that's a more appropriate place for it. :+1:

Here is what I have implemented as extension method now:

That code looks good. Sometimes I'm jealous of Kotlin ;D

I didn't like Kotlin in the beginning. But after Typescript Kotlin seems so nice...

FTR: I just released 1.0.0-rc6 with some of the requested changes. Now its feature freeze until in 2 weeks :)
I'm not familiar with .NET, and also not a windows person, so not planned :)

.NET now is not "Windows only". For example, Red Hat regularly promotes Linux container with .NET 5 and .NET 6.

Now its feature freeze until in 2 weeks :)

So I will keep writing extension methods... :)

.NET now is not "Windows only". For example, Red Hat regularly promotes Linux containers with .NET 5 and .NET 6.

Interesting, I did not know that.

So I am really keeping writing them :))
@vanitasvitae, so here is my "version 2" of updating expiration date/time on the key.
fun PGPSecretKeyRing.setExpiration(expiration: Instant?, protector: SecretKeyRingProtector): PGPSecretKeyRing {
  val info = PGPainless.inspectKeyRing(this)
  val primaryUserId = info.primaryUserId
  val publicKey = this.publicKey
  val fingerprint = publicKey.fingerprint
  val subkeyIds = this.publicKeys.asSequence()
    .filter { !it.fingerprint.contentEquals(fingerprint) }
    .map { OpenPgpV4Fingerprint(it) }
  val expirationDate = if (expiration == null) null else Date.from(expiration)
  val editor = PGPainless.modifyKeyRing(this)
  subkeyIds.forEach { editor.setExpirationDate(it, expirationDate, protector) }
  if (primaryUserId != null) {
    val keyExpirationTime = if (expirationDate != null) {
      KeyExpirationTime(false, (expirationDate.time - publicKey.creationTime.time) / 1000L)
    } else {
      null
    }
    editor.addPrimaryUserId(primaryUserId, keyExpirationTime, protector)
  }
  return editor.done()
}

Then I am doing following test:
Step 1

Load some expired key
Update expiration to "now"
Check result

This succeeds.
Step 2

Update resulting key from the Step 1 to expiration "now" + 1 day
Check result

Step 2 fails, expiration does not change.
What am I doing wrong here?

Signature creation time has a resolution of 1 second.
Maybe your test is too fast, so PGPainless is not detecting the correct signature as most recent?
Try adding a delay of 1+ second between step one and two.

Thank you, that has worked.

@vanitasvitae Now I've found another issue with the same code, i.e. listed above PGPSecretKeyRing.setExpiration(): I take key with some expiration and trying to set it not expiring. As result the key still has expiration.

@vanitasvitae FYI about .NET https://developers.redhat.com/articles/2021/11/15/net-60-now-available-rhel-and-openshift

@vanitasvitae So any ideas why setting no expiration doesn't work?

There is more than one way to set expiration. You can set:

expiration on user-id signatures which only expire the user-id
expiration on the primary userid sig. The primary expiration overweighs non-primary user-ids
expiration on subkey binding signatures. This only expires subkeys at some point
expiration on a direct-key signature. This expiration expires the whole key ring

Can you provide a JUnit test which fails your expectations? That would be easiest for me to find and rectify the issue.

Sample unit test:
  fun testSetNoExpiration() {
    val keyPair = readKeypairResource("950EED2D")
    val keyRing = PGPainless.readKeyRing().secretKeyRing(keyPair.prv.armored)
    assertThat(keyRing.publicKey.validSeconds).isGreaterThan(0L)
    // calling extension method listed above
    val updatedKeyRing = keyRing.setExpiration(null, UnprotectedKeysProtector())
    assertThat(updatedKeyRing.publicKey.validSeconds).isEqualTo(0L)
  }

@vanitasvitae Any chances to have this resolved soon? I'm blocked with it.

I will give this priority now :+1:

Why are you setting an expiration date for each subkey? It should be sufficient to only set an expiration date for the primary key, as subkeys "inherit" its expiration.
This method
    SecretKeyRingEditorInterface setExpirationDate(
            @Nullable Date expiration,
            @Nonnull SecretKeyRingProtector secretKeyRingProtector)
            throws PGPException;

sets the expiration date for each user-id on the primary key. That means that all subkeys will be unusable as well once the user-ids expire.
Setting subkey expiration dates is only necessary if you want to explicitly expire a subkey independently from the primary key or other subkeys.

However, I will see if I can make some changes to the expiration date logic, since the current implementation does not take DirectKeySignatures into consideration. I will also need to do some research into how exactly expiration dates from different signature types are expected to be resolved.
PGPainless' signature verification implementation already matches the expectations of the test suite, but the user-facing API for modifying expiration dates is on a different page.

@tomholub Do you remember something about why it was done this way?

Why are you setting an expiration date for each subkey? It should be sufficient to only set an expiration date for the primary key, as subkeys "inherit" its expiration.
This method
    SecretKeyRingEditorInterface setExpirationDate(
            @Nullable Date expiration,
            @Nonnull SecretKeyRingProtector secretKeyRingProtector)
            throws PGPException;

sets the expiration date for each user-id on the primary key. That means that all subkeys will be unusable as well once the user-ids expire.
Setting subkey expiration dates is only necessary if you want to explicitly expire a subkey independently from the primary key or other subkeys.

@tomholub Do you remember something about why it was done this way?

All of these decisions should be done in PGPainless, I think. I have a more important question: why were we doing anything in PGP at this level of detail at all? Either, some functionality was missing in PGPainless at the time, or the interface that PGPainless exposes allows us a little too much decision making, and the interface should be dumbed down.

It was done before because PGPainless was missing this functionality, and now it didn't work as expected and I was trying to fix it. I agree that normally we need that all to be done completely in PGPainless.

@vanitasvitae So I need you to ensure that basically following things can be done easily with PGPainless and work correctly:

Take a key with expiration, set expiration to an earlier or later date, check result.
Take a key without expiration, set expiration to some date, check result.
Take a key with expiration, remove expiration, check result.
Items 1-3 above, but before changing expiration, primary user ID is changed.

Items 1-3 above, but before changing expiration, primary user ID is changed.

Can't this be a separate step, simply "change primary user id" ? Is it related to the other 3?

Items 1-3 above, but before changing expiration, primary user ID is changed.

Can't this be a separate step, simply "change primary user id" ? Is it related to the other 3?

Assume a scenario - you change primary user id on a key. A year later you extend expiration. No other changes to key during this year. But key is in the state after changing user ID. I specifically mention this scenario because I've found it didn't work properly. After setting expiration primary user id was restored to the old one, which is pretty unexpected, right?

I see. Yes - combinations of these should also be supported over time.
@vanitasvitae does this kind of functionality make sense for PGPainless (after the audit?)

I definitely intend for PGPainless to support this.

@IvanPizhenko let's wait with this until we can fully utilize PGPainless functionality, then update our code to use simple PGPainless methods.
@vanitasvitae is there any issue on PGPainless that tracks this? If no, please open one. Thanks 👍


Example not working at all

I just clone this repo and build.
It just give me the error below

Launching lib/main.dart on LM Q510N in debug mode...
Error: Couldn't resolve the package 'wifi_scan' in 'package:wifi_scan/wifi_scan.dart'.
: Error: Not found: 'package:wifi_scan/wifi_scan.dart'
import 'package:wifi_scan/wifi_scan.dart';
^
: Error: Type 'WiFiAccessPoint' not found.
List accessPoints = [];
^^^^^^^^^^^^^^^
: Error: Type 'WiFiAccessPoint' not found.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
^^^^^^^^^^^^^^^
: Error: Type 'GetScannedResultsErrors' not found.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
^^^^^^^^^^^^^^^^^^^^^^^
: Error: Type 'Result' not found.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
                 ^^^^^^

: Error: Expected 0 type arguments.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
^
: Error: Type 'WiFiAccessPoint' not found.
Result<List, GetScannedResultsErrors> result) {
^^^^^^^^^^^^^^^
: Error: Type 'GetScannedResultsErrors' not found.
Result<List, GetScannedResultsErrors> result) {
^^^^^^^^^^^^^^^^^^^^^^^
: Error: Type 'Result' not found.
Result<List, GetScannedResultsErrors> result) {
^^^^^^
: Error: Expected 0 type arguments.
Result<List, GetScannedResultsErrors> result) {
  ^

: Error: Type 'WiFiAccessPoint' not found.
Widget _buildAccessPointTile(BuildContext context, WiFiAccessPoint ap) {
                                                 ^^^^^^^^^^^^^^^

: Error: Couldn't find constructor 'StandardMethodCodec'.
const MethodChannel(this.name, [this.codec = const StandardMethodCodec(), BinaryMessenger? binaryMessenger ])
^^^^^^^^^^^^^^^^^^^
: Error: Couldn't find constructor 'StandardMethodCodec'.
const OptionalMethodChannel(String name, [MethodCodec codec = const StandardMethodCodec(), BinaryMessenger? binaryMessenger])
^^^^^^^^^^^^^^^^^^^
: Error: Couldn't find constructor 'StandardMethodCodec'.
const EventChannel(this.name, [this.codec = const StandardMethodCodec(), BinaryMessenger? binaryMessenger])
^^^^^^^^^^^^^^^^^^^
: Error: Method not found: 'JSONMethodCodec'.
JSONMethodCodec(),
^^^^^^^^^^^^^^^
: Error: Method not found: 'JSONMethodCodec'.
JSONMethodCodec(),
^^^^^^^^^^^^^^^
: Error: Method not found: 'JSONMethodCodec'.
JSONMethodCodec(),
^^^^^^^^^^^^^^^
: Error: Method not found: 'JSONMessageCodec'.
JSONMessageCodec(),
^^^^^^^^^^^^^^^^
: Error: Method not found: 'StringCodec'.
  StringCodec(),
  ^^^^^^^^^^^

: Error: Method not found: 'JSONMessageCodec'.
JSONMessageCodec(),
^^^^^^^^^^^^^^^^
: Error: Method not found: 'StandardMessageCodec'.
StandardMessageCodec(),
^^^^^^^^^^^^^^^^^^^^
: Error: Method not found: 'JSONMethodCodec'.
JSONMethodCodec(),
^^^^^^^^^^^^^^^
: Error: Method not found: 'JSONMethodCodec'.
JSONMethodCodec(),
^^^^^^^^^^^^^^^
: Error: 'WiFiAccessPoint' isn't a type.
List accessPoints = [];
^^^^^^^^^^^^^^^
: Error: 'WiFiAccessPoint' isn't a type.
List accessPoints = [];
^^^^^^^^^^^^^^^
: Error: 'WiFiAccessPoint' isn't a type.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
^^^^^^^^^^^^^^^
: Error: 'GetScannedResultsErrors' isn't a type.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
                                               ^^^^^^^^^^^^^^^^^^^^^^^

: Error: 'Result' isn't a type.
StreamSubscription<Result<List, GetScannedResultsErrors>>?
^^^^^^
: Error: 'WiFiAccessPoint' isn't a type.
Result<List, GetScannedResultsErrors> result) {
^^^^^^^^^^^^^^^
: Error: 'GetScannedResultsErrors' isn't a type.
Result<List, GetScannedResultsErrors> result) {
^^^^^^^^^^^^^^^^^^^^^^^
: Error: 'Result' isn't a type.
Result<List, GetScannedResultsErrors> result) {
  ^^^^^^

: Error: 'WiFiAccessPoint' isn't a type.
setState(() => accessPoints = []);
                                 ^^^^^^^^^^^^^^^

: Error: The getter 'WiFiScan' isn't defined for the class '_MyAppState'.

'_MyAppState' is from 'package:flutter/src/services/message_codecs.dart' ('../../../../../sdk/flutter/packages/flutter/lib/src/services/message_codecs.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'WiFiScan'.
subscription = WiFiScan.instance.onScannedResultsAvailable
^^^^^^^^
: Error: 'WiFiAccessPoint' isn't a type.
Widget _buildAccessPointTile(BuildContext context, WiFiAccessPoint ap) {
^^^^^^^^^^^^^^^
: Error: 'WiFiAccessPoint' isn't a type.
setState(() => accessPoints = []);
^^^^^^^^^^^^^^^
: Error: The getter 'WiFiScan' isn't defined for the class '_MyAppState'.

'_MyAppState' is from 'package:flutter/src/services/message_codecs.dart' ('../../../../../sdk/flutter/packages/flutter/lib/src/services/message_codecs.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'WiFiScan'.
future: WiFiScan.instance.hasCapability(),
            ^^^^^^^^

: Error: The getter 'WiFiScan' isn't defined for the class '_MyAppState'.

'_MyAppState' is from 'package:flutter/src/services/message_codecs.dart' ('../../../../../sdk/flutter/packages/flutter/lib/src/services/message_codecs.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'WiFiScan'.
                    final error = await WiFiScan.instance.startScan();
                                        ^^^^^^^^

: Error: The getter 'WiFiScan' isn't defined for the class '_MyAppState'.

'_MyAppState' is from 'package:flutter/src/services/message_codecs.dart' ('../../../../../sdk/flutter/packages/flutter/lib/src/services/message_codecs.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'WiFiScan'.
await WiFiScan.instance.getScannedResults()),
^^^^^^^^
: Error: Couldn't find constructor 'StandardMessageCodec'.
return const StandardMessageCodec().decodeMessage(encoded) as Map<Object?, Object?>?;
^^^^^^^^^^^^^^^^^^^^
: Error: Couldn't find constructor 'StandardMessageCodec'.
final ByteData encoded = const StandardMessageCodec().encodeMessage(data)!;
^^^^^^^^^^^^^^^^^^^^
: Error: Couldn't find constructor 'StandardMessageCodec'.
const StandardMessageCodec().encodeMessage(object);
^^^^^^^^^^^^^^^^^^^^

: Error: Couldn't find constructor 'StandardMessageCodec'.
args != null ? const StandardMessageCodec().decodeMessage(args) : null,
^^^^^^^^^^^^^^^^^^^^
Unhandled exception:
FileSystemException(uri=org-dartlang-untranslatable-uri:package%3Awifi_scan%2Fwifi_scan.dart; message=StandardFileSystem only supports file:* and data:* URIs)
#0      StandardFileSystem.entityForUri (package:front_end/src/api_prototype/standard_file_system.dart:34:7)
#1      asFileUri (package:vm/kernel_front_end.dart:623:37)
#2      writeDepfile (package:vm/kernel_front_end.dart:763:21)

#3      FrontendCompiler.compile (package:frontend_server/frontend_server.dart:586:9)

#4      starter (package:flutter_frontend_server/server.dart:85:12)

#5      main (file:///opt/s/w/ir/cache/builder/src/flutter/flutter_frontend_server/bin/starter.dart:13:24)

FAILURE: Build failed with an exception.

Where:
Script '/Users/kevin/sdk/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1102

What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command '/Users/kevin/sdk/flutter/bin/flutter'' finished with non-zero exit value 1

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 10s
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

Hey @cmlee-danbi,
at first glance, it seems like you’re using the package wifi_scan instead of wifi_hunter, which is different package altogether.
Please verify that you’re using the right package, if you want to use this one.
If you still run into issues, please clone this repository and try to build / run the example from the example directory and posting the error output and your configuration (display using flutter doctor -v) here if you still run into issues.
I‘ve also just upgraded the dependencies, etc. to the latest version, so everything should now work fine using the latest Flutter, Dart and Android SDKs / Tools as well.
Here‘s the configuration I used for confirming functionality :

Thank you for your interest.

I'm sorry It was Flutter SDK upgrade issue, now package working perfectly.
Thank you for your awesome package


feature: Access to Markdown and Raw data

Problem: there is no way to easily access Markdown and Raw data of the Editor component. Raw Tiptap nodes are available in the localStorage, while Markdown is only accessible with manual copy-paste from the Editor.
Possible solution: Expose those props similar to props on Melt components.

In my app where I'm using Tiptap, I store the HTML (for seo purposes when loading on the server) and the JSON for editing purpose in 2 tables. So exposing most of the tiptap stuff would be incredibly helpful


[Feature] Refactor vela cli to interact with Application instead of AppConfig and Component

Now we have successfully built Application Object which has done most appfile logic in controller. Our CLI should work with the Application object instead of AppConfig and Component.
Commands should be refactored

[ ]     init   	Create scaffold for an application
[ ]     delete APP_NAME                           	Delete an application  @zzxwill
[ ]     exec [flags] APP_NAME -- COMMAND [args...]	Execute command in a container
[ ]     logs                                      	Tail logs for application
[ ]     ls                                        	List services of all applications
[ ]     port-forward APP_NAME                     	Forward local ports to services in an application
[ ]     show APP_NAME                             	Show details of an application
[ ]     status APP_NAME                           	Show status of an application, including workloads and

Commands should be deprecated
we should use appfile instead of these commands.

[ ] vela svc deploy
[ ] vela route APP_NAME
[ ] vela scale APP_NAME
[ ] vela metrics APP_NAME
[ ] vela rollout APP_NAME

/assign

[ ]  exec [flags] APP_NAME -- COMMAND [args...] Execute command in a container
[ ]  logs Tail logs for application
[ ]  port-forward APP_NAME Forward local ports to services in an application

/assign

[ ]  exec [flags] APP_NAME -- COMMAND [args...] Execute command in a container
[ ]  logs Tail logs for application
[ ]  port-forward APP_NAME Forward local ports to services in an application

/assign

[ ] status APP_NAME Show status of an application, including workloads and traits

/assign

[ ] status APP_NAME Show status of an application, including workloads and traits

/assign
*[] ls List services of all applications
*[] show APP_NAME Show details of an application

/assign
*[] ls List services of all applications
*[] show APP_NAME Show details of an application

/assign

[ ]  ls List services of all applications
[ ]  show APP_NAME Show details of an application

/assign

[ ]  ls List services of all applications
[ ]  show APP_NAME Show details of an application

@LeoLiuYan  Hi, are you still working on this? We have made vela show  command to print how traits and workloads schema is, so don't do this command any more, thanks!

@LeoLiuYan  Hi, are you still working on this? We have made vela show  command to print how traits and workloads schema is, so don't do this command any more, thanks!

@LeoLiuYan Hi, are you still working on this? We have made vela show  command to print how traits and workloads schema is, so don't do this command any more, thanks!

Got it. Yes, I am still working on this.

@LeoLiuYan Hi, are you still working on this? We have made vela show  command to print how traits and workloads schema is, so don't do this command any more, thanks!

Got it. Yes, I am still working on this.

@LeoLiuYan @captainroy-hy Hi，any progress on this issue？


macros in diesel-cli generated source don't have "diesel::" prefix

In my generated schema.rs, It's not diesel::table! like in the examples(https://github.com/diesel-rs/diesel/blob/master/examples/mysql/getting_started_step_1/src/schema.rs), but just table! . So I have to #[macro_use]extern crate diesel in my lib.rs/main.rs, which is deprecated(https://doc.rust-lang.org/edition-guide/rust-2018/macros/macro-changes.html)
How do I make the macros in generated schema.rs get the diesel:: prefix?
diesel-cli version: 1.4.1
database backend: mysql

Duplicate of #1764.
(This is expected behaviour for diesel 1.4.x)
Also you are looking at the examples for the master branch, not for the latest release.)


how to convert datatables to static html successfully

Thank you for working on this package.
I could successfully render the iris data frame on jupyter notebook. However, after convert to static html, the data table doesn't appear. Here are my print screens.

Save Notebook Widget State

Download as HTML(.html)

It's gone

Hello and thank you!
This library does not work with widgets, altho that is a pretty good pointer right there, that I might want to check out whether the "Save widget state" is a more suitable option. You can read more about this in the jupyter-require readme section.
Anyway, if you want to save the plot state here, you gotta finalize it first. You've got two options. Either you use the shield-like button Save and Finalize dedicated for that purpose, or you properly close and halt the notebook.
Solution
Before exporting to HTML, finalize the notebook state using the dedicated Save and Finalize button on the right of the Save and checkpointone in the Jupyter notebook toolbar.
Let me know if everything works!
Marek

@CermakM
Thanks for your kindly reply.
I tried click Save and Finalize before Download as HTML. The result was not quite success.
I can see the jupyter-datatable showed on static html, however, the static html seems only snapshot the first page for jupyter-datatable. The buttons do not work after exporting, such as Print, CSV, PDF, sorting, pagination...etc.

Hello and thank you!
This library does not work with widgets, altho that is a pretty good pointer right there, that I might want to check out whether the "Save widget state" is a more suitable option. You can read more about this in the jupyter-require readme section.
Anyway, if you want to save the plot state here, you gotta finalize it first. You've got two options. Either you use the shield-like button Save and Finalize dedicated for that purpose, or you properly close and halt the notebook.
Solution
Before exporting to HTML, finalize the notebook state using the dedicated Save and Finalize button on the right of the Save and checkpointone in the Jupyter notebook toolbar.
Let me know if everything works!
Marek

@orcahmlee
Yep, as long as you can see the table, that is the expected behaviour. What get's embedded is only a snapshot of the current state. The purpose of it is the security of your data, we're preserving only the data that you want to show your audience.
What I could do, however, is denote it somehow, so that it was clear that the visualization is just a snapshot, I'll think about it (or you can create a feature request for it, if you want to! ;)) and see what I can do.
Anyway, that is the correct behaviour.
Proposal:
Disable all of the buttons once finalized so that it is clear that what we see is just a snapshot of the data.
Cheers,
Marek

I would much rather have an interactive version of the table in the static html. Of course the author needs to be aware of the risk.
This would add a lot more value to a static html export.

@JulianWgs
Perhaps it would and I understand that you might wanna use it that way, but this is not the concept of this project and I don't think it should be the concept in general. Let me elaborate.
The purpose of it is to eliminate security risks, to strip the unwanted JavaScript from the notebook to protect your machine (Each time you open the notebook, every single script is run automatically and without your permission), your data and your intellectual property (you might not want to share the script that generated the plot? But you do because it is embedded into the notebook?).
If you do need the interactivity, why wouldn't you just open the Jupyter Notebook itself, or run it in binder? What is the value of the static HTML export?
Cheers,
Marek

Sorry, for the late reply. There is another project offering interactive tables: https://github.com/quantopian/qgrid. The feature set is "similar", but on the other project it is also not possible to export the interactive table to a static html. This feature will never work there, because of how the project needs a running kernel.
Genererating interactive tables in a static html could be a distinct feature of this project!
A huge benefit is that you could show of interactive reports in nbviewer and not binder or nbinteract. Also some clients prefer the html version of the report send by mail. (Not ideal I know...)
This is the same reason I prefer plotly over bokeh/matlab. It offers javascript based interactive visualization without much work. Of course for "richer" visualization you would use something else, but for a quick report, it is very nice.
Also I dont want to show off huge tables with a lot of data, but just an aggregated form.
Thank you!
Cheers
Julian

Thank you for the feedback!
Unfortunately, having interactive plots in the static exports is currently out of the scope of this project and is not planned in the near future. The idea is to keep the reports and the notebook minimal and keep only the relevant information.
I understand that having interactive static exports might be attractive for some users, but I would be bold enough to suggest them to open up the report in the Notebook or binder and explore it there :).
Thank you once again, hope that you'll be satisfied with the future upgrades to this project (feel free to check out the Project board if you wish).
PS: I believe this issue can be closed, if you agree, feel free to close it.
Cheers,
Marek


Implemented Gemini (#1490)

Description
Added support for Gemini using google-generativeai module. (sorry it took so long 👍)
Fixes #1490
Type of change

[✅] New feature (non-breaking change which adds functionality)
[✅] Documentation update

How Has This Been Tested?
Also added unit test for Gemini in tests/llms/test_gemini_llm.py
Please delete options that are not relevant.

[✅] Unit Test

Checklist:

[✅] My code follows the style guidelines of this project
[✅] I have performed a self-review of my own code
[✅] I have commented my code, particularly in hard-to-understand areas
[✅] I have made corresponding changes to the documentation
[✅] My changes generate no new warnings
[✅] I have added tests that prove my fix is effective or that my feature works
[✅] New and existing unit tests pass locally with my changes
[?] Any dependent changes have been merged and published in downstream modules
[✅] I have checked my code and corrected any misspellings

Maintainer Checklist

[ ] closes #1490  (Replace xxxx with the GitHub issue number)
[ ] Made sure Checks passed

I have a doubt. I noticed there is already a Google AI mentioned in the docs (using litellm), should I add Gemini as a seperate page to the docs or update the Google AI page?

I have a doubt. I noticed there is already a Google AI mentioned in the docs (using litellm), should I add Gemini as a seperate page to the docs or update the Google AI page? @Dev-Khant

Hey Thanks for the PR, you should litellm gemini with your new doc page.

Make sure that .lock file remains same as there is no change in pyproject.toml.

I see there have been a few changes in the poetry.lock file as some packages have been updated, this is poetry's doing. When you say poetry add openai=^x.xx it shows openai ="^x.xx" in the pyproject.toml but actually installs the latest version of the package. Its fixed now.

Hey @into-the-night pyproject.toml still looks odd. Can you please check and remove changes from .toml and .lock files if not necessary.

Wow that was pretty sneaky but something new to learn about line-endings

LGTM!! Thanks @into-the-night for the quick resolution and for the contribution!

Thank you so much for your patience😁 we go up brick by brick!


Fixed Issue 4912 by deepcopying the results to utils.marginal_counts

…before operation.

Summary
Fixes Issue #4912
Details and comments
The marginal_counts() method in result/utils.py file now takes in an additional optional argument of in_place to determine whether the user wants to operate on the original result argument passed to the method.
By default, in_place is set to False and the result argument passed is first deep copied to make sure that changes in the result argument do not affect the original job object passed to the method. Updated the docstring likewise.

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

Thanks for your contribution! Do you mind adding a test reproducing the problem in #4912?

Sure. Let me incorporate those changes. Apologies for again clicking the 'Update branch' button.


[MRG] Resolves CI issues

Resolves #427
Also resolves the "collection failure" in the recent CI failures: https://circleci.com/gh/dask/dask-ml/3030?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link

Thanks! I restarted the build to see if the code-cov failure was temporary. If not, I'll investigate on their backend.

All passing, thanks for working on this @thomasjpfan.


SecretClient doesn't seem to be retrieving managed secrets

I noticed that when creating a certificate in Azure Key Vault, a new secret is automagically created to correspond to the certificate. In lowkey-vault, after adding a new certificate, I am able to retrieve the secret immediately using secretClient.GetSecret(certificateName), but when retrieving the list of all secrets secretClient.GetPropertiesOfSecrets().ToList(), the result does not contain the secret with the certificate name. It -does- appear to work correctly when targeting an actual Azure Key Vault, so it seem perhaps it's an issue with lowkey-vault? I am opening a PR with a broken test.

No problem @mcolebiltd , I know one :)
I have confirmed, that it is in fact listing the secrets with the Java client as well:
// list already generated secrets managed by certificates
DefaultAzureCredential credentials = new DefaultAzureCredentialBuilder().build();
SecretClient secretClient = new SecretClientBuilder().vaultUrl(REAL_KEY_VAULT_URL)
        .credential(credentials)
        .buildClient();

List<SecretProperties> result = secretClient.listPropertiesOfSecrets().stream().collect(Collectors.toList());

result.stream().forEach(secret -> System.out.println(secret.getName() + " - " + secret.isManaged()));

printing:
disabled - null
disabled-2 - null
ec-p256 - true
ec-p256k - true
ec-p384 - true
ec-p521 - true
lowkey-vault-imported - true
plain-text - null
rsa2048 - true
rsa3072 - true
rsa4096 - true
secret - null

Based on this, I will consider this as a bug and try to fix it.

The same is true for keys as well:
// list already generated keys managed by certificates
DefaultAzureCredential credentials = new DefaultAzureCredentialBuilder().build();
KeyClient keyClient = new KeyClientBuilder().vaultUrl(REAL_KEY_VAULT_URL)
        .credential(credentials)
        .buildClient();

List<KeyProperties> result = keyClient.listPropertiesOfKeys().stream().collect(Collectors.toList());

result.stream().forEach(key -> System.out.println(key.getName() + " - " + key.isManaged()));

Listing:
disabled - null
ec-p256 - true
ec-p256k - true
ec-p384 - true
ec-p521 - true
lowkey-vault-imported - true
rsa2048 - true
rsa3072 - true
rsa4096 - true

Confirmed with Get Key Versions as well.

Hi @mcolebiltd ,
I have just released v2.2.0 which should fix it.
Please feel free to try it, and let me know whether it is working for you too!
P.S. Reopening the ticket to show that it is still not 100% confirmed. I shouldn't have added the keyword to the commit message.

@nagyesta Confirmed, this works for me. Thanks for the quick fix!

Thank you for confirming!


[jvm-packages] Bump version of akka packages

Was the license https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka in akka >= 2.7.0 considered when doing this bump? Since the new license for akka is not open source this is might be problematic for some users of this library.


Plugin is indicating a newer version is available on 2.4.4-3

Plugin banner states "There is a newer version of the MongoDB plugin available."
as far as I can tell 2.4.4-3 is the newest version. Not a huge deal. Thought you'd want to know.

how is this still an issue ?!??!

Still having the same message, even after installing the latest version.

Happy to review a fix


Erasing media from remote

Maybe i'm wrong but the uploader does not delete photos from remote if they do not exist in local, does not it?
The uploader could check if a remote file exists locally and if it does not: delete it. Otherwise I have a bunch of photos remotely that i uploaded sometime and i don't want to delete it manually.

unfortunately we can't build the intersection between the destination and the source.  So it would be too risky to try to delete images.  the uploader only adds new ones.

What do you mean by "intersection"?
Maybe it could be added but under user's responsability.

I mean identifying the files that exist locally and on the server , and
then deleting those that don't -- this part is impractical and dangerous
On Tue, Apr 30, 2019 at 2:39 PM Amat Martínez<EMAIL_ADDRESS>wrote:

What do you mean by "intersection"?
Maybe it could be added but under user's responsability.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/nmrshll/gphotos-uploader-cli/issues/54#issuecomment-488125030,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADBFK3YTBPHL3AZBXDTJNDPTC4BXANCNFSM4HHJWWKA
.

I agree with @tonymet It's too risky. I've labelled as wontfix. Do you disagree?

@pacoorozco as you want. Thank you anyway! @tonymet


Add retry logic of Function deployment

Function's deployment sometimes takes a bit long than it was expected. If deployment didn't happen after 10 mins, retry it entirely (remove file and reupload everything)

I’d like if we increased the timeout instead, and potentially do a retry if that doesn’t work. Retry is sent from hell, and doesn’t solve any underlying issue.

Retry the action usually works right away. I prefer to keep both options on
the table: overall timeout and built in retry.
On Thu, 8 Oct 2020 at 13:04, Anders Hafreager<EMAIL_ADDRESS>wrote:

I’d like if we increased the timeout instead, and potentially do a retry
if that doesn’t work. Retry is sent from hell, and doesn’t solve any
underlying issue.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/cognitedata/function-action/pull/12#issuecomment-705496660,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJSPNM3IBQF6MRBU47NO5EDSJWMETANCNFSM4SIN5EFA
.

Nonnegotiable. I like explicit over implicit things 🤷🏼♂
On Thu, 8 Oct 2020 at 18:56, Håkon V. Treider<EMAIL_ADDRESS>wrote:

@haakonvt commented on this pull request.
In src/function.py
https://github.com/cognitedata/function-action/pull/12#discussion_r501871005
:

return False

return None

...but... it... is so ugly to look at 🤮 (also, mypy... don't get me
started..)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/cognitedata/function-action/pull/12#discussion_r501871005,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJSPNM2OQI3AJPGWMGX4DI3SJXVNDANCNFSM4SIN5EFA
.


Run loop scheduler

Hi, thanks for creating this great project that keep the reactive programming up!
I wonder whether there is an implementation or plan to implement the runloop scheduler as in the rxcpp library? I found it effective to implement the cooperative multiprocessing an embedded platform.
Thanks!

Hi! Thanks for submitting feature request! :-)
Yeah, I have plan to implement this scheduler in the near future, most probably during this week

Appreciate for that!

@wuyuanyi135 , i've merge run_loop. Can you check if it satisfies your requirements?

Hi, @victimsnino . Many thanks for implementing this feature! I will check it out these days and get you back if I have some questions.


using TFDatasetInput to wrap tf dataset that read tfrecord is slow?

I use tf dataset api to read tfrecord files and then pass it to TFDatasetInput for training. IO is slow and become the bottleneck. Below is a part of my code
def record_parser(record):
    image_height = 227
    image_width = 454
    image_channels = 3
    keys_to_features = {
        'image_path': tf.FixedLenFeature((), tf.string, default_value=''),
        'image': tf.FixedLenFeature((), tf.string, default_value=''),
        'label': tf.FixedLenFeature([], tf.int64, default_value=-1)
    }
    parsed = tf.parse_single_example(record, keys_to_features)
    image = tf.image.decode_jpeg(
        parsed['image'],
        image_channels
    )
    image = tf.image.resize_images(image, [image_height, image_width])
    label = tf.cast(parsed['label'], dtype=tf.int32)
    return image, label

tfrecord_list = <a list of tfrecord file names>
batch_size=160
tfrecord_dataset = (
    tf.data.Dataset.from_tensor_slices(tfrecord_list)
      .shuffle(buffer_size=1024)
      .flat_map(tf.data.TFRecordDataset)
      .map(record_parser, num_parallel_calls=10)
      .prefetch(batch_size * 5)
      .shuffle(buffer_size=5000)
      .repeat()
      .batch(batch_size)
)
train_config = TrainConfig(
    data = TFDatasetInput(tfrecord_dataset),
    ...
)
SimpleTrainer(train_config).train()

When I use tf dataset to read image directly, IO is fast enough and is not the bottleneck. Below is the code
def _parse_function(filename, label):
    image_string = tf.read_file(filename)
    image_decoded = tf.image.decode_jpeg(image_string, 3)
    image_resized = tf.image.resize_images(image_decoded, [227, 454])
    return image_resized, label

image_dataset = (
    tf.data.Dataset.from_tensor_slices((filenames, labels))
      .shuffle(buffer_size=5000)
      .repeat()
      .map(_parse_function, num_parallel_calls=10)
      .batch(batch_size)
      .prefetch(5)
)
train_config = TrainConfig(
    data = TFDatasetInput(image_dataset),
    ...
)
SimpleTrainer(train_config).train()

However, I use below code to test the performance of dataset api. The tfrecord_dataset is even faster than the image_dataset.
def test_perf(dataset):
    iterator = dataset.make_one_shot_iterator()
    next_element = iterator.get_next()
    with tf.Session() as sess:
        t1 = time.time()
        for i in range(100):
            sess.run(next_element)
        t2 = time.time()
    return t2 - t1

Do I use the tf dataset api in tensorpack correctly?

You bring two issues if I understand correctly:

Reading tfrecord is slower than reading images directly, both with tf.data APIs.

This is only about "how to write more efficient tf.data pipeline" and is nothing about tensorpack. We won't  discuss it here.

You used a snippet to test raw speed of tfrecord and found it faster than reading images.

-- How do you know the speed of image_dataset? Have you written a similar script to test it? If not, you're probably not comparing things apple-to-apple.

The returned value of test_perf(tfrecord_dataset) is smaller than test_perf(image_dataset), but using tfrecord_dataset, IO is the bottleneck, image_dataset not. How is TFDatasetInput._iterator used in training progress?

It's just a simple iterator.get_next() as you can see. No magic is happening:
https://github.com/ppwwyyxx/tensorpack/blob/ef9fb4b8b7b1c2c4b1b8b19bd92650665a48f822/tensorpack/input_source/input_source.py#L433-L445
I don't have a good explanation for that tfrecord become slower than image_dataset during training. Some points you might want to investigate:

How do you know IO is the bottleneck? Is that a correct conclusion?
Use only one GPU to make the problem simple
Have you tested more than one times to make sure the observation is stable?
During training a different session config is used (tensorpack.tfutils.get_default_sess_config). Maybe it affects the speed and you can try to benchmark with this config instead.

it's caused by prefetch and should be nothing about tensorpack. I changed the code as below and the issue was gone.
tfrecord_dataset = (
    tf.data.Dataset.from_tensor_slices(tfrecord_list)
      .shuffle(buffer_size=1024)
      .flat_map(tf.data.TFRecordDataset)
      .map(record_parser, num_parallel_calls=10)
      .shuffle(buffer_size=5000)
      .repeat()
      .batch(batch_size)
      .prefetch(5)
)


How to do inpainting?

I'm wondering how inpainting can be done with this pretrained model. By in-painting I mean feeding a structure to the model and letting it only change a few angles in the middle of the structure.

I think this model cant do inpainting but can do auto regressive generation, fix starting backbone of a given structure and generate rest part.


azure-cli-core: Test failure in TestClientFactory.test_get_mgmt_service_client

Related command
This is a failure while running azure-cli tests during RPM packaging in Fedora Linux.

Expected behavior
I expected the test to pass. I even tried to add configuration files in ~/.azure, but this did not help.
Environment summary
Python 3.10.5 and 3.11.0b3 on Fedora Linux 36 and 37. The Debian package scripts skip this test, so I assume there is trouble with it there as well.

@jiasli for awareness

Fedora RPM is not official supported yet (https://github.com/Azure/azure-cli/issues/22278), we are experiencing with Fedora 35 and 36 but encountered some difficulties (https://github.com/Azure/azure-cli/pull/22945) due to the Python library location change: https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/developers/Development_Python/

I'm the current Fedora package maintainer for azure-cli and I'm doing my best to keep it updated, tested, and packaged. 😉
However, I run into this failing test whether I am doing the testing inside or outside an RPM build. This test is also skipped in the Debian package, so I would assume they are having issues with it, too.


Tech discovery/planning: ADR prep for Editor-Projects integration

Design documentation: https://www.figma.com/file/SrINjD1MCT6VWYf1Yc9fV1/Code-Editor---Designs?type=design&node-id=3655-9504&mode=design&t=Ez5YV8GFypuQ2v5y-0

Initial spike - https://github.com/RaspberryPiFoundation/editor-ui/pull/651/files

Initial tech discussion and potential blockers to explore here

merge draft ADR


Scale cosine distance to 0-1

Fix - "_similarity_search_with_relevance_scores" is called by VectorStore base class and should return relevance score between 0 and 1, not the distance.

Fixes #6481
Before submitting

Who can review?
Tag maintainers/contributors who might be interested: @dev2049

Can we add this to the base VectorStore class or add a specialized subclass? It seems FAISS already has this implemented: https://github.com/hwchase17/langchain/blob/master/langchain/vectorstores/faiss.py#L81 with slightly different relevant scores though.

This includes some of the changes you've included in this PR, do you want to take a look? Happy to collaborate/merge your additional changes in if we think it's worth refactoring in this way:
https://github.com/hwchase17/langchain/pull/6570

Hi @raymond-yuan, the metric scores may differ between the databases, for example, pgvector returns the negative of maximum inner product while chroma will return a positive value for this metric, so the normalization/ scaling function should match the database.
I think the default relevance_score_fn should be left unimplemented in base for the specific vector store to implement. Besides that I think it is a necessary refactor and a great job in #6570.
I have two pull requests that include related code - this one and #6475. Those versions are working well and the normalization functions I added for chroma and pgvector are tested.
You want to take my chroma and pgvector normalization functions to your pull request and I will resolve the conflicts and match my PRs to the new code? Or the other way around when I merge my changes and the refactor will be done after?
Let me know.

default relevance_score_fn should be left unimplemented in base
I think this should be fine right? We let the vector store define whatever relevance score in _select_relevance_score_fn and we rely on that function in _similarity_search_with_relevance_scores
https://github.com/hwchase17/langchain/blob/fe0739b42e8030544d6c95618896fc6f118d9399/langchain/vectorstores/base.py#L184
or maybe I'm misunderstanding your point?

You want to take my chroma and pgvector normalization functions to your pull request and I will resolve the conflicts and match my PRs to the new code? Or the other way around when I merge my changes and the refactor will be done after? Let me know.

Either way works! I think maybe the easiest approach would be to merge your changes in to my PR since it is a bit of a superset of changes? Let me know if you want me to go ahead and merge the two PRs into mine

I like this suggestion, nevertheless, each vector DB returns a different formula, there might be vectorstore that will return the inner product already normalized or return (1.0 - max_inner product). It is a broad subject to resolve in one pull request so I think it is better to handle it in vector store level while keeping each vector store's normalization function as it was.
The centralized normalization functions solution can work if you are confident about it, and it might require adjusting the tests to match the new scores (if changed).
It is also a good thing the user can provide his own implementation in case we got it inaccurately.
About the pull requests, if it works for you then sure, you can merge them into yours!

I think it's good to provide some default functions because most of the implementations are standardized. The current implementation does not prevent users from specifying different relevance functions for specific vectorbases, for example one could directly pass the score through the _select_relevance_score_fn without normalizing it if the db has already done this. As of now all of the normalization functions work with the tests as is. We could potentially move the centralized functions into vectorstores/utils, but in either case because so many implementations rely on relatively standard functions, i think providing some default functions for the relevance functions helps a lot with code duplication.
I went ahead and merged your changes in to my PR (and handled conflicts)!

Merged into #6570.


Error in the softwareserial example

The softwareserial example fails to compile for Arduino UNO
softwareserial.ino:53: undefined reference to `LD2450::begin(SoftwareSerial&, bool)'

Hi, sorry for the late answer. currently the SoftwareSerial example isn't working, due to SoftwareSerial library speed baud rate limitations. It's possible to add a #define ENABLE_SOFTWARESERIAL_SUPPORT in the ld2450.h file to enable this feature. I tested several software serial / avr Arduino combinations with no success using software serial. can you specify your hardware platform ?

I am using ESP8266, it only has 2 Serial, one of them can only be RX(for some reason...)
So I tried to use Softwareserial, but I got an error:
main.cpp.o:(.text.setup+0xc): undefined reference to '_ZN6LD24505beginERN17EspSoftwareSerial9BasicUARTINS0_16GpioCapabilitiesEEEb'
But Hardwareserial works fine on ESP32, looking forward to fixing Softwareserial

Hi, sorry for the late answer. currently the SoftwareSerial example isn't working, due to SoftwareSerial library speed baud rate limitations. It's possible to add a #define ENABLE_SOFTWARESERIAL_SUPPORT in the ld2450.h file to enable this feature. I tested several software serial / avr Arduino combinations with no success using software serial. can you specify your hardware platform ?

Arduino UNO rev 3

Only RX is completely OK, no sensor configuration takes place via the TX lines, so you can the TX line from the sensor to it.

The Arduino UNO rev 3 and the current Software-Serial library is currently not capable to handle such baud rate speeds.


Prepare 2.0.2

Resolve a documentation bug (wrong example with selenium on front page documentation)

Codecov Report

Merging #71 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #71   +/-   ##
=======================================
  Coverage   93.26%   93.26%
=======================================
  Files           6        6
  Lines         282      282
=======================================
  Hits          263      263
  Misses         19       19

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 ba919f5...f9ceb49. Read the comment docs.


nft flask scheduler

I have made the suggested changes to the code
Will merge this PR and open another one to the main branch


How to test changes to the codebase?

Question
Hi, I wish to contribute to this project but I'm finding it difficult to test the included test apps against my local changes.
Right now it looks like test apps are correctly loading angular dependencies as externals.

And according to the importmap, the dependencies are fetched from the cdn.

What is the correct approach to load the local library instead (under /lib)?

@arturovt could you please point me in the right direction?

I don't remember exactly, as far as I recall I used to serve it locally through the root app Webpack's config...

@arturovt thank you for your answer. Are you able to elaborate a little bit more on that? Did you use something like rollup to build systemjs modules and then maybe http-server to serve them locally, and changed the root app importmap to point to the locally served modules?


Drop MSRV down to 1.56

Currently, my project is pulling in a duplicate version of this library as darling is pulling 0.10, my attempt to fix this was stopped by the MSRV of 0.11 being raised higher than darling, and since this is a literal one line fix (+ CI) I would love if this got pulled in.

Thanks for the contribution. I think I only changed this at some point since clippy recommended it to me and I didn't know enough about rust to understand the implications. I will make a quick 11.1 with the change tomorrow.


Can we get the new API implemented from keyphact/pgoapi

Expected Behavior
Actual Behavior
Steps to Reproduce
Other Information
OS:
Git Commit: (run 'git log -n 1 --pretty=format:"%H"' and paste it here)
Python Version: (run 'python -V' and paste it here)

I would imagine it's incoming based off the main core of coders here overlaps a little bit with those who worked tirelessly to break open the API. Amazing job too, I can't imagine the countless hours spent on it

No we can't...
come one man... just be patient.

@Ph4i1ur3 It was exhausting just watching them work. trying amazing work no doubt. Sorry if i came off as impatient. That wasn't the intent of this post, it was just about informing it has been released and also asking if it was feasible with without rewriting the entire thing.

There is a branch open where this is actively being worked on.
Don't nag them about doing the thing they are currently doing.
https://github.com/PokemonGoF/PokemonGo-Bot/commits/upgrade_to_the_new_api

@my2ndLanguage can you close this now please?


mem-ruby: Fix issues in protocols due to multi-RubySystem

Starting with https://github.com/gem5/gem5/pull/1453 , some Ruby structures require a block size be set
and other require a pointer to the Ruby system. This fixes some cases
which were not covered by the per-checkin tests but seen in daily+
tests. In particular:

WriteMasks and PerfectCacheMemory must explicitly set a block size.
NetDest and RubyProxyPort require RubySystem pointer.
Classes inheriting Message now have a setRubySystem collecting all
objects that need a RubySystem pointer and this should be called in
the constructor of the Message.

This commit makes sure all of these happen. This should fix daily
arm_boot_tests and daily learning_gem5 tests.

Thanks @abmerop !

FYI, @giactra

Thanks @powerjg for the tag


Networking Issues with Immersive Portals

Describe the bug
Walking though a portal causes player on a Server to not being able to run commands and sometimes kick them out of the server
Steps to reproduce

Create a Server
Open a Nether Portal
Run a Command (which should work just fine)
Walk though the portal
Run the Command again (which does nothing at all)
Kill a mob and the Server will kick you with an "internal server error"

Logs
Not sure but i think those messages are related: https://mclo.gs/QRU1SP1
Additional context
As far as i know this only happends on Servers

Your log also mentions mods like bloodmagic or clumps. Have you tried reproducing this issue with only immersive portals installed?

Closing as stale / cannot reproduce.
If you can provide the necessary logs and information to reproduce the problem or identify the faulty mod, please open a new issue with all necessary details.


What Permissions is needed for Get-TeamChannel

What Role is needet to run Get-TeamChannel
Teams Admin Roles
https://docs.microsoft.com/en-us/microsoftteams/using-admin-roles
PS C:> Get-TeamChannel -GroupId 30dae3d8-97bf-430b-8be6-7867a6a079b3
Get-TeamChannel : Error occurred while executing
Code: NotFound
Message: Failed to execute Skype backend request GetThreadS2SRequest.
InnerError:
RequestId: 24f81e6c-fb62-4aba-8148-f94a604cbbdc
DateTimeStamp: 2021-03-15T15:28:44
HttpStatusCode: NotFound
In Zeile:1 Zeichen:1

Get-TeamChannel -GroupId 30dae3d8-97bf-430b-8be6-7867a6a079b3

  + CategoryInfo          : NotSpecified: (:) [Get-TeamChannel], ApiException
  + FullyQualifiedErrorId : Microsoft.TeamsCmdlets.PowerShell.Custom.ErrorHandling.ApiException,Microsoft.TeamsCmdlets.PowerShell.Custom.GetTeamChannel

Example above with "Teams Communications Administrator"

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

ID: a290dbfc-3b69-2be6-a4b7-71f3f03bd004
Version Independent ID: 36d9cfe0-cf60-2fa1-41b4-6c6971042394
Content: Get-TeamChannel (MicrosoftTeamsPowerShell)
Content Source: teams/teams-ps/teams/Get-TeamChannel.md
Service: teams-powershell
GitHub Login: @SerdarSoysal
Microsoft Alias: serdars

Hello @BohrenAn
How are you? Hope you are doing good.
I tested this in my lab, I was able to run successfully the Get-TeamChannel cmdlet using a "Teams Communications Administrator". Please be sure to be running the most up-to-date General Availability version of the Teams PowerShell module (2.0.0).
Hope this information helps you,

@get-itips Thank you very much for the contribution and sharing this explanation. @BohrenAn Hope this comment is helpful for you. If you see a documentation update is required, please feel free to open an issue for the same. We proceed here to close it. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


UI - Fixes incorrect switching between pages on Port Forwarding & Load Balancing

Description
Fixes https://github.com/apache/cloudstack/issues/5600

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[x] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[x] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[ ] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?

@blueorangutan ui


License

Cannot find a mention of license anywhere.  Without that stipulation, standard copyright rules apply (minus GitHub Terms of Agreement).  That being said, is this work open source(MIT, GNU Lesser), open source limited(GNU General), or do users need specific permission to use the code?

@syrenswyrd , I added License.md. It's an open source project. Thanks.


[MS connector] Handle spreadsheets for table selection

Add spreadsheet selection in table picker

AFAICT This is about being able to use microsoft-synced tables when making table queries


Feature request: add --quiet flag

I wanted to pipe the output from crabz to another program, and noticed it always adds a header to the output.
It would be nice for crabz to detect if it's not running interactively, or at least have the --quiet flag.

This would be nice! PRs very welcome, I'm not sure I'll be adding that myself anytime soon.

See v0.9.0


UI Hover Feedback disappears on hot reload

This only seems to happen in preview and with relatively large scenes for some reason, or scenes that have something particular in them, haven't found the pattern
If I run this scene once, it sometimes loads fine. If I point at things I see feedback.

Change something in the source code for hot reload to kick in, and the feedback is gone.  Same item, same distance, same everything.
If I click the entity, it will execute its click behavior correctly, I just don't have the hover feedback.  If I reload the browser manually, it often gets fixed.

With this scene, I see it happen 100% of the time with all clickable entities.
https://github.com/decentraland-scenes/Xmas_Plaza
Check the standalone branch of this repo for the most updated version.
(ask me (Nico E) for access if you can't open)
I'm using a Mac & Chrome when I see this happen.

Update:
I tested this recently and the problem persists in the Xmas plaza scene, in fact it's worse.
I used to see it fine on the first run, I needed to do a hot-reload to break it.  Now the hover feedback is never shown, not even the first time I run the scene.


Can jsonschema support include the new contentMediaType field?

Output of helm version:
version.BuildInfo{Version:"v3.8.0", GitCommit:"d14138609b01886f544b2025f5000351c9eb092e", GitTreeState:"clean", GoVersion:"go1.17.6"}
Draft 7 supports neat new fields for validating string properties: https://json-schema.org/understanding-json-schema/reference/non_json_data.html#contentschema
Helm 3 uses draft 7 but in my testing contentMediaType was ignored.
I tried adding this property:
                        "myprop": {
                            "type": "string",
                            "contentMediaType": "application/json",
                            "default": ""
                        },

set the myprop param to "not valid json" and ran helm lint. It passed while it should have failed.
I'm hoping supporting this is as easy as bumping up the jsonschema package helm uses? Maybe that package doesn't yet support this, but seems like it was released several years ago so hopefully it does.

gojsonschema has not seen any activity since October 2020. It is likely out of date and unlikely to receive any fixes or changes.
we discussed replacing it with something that is more well maintained in https://github.com/helm/helm/issues/10732, but I haven’t seen anyone pick up the work.


with chat, push, and changepassword

with chat, push, and changepassword

with chat, push, and changepassword


Config as a class attribute of class bot

I think it would be better to have the configuration as a class attribute instead of a global singleton. Then, for an example, you could connect the bot to multiple servers that have different configurations. But the decorators can't have cogs attributes, so as an example you cant rewrite this  to
@checks.is_in_channels(self.bot.config.channel_ids.play_request)

, see stackoverflow.
The solution given there doesn't work also because, if I'm right, the checks function can only have one argument, see discord.py
You could rewrite checks.is_in_channels (see here) like this
def is_in_channels(*channel_ids_atr):
    async def predicate(ctx: commands.context):
        channel_ids = [getattr(ctx.cog.config.channel_ids, channel_id_atr) for channel_id_atr in channel_ids_atr]
        channel_ids.append(CONFIG.channel_ids.bot)
        return utility.is_in_channels(ctx.message, channel_ids)
    return commands.check(predicate)

but then channel_ids_atr has to be a tuple of strings, which wouldn't be nice too.

I used the global singleton because it would be easier to share it between modules because you dont have to reinstantiate it or worry that someone accidentally does. But I learned now that you can just create an instance of the normal class and then only import that so it should be fine if we use a normal class. But still I think the reason why its a Singleton is valid. Not sure if we have to change that.
If you would run the bot on multiple servers wouldnt you just have different instances of the code running instead of managing it in code? Does that even work?
For the problem:
The checks function from discord.py is not the checks function we use directly. We have a module checks.py. Here we return the checks function from discord.py but we call the is_in_channels function from our checks.py. We can definetly use more than one parameter on checks.py functions.
But i dont think we need to, do we?
def is_in_channels(channel_names):
    async def predicate(ctx):
        channel_names.append(consts.CHANNEL_BOT)
        return utility.is_in_channels(ctx.message, channel_names)
    return commands.check(predicate)

So this:
@checks.is_in_channels(self.bot.config.channel_ids.play_request)

Should just work, it got a list of channels before and now it gets a list of channel ids i guess?

Closed in 55e6c14af0a6037ff911c7709cb991a18c07602e


Add rating detail

We show a detail card to display more data about the salary/rating entry, generally a comment about the user experience in the company.
Please refer to the figma design this is only an indication

This issue has been done.

This issue has been resolved here #41


ship google-ril.jar

needs to be tested

this change seems to fix the com.android.qns crash but not the Wifi Calling itself


Avoid NPE in owner change check

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


Set default profile photos to googly eye animals

I did some investigating with this. Based simply off the image URL there seems to be no recognisable pattern to see if a user is using a default profile picture. I found this URLs by clicking "Copy Image URL".
Here are two image URLs of Blue (exact same colour) Slack profile pictures. They are for different users.
https://ca.slack-edge.com/T0266FRGM-UQ46QH94Z-gc24d346e359-512
https://ca.slack-edge.com/T0266FRGM-U2Q173U05-g863c2a865d7-512
The pattern seems to be WORKSPACEID-USERID-RANDOMSTRING. Not really helpful?
Just for comparison here is Vera's profile URL: https://ca.slack-edge.com/T0266FRGM-U015B2729C3-dd1f13364d81-512
Same pattern... smh
Here are a few more random ones:
https://ca.slack-edge.com/T0266FRGM-U012KR73UAJ-g0713c52bec8-512
https://ca.slack-edge.com/T0266FRGM-U011PLSSMA9-g7e8a6705c42-512
https://ca.slack-edge.com/T0266FRGM-U015ZPLDZKQ-gf3696467c28-512
Same pattern as Vera's.
 But no Google search results could tell me.
Buttt... maybe you could use Tensorflow.js to identify default profile pictures or some image manipulation but that might be a bit overkill.
To end, I love the idea though :)

Wait except... they all start with g now I thought I had a break here but no... https://ca.slack-edge.com/T0266FRGM-UMM5KPALE-gffd01ed0a1b-512 here's an example of a profile image starting with a G that is custom :(

It's not documented, but Slack's users.info API method has a field called is_custom_image referring to avatars. So we can just use that

Check it out

Matthew and the undocumented slack api to my my "detective" work:


How to delete a directory in a short time if this directory has many files?

lfs_remove  : If removing a directory, the directory must be empty.
if directory is empty, i will not delete it
if i want to delete it, it must has many files.

Your mileage may vary, but see #557, and the following comment within: https://github.com/littlefs-project/littlefs/pull/557#issuecomment-1098735470 regarding if this will eventually make it in.
The PR permits a whole folder to be removed in one go.


Track expense - Created track expense but can't get data from other devices

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

Version Number: v1.4.60-1
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Issue reported by: applause-Internal team
Action Performed:
Pre-condition: Two devices log in same account

Open the app on 2 devices
At app (MacOS App), create Track expense
On the web (Chrome), access to self-conversation

Expected Result:
Created track expense but got data from other devices
Actual Result:
Created track expense but can't get data from other devices
Workaround:
Unknown
Platforms:

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

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/a513ad5a-62ca-437f-bd6e-01fcb26bb834

View all open jobs on GitHub

We think this issue might be related to the #vip-vsb.

Looks like a pusher issue

Okay moving to Internal looks like it might be a Hot Pick then

Hey @ishpaul777 we'll still need a C+ for review even though it's an Internal issue, it just won't be open to proposals from external contributors. You're still able to help w/ review though. :)

I am unable to reproduce this using two browsers, 1 in incognito. I also tried with 1 browser and 1 desktop and couldn't reproduce. The data shows up fine in both clients.


Version 3.8.1 fully is not available on pypi

Description is available (with broken Markdown - pypi doesn't supporting Markdown).
Download package is not available.
Latest available download package is 3.5

Thanks for reporting the documentation issue, we'll improve that in the future.
3.8.1 is now fully available, try pip install hellosign-python-sdk==3.8.1.