feat(iota-genesis-builder): Add configurable delegator to genesis CLI

Description of change
To make the genesis delegator(s) configurable by the cli, we need to make changes to two iota commands:

iota genesis
iota genesis-ceremony

This draft-PR contains the progress of this task, in which the changes to both commands have been made to allow for a custom delegation configuration through the CLI. The iota-genesis command expects a single delegator when a migration snapshot has been provided. The iota genesis-ceremony now contains a new sub command called init-delegations and expects a path to a .csv file as argument, which contains the custom delegation configuration. The command is expected to be run before the build-unsigned-checkpoint command.
This csv file has the following format:
delegator,validator,amount-nanos-to-stake,amount-nanos-to-pay-gas
<delegator1-address>,<validator-1-address>,2000000000000000,5000000000
<delegator1-address>,<validator-2-address>,3000000000000000,5000000000
<delegator2-address>,<validator-3-address>,4500000000000000,5000000000

Links to any relevant issues
fixes #4218
Type of change
Choose a type of change, and delete any options that are not relevant.

Enhancement (a non-breaking change which adds functionality)

How the change has been tested
Tested the local genesis:

cargo run --release --bin iota genesis --working-dir ./test_iota_config -f --with-faucet --num-validators 2 --remote-migration-snapshots https://stardust-objects.s3.eu-central-1.amazonaws.com/iota/alphanet/test/stardust_object_snapshot.bin.gz --delegator 0x4f72f788cdf4bb478cf9809e878e6163d5b351c82c11f1ea28750430752e7892
cargo run --release --bin iota start --network.config test_iota_config --with-faucet

Tested the following affected example:

cargo run --example snapshot_only_test_outputs --features="test-outputs" iota --snapshot-path ../latest-full_snapshot.bin --delegator 0x4f72f788cdf4bb478cf9809e878e6163d5b351c82c11f1ea28750430752e7892

Tested running the genesis ceremony, which resulted in a genesis.blob and migration.blob, which were then used to run a local network with iota start. Using the explorer on this local network showed the correct delegations.
todo: the validate-state command of the genesis ceremony is broken when used with a migrated state. This step was therefore skipped in the tests mentioned above.
Change checklist
Tick the boxes that are relevant to your changes, and delete any items that are not.

[ ] I have followed the contribution guidelines for 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
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have checked that new and existing unit tests pass locally with my changes

Pushed some minor changes, feel free to revert if you don't like them

Pushed some minor changes, feel free to revert if you don't like them

Thank you for the changes! I reverted back one part: the serialization of ValidatorAllocation in to_csv(), due to serialization of maps not being supported in the csv crate. This forced me to write it out like this.

Pushed some minor changes, feel free to revert if you don't like them

Thank you for the changes! I reverted back one part: the serialization of ValidatorAllocation in to_csv(), due to serialization of maps not being supported in the csv crate. This forced me to write it out like this.

I'm confused. I was serializing a struct which should be supported according to their docs.

Pushed some minor changes, feel free to revert if you don't like them

Thank you for the changes! I reverted back one part: the serialization of ValidatorAllocation in to_csv(), due to serialization of maps not being supported in the csv crate. This forced me to write it out like this.

I'm confused. I was serializing a struct which should be supported according to their docs.

Pushed some minor changes, feel free to revert if you don't like them

Thank you for the changes! I reverted back one part: the serialization of ValidatorAllocation in to_csv(), due to serialization of maps not being supported in the csv crate. This forced me to write it out like this.

I'm confused. I was serializing a struct which should be supported according to their docs.

As discussed on Slack:

Due to the flatten attribute, the rust crate fails to serialize the struct. This is apparently a known bug: https://github.com/BurntSushi/rust-csv/issues/188
Agreed to leave as is.


How to Handle error "No StateMachineInput found with name"

I attempted to change the state using the following code:
riveFile?.fireState("GirlState", "input")
In my scenario, inputs are received from the server side. However, some of these state inputs are not present in the Rive file. As a result, a crash occurs with the following error:
app.rive.runtime.kotlin.core.errors.StateMachineInputException: No StateMachineInput found with name input
How can I handle this situation.

Hi @harisAsterbyte, here are a couple of potential solutions:

Simply catch the exception when you're making the API call
Alternatively, you can query the inputs via girlStateMachine.inputNames() and skip an specific input when that state machine doesn't have it

@umberto-sonnino looking for second solution.
can you give me the detail solution based on this code riveFile?.fireState("GirlState", "input")

@umberto-sonnino looking for second solution. can you give me the detail solution based on this code riveFile?.fireState("GirlState", "input")

I don't know much about your setup, but you can take a look at our tests to see how to grab the right references and adapt them to your use case!


Update turn-on-or-off-offline-messages-for-admins.md

Added Notes
Replaced SkypeOnlineConnector with MicrosoftTeams

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

@JohanFreelancer9 , i am still reviewing these pull request and that why these are still in draft.

@pupara I thought so, thank you. I'll do a final copy review when you're done.

@tonysmit PR has been copyedited and is ready for final review, could you please check and merge? Thanks!


[CHALLENGE SUBMISSION] :PowerShell functions and CosmosDB

Please provide the following information for your submission:
What is your name? (First, Last)
Barbara Forbes
Where is your GitHub Repo ?(Link to your challenge solution)
https://github.com/Ba4bes/SeasonsOfServerless/tree/main/C06-The_Magic_Chocolate_Box
What Challenge is this for? (Challenge number between 1 and 7)
6
(Optional) Anything else we should know? e.g., language used, location, blog post, tell us how you solved this solution, including any challenges you faced solving it.

(all info and screenshots of the results can be found in the Readme!)

Unfortunately, no support for durable entities and PowerShell ☹. So I made it all work with a CosmosDB 😄.
The chocolates are stored in a database. The function gives the following functionality:
Add chocolate to the database
$Body = @{
    Name          = "Cookie bonbon"
    ChocolateType = "white"
    Filling       = "cookie crumble"
    ClaimedBy     = "false"
}
Invoke-RestMethod https://4besc06.azurewebsites.net/api/Add-Chocolate -body ($Body | ConvertTo-Json)

Get available chocolate
Invoke-RestMethod https://4besc06.azurewebsites.net/api/Get-UnclaimedChocolate

Claim a piece of chocolate
$Body = @{
    "MyName" = "Barbara"
    "ChocName" = "pure coconut"
}

Invoke-RestMethod https://4besc06.azurewebsites.net/api/Claim-Chocolate -body ($Body | ConvertTo-Json)

(this is also where you can get the ascii art/text art!)

source for ascii art
Get the results
All unclaimed chocolate will be distributed randomly
$Family = @(
    "Bit"
    "Fred"
    "Barbara"
)

Invoke-RestMethod https://4besc06.azurewebsites.net/api/Get-Chocdistribution -body ($Body | ConvertTo-Json)

Love this!! thank you for this submission!

Love this!! thank you for this submission!


Improved blending of main and pin contents

Implemented https://github.com/StarcounterApps/Website/issues/97. Also I guess it can be related to https://github.com/StarcounterApps/Website/pull/155.
Currently it is a POC. The goal is ridding of HTML files in WebsiteProvider and improving blending of main response and pinning content.
I don't fully understand what some pieces of code is doing and I'd appreciate if @warpech explain me the following:

https://github.com/StarcounterApps/Website/blob/develop/src/WebsiteProvider/Api/ContentHandlers.cs#L170 - what exactly this code checks:

sectionJson.MainContent.LastJson != json

What is the reason to have LastJson

https://github.com/StarcounterApps/Website/blob/develop/src/WebsiteProvider/Api/ContentHandlers.cs#L162 - what is the case for this code:

json is SurfacePage

The problem with these pieces of code that with my changes I will have to replace content.Sections[section.Name] value with another Json instance but in this case the app is not working correclty. I tried to do it differently but without success. So currently I just commented it.

json is SurfacePage

I don't remember the reason for it. I have added it in this commit, by refactoring what was previously this line. My best guess is that it is just an artifact from the times when WebsiteEditor and WebsiteProvider were one app.
I put a breakpoint in it and ran all the tests and it is never hit.

sectionJson.MainContent.LastJson != json

This line is not insignificant. But as it turns out, there is no test for the differences.
Remembering the lastJson allows to reuse the previous MainContent instead of rewriting it. Because of this we get smaller patches. Sadly, this seems to be the only benefit. And the patch difference is smaller than I would expect. I guess it should be improved or removed.
How to reproduce the difference
Consider clicking on "Blending points" when being in http://localhost:8080/WebsiteEditor/surface/NW/catchingrules

The patch with /*sectionJson.MainContent.LastJson = json*/: https://gist.github.com/warpech/d6418347958eb3cbff5af607c6661e53
The patch with sectionJson.MainContent.LastJson = json: https://gist.github.com/warpech/70395a8abfffcdc71bcc572bd56fc308

Use a JSON comparison tool to find the difference: http://www.jsondiff.com/
I hope this helps to get your head around it.

First of all, it is amazing initiative to simplify this code!
Sadly, I've found some problem:
Steps to reproduce

Start WebsiteEditor, WebsiteProvider (this PR branch)
Go to http://localhost:8080/websiteeditor/resetdata to reset WebsiteEditor data.
Start SignIn, People, Images (develop branch)
Go to http://localhost:8080/WebsiteEditor/surfacegroups
Go to DefaultSurface > BlendingPoints
Move the pinning rule /signin/signinuser from TopBar to Main
Save
Go to http://localhost:8080/people/persons
Create some person or click on "admin"
Change the URL from http://localhost:8080/people/partials/persons/<id> to http://localhost:8080/people/persons/<id> and load that page

Expected
A page should load that has 3 apps in the main area (People, Images, SignIn)
Actual
The page only has People and SignIn. Images looks as unmapped.
Screenshot

json is SurfacePage

So I removed this code.
Thanks for the explanation @warpech and for the found bug.
I was sure that there are some bugs/issues still :smile:. I will investigate later what I can do with code related to LastJson.

@alemoi is there any way to blend already blended JSON instance in this way:
var newJson = Self.GET<Json>(uri, () => externalJson);

Here externalJson is a JSON handled by WebsiteProvider (this JSON in our case is a People app response blended with an Image app response). In the presented code uri is mapped with other URIs. The code works well if calling uri returns null or externalJson is not blended (has no siblings). Otherwise it seems like Blender misses siblings from externalJson.
If it is not possible to "reblend" JSONs, maybe we could add such feature?

Here externalJson is a JSON handled by WebsiteProvider (this JSON in our case is a People app response blended with an Image app response). In the presented code uri is mapped with other URIs. The code works well if calling uri returns null or externalJson is not blended (has no siblings). Otherwise it seems like Blender misses siblings from externalJson.

It could be a problem with JSON response merger. If you can give me the exact case to repro, I will check it :)

Sure, we have it - Website app, improve-blending-wp branch, this case https://github.com/StarcounterApps/Website/pull/161#issuecomment-320306104.
You can debug at this line ContentHandlers.cs#L170

When I follow your reproduction steps, right when I call http://localhost:8080/websiteeditor/resetdata I get the following exception:
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at WebsiteProvider.Api.PinningHandlers.UnmapPinningRule(PinningRuleMappingInfo info, Nullable`1 certainMapId) in c:\github\Website\src\WebsiteProvider\Api\PinningHandlers.cs:line 240
   at WebsiteProvider.Api.PinningHandlers.UnmapSurface(UInt64 templateId) in c:\github\Website\src\WebsiteProvider\Api\PinningHandlers.cs:line 212
   at WebsiteProvider.Api.CommitHooks.<Register>b__4_4(Object s, UInt64 id) in c:\github\Website\src\WebsiteProvider\Api\CommitHooks.cs:line 40
   at Starcounter.RuntimeInstalledHookDelegate`1.Invoke(Object triggeringObject) in C:\github\level1\src\Starcounter\Hooks\RuntimeInstalledHookDelegate.cs:line 37
   at Starcounter.InvokableHook.InvokeAllWithKey(HookKey key, Object instance) in C:\github\level1\src\Starcounter\Hooks\InvokableHook.cs:line 73
   at Starcounter.InvokableHook.InvokeDelete(HookKey key, UInt64 objectID) in C:\github\level1\src\Starcounter\Hooks\InvokableHook.cs:line 61
   at Starcounter.Internal.TransactionManager.InvokeHooks() in C:\github\level1\src\Starcounter\TransactionManager.cs:line 812
   at Starcounter.Internal.TransactionManager.Commit(UInt64 handle, Int32 free) in C:\github\level1\src\Starcounter\TransactionManager.cs:line 704
   at Starcounter.Db.TransactAsync(Action action, UInt32 flags, TransactOptions opts) in C:\github\level1\src\Starcounter\Db.cs:line 363
   at Starcounter.Db.Transact(Action action, UInt32 flags, TransactOptions opts) in C:\github\level1\src\Starcounter\Db.cs:line 467
   at Starcounter.Db.Transact(Action action, Int32 maxRetries) in C:\github\level1\src\Starcounter\Db.cs:line 265
   at WebsiteEditor.Helpers.DataHelper.ClearData() in c:\github\Website\src\WebsiteEditor\Helpers\DataHelper.cs:line 10
   at WebsiteEditor.Api.MainHandlers.<>c.<Register>b__0_2() in c:\github\Website\src\WebsiteEditor\Api\MainHandlers.cs:line 38
   at Starcounter.Rest.UserHandlerInfo.RunUserDelegate(Request req, IntPtr methodSpaceUriSpaceOnStack, IntPtr parametersInfoOnStack) in C:\github\level1\src\Starcounter.Rest\UriHandlersManager.cs:line 231
   at Starcounter.Internal.Web.AppRestServer.RunDelegateAndProcessResponse(IntPtr methodSpaceUriSpaceOnStack, IntPtr parametersInfoOnStack, Request req) in C:\github\level1\src\Starcounter.Apps.JsonPatch\AppRestServer.cs:line 96
   at Starcounter.Internal.AppsBootstrapper.ProcessExternalRequest(Request req) in C:\github\level1\src\Starcounter.Apps.JsonPatch\AppsBootstrapper.cs:line 773
HResult=-2146232969

More information about this error may be available in the server error log.

@alemoi what SC version do you use? It should be <IP_ADDRESS>86. If you use the same version, could you please try again on clean DB?

@un-tone yesterday I pushed it to Starcounter 2.3 and develop so its going to be there. I will try with a fresh db.

@alemoi do you have any updates?

Will check this one today. Didn't have time before, sorry.

@un-tone as promised (though not same day :D) but I tried to repro exactly as written in https://github.com/StarcounterApps/Website/pull/161#issuecomment-320306104
with LATEST 2.3 and all worked fine (both URIs showed all 3 apps presence). So I think I might have fixed this one automatically with this: https://github.com/StarcounterApps/Website/issues/154
@un-tone can you please try it with latest v2.3? Thanks a lot!

It seems that the issue is not fixed. It works in the same way in the latest <IP_ADDRESS>81 SC version.
This is how it looks with http://localhost:8080/people/persons/id URL

And this is with http://localhost:8080/people/partials/persons/id URL

@un-tone thanks for providing more info. I checked the code and its not related to Blender, as I see. Its rather a RunResponseFilters that does not properly work out with existing response with siblings. I am not really familiar with the code, so will have to ask @chrhol tomorrow for some help.

@warpech thanks for the reproduction description scenario. The last step seems a bit wrong though, the URIs are the opposite that are working and non-working. Please add Admin user creation step in SignIn next time :) Thanks :)

After debugging with @chrhol he has promised to check the problems there. Its related to how siblings are merged together (Images sibling gets removed by some reason).

Just corrected the reproduction scenario: https://github.com/StarcounterApps/Website/pull/161#issuecomment-320306104

Sorry for the delay in getting into issue.
I think the following is something we really need to discuss, and that is the current problem:

@alemoi is there any way to blend already blended JSON instance in this way:
var newJson = Self.GET<Json>(uri, () => externalJson);

Doing another round of blending and using an already blended viewmodel currently behaves in an undefined way, and I'm not really sure how the logic behind it should look. What should the outcome be?
Sometimes everything should be combined and sometimes some partial viewmodels should be removed. The problem is that there is no good way of knowing this.
What is the reason for doing it in this way? To allow more than one response for a website-section? Then maybe we should have some manual way to combine two different blending results (kind of like .MergeJson(...) but more explicit).
@tomalec: I think we should bring this up on the next blending tf meeting and find some good patterns and what should be allowed or not.

Currently I partially addressed the issue with already blended JSON by wrapping it with another JSON.
FYI:
Self.GET<Json>(uri, () => section.Default
    ? (json.Parent ?? new ContentWrapperPage {Content = json})
    : new Json());

If not to check json.Parent I get the following error: System.Exception: Cannot change parent of objects in Typed JSON trees

@PatrykSzwer please review this PR. FMPOV it is ready to be merged.

What is the reason for doing it in this way?

Using this way I will get rid of wrapping JSON main content in the WebsiteProvider. We assume that this app should not contain any HTML files except templates. But now I think it is not so important at this stage.

Then maybe we should have some manual way to combine two different blending results (kind of like .MergeJson(...) but more explicit).

Yeah, such feature would be very useful.

Thanks @PatrykSzwer

The implementation is changed here #205


Refactor metric and dimension selectors

Description

Change checkboxes to '+' and '-' icons.
Change box titles and summary element style.
Change filter icons.
More Denali stying (search box).
If enableRequestPreview feature flag is turned on:

Users can add base metric and dimension more than once.
Chosen metrics and dimensions have highlighted background.
Will add more acceptance tests for this case when "request preview" component is integrated.

Proposed Changes

Change addDimension and addMetric in bard-request/request.js to allow duplicates.
Dedup in adapters/bard-facts.js
Component and styling changes.

Screenshots
Before:

After:
enableRequestPreview off:

enableRequestPreview on:

License
I confirm that this contribution is made under an MIT license and that I have the authority necessary to make this contribution on behalf of its copyright owner.

We may want to wait on the filter icon to be ready. There are some dead spots between the filter lines in this PR.

@jkusa ok I'll revert to the old icon, also noticed some margin issues for parameterized metrics

Just noticed the

Click the icon  __ next to a dimension/metric to add a filter

uses a different icon

@kevinhinterlong ha good catch, anyway I reverted to the old filter icon

updated screenshot


envoy: Add host identity (nphds) gRPC client

Adding the gRPC client for NPHDS makes the destination identity available for
L3-dependent egress policy enforcement.
Refactor gRPC subscription code to share it for host IP - security ID mapping.
We never supported using more than one "xdsCluster", hard code it so
that we don't need to keep configuring it from all filter instances.
Change "bpf_root" default to an empty string, and do not use bfp if
"bpf_root" is not configured.
Do not try to remove proxymap entries if we don't know the proxy_port
(zero proxy_port implies no bpf).
NOTE: Ian's xds cache fix (#3403) is cherry-picked here to be able to test this in CI.

test-me-please

test-me-please


session_start(); Cannot send session cookie

Got these two errors, but I don't know if it's caused by SteamAuthentication Itself:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/corrupts/public_html/index.php:35) in /home/corrupts/public_html/steamauth/steamauth.php on line 3
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/corrupts/public_html/index.php:35) in /home/corrupts/public_html/steamauth/steamauth.php on line 3

When I try to click login.

Warning: Cannot modify header information - headers already sent by (output started at /home/corrupts/public_html/index.php:35) in /home/corrupts/public_html/steamauth/steamauth.php on line 25

could you provide some information about your setup ?

self managed server or web hosting ?
apache / php version (32/64 bits ?)

got the same error and I think it might comes from the hoster because with the same files I've got no any problems on my personal server.

The error messages are quite clear about what's going wrong: You're already outputting text before the library is included. This happens in your personal index.php that has nothing to do with this library.
You can probably fix that by moving the library import to the top of the file.

so why is it working with the sames files on my personal host ?
and the require is already at the top of the file :/

There are different reporting levels in PHP. You can set them using error_reporting() (http://php.net/manual/en/function.error-reporting.php).
Your local development server might have warnings disabled and your host hopefully enabled.

yup, my bad, I modified some code while viewing it...
it was that 👍
since it should be the same thing for @Mobles i think u can mark this as solved

I solved it ages ago :)
Using it for this: corruptservers.co.uk

Please close this issue report then.


feat: get c token from borrowed asset

PR-Codex overview
This PR adds a new function getCTokenFromBorrowedAsset to the SDK.
Detailed summary

Added getCTokenFromBorrowedAsset function to sdk/src/reads/getCTokenFromBorrowedAsset.ts
Imported ICompoundDebtPositionLib from ../../../abis/src/abis/ICompoundDebtPositionLib.js
Imported ReadContractParameters and readContractParameters from ../utils/viem.js
Imported Address and PublicClient from "viem"
Added function parameters client and args to getCTokenFromBorrowedAsset function
Implemented logic to read contract using client.readContract
Set ABI to ICompoundDebtPositionLib and functionName to "getCTokenFromBorrowedAsset"
Passed args.externalPositionProxy as the address and args.borrowesAsset as the argument to the function call

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

https://app.shortcut.com/avantgardefinance/story/7658/c-token-from-borrowed-asset


Roster Edit Page Rework

Details

The roster edit page must be updated to support modular data values being added and removed from user objects.
Must support the components added in #307

Not viable.


docs(thumbnail): fix example positioning

Short description of what this resolves:
Add padding to the thumbnail example
Changes proposed in this pull request:

Add padding
Ionic Version: 1.x / 2.x / 3.x / 4.x
4

Thanks for the PR! Adding the padding directly to the ion-thumbnail makes it appear smaller, which I think would be confusing since users may think that is the default. While we appreciate this PR, I am not going to merge it as I think the preview test needs to be completely re-evaluated, or at the minimum the padding to align it with the other examples would be on a parent wrapper. 🙂


feat(): Added functionality to profile page

Modified left side column show different states when there are no profile image, email, url, and/or bio values.
Clicking on empty profile image, email, url or bio takes user to edit profile page and sets focus on associated input element.
Modified spaces tab to show a list of 10 spaces with an infinite scroll to fetch more.
Modified work items to show a list of 10 recently assigned work items.
Modified activity tab to show a list of 10 recent (dummy) activities.
Added an empty state for activity, spaces, and work tabs.
Added feature to allow user to delete space from list per Catherine's request.
User can add space from empty state.
Layout and features are based on latest mockup from @jryhanyc:
https://redhat.invisionapp.com/share/KQB6LEHM8#/screens/227580206
Reviewed with @catrobson
Notes:

Some functionality depends on https://github.com/fabric8io/fabric8-ui/pull/1263. For example, clicking on links for "Add email", "Add bio", etc.

The total number of spaces is not shown in the spaces tab (per mockups) because the spaces list is an infinite scroll -- the API does not provide a total number of spaces.

Activities are not currently supported by the APIs -- screenshot shows dummy data. However, WorkItems, WorkItemLinks and Comments have history stored in the backend. Will hook this up when it becomes available.

Activity Tab:

No activity:

Spaces Tab:

No spaces:

Work Items Tab:

No work items:

@dlabrecq snapshot fabric8-ui is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-1291-fabric8-ui.int.rdu2c.fabric8.io

@jryhanyc and @dlabrecq - Few follow-up items for improvement:

Should we use full name instead of username for the headers?
Need a pagination mechanism for spaces
Need to discuss options for profile images.  Can we support image storage to upload one?  The linking process feels unexpected.

For the Spaces tab, I ended up using an infinite scroll feature. This is the same approach used elsewhere in the UI (e.g., for the planner tree list and "View all spaces" page).
The way this works here is 20 rows are fetched initially, but only 10 are visible. As the user scrolls, more rows are fetched as needed.
Regarding the full name Vs username; we're guaranteed to have a username, while the full name is optional. We might consider using different text like "My spaces" Vs "Dan Labrecque's spaces"?

@dlabrecq snapshot fabric8-ui is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-1291-fabric8-ui.int.rdu2c.fabric8.io

@dlabrecq snapshot fabric8-ui is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-1291-fabric8-ui.int.rdu2c.fabric8.io

@dlabrecq snapshot fabric8-ui is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-1291-fabric8-ui.int.rdu2c.fabric8.io


Tamagui Dialog doesn't work as expected

<Dialog open={false>
<Dialog.title>
Show
</Dialog.title>
</Dialog>

Shows the Dialog as default and cannot be changed. Any help?
I use Tamagui version 17.79.19
With expo

Need repro sorry


Astropy units compatibility / conversion?

Since Astropy has a unit systems different from the one in AMUSE while it's quite plausible both packages are used in the same project, it seems practical to make sure these unit systems are in some way compatible.
The implementations are somewhat different (e.g. Astropy uses the multiplication operator '*' to assign units, where Amuse uses '|', among others), but not completely.
I think it would be useful to check:

if we use the same definition of units (we really should)
if we can make an easy conversion module ('astropy_to_amuse' and VV) to replace one unit type with the other for better compatibility
if it would make any sense at all to switch unit systems (this would probably be a lot of work, so I doubt it's worthwhile unless we do a big overhaul)

A conversion module should be relatively straightforward, using a table of Amuse units and their Astropy equivalent.

Simple concept for a conversion script (hardcoded only for meters):
import astropy.units as astropyunits
from amuse.units import units as amuseunits

def amuse_equivalent_unit(
        astropyunit,
        ):
    # Check if the named unit exists directly in Amuse
    # TODO: read from a lookup table
    if astropyunit == astropyunits.m:
        return amuseunits.m
    return -1

def astropy_equivalent_unit(
        amuseunit,
        ):
    # Check if the named unit exists directly in Astropy
    # TODO: read from a lookup table
    if amuseunit == amuseunits.m:
        return astropyunits.m
    return -1

def astropy_to_amuse(
        astropyquantity,
        ):
    astropyunit = astropyquantity.unit
    value = astropyquantity.value
    amuseunit = amuse_equivalent_unit(astropyunit)
    amusequantity = value | amuseunit
    return amusequantity

def amuse_to_astropy(
        amusequantity,
        ):
    amuseunit = amusequantity.unit
    value = amusequantity.value_in(amuseunit)
    astropyunit = astropy_equivalent_unit(amuseunit)
    astropyquantity = value * astropyunit
    return astropyquantity

I think switching unit systems would not work (mainly for the nbody units etc)..in any case it would be another heavy prerequisite (remember that we also want the framework to be more domain agnostic)...what is doable is to maybe accept astropy units as input, but that might need some cleanup/refactoring of the code for the data stores to minimize the adaptations...step two would be to output the same unit system as was used in the input...

I agree switching over probably won't work, at least it's not quite worth the huge effort.

👋 I was linked to this thread by Nora L. I'm a deputy maintainer of astropy.units, so this is something I care about! I think there are some things we can do on both of our ends to make the typical user experience a bit more painless (for example, see discussion here about interoperability between astropy.units and unyt). In particular, it would be nice to think about whether we can agree on a few high-level API decisions that would allow us to, e.g., initialize our respective unit objects with one from the (or any) other units package. For example, ideally astropyunits.Unit(amuseunits.some_unit) should work. Is this something you would be open to discussing at some point?
Also cc @mhvk, the lead maintainer of astropy.units.

Thanks for responding @adrn! Yes, I would be very happy to discuss this at some point. @ipelupessy should also be included in that discussion as he has more knowledge about the AMUSE unit system than I do.

also available...

Am on vacation, so reading e-mail randomly, but units at least seems relatively straightforward as it would seem one should be able to go via the string representation, perhaps accessible via some standard dunder method, like __unit__  (for amuse, I'd think this would even work for all the IAU units, but one could envision also having a standard way to get the SI version).
Quantities may be harder. Does amuse support arrays of values with a unit?

Am on vacation, so reading e-mail randomly, but units at least seems relatively straightforward as it would seem one should be able to go via the string representation, perhaps accessible via some standard dunder method, like unit (for amuse, I'd think this would even work for all the IAU units, but one could envision also having a standard way to get the SI version).

One problem we'd have to fix is that AMUSE in some cases uses slightly different values for IAU units than Astropy does (that's #171). But for the SI route, this should indeed probably be straightforward.

Quantities may be harder. Does amuse support arrays of values with a unit?

Yes, that's supported.

Assigned this to the AMUSE 13 milestone, as I hope that by that version we can have some conversion process in place from the AMUSE side, perhaps similar to the method we currently use for representation of quantities (some_quantity.in_(units.parsec), some_quantity.value_in(units.parsec), some_quantity.value_in(units.parsec)).
Not sure if we can use these methods directly (that would be ideal), but at least we could have a method that works similarly (some_quantity.in_external_units(astropyunits.parsec)) (this looks very ugly, need to think of something better).

Reassigning to AMUSE 14.

Here's a working conversion function from AMUSE -> Astropy.
Two things to note:

it always returns to base (SI) units (not really a problem)
the values can/will change slightly, since AMUSE and Astropy use slightly different constants (#171) (this is a problem)

from amuse.units import units, constants
from amuse.units import si
from astropy import units as apunits
from astropy import constants as apconstants

def to_astropy(quantity):
    # Find the SI base of the unit
    unit = quantity.unit
    unit_si = unit.to_simple_form()
    unit_bases = unit.base

    # Find the factors
    value = quantity.value_in(unit.base_unit())

    # Find the corresponding unit in astropy
    apyunit = 1
    for base_unit in unit_bases:
        if base_unit[1] == si.m:
            apyunit = apyunit * apunits.m**base_unit[0]
        elif base_unit[1] == si.kg:
            apyunit = apyunit * apunits.kg**base_unit[0]
        elif base_unit[1] == si.s:
            apyunit = apyunit * apunits.s**base_unit[0]
        elif base_unit[1] == si.A:
            apyunit = apyunit * apunits.A**base_unit[0]
        elif base_unit[1] == si.K:
            apyunit = apyunit * apunits.K**base_unit[0]
        elif base_unit[1] == si.mol:
            apyunit = apyunit * apunits.mol**base_unit[0]
        elif base_unit[1] == si.cd:
            apyunit = apyunit * apunits.cd**base_unit[0]

    return value * apyunit

the values can/will change slightly, since AMUSE and Astropy use slightly different constants (#171) (this is a problem)

Or perhaps this is not so much a problem (since in the SI base AMUSE and Astropy agree)? @ipelupessy what do you think?

I think this can be added to the units; about the values: do you have an example of the difference?

Looks OK, though my sense is that going through the string representation is simpler (and not much slower). Faster would be to use that you implement bases quite similarly from how astropy does it, and feed bases and powers directly to a u.CompositeUnit.
Also, if your units are hashable (ours are), then one could just create a dict mapping one set of SI units to another.

Ok, here are to/from functions that can be added to AMUSE to convert between AMUSE/Astropy:
def from_astropy(ap_quantity):
    "Convert a unit from Astropy to AMUSE"

    # Find SI bases of the unit
    si_bases = ap_quantity.si.unit.bases
    si_powers = ap_quantity.si.unit.powers
    si_units = list(zip(si_powers, si_bases))

    # Find the quantity's value in base units
    si_value = ap_quantity.si.value

    # Reconstruct the quantity in AMUSE units
    amuse_quantity = si_value
    for base_unit in si_units:
        if base_unit[1] == apu.m:
            amuse_quantity = amuse_quantity * (1 | units.m**base_unit[0])
        elif base_unit[1] == apu.kg:
            amuse_quantity = amuse_quantity * (1 | units.kg**base_unit[0])
        elif base_unit[1] == apu.s:
            amuse_quantity = amuse_quantity * (1 | units.s**base_unit[0])
        elif base_unit[1] == apu.A:
            amuse_quantity = amuse_quantity * (1 | units.A**base_unit[0])
        elif base_unit[1] == apu.K:
            amuse_quantity = amuse_quantity * (1 | units.K**base_unit[0])
        elif base_unit[1] == apu.mol:
            amuse_quantity = amuse_quantity * (1 | units.mol**base_unit[0])
        elif base_unit[1] == apu.cd:
            amuse_quantity = amuse_quantity * (1 | units.cd**base_unit[0])

    return amuse_quantity

def to_astropy(quantity):
    "Convert a unit from AMUSE to Astropy"

    # Find the SI bases of the unit
    unit = quantity.unit
    unit_bases = unit.base

    # Find the quantity's value in base units
    value = quantity.value_in(unit.base_unit())

    # Reconstruct the quantity in Astropy units
    ap_quantity = value
    for base_unit in unit_bases:
        if base_unit[1] == m:
            ap_quantity = ap_quantity * apu.m**base_unit[0]
        elif base_unit[1] == kg:
            ap_quantity = ap_quantity * apu.kg**base_unit[0]
        elif base_unit[1] == s:
            ap_quantity = ap_quantity * apu.s**base_unit[0]
        elif base_unit[1] == A:
            ap_quantity = ap_quantity * apu.A**base_unit[0]
        elif base_unit[1] == K:
            ap_quantity = ap_quantity * apu.K**base_unit[0]
        elif base_unit[1] == mol:
            ap_quantity = ap_quantity * apu.mol**base_unit[0]
        elif base_unit[1] == cd:
            ap_quantity = ap_quantity * apu.cd**base_unit[0]

    return ap_quantity

I suggest I add them to a new 'amuse.units.astropy' file

This is another Astropy attempt at adding compatibility: https://github.com/astropy/astropy/pull/10205

Closing this issue in favour of #687 which probably requires a broader solution.

When astropy is installed, AMUSE quantities now have an "as_astropy_quantity" method that converts to astropy.

What was the conclusion, though, for things like Msun? Just convert to Msun or go through kg and take into account possibly different definitions?

What was the conclusion, though, for things like Msun? Just convert to Msun or go through kg and take into account possibly different definitions?

I solved this by going through SI units like kg. Those will always be the same so we won't get any conversion errors.
Currently, an AMUSE quantity will be converted to an Astropy quantity with an SI unit (it doesn't get converted back to the equivalent unit). We may add this later but it seems of less importance.

OK, always going through SI will at least be consistent, though I think it will also lead to confusion. But probably unsolvable... Though with the IAU definitions of those types of numbers as constants, it will hopefully eventually go away.


fix: Fix missing usage metadata in GoogleAIGeminiChatGenerator

Related Issues

fixes #1194

Proposed Changes:

How did you test it?

Notes for the reviewer

Checklist

I have read the contributors guidelines and the code of conduct
I have updated the related issue with new insights and changes
I added unit tests and updated the docstrings
I've used one of the conventional commit types for my PR title: fix:, feat:, build:, chore:, ci:, docs:, style:, refactor:, perf:, test:.

 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.


alt_svc: full e2e disk cache

Risk Level: Medium (required some core refactory)
Testing: NEEDS MORE TESTS: unit test of cache load, failed origin parsing
Docs Changes: n/a
Release Notes: NEEDED: we should actually doc up the alt svc cache with this PR

Sending this out before I've done all the unit tests because I want to sanity check with @mattklein123 and @snowp there's no current way for a filter to get the thread-local dispatcher oncreation, and if there's not if you two are OK with me adding dispatcher to the filter callbacks or if y'all have a more elegant way of doing this.


update plugin func parameter name to match actual usage

Description
This PR updates function parameter names in Azure and AWS plugin as well as interface definition. The security group id was incorrectly named as addressGroupIdentifier while actually being used as appliedTo id or both. This PR fixes the misleading names to reflect their actual expected usages.
Changes

Fix function parameter names in AWS and Azure plugin as well as interface definition.
Fix function parameter names in security group functions and definition.
Add comments and fix comment typos.

Signed-off-by: Alexander Liu<EMAIL_ADDRESS>

/nephe-test-e2e-kind


shotwell: 0.31.3 -> 0.30.14

Motivation for this change
There have been no new releases in the 0.31.x series for quite a while, and the
last tag of 0.31.3 is currently broken.
This moves us to 0.30.14, since the 0.30.x series is still seeing regular tags
and builds fine.
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

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

[ ] Fits CONTRIBUTING.md.

I'd like to report the same issue as @regnat: I just upgraded NixOS from 21.05 to 21.11 and it appears that Shotwell cannot start anymore because it has been downgraded. I understand the reasons above and the upstream developers are partially at fault, but the resulting situation is problematic. I do have information that I would rather not loose in Shotwell's database, so what is the proper way to proceed now ?

I have the same issue as @regnat and @xunam - I'm comfortable enough with SQL to mess with that db, but I still need to figure out what changes to make in order to downgrade it. I'd really rather not have to re-import and re-tag everything.
The docs (https://wiki.gnome.org/Apps/Shotwell/Architecture/Database) talk about the thinking behind the db design, but give no details. I'll be happy to work with other people to figure this out.

I genuinely do not see a way forward other than figuring out how to build 0.31.3 and then making it available under a shotwell_0_31 attr.
Having looked at shotwell's repo today though, the project seems all but abandoned with essentially no commits in the past year. My recommendation is that users migrate to an alternative tool, like digikam or darktable.
I've been a heavy shotwell user for years, so trust that my recommendation does not come lightly, I'm still working on importing all my pictures into darktable and it's a major PITA.

That's not an answer I wanted to hear, but it's at least fast, informative and straight to the point.
Thanks; I'll look at the alternatives.

@lovesegfault FWIW I'm working on automating the migration to Darktable, via https://github.com/equill/Shotwell_migration - my Shotwell DB is far too big to feasibly migrate by hand, and it's about time I learned to drive Lua anyway. It's at an early stage, but feel free to use/fork/adapt it if it looks useful.


Files are blocked by peek app after display

Microsoft PowerToys version
0.70.0
Installation method
Microsoft Store
Running as admin
Yes
Area(s) with issue?
Peek
Steps to reproduce
PowerToysReport_2023-05-25-10-20-13.zip
After display a file in peek, the app keeps holding the file, the file is blocked after closing the peek window. The file can not be moved to another folder for example. This happend randomly.
✔ Expected Behavior
The file should not be blocked after display en peek.
❌ Actual Behavior
Files are blocked after display in peek. Random behavior.
Other Software
No response

What file type were you displaying?

Mainly Images, jpeg and png normally

What file type were you displaying?

Normally this happend with images, in this case jpeg and png files.

is this still an issue in 0.79? /needinfo


Improve initial view in custom shaders sandcastle

Fixes https://github.com/CesiumGS/cesium/issues/10454. The initial view position was modified to give a prettier view of the south end of Manhattan, which makes more of the interesting features visible.

Thanks @jjhembd! I can confirm you're added to CONTRIBUTORS.md in main. Everything looks good to go!


When the table name is Chinese, the code cannot be completed

Description
When the table name is Chinese, the code cannot be completed
Video presentation address
https://wwu.lanzout.com/iJIY608zw6eb
Steps to reproduce
When the table name is Chinese, the code cannot be completed
Video presentation address
https://wwu.lanzout.com/iJIY608zw6eb
DBeaver Version
22.1.3
Operating System
No response

Thank you for bug report

Can't reproduce against in DBeaver 22.3.1
Can you please check the latest DBeaver version? https://dbeaver.io/download/

Reproduced on Oracle 12

There is no update on this issue for a long time, so I'm closing it. Please let me know if the issue is still actual for you for the latest DBeaver version.


Manually implement JsonSchema

Done while investigating removal of serde_derive dependency.

Patch 1: Do trivial dev-dep removal
Patch 2: Manually implement JsonSchema and remove default dependencies from "schemars" dependency (transitively depends on serde_derive)

Force push hash changes in the first patch to rustdoc example import statements. No other changes.

Now includes pinning changes, could easily have gotten them wrong ...

... and they are wrong :(

Pinning makes my eyes bleed, leaving for another day.

Please review patch 2, it could be done as a separate PR if required. Note that recently when we pinned syn it was because of the wasm stuff, I originally did patch 2 then but never pushed it up. It is related to this PR because removing schemars_derive removes syn and that breaks pinning, fixing it led me back to wasm ... again.

And added pinning of schemars to v0.8.12 even though we only run schemars tests with stable toolchain.

This all looks good to me. I think you should pull the second commit into its own PR so we can discuss it a bit. (I am in favor of it, but I suspect that we'll eventually bump into something here that'll make us think "what were we thinking again?")

Sure thing, will pull it out.

Err, I am surprised this passed CI? That was the whole point of #2104.

On ice until next release.

the motivation was not "hating" derive

serde_derive has broken our MSRV more than every other dependency combined and at one point was shipping with a binary blob. We could love it and we'd still want to remove it from this library if possible.

serde_derive has broken our MSRV

This is not a big deal for me. One just updates Cargo.lock and everything works fine. It's a bit annoying sometimes but IME serde is among easiest cases to resolve. Contrast that with unstable crates that both break MSRV and make semver-breaking release and then other crates start depending on them and then other crates on those crates... And then you have to recursively downgrade everything and often the downstream crates didn't even need the new features and updated just to keep up with the rest of the ecosystem. This operation is even encouraged by various bots, some of which are actually broken. Also, ironically, our crate is doing the same thing but we at least have pretty conservative MSRV and are actively working to stabilize the crate.
Yes, it'd be even less annoying if no crate bumped MSRV but ultimately it makes sense that some crates need new features and have to update.

at one point was shipping with a binary blob.

Any dependency at any point can become compromised. Even myself, with Qubes setup I still have some things that should be done better but weren't because of lack of time and technical complications, so there may still be a way to compromise me and upload a malicious crate. If I have a hard time doing it properly why should I expect others to do so? We have to act accordingly, assuming there's SPOF in every crate.

I ended up inlining all the json stuff and removing the len_* functions all together. Adds a bit of code duplication.

Putting to draft so we can merge #2165 then rebase this on top.

This one has been had an ack for three weeks now, all @Kixunil's concerns have been addressed. It can go in via the refactor carve out.


Correlated values + setValue + Soft Update

Firstly, my sincere thanks and compliments to such a beautiful framework and viable alternative to dat.GUI. I am trying to use QuickSettings as the GUI layer for my framework. To keep the GUI separate from my framework it is necessary for me to create some sort of binding mechanisms. But there is one scenario where it will lead to recursion. Let me show an example
var settings = QuickSettings.create(0,0,'Bind and Safe');
var proportionate = {
    _a: 5,
    _b: 10,
    _ratio: 2,
    set a(value)
    {
      this._a = value;
      this._b = this._a * this._ratio;
      settings.setValue('b', this._b);
    },
   set b(value)
   {
      this._b = value;
      this._a = this._b / this._ratio;
      settings.setValue('a', this._a);
   }
};
settings.bindRange('a', 0, 10, 1.0, 1.0, proportionate);
settings.bindRange("b", 0, 20, 2.0, 1.0, proportionate);

In the above scenario I will add two controls in quicksettings for a and b for the proportionate. So when I change the slider for a I will also internally change the value for b. So to update the GUI a call to settings.setValue is made. So given the above scenario will that not lead to recursion? Becaues even by calling setValue it again calls to set the object's setter, which will eventually call the setValue again. Thus it will be an infinite recursion. Is there a way to softly update the GUI?
Regards,
#0K

I came here to ask this... I want to update the values in a dropDown...


Zero division error in cubic configuration

Who is doing cubic configuration? Have you encountered zero division error?

I guess you already found the answer right?

@poojashresthacode Probably, you are getting rij=0 for the coordinates that you assigned for initial positions, please check your coordinates again.

I am confused does r_ij is different than the initial position of ions? We can chose the coordinate of structure as [0,0,0] while initializing considering that a ion is located at the origin.


Error after windows install from setup.exe

Installed from https://github.com/hubblestack/hubble/releases/download/v2.4.7/Hubble-v2.4.7-Setup.exe on Windows 10 for testing and came across this error:
C:\Program Files (x86)\Hubble>hubble.exe
An Error occurred while loading the config: object of type 'NoneType' has no len()
Traceback (most recent call last):
  File "hubble.py", line 5, in <module>
  File "hubblestack\daemon.py", line 49, in run
    load_config()
  File "hubblestack\daemon.py", line 468, in load_config
    __opts__ = salt.config.minion_config(parsed_args.get('configfile'))
  File "site-packages\salt\config\__init__.py", line 2422, in minion_config
  File "site-packages\salt\config\__init__.py", line 3783, in apply_minion_config
TypeError: object of type 'NoneType' has no len()
Failed to execute script hubble

That's a new one. I'll get a ticket into our backlog to look into this.

https://jira.corp.adobe.com/browse/CSTREQ-45943

@alias454 commenting those out allows hubble.exe --version to run.
Thanks.

Fixed in #553


Make IAccount serializable

As per discussions regarding https://github.com/AzureAD/microsoft-authentication-library-for-java/issues/292, this change makes IAccount serializable, and removes the potential implicit serialization of IAuthenticationResult by making AuthenticationResult not serializable.

@Avery-Dunn why do we need serializing the IAccount? We can reach the account from the TokenCache(which is also serializable)?
For example like below:
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplication.builder("sampleClientId", ClientCredentialFactory.createFromSecret("sampleClientSecret")).
                    authority("sampleAuthority").build();
 Set<IAccount> accounts = app.getAccounts().get();


WorkingDirectory during discovery in .NET Core

I'm trying to use the TestContext.CurrentContext.WorkDirectory in a netcoreapp1.0 using the dotnet-test-nunit package 3.4.0-beta-1.
During test run, the WorkDirectory is set just fine. But when I add a parameter with a ValueSource and add a static property that uses the WorkDirectory, tests disappear in the VS Test Explorer. The output of "dotnet test" suggests, that the WorkDirectory is actually null.
While I probably could pass a work directory from the command line, this probably cannot be done in VS!?

If I am reading this right, you are using TestContext.CurrentContext.WorkDirectory in a ValueSource from a static method. I am pretty sure that CurrentContext will be null because the test is not running at that point, it is during the test discovery phase. If that is the case, then this is an NUnit Framework issue, not a runner issue. @CharliePoole can you confirm?
You could work around this by getting the directory from the running assembly.

Looking at the stack trace:
An exception was thrown while loading the test.
System.ArgumentNullException: Value cannot be null.
Parameter name: path1
   at System.IO.Path.Combine(String path1, String path2)
   at Bobs.PDF.Tests.Reader_Tests.get_TestFiles() in C:\...\Reader_Tests.cs:line 43

I'm getting an ArgumentNullException for the parameter path1 into which I pass TestContext.CurrentContext.WorkDirectory, not a NullReferenceException, so TestContext.CurrentContext is probably not null. That's why I thought it was the runner.

This is similar to issue nunit/nunit#1241, which we fixed, except that it deals with WorkDirectory rather than TestDirectory. WorkDirectory didn't seem to need fixing in this way, since it is the directory to which run results and reports are output.
@mpoettgen you seem to be using WorkDirectory as a location from which to locate input files, which isn't what it's intended for.
@rprouse Getting the directory of the running assembly would give you the equivalent of TestDirectory, not WorkDirectory. However, it's probably what he should be using anyway.
I think there is probably some confusion betweein our term "work directory" and the general terminology "working directory" as equivalent to "current directory." Too late to change it now though. :-)

It does appear that nunit/nunit#1241 describes the use case. I wanted to use TestDirectory, but it's not available on .NET Core for whatever reason and WorkDirectory seemed to be more convenient than trying to find the running assembly, as the GetExecutingAssembly method is not available either.
(If you would want to write the discovered test parameters to your report you'd still need the WorkDirectory to be set properly.)
Shouldn't it be possible to have the TestDirectory on .NET Core or is there anything that prevents this?

Test directory is not available because of the restrictions of the portable profile. We hope to readd stuff like this with a netstandard version of NUnit

I didn't even realize that NUnit wasn't netstandard because it just worked. Of course that explains why there is not implementation of TestDirectory.
For now I'm using
string testDirectory = Path.GetDirectoryName(typeof(MyTestClass).GetTypeInfo().Assembly.Location);

to get the 'TestDirectory' as a workaround.
Not sure if you want to keep this ticket open to either track that WorkDirectory is not set in the runner or TestDirectory is not available on .NET Core. Thanks for your help anyways!

@mpoettgen I think you could use: AppContext.BaseDirectory.
Just in case anyone is tempted to use this in a NuGet package. This doesn't currently mean what you probably think it means. It doesn't quite mean the same as, AppDomain.CurrentDomain.BaseDirectory in classic .NET.
This property returns the base directory of the NuGet package of the calling assembly. You won't notice this when called from a test assembly. It is only obvious when the calling assembly is packaged and deployed. Confusing as hell! (@mwhelan flagged this one up)
They probably intend it to be same as, AppContext.GetDate("APP_CONTEXT_BASE_DIRECTORY") (which I believe does what you'd expect).

I set this to blocked as it is an NUnit issue, not a runner issue.

@rprouse Is there an issue filled for TestDirectory in nunit?

@MihaMarkic TestDirectory is in the new .NET Standard 1.6 version of the NUnit Framework which will be released with v3.6


Id scope leaks data

Information available in the id scope is available to apps even without a valid token via some API endpoints such as autocomplete. Consider the security implications and decide on what data is public, and ensure API endpoints are consistent.

Deprecating this. We need a separate ticket for ensuring safe usage of the autocomplete API.


fix(mysql): backup table support 5.5

关联研发信息
dev_branch: fix/backup_55/#3007
target_branch: v1.3.0


refactor(*): revert #370 and transfer the feature to a plugin

What this PR does / why we need it:
Made a mistake in #370, if we want to provide the API documentation page when the server starts, the method in #370 needs to provide the relevant code while running the binary file, this is unrealistic in a production environment. The correct method should be to generate API JSON files separately and make the server serve the Swagger UI page based on these files when it starts. So this PR reverts the feature in #370 and refactor the apidocs plug-in so that it can provide the Swagger UI page directly.
See examples/getting-started/docs for a real example.
Which issue(s) this PR is related to (optional, link to 3rd issue(s)):
Fixes #
Reference to #

Special notes for your reviewer:
/cc @xpofei

Release note:

Revert the feature in #370 and refactor the `apidocs` plug-in so that it can provide the Swagger UI page directly.

/lgtm

/approve


.prose-xl seems to behave differently to .prose

This code

 {{ .Content }}

Generates this:

This code

 {{ .Content }}

Generates this:

Am I missing something here? Why is  not bold and why bullet-points not working?

This issue belongs to https://github.com/tailwindcss/typography
But, this is how you solve it: https://github.com/tailwindcss/typography#size-modifiers

Size modifiers are designed to be used with the multi-class modifier pattern and must be used in conjunction with the base prose class:

Answering my own question - you need to use both .prose and .prose-lg...should have been:

 {{ .Content }}


Исправление ошибки с публикацией lib

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
296

Relevant Lines:
296

💛  - Coveralls


next-gen profiles

@bcle can we close this?

@bcle can we close this?

Superseded by https://github.com/arlonproj/arlon/pull/335


Add proptest generation

A simple function to generate random (non-empty) portgraphs for proptest.

Do you know how this plays with shrinking?

It's my first time building proptest strategies, so I'm not familiar with the details of the shrinking ordering. I'll happily take your word for it: I've swapped the ordering of the tuple gen_graph_and_edges, do you think this should be better?
Thanks for your comments, super useful!


[BUG] How do you use pyinstaller with undetected playwright

When using pyinstaller with playwright it runs smoothly but when using it with undetected playwright I am getting the following error

I did a little research and didn't find anything regarding this issue

add the folder of undetected playwright to the file u want to convert via pyinstaller


Incorrect missing type annotation error on array map

Flow version: 0.86.0

Expected behavior
A simple map function inside a react component method:
renderChip = (positions: string[]) => positions.map(position => <Chip title={position} key={position} //.... />)

Should be valid flow syntax ✅
Actual behavior
Instead I get the following error 💥 :

Missing type annotation for U. U is a type parameter declared in  function type [1] and was implicitly instantiated at  call of method map [2].

This appears to be throwing error for the generic type paramater U inside the map function. Naturally I tried providing static typing to the map function, to prevent a generic type-cast

Providing the implicit return of JSX.Element
 positions.map<JSX.Element>(//...)

This resulted in the following error:

Cannot resolve name JSX

Explicitly providing React.Element (React is already imported in the module)
positions.map<React.Element>(//...)

Resulting in:

Cannot get React.Element because property Element is missing in  object type [1].

What's even weirder about all this is, originally my component was written as a function component and the line was perfectly fine, but as soon as I transcribed the component into a class as I needed to add state, then suddenly I got this error.

Attempted reproducing on flow.org/try but there it seems to work fine without any errors.

Similar issue referenced 🧷:  https://github.com/facebook/flow/issues/6828

Link to Try-Flow or Github repo: sadly I cannot provide one, private repo for a client's project

Try either importing React as a value or doing import type {MixedElement} from "React";
What happens when you annotate the return type of the function. So renderChip = (positions: Array<string>): Array<React.MixedElement> => positions.map(...) or something

What's even weirder about all this is, originally my component was written as a function component and the line was perfectly fine, but as soon as I transcribed the component into a class as I needed to add state, then suddenly I got this error.

See https://medium.com/flow-type/asking-for-required-annotations-64d4f9c1edf8

Flow has very few limitations on its type inference, but there is one big one: input positions reachable from exports must be annotated.

You didn't get this error before because when it was a function component, the helper function/value probably wasn't reachable from importing modules. Now that it's a class property, some other module could potentially construct an instance of the class and call this function, so Flow wants it to be explicitly typed.
Your attempted solution is good, but as @gkz said, the type imports are not quite right.
import type {MixedElement} from "React";

enderChip = (positions: string[]) => positions.map<MixedElement>(position => <Chip title={position} key={position} //.... />)

should work.

@noppa Hey, I suspected as much.
That being said, I still have a (slightly different) issue.
import type { MixedElement } from 'react'

resulted in:

Cannot import MixedElement because there is no MixedElement export in react.

Even though I was on the latest version of react.

ℹ  React version @ package.json: 16.3.1

I also tried updating @types/node and @types/react but it didn't help

Any idea what could be causing this?

Ah, that's because your Flow version 0.86.0 is quite old and MixedElement seems to be newer addition than that. Well, Element<any> then
import type {Element} from "react";

renderChip = (positions: string[]) => positions.map<Element<any>>(
  position => <Chip title={position} key={position} />
)

The @types/* modules are for TypeScript, so they won't help here.
Also btw version 16.3.1 is not the latest version of React :) but that shouldn't be a factor for this issue because the React types are actually built into Flow.


opendht: 1.7.2 -> 1.7.4

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/opendht/versions.
meta.description for opendht is: '"A C++11 Kademlia distributed hash table implementation"'.
Release on GitHub
Compare changes on GitHub

Checks done (click to expand)

built on NixOS
/nix/store/rs0aggndirahp2jybipcmwbh56sky4j1-opendht-1.7.4/bin/dhtnode passed the binary check.
/nix/store/rs0aggndirahp2jybipcmwbh56sky4j1-opendht-1.7.4/bin/dhtchat passed the binary check.
/nix/store/rs0aggndirahp2jybipcmwbh56sky4j1-opendht-1.7.4/bin/dhtscanner passed the binary check.
3 of 3 passed binary check by having a zero exit code.
0 of 3 passed binary check by having the new version present in output.
found 1.7.4 with grep in /nix/store/rs0aggndirahp2jybipcmwbh56sky4j1-opendht-1.7.4
directory tree listing: https://gist.github.com/72f917ff2a24e460af59f1864abfa564
du listing: https://gist.github.com/b998d119ea66d1d9fbdeb54056080db2

Test this build with Cachix (click to expand)

One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout cc9821949b5dc25ca8982a8012d14ca818c667c7 && nix-shell --pure -I nixpkgs=. -p opendht

cc @Radvendii @olynch for testing.

@GrahamcOfBorg eval

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: opendht
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

No attempt on x86_64-linux (full log)
The following builds were skipped because they don't evaluate on x86_64-linux: opendht
Partial log (click to expand)
Cannot nix-instantiate `opendht' because:
GC Warning: Failed to expand heap by<PHONE_NUMBER>0 bytes
Can't start up: not enough memory

Failure on aarch64-linux (full log)
Attempted: opendht
Partial log (click to expand)
copying path '/nix/store/7gjikbp6s2ywz8r28diz6r49aqajb07g-gmp-6.1.2' from 'https://cache.nixos.org'...
copying path '/nix/store/0gahyl2dnjja8648z17jxf47wlb7vsky-patchelf-0.9' from 'https://cache.nixos.org'...
copying path '/nix/store/v5x8jv32vf9lhv92pwn9mg6pqm0s6z8x-readline-6.3p08' from 'https://cache.nixos.org'...
cannot build derivation '/nix/store/l0z31abwgmvzylbwjmxiq9i4rabx5liy-source.drv': 4 dependencies couldn't be built
copying path '/nix/store/89iq9zg2w4rh3q1a8hhz9cf8hnihs89c-gmp-6.1.2-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/ma2xigz608i48az2lnn9ss6sax0hk03p-nettle-3.4' from 'https://cache.nixos.org'...
copying path '/nix/store/7w08d73i3gf1caqhjj2qkrf8a3iv5x5c-nettle-3.4-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/f4kfd98g7yffxhjflzb3hna32yxphwwy-unbound-1.7.3-lib' from 'https://cache.nixos.org'...
cannot build derivation '/nix/store/fr37ql2jg47hdbc9zpj9k95dqi0ijwma-opendht-1.7.4.drv': 8 dependencies couldn't be built
error: build of '/nix/store/fr37ql2jg47hdbc9zpj9k95dqi0ijwma-opendht-1.7.4.drv' failed

@GrahamcOfBorg eval

Success on x86_64-linux (full log)
Attempted: opendht
Partial log (click to expand)
shrinking /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/bin/dhtchat
shrinking /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/bin/dhtscanner
shrinking /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/bin/dhtnode
shrinking /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/lib/libopendht.so.0.0.0
gzipping man pages under /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/share/man/
strip is /nix/store/1hi76hr87bd1y1q1qjk0lv8nmcjip1c8-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/lib  /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4/bin
patching script interpreter paths in /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4
checking for references to /tmp/nix-build-opendht-1.7.4.drv-0 in /nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4...
/nix/store/2afc4fzg493cf6lvb0v2r60z2vbpnqfp-opendht-1.7.4


Stacktrace don't print all stack

Current scenario.
AuthorizationService has a GetDetails function that call a CardService GetCard function.
func (a AuthorizationServiceImpl) GetDetails(ctx context.Context, model *authorization.Authorization) (*authorization.Detail, error) {
	...
	cardDetail, err := a.cardService.GetCard(ctx, model.CardNumber)
	if err != nil {
//line 41		return nil, errors.Wrap(err, "service error during GetDetails")
	}

	...
}

CardService has a GetCard function  that call a CardDelivery CardDetails function
func (c CardServiceImpl) GetCard(ctx context.Context, cardNumber string) (*card.Card, error) {
	...
	detailPan, err := c.cardDelivery.CardDetails(ctx, cardNumber)
	if err != nil {
//line 30		return nil, errors.Wrap(err, "service error during GetCard")
	}

	...
}

CardDelivery  has a CardDetails function  that call a HttpClient Post
func (r *RestImpl) CardDetails(ctx context.Context, cardNumber string) (*DetailPan, error) {
	...
	response, err := r.httpClient.Post(piercardsUrl + "/check-pan", body, headers, nil)

	if err != nil {
//line 45		return nil, errors.Wrap(err, "delivery error during CardDetails")
	}

my problem occuring this last function but when i print the stacktrace they are not show the last 2 functions:
Stack Trace:

dev.azure.com/conductortech/prepaid/_git/orchestrator.git/internal/service.AuthorizationServiceImpl.GetDetails
	C:/Workspace/prepaid/orchestrator/internal/service/authorization.go:41
dev.azure.com/conductortech/prepaid/_git/orchestrator.git/cmd/http/handlers.AuthorizationController.checkAuthorization
	C:/Workspace/prepaid/orchestrator/cmd/http/handlers/authorizations.go:48
net/http.HandlerFunc.ServeHTTP
	C:/Go/src/net/http/server.go:2007

the last two services are not printed in the stacktrace, but they are wrapped with errors.Wrap(err, msg)
My code to print the stacktrace:
                fmt.Println("Cause:")
		fmt.Println(errors.Cause(err))
		if err, ok := err.(stackTracer); ok {
			fmt.Println("Stack Trace:")
			result := fmt.Sprintf("%+v", err.StackTrace()[0:6])
			fmt.Println(result)
		}

i'm doing anything wrong ?

What version of pkg/errors are you using? Some earlier versions have different behavior.
Using errors.Wrap(…) at every layer is inefficient, because it tends to end up repeating a lot of the same stacktrace information all the way up the chain. Ideally, you should use errors.Wrap(…) only on the non-pkg/errors error at the very start of the chain, and then at each additional level use errors.WithMessage(…).
Finally, you do not have to extract the stacktrace yourself to print it out. It should be printed out just by using fmt.Printf("%+v", err)

@puellanivis i'm using "github.com/pkg/errors v0.9.1" version.
i will try to refactor my code to using like you said, i will change today and i go back to say if work. @puellanivis thx for your help.

@puellanivis i change the code... but not work exactly i want, i need to extract the stacktrace to report to the team, to be honest, i just use the pkg error to show the stacktrace, but the stracktrace just print the first 2 levels of my services, if i change wraps to WithMessage, the stacktrace dont show.
i tried to use WithStack(err) to chain and just when the cause started i use Wrap, but the stacktrace dont show the entire stacktrace.

Using code:
fmt.Printf("%+v", err.StackTrace()[0:6])

Print:
Stack Trace:

myrepos/conductortech/prepaid/_git/orchestrator.git/internal/service.AuthorizationServiceImpl.GetDetails
	C:/Workspace/prepaid/orchestrator/internal/service/authorization.go:42
myrepos/conductortech/prepaid/_git/orchestrator.git/cmd/http/handlers.AuthorizationController.checkAuthorization
	C:/Workspace/prepaid/orchestrator/cmd/http/handlers/authorizations.go:48
net/http.HandlerFunc.ServeHTTP
	C:/Go/src/net/http/server.go:2007
github.com/go-chi/chi.(*Mux).routeHTTP
	C:/Users/marcos.filho/go/pkg/mod/github.com/go-chi/chi@v4.0.3+incompatible/mux.go:425
net/http.HandlerFunc.ServeHTTP

Using the second code:
fmt.Printf("%+v\n", err)

print:

myrepos/conductortech/prepaid/_git/orchestrator.git/internal/delivery/cards.(*RestImpl).CardDetails
	C:/Workspace/prepaid/orchestrator/internal/delivery/cards/rest.go:45
myrepos/conductortech/prepaid/_git/orchestrator.git/internal/service.CardServiceImpl.GetCard
	C:/Workspace/prepaid/orchestrator/internal/service/card.go:28
myrepos/conductortech/prepaid/_git/orchestrator.git/internal/service.AuthorizationServiceImpl.GetDetails
	C:/Workspace/prepaid/orchestrator/internal/service/authorization.go:39
myrepos/conductortech/prepaid/_git/orchestrator.git/cmd/http/handlers.AuthorizationController.checkAuthorization
	C:/Workspace/prepaid/orchestrator/cmd/http/handlers/authorizations.go:48
net/http.HandlerFunc.ServeHTTP
	C:/Go/src/net/http/server.go:2007
github.com/go-chi/chi.(*Mux).routeHTTP
	C:/Users/marcos.filho/go/pkg/mod/github.com/go-chi/chi@v4.0.3+incompatible/mux.go:425
net/http.HandlerFunc.ServeHTTP

The problem it's happen only if i limit the stack, the correct stack is the second code, But is too Huge, i want to limit the print. But if i limit the code don't print first two lines (in bold), this lines are most important for the stacktrace.
it's a bug ?

if i change wraps to WithMessage, the stacktrace dont show.

Yes, WithMessage does not attach stack traces, at all, so you will get no stack traces. But you should still use it instead of errors.Wrap() or errors.WithStack() at each level after the first wrap, otherwise you keep overwriting stacks with a newer stack.  Notice:
	C:/Workspace/prepaid/orchestrator/internal/service/authorization.go:42
vs
	C:/Workspace/prepaid/orchestrator/internal/service/authorization.go:39

The authorization.go:42 is where you’re calling the errors.Wrap, or errors.WithStack, not where you are calling the function that produced the error. This is why you are missing the top two layers of your stacktrace, because you’re overriding them with a new stacktrace at each layer.
You need to only attach the stack trace at the very first level. if you do not actually care about the messages, then just use errors.WithStack(err), at rest.go:45. And just return that error at each level, without doing anything to it.
If you still actually do want the messages, then at rest.go:45 use errors.Wrap(err, …), then at each other level use errors.WithMessage(err, …) then, when you go to print the stack, you need to unwrap each layer until you find a stackTracer which is easy given the new errors.As from go1.13:
Do:
                fmt.Println("Cause:")
		fmt.Println(errors.Cause(err))
		var st stackTracer
		if errors.As(err, &st) {
			fmt.Println("Stack Trace:")
			result := fmt.Sprintf("%+v", st.StackTrace()[0:6])
			fmt.Println(result)
		}

If you’re not using go1.13 then use xerrors.As(…).

thx u so much @puellanivis it worked very well. As you said, i was doing wrong, now at the first level i'm using WithStack and after that i'm just return the error, not wrap anymore. And now when i limit the message work very well.


make esteemer choose the comparator with the highest level for social better

When esteemer finds more than one candidate to be acceptable by social better, select the candidate with the highest comparator performance level
Tests:
Given the Alice input with only SUS04 measure
When: we send a request
Then: the candidate with the message template for top performer must be selected instead of top 25% comparator.
Sugggested Approach:if two candidates are accepted by 'social better' and both the candidates have positive gap sizes, then only top 90% template must be chosen.

This same issue occurs for positive gaps with the peer average and 75th percentile benchmark.
From Slack:
Do we want social better messages to be about the comparator with the largest posistive gap? If so, this is valid, but I think this logically is a weird message to get when Deepa has this performance data (which is above the 75th percentile):
Last month performance:
[4,"TOC02","2023-12-01",89,11,100,80,85,90,90],
And the pipeline results through LDT:
Testing input_message file for persona 'DEEPA'
Thread 1, Test 1, Request 4:	Response received in 3.129 seconds.
API response contains keys:
Staff ID Number:	4
Display Type:		bar chart
Image Extant:		False
Measure:		TOC02
Acceptable By:		['Social better']
Short Message:	Your performance is now above the peer average this month for the measure TOC02: Transfer of Care to PACU (Postop). Your performance was 89.0% (89/100 cases).
Verifying against restricted pilot launch dataset
VIGNETTE VERIFICATION:		FAIL
Expected pairs:		Social Worse		GLU01
Expected pairs:		Social Worse		TOC02
Expected pairs:		Social Better		BP03
API returned pair:
['Social better']		TOC02
Like yeah, her performance WAS above 80, so the message is valid, but she also would probably want to hear that her performance was also above the 75th percentile benchmark?


[Request] BOTs Own Playtime

Can you please add BOTs their Own Playtime? What Happens If I Kick any bot or change bot quota in middle the new bots joined also have the same playtime as the old ones.
When a BOT is kicked from console, The new BOT which Joins in place of that has the same playtime

The same as https://github.com/yapb/yapb/issues/187


Thread pool test execution

I'm trying to run tests in parallel on the thread pool, but it seems to break both the CLI as well as the visual studio test explorer.
The test explorer does either not run the tests or not show the results, and the CLI tool messes up the colors of the terminal.
Steps to Reproduce
TestProject
public class TestProject : ITestProject
{
    public void Configure(TestConfiguration configuration, TestEnvironment environment)
    {
        configuration.Conventions.Add<DefaultDiscovery, ThreadPoolExecution>();
    }
}

Execution
public class ThreadPoolExecution : IExecution
{
    public async Task Run(TestSuite testSuite)
    {
        ThreadPool.GetMinThreads(out var maxRunningTests, out _);
        var runningTests = new List<Task>();

        foreach (var test in testSuite.Tests)
        {
            while (runningTests.Count >= maxRunningTests)
            {
                runningTests.Remove(await Task.WhenAny(runningTests));
            }

            runningTests.Add(test.Run());
        }

        while (runningTests.Count > 0)
        {
            runningTests.Remove(await Task.WhenAny(runningTests));
        }
    }
}

Some tests to execute
public class FooTests
{
    public async Task DelayedTest1()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest2()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest3()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest4()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest5()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest6()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest7()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest8()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest9()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
    public async Task DelayedTest10()
    {
        await Task.Delay(TimeSpan.FromSeconds(1));
    }
}

Expected Behavior
Fixie can run tests in parallel.
Actual Behavior
Not running the tests properly

Turning everything green

Hi, thanks for the excellent repro case and the informative animations! I'm afraid my response will be a disappointing, "No, this isn't supported, but maybe someday." I've gone in circles trying to find the Right approach before commiting to something regrettable.
You're right that parallelism like this is not supported. It may be, someday, but there are some big challenges to solve there in the test runner itself, and solving them would compete against the benefits, at least in part. There are also a few philosophical differences this project has with alternatives like xUnit worth talking through.
First, let's get the "straw man argument" out of the way: some folks who think they want parallel tests think that threads are a magic "make stuff go faster" button, and I'm sure you'd agree they are not. There's always trade-offs. xUnit runs parallel by default, and still runs notably slower at the command line and in Test Explorer in https://github.com/fixie/fixie.benchmark. For context, that runs 50k empty tests, merely to measure the overhead of the xUnit runner vs Fixie runner. Surely we could craft a benchmark where the parallelism of xUnit is faster, but it's not a clear win as a general always-on option. I suspect a great deal of the time spent in the xUnit run in that repo is in the contention of marshalling results to the various report sinks.
Next, Fixie's sweet spot is in integration tests, such as those which would exercise a feature all the way to the database and back. Again, folks who think they want parallelism at the test level in these cases can really damage their experience, where it gets incredibly difficult to make a meaningful test that can also consistently pass with its "siblings" messing with the same database. Then they might start mocking their database interactions, resulting in a test suite that is fast, green, and constantly lying about whether the system works.
Next, for folks who have a naturally parallel friendly system-under-test, let's say lots of simple number crunching, I'd argue that other test frameworks have handed folks the wrong tool by implying that the "straw man agrument"'s magic button is at hand at the test level. Instead, a more sound model might be at the process level, for instance: some hypothetical version of "dotnet fixie" which takes the set of discovered tests and farms them out to a few processes, each running their subset as the perceived TestSuite object. Each running process has no shared mutable state across threads waiting to surprise the developer. Even here, farming out tests is the wrong unit (imagine someone's convention establishes NUnit-like long-lived stateful test classes); the right unit would be the class level. Someone with a carefully crafted build script might accomplish this today, using the --tests filter while invoking "dotnet fixie" multiple times.
Next, some folks who think they want parallelism at the test level are in a situation when in their case they really want their sequential tests to fire off and await threads themselves. In other words, a test that kicks off the multithreaded running of some part of their system, ensures that all runs to completion, and then exits with its one test result that all that work completed successfully. There's a similar argument against "retry" conventions: does the developer really want the test to be retried, or rather do they want their single-run test to run-and-retry the system under test (such as with Polly) before deciding if the single test has succeeded.
In all these possible paths we run into a few concrete challenges in the implementation, all around the reporting mechanism. While your Execution class is running, particularly the moments where you call test.Run(), events are being emitted for reporting. "This one passed", "This one failed", etc. Those flow through the reporting infrastructure here: https://github.com/fixie/fixie/tree/6b6160305d3393ac6a3a7575b8c84f7ec3aec979/src/Fixie/Reports
Examples of some pains:

Console capture and test timing would be broken. Folks might be willing to accept that if they opt into parallelism, though.
TeamCityReport uses TeamCity's console output formatting opinions to detect results. If TeamCityReport weren't single threaded, it could easily interleave these output lines and break the reporting.
ConsoleReport would have similar challenges.
AppVeyorReport and AzureReport both need to hit APIs, and so there's some hope here that they might Just Work if hit across threads, but surely there's some gotchas around AzureReprot's mutable state for the batching it does to avoid overloading Azure's test API. Some naive attempts here could seem perfectly sound in the implementation and then regress to a previous bug where messages would reach the Azure API so fast that it would start to throw 500s back at us.
XmlReport would need to ultimately spend time carefully collecting results from each thread, and then spend time interleaving that data into the final file.
Test Explorer is a particularly challenging nightmare in this regard. Here be dragons. The API we're stuck with is not async or threading friendly at all, and ultimately I'd expect that it needs us to submit messages to it in serial lockstep, introducing contention that would fight against the possible gains. In the benchmark mentioned above, the vast majority of the time spent is spent is in the interprocess communication back to VSTest in the single-threaded results method it exposes to us.

Overall, I think most of the options here are problems rather than solutions. The most likely path, really, would be for dotnet fixie to be able to farm out work to a few processes, each of which runs single-threaded with a subset of the overall discovered tests. Even here, though, it's not free: that's extra interprocess communication, extra work to interleave results like in the case of the XmlReport, etc. And anyone who makes a custom Report would have to take on the new burden of mutithreading awareness.
All in all, I do entertain the idea of some flavor of parallelism, but it's not clear that in-process parallelism is the answer, and it's not clear if the impact on sound reporting is worthwhile.

I agree that just throwing threads at the problem isn't always the solution. In our case you can have one or more real devices connected your computer, that each can run their own set of tests which can take a long time. Running those in parallel would safe a lot of time. There are also unit tests that do no depend on each other at all, so running them in parallel would be completely safe and save a lot of time as well.
It is important to me that my team can run their tests quickly and often, so I think it is important to invest time in properly parallelizing the tests. The last thing I want is my team not running tests because they take too long.
So if I were to take a look at fixing this, would making the reporters (at least the ones that we use) thread safe fix these issues, or are there other components that are accessed in parallel?

I just took a quick scan through the main Fixie project in the solution, looking for the main pain points.
I think an ideal solution for a quick win would be relatively small, and would not need a change to the Report types themselves. It'd be worth trying to get some lock or similar control around the emitting of messages to the reporting infrastructure and then all the reports might become stable "for free" as a side effect. A change involving updates to the actual Report types would be more likely to be the challenge we're always chasing from here on into the future.
So, here are the types that are pivotal to the Execution phase, which jump out to me either for their mutable state or for their proximity to that pivotal moment of "emit a result to be reported".

Test, the type of the main objects you are interacting with directly in your Execution class, has very little mutable state, but it'd be important to be sure we're not breaking it: the RecordedResult bool plays an important role in Fixie's ability to fully report things like skipped tests. The few times we set it are in tune with calls to the Test's shared ExecutionRecorder. More on that class below.
ExecutionSummary is a simple bag-of-ints tracking counts of each test result state. It's simple, but naturally heavily involved at the moment of a test completing and its result being recorded/reported. It's most "busy" inside the shared ExecutionRecorder.
RecordingConsole has some mutable state and likewise is mostly "busy" inside the shared ExecutionRecorder.
ConsoleRedirectionBoundary mutates state but I think this is all happening before and after Execution rather than during it.
TestAdapterPipe is not literally under the Reports folder but is very much a part of the TestAdapterReport (Test Explorer UI). Controlled access to the shared ExecutionRecorder probably lets us avoid touching this one.
MethodInfoExtensions is the workhorse for invoking a test method. Most of this appears safe already but we do technically have some shared mutable state in the static startAsTask field.
ExecutionRecorder is the scariest part of this from a thread safety point of view, but getting things right here probably saves us from having to make each individual Report care about threads. It's the "pinch point" where on the one side we want open ended parallelism and on the other side we want reliably sequential message processing. A shared instance of this class is referenced by all the Test objects so that they can announce pivotal events like TestStarted, TestSkipped, TestPassed, TestFailed... You'll see this is also where we play some mutable-state trickery to juggle recording console output and inferring test durations.
Bus is primarily hit by ExecutionRecorder. All roads lead to Bus, and it forwards messages to the registered Reports.

I don't know enough about using things like lock effecively, but if ExecutionRecorder itself were made to definitely run its methods in lockstep, that probably gets us 95% of the way there without having to make a lot of changes all over. Care around Test.RecordedResult setting probably gets us another 4% of the way there.

We currently have a release coming up so I am a bit distracted, but I'll definitely take a look once I have time. And thank you for the details description of potential sources of concurrency issues, that will definitely help while I figure out where everything is.

I made a pull request addressing some of the issues: #263

Congrats on the project. Really great but this inability to run parallel async tests is a real issue.
It has been a long time since the last time anyone commented on this.
I understand that it requires some work to re-write the recorder and rethink some other elements, yet I am more than willing to help if there are already some ideas on how to specifically implement this.
I can see how using bounded channels could help make things much easier per example.

I agree this is important to the extent that Fixie should be stable in the face of custom IExecutions that run tests on multiple threads. I won't go so far as to advocate to the general public to run tests in parallel, but it's simply true that the current implementation isn't fair to those experts who are skilled with multithreading, who want to take on those trade-offs, and who would have the experience necessary to distinguish a remaining Fixie bug from a bug in their implementation of IExecution.
I fully recognize this is important, and when I think to myself, "Why am I not telling the world that this is the single test framework all .NET folks should be using on all their projects?", the answer is always precisely this issue. Someone will try it, hit flaky behavior, and set it aside forever.
I face two complications. This is going to fall under "How rude!" and "Yikes that's too much information!", but I'm finding that being slightly rude and offering up too much information has helped a bit in recent months.

First, the rude part. Offers of help in this area are not truly help, in the same sense that gifting a puppy to a coworker during this year's Secret Santa is not truly a gift, but an imposition that bafflingly ignores the ways that it is an imposition. Imagine it in detail: there's a thorny challenge that I have avoided for a decade out of concerns for correctness, despite being the single person on earth closely familiar enough with all the ins and outs of this codebase, and then a PR shows up that takes the critical path of a test framework, the foundation the submitter intends for everyone to build all their own applications' correctness upon, and casually tosses the critical path into a blender. It would leave me to both review it with a confidence that I clearly didn't have in the first place, and would leave me to answer to every novel bug report that follows whether those bugs are truly in Fixie or in the custom IExecution's own imperfection. The puppy would be making a mess all over the carpet, and burning a hole in my credit card, eh? That isn't saving me time or effort or frustration, it doesn't aid my growth in understanding how to do it so well that I can advise the .NET community at large to switch, it doesn't grow my confidence that a sound answer exists, and it doesn't bring me closer to a solution that I can stake my career on.

Second, the "Too Much Information" part. For several confounding reasons and my own unskillful handling of them, I've faced overwhelming anxiety and depression for a little more than two years. Check the original Issue creation date above for an idea of how unfortunate that coincidence was for this feature. The project stalled right around that time. There's likely an undiagnosed additional pattern in the mix where the downstream side effect is to deeply believe that I cannot hold a critical train of thought from one moment to the next, despite evidence to the contrary. I've recently picked up some lighter work here to drag myself back up out of that depression, and by and large it's working by providing more evidence to my "lizard brain" that the cognition-distrust isn't grounded in facts. Working on this project in peace and silence, thinking about things one step at a time while setting all else aside, using the activity of working on it primarily to hone my craft and only secondarily to make a thing folks like, is the best thing for my mental state. I'd like to lock down all Issues and Pull Requests for a few months in the interest of succeeding, just to "lean in" to the fact that I Do The Thing when it is the Only Thing I'm Doing. I don't think GitHub settings offer that on public repos, though. Puppies are a feature, not a bug, it seems. A comment like this truly sets me back by about 2 days, partly because I just haven't been able to deal with simple things like that for a while, and partly because I'm writing this instead of working methodically and single-taskedly through the private roadmap.

I know it's weird. I get an email from an old colleague, I lose 2 days. I get a comment on a closed thread, I lose 2 days. I get an unanticipated PR, where the template pleading with folks to read the contribution guidelines is ignored so that being the bad guy and rejecting it becomes my problem, I lose 2 days. The result is wildly mismatched to the provoking event, but it's an unmistakable pattern I keep noticing in myself.
The direct path from offers-of-help and impositions-of-PRs to inactivity and frustration is not rational, I know.  I do not need folks to understand it, because it truly does not make sense. I do, however, need folks to believe it and to believe that working on this methodically in peace is the answer. That's why I'm being long-winded and oversharing here.
Ironic, that I'm facing a "multithreading bug" in my mind and that the solution for me is to insist on a bounded channel (capacity 1, multiple-producer, single-consumer, intense back pressure on writers 😂), in the work I'm doing here! Which brings me to the real news:
The strong interest in stability in the face of parallel IExecutionss, and the simple fact that it is blocking my ability to legitimately recommend Fixie to the .NET community, has been loud enough that I am adjusting my private roadmap.

I have some light, high-confidence tasks in progress on the v4 line right now that are warming me up to this kind of work, and I will wrap them up by approximately December 15.
Then I will switch to thread stability on the v4 line.

Yes, I'm looking at bounded channels as the approach I'm most likely to be able to fit in my brain. It looks to provide the kind of abstraction I need so that I'm not doing more manual things with locks or other multithreading primitives that leave me too concerned about creating a project-destroying bug magnet.
I'll pursue the multiple-producers, single-consumer style where the reporting sinks are on the consumer side of the divide. I'll be taking a full view of the entire solution while I do this in extremely careful steps, watching out for hidden gotchas like those suggested in the mutable state listing above. Surely the code has moved since then, so it'll be a fresh start on the train of thought.
Despite my rude rejection of "help", I may at that time be ready for help, and if so I'll open an issue to discuss whatever specific open questions I have at that time, pointing to the branch in progress. I'd invite interested parties, and would ask to keep the discussion to specific questions I have rather than opening up a disruptive design-by-committee.
I'll be keeping an eye out for finding a solution that would not be a breaking change with respect to v3. If so, then I'll go back to the latest v3 tag and back port it there, hopefully as the final v3 release. With v3 generally wrapping up, the goal there was stability for all existing supported features, so I'll only back port to v3 if it isn't likely to create new bug reports there. I'm more willing to do it in v4 where there's at least some expectation of breaking changes and beta testing, but I also want to avoid pressure to rush v4 development.

I'll link to this long-winded comment to more swiftly acknowledge and set aside new interruptions.

Thanks to everyone for their patience and for the generosity of their contributions over the last 10 years.

Fixed in v4. Could not be safely applied in v3 due to the past poor design of console capture.
https://github.com/fixie/fixie/releases/tag/4.0.0
https://github.com/fixie/fixie/wiki/Customizing-the-Test-Project-Lifecycle#parallel-execution