Investigate what existing metrics we can use from CHAOSS listing

There are great metrics for software health provided by CHAOSS: https://chaoss.community/kbtopic/software/. It would be brilliant to use some of these if it is possible to query on those for a given repo.
So far we have identified:

'Is It Maintained?' (self-explanatory!): https://github.com/mnapoli/IsItMaintained/blob/master/src/Maintained/Statistics/StatisticsComputer.php;

'Scorecard' for security: https://github.com/ossf/scorecard.

Check scores:
|-------|------|--------|---------------------------|
| SCORE | NAME | REASON | DOCUMENTATION/REMEDIATION |
|-------|------|--------|---------------------------|

$ ./scorecard --repo=numpy/numpy
Starting [Dangerous-Workflow]
Starting [Security-Policy]
Starting [Vulnerabilities]
Starting [Contributors]
Starting [Maintained]
Starting [Branch-Protection]
Starting [Code-Review]
Starting [License]
Starting [Dependency-Update-Tool]
Starting [Packaging]
Starting [CI-Tests]
Starting [Pinned-Dependencies]
Starting [Token-Permissions]
Starting [CII-Best-Practices]
Starting [Fuzzing]
Starting [SAST]
Starting [Binary-Artifacts]
Starting [Signed-Releases]
Finished [Fuzzing]
Finished [SAST]
Finished [Binary-Artifacts]
Finished [Signed-Releases]
Finished [Dangerous-Workflow]
Finished [Security-Policy]
Finished [Vulnerabilities]
Finished [Contributors]
Finished [Maintained]
Finished [Branch-Protection]
Finished [Code-Review]
Finished [License]
Finished [Dependency-Update-Tool]
Finished [Packaging]
Finished [CI-Tests]
Finished [Pinned-Dependencies]
Finished [Token-Permissions]
Finished [CII-Best-Practices]

RESULTS
-------
Aggregate score: 8.3 / 10

Check scores:
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
|  SCORE  |          NAME          |             REASON             |                                               DOCUMENTATION/REMEDIATION                                               |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Binary-Artifacts       | no binaries found in the repo  | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#binary-artifacts       |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 3 / 10  | Branch-Protection      | branch protection is not       | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#branch-protection      |
|         |                        | maximal on development and all |                                                                                |
|         |                        | release branches               |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | CI-Tests               | 12 out of 12 merged PRs        | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#ci-tests               |
|         |                        | checked by a CI test -- score  |                                                                                |
|         |                        | normalized to 10               |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 0 / 10  | CII-Best-Practices     | no effort to earn an OpenSSF   | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#cii-best-practices     |
|         |                        | best practices badge detected  |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Code-Review            | all changesets reviewed        | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#code-review            |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Contributors           | 95 different organizations     | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#contributors           |
|         |                        | found -- score normalized to   |                                                                                |
|         |                        | 10                             |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Dangerous-Workflow     | no dangerous workflow patterns | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#dangerous-workflow     |
|         |                        | detected                       |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Dependency-Update-Tool | update tool detected           | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#dependency-update-tool |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Fuzzing                | project is fuzzed              | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#fuzzing                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 9 / 10  | License                | license file detected          | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#license                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Maintained             | 30 commit(s) out of 30 and 24  | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#maintained             |
|         |                        | issue activity out of 30 found |                                                                                |
|         |                        | in the last 90 days -- score   |                                                                                |
|         |                        | normalized to 10               |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| ?       | Packaging              | no published package detected  | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#packaging              |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| ?       | Pinned-Dependencies    | internal error: internal       | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#pinned-dependencies    |
|         |                        | error: unable to determine OS  |                                                                                |
|         |                        | for job: MyPy                  |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 9 / 10  | SAST                   | SAST tool detected but not run | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#sast                   |
|         |                        | on all commits                 |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 9 / 10  | Security-Policy        | security policy file detected  | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#security-policy        |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 0 / 10  | Signed-Releases        | 0 out of 5 artifacts are       | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#signed-releases        |
|         |                        | signed or have provenance      |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Token-Permissions      | GitHub workflow tokens follow  | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#token-permissions      |
|         |                        | principle of least privilege   |                                                                                |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
| 10 / 10 | Vulnerabilities        | no vulnerabilities detected    | https://github.com/ossf/scorecard/blob/49c0eed3a423f00c872b5c3c9f1bbca9e8aae799/docs/checks.md#vulnerabilities        |
|---------|------------------------|--------------------------------|-----------------------------------------------------------------------------------------------------------------------|
Error: check runtime error: Pinned-Dependencies: internal error: internal error: unable to determine OS for job: MyPy
2024/05/02 12:04:42 error during command execution: check runtime error: Pinned-Dependencies: internal error: internal error: unable to determine OS for job: MyPy

Thanks James. Looking at this now to see what might be most useful.


Update Planning-Taxonomy

Update Planning-Taxonomy to include conditional action effects

Hi @mikand , I hope this is what you ment; otherwise let me know.

Codecov Report

Merging #35 (3997717) into master (d328862) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #35   +/-   ##
=======================================
  Coverage   94.00%   94.00%
=======================================
  Files          38       38
  Lines        3484     3484
=======================================
  Hits         3275     3275
  Misses        209      209

Continue to review full report at Codecov.

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


Xmysql REST client

Xmysql - one command to generate REST APIs for any MySql database.

Nice! But this is not something we're going to maintain.
I suggest you create a standalone package for it, and open a PR in the restClients documentation, in the section dedicated to third-party clients.


Potential redesign of typed sender traits

On the LEWG reflector, Peter Dimov had some interesting suggestions about value_types and error_types. Instead of template template types aliases, they could simply be type aliases:
struct my_typed_sender {
  using value_types = overloads<args<Ts...>, args<Us...>>;
  using error_types = overloads<E>;
//....
};

Then we could provide rebind_value_types_t and rebind_error_types_t template aliases that fill the present role of the existing  value_types and error_types template template type aliases.
I really like this suggestion, and see only one downside: it would force the eager computation of a typed sender's value/error types.
I'll note that Peter's suggestion permits short forms that omit "overloads" when there is only one signature.
We could even employ function types here, which would even give us a way to specify that a particular overload of set_value is noexcept:
struct my_typed_sender {
  using value_types = signatures<void(Ts...) noexcept, void(Us...)>;
  using error_types = signatures<void(E)>; // Implicitly noexcept like a destructor
//....
};

My preference is to have something uniform to replace the existing traits. I do not like having three different ways to describe the same thing.
This godbolt shows the approach I would prefer.
https://godbolt.org/z/Ee796Mq7q

My preference is to have something uniform to replace the existing traits. I do not like having three different ways to describe the same thing. [...]

I have thought about this suggestion and I have some concerns. The biggest of which is that it seems to increase the amount of metaprogramming that sender authors must do, whereas I'm trying to reduce it. As for your "three different ways to do the same thing", you don't disagree that having three separate receiver channels for value, error, and done is the right design. Why should it be the wrong design for the sender's metadata?
Many senders adaptors fiddle with only one or two of the channels. Putting all the metadata into a single alias would require users to write a metaprogram to filter and transform out only the bits they want to. There is no longer a simple way for a sender adaptor to delegate some of its metadata to its inner sender. By keeping the channels separate, a then sender, for example, could simply declare its error_types and sends_done as:
using error_types = typename sender_traits<Pred>::error_types;
static constexpr bool sends_done = sender_traits<Pred>::sends_done;

It would also simplify the computation of the then sender's value_types since it wouldn't have to worry about filtering out signals its not interested in.
The sender metadata is easily the ugliest, most complex part of P2300. My primary goal is to make it approachable. I don't think putting all the metadata into one flat list is actually a simplification.

From my point of view, both the current state and the proposal are way out of scope even for advanced developers. The complexity that is required to do simple things is quite staggeFrom my point of view, both the current state and the proposal are way out of scope even for advanced developers. The complexity that is required to do simple things is quite staggering. It should be easy to do the simple thing and possible to do the complex one. From that I believe the baseline should be
struct mySender {
    using value_types = int;
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int) { ... }
}

As @ericniebler suggested this would simply propagate via
using error_types = typename sender_traits<Pred>::error_types;
static constexpr bool sends_done = sender_traits<Pred>::sends_done;

This is a clean and simple design for simple use cases. So what about a set_value that takes multiple arguments
struct mySender {
    using value_types = args<int, double>
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
}

Similarly, a multichannel set_value could look like
struct mySender {
    using value_types = overloads<args<int, double>, args<string>>
    using error_types = overloads<E1, E2>;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
    friend constexpr auto tag_invoke(execution::set_value_t, string) { ... }
}

Now the obvious issue is how to discriminate the three different cases, set_value(args<int, double>) should probably be valid after all. My proposal would be to add some traits like enable_borrowed_range (I would be super happy if someone would come up with better names)
template<class T>
static inline constexpr multi_argument_set_value = false;

template<class T>
static inline constexpr overloaded_set_value = false;

With that one could write
struct mySimpleSender {
    using value_types = int;
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int) { ... }
}

struct myMultiArgSender {
    using value_types = args<int, double>;
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
}

template<>
static inline constexpr multi_argument_set_value<myMultiArgSender> = true;

struct myOverloadedSender {
    using value_types = overloads<args<int, double>, args<string>>;
    using error_types = overloads<E1, E2>;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
    friend constexpr auto tag_invoke(execution::set_value_t, string) { ... }
}

template<>
static inline constexpr overloaded_set_value<myOverloadedSender > = true;

We could then use sender_traits to discriminate those cases and also handle the sender_base and no_sender cases. Finally, an algorithm like then could take those traits and filter out what he needs to know and propagate them properlyring. From my point of view it should be easy to do the simple thing and possible to do the complex one.
From that I believe the baseline should be
struct mySender {
    using value_types = int;
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int) { ... }
}

As @ericniebler suggested this would simply propagate via
using error_types = typename sender_traits<Pred>::error_types;
static constexpr bool sends_done = sender_traits<Pred>::sends_done;

This is a clean and simple design for simple use cases.
So what about a set_value that takes multiple arguments
struct mySender {
    using value_types = args<int, double>
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
}

Similarly, a multichannel set_value could look like
struct mySender {
    using value_types = overloads<args<int, double>, args<string>>
    using error_types = overloads<E1, E2>;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
    friend constexpr auto tag_invoke(execution::set_value_t, string) { ... }
}

Now the obvious issue is how to discriminate the three different cases, set_value(args<int, double>) should probably be valid after all. My proposal would be to add some traits like enable_borrowed_range (I would be super happy if someone would come up with better names)
template<class T>
static inline constexpr multi_argument_set_value = false;

template<class T>
static inline constexpr overloaded_set_value = false;

With that one could write
struct mySimpleSender {
    using value_types = int;
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int) { ... }
}

struct myMultiArgSender {
    using value_types = args<int, double>;
    using error_types = E;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
}

template<>
static inline constexpr multi_argument_set_value<myMultiArgSender> = true;

struct myOverloadedSender {
    using value_types = overloads<args<int, double>, args<string>>;
    using error_types = overloads<E1, E2>;
    static inline constexpr bool sets_done = true;

    friend constexpr auto tag_invoke(execution::set_value_t, int, double) { ... }
    friend constexpr auto tag_invoke(execution::set_value_t, string) { ... }
}

template<>
static inline constexpr overloaded_set_value<myOverloadedSender > = true;

We could then use sender_traits to discriminate those cases and also handle the sender_base and no_sender cases. Finally, an algorithm like then could take those traits and filter out what he needs to know and propagate them properly

Having the aliases be of different categories may simplify life for authors of sender factories, but I am expecting that this would make it much harder for authors of sender adaptors, since they would need to deal with all of this complexity every time, instead of simply consuming a canonical form of a given alias uniformly.
I would expect that there would be far more authors of sender adaptors than authors of sender factories. Does anybody disagree with this expectation? If not, then we should optimize for authors of adaptors, not for authors of factories.

I am expecting that this would make it much harder for authors of sender adaptors

I seriously doubt that. Here's an exercise: Show me what the metadata for the then sender would look like using Kirk's approach. Then we can discuss relative complexity.

I don't know about Kirk's approach; I was commenting on @miscco's comment, in case that wasn't clear. What then would need to do would be approximately this (I'm omitting doing nice things like removing duplicates from the type list here):
struct compute_overloaded {
    using type = invoke_result_t<F, adapted_sender::value_types>;
};

struct compute_multivalue {
    template<typename ...Args>
    using rebinder = invoke_result_t<F, Args...>;

    using type = rebind<adapted_sender::value_types, rebinder>;
};

struct compute_overloaded {
    template<typename ...Args>
    using rebinder2 = args<invoke_result_t<F, Args...>>;

    template<typename ...Args>
    using rebinder1 = overloads<rebind<Args, rebinder2>...>;

    using type = rebind<adapted_sender::value_types, rebinder1>;
};

using value_types = conditional_t<overloaded_set_value<adapted_sender>,
    compute_overloaded,
    conditional_t<multi_argument_set_value<adapted_sender>,
        compute_multivalue,
        compute_single_value
    >
>::type;

and I'm not sure if this is sufficiently lazy to work - whereas if value_types is required to always follow the same structure, it turns into approximately the following (assuming we go with something like the original comment on this issue suggests):
template<typename ...Args>
using rebinder2 = invoke_result_t<F, Args...>;

template<typename ...Args>
using rebinder1 = overloads<rebind<Args, rebinder2>...>;

using value_types = rebind<adapted_sender::value_types, rebinder1>;

This is significantly shorter and easier to follow. I also agree that it's much simpler than what the paper currently requires, even though the instantiations of rebind are going to be more expensive than just following alias templates, which is what the paper at the moment allows you to do.
I am somewhat okay with what you originally proposed here, Eric. I'm much less okay with allowing value_types to have shapes different than a single canonical one.

Ah ok, I misunderstood your objection. Reading @miscco's comment, I had assumed that users could only use the short form as nested aliases within the sender itself, and that sender_traits would normalize it all into a single canonical form for value_types and error_types.

Ah. I see. I missed that. Yes, that would probably be viable.

Yeah, my point was that we should move the complexity from the user definition of a sender into whatever sender_traits distills from it. Thinking about it a bit more, I believe we could get around all those issues, by providing overloads and args as proper facilities to the user.
That way it would be unambiguous whether somebody defines using value_types = int or using value_types = args<int> or using value_types = overloads<args<int>>
Inside sender_traits we would then only have to check for the existence of value_types and could more easily do the filtering of the "right" channel.
We would also avoid a lot of the throughput issues that come with those heavily nested types, as the most common case will be single argument channels

BTW I cannot really give any insights whether it would be better / feasible as I have not yet started implementing sender adaptors / factories. That is the next item on the list

...it seems to increase the amount of metaprogramming that sender authors must do, whereas I'm trying to reduce it.

I do not think so, and I am also trying to reduce it. The current state is awful IMO.
The list of signatures is a representation that is independent of how we program values/errors/done transformations.

...having three separate receiver channels for value, error, and done is the right design. Why should it be the wrong design for the sender's metadata?

because they are not uniform and they do not express all that needs to be expressed.
Variant<Tuple<>> is worse than void(set_value_t, this_&&)
Variant<> is worse than expected_set_value_signatures_t<asender>::size == 0
Variant<> is worse than expected_set_error_signatures_t<asender>::size == 0
These can be resolved with helpers like the ones I have added to the godbolt.
Variant<> means different things when it is the result of error_types and value_types.
This one is harder to resolve. we always have to keep the name of the alias that produced the type to know what the type means.
void(set_value_t, this_&&) noexcept cannot be expressed
void(tag_t<get_scheduler>, const this_&) noexcept cannot be expressed
In order to add additional signals (like when we were planning to add next) would require a new member altogether. That is not so with a list of signatures.
I added more tools and added an example of migrating then() from current to new
https://godbolt.org/z/1xzT5d3Mx
This will define the traits for a sender of int that can produce error_code and exception_ptr and will expect the receiver to support three queries.
  signatures_from_t<
    set_value_for<int>,
    set_error_for<std::error_code, std::exception_ptr>,
    set_done_if<true>,
    queries_for<get_time_scheduler_t, tag_t<get_scheduler>, tag_t<get_stop_token>>
    >
  expected_signatures() const noexcept;

  signatures_from_t<
    set_value_for<int>,
    set_error_for<std::error_code, std::exception_ptr>,
    set_done_if<true>,
    queries_for<get_time_scheduler_t, tag_t<get_scheduler>, tag_t<get_stop_token>>
    >
  expected_signatures() const noexcept;

This is how then() would specify the traits. I am not happy with transform yet, I want it to be more general.
  signatures_from_t<
    typename transform_arguments_expected_set_value_signatures_t<Predecessor, result_t::template fn>::type,
    // apply all cpos not replaced by transform
    typename remove_expected_set_value_signatures_t<Predecessor>::type,
    // merge in locally expected queries
    typename queries::type>
  expected_signatures() const noexcept;

I am happier with transform_.. now and I added more stuff and refined more stuff
https://godbolt.org/z/e8dedGraY

We could even employ function types here, which would even give us a way to specify that a particular overload of set_value is noexcept

Would that imply that such noexcept sender would reject to connect to set_value((Rec&&) rec) noexcept(false) ?

Would that imply that such noexcept sender would reject to connect to a Rec receiver which provides potentially-throwing set_value((Rec&&) rec) noexcept(false) ?

Yes, that is a valid constraint when a sender declares that it expects noexcept.

I have a proposed design up in PR #326, and a follow-on PR that extends this in the direction of dependently-typed senders in PR #320. The idea is to use a pack of function signatures to specify a sender's typed:
namespace ex = std::execution;
using _traits = ex::receiver_signatures<
  ex::set_value_t(vals1...),
  ex::set_value_t(vals2...),
  ex::set_error_t(err),
  ex::set_done_t()>;

struct my_overloaded_sender : _traits {
  ....

I'm curious if this is a sufficiently simple interface.


Remove NetStandard 1.x

Parent: #1160
Net framework compatibility: https://docs.microsoft.com/en-us/dotnet/standard/net-standard
Note that all Test projects should target NetCore2.1 and NetCore3.1. #1769
Remove

NetStandard 1.1
NetStandard 1.3
NetStandard 1.6

Replace With

NetStandard 2.0
NetStandard 2.1

Affected Projects (11 of 17)

BASE

Microsoft.ApplicationInsights
ServerTelemetryChannel

WEB

DependencyCollector
PerformanceCollector
WindowsServer

LOGGING

DiagnosticSourceListener
EventSourceListener
Log4NetAppender
NLogTarget
TraceListener

NETCORE

Microsoft.ApplicationInsights.AspNetCore

Affected Builds

Gated build (ADO)
Linux builds (yml)

Action Plan

First, remove TargetFrameworks from Product. This immediately stops compiling the NetStandard 1.x Done
Second, remove TargetFrameworks from Tests.  Done
Third, cleanup code. Remove preprocessors and delete code forks. It's important to do this one project at a time so we can thoroughly review. (this can be done at any time by anyone on the team)

PerformanceCollector is fractured into 6 different shared projects. (NetFull, NetStandard, NetStandard.Stubs, NetStandard16.Stubs, NetStandard20, NetStandard20Net45). After deleting NetStandard1.x, this needs to be refactored into only 2 shared projects (Perf.Shared.NetFull, Perf.Shared.NetStandard).

Risks

I noticed right away that some projects currently ONLY compile to netstandard 1.x.

@eddynaka, i merged your first PR.
When you start working again, please work on PerformanceCollector by itself so we can thoroughly review.
Thanks :)

@eddynaka Next, can you remove the #IF NETCOREAPP1 code branches? These are mostly in our test classes

Sure!


KeyError: 'requestPath' when used with API Gateway

After upgrading to 2.0 I started getting these errors:
[ERROR] KeyError: 'requestPath'
Traceback (most recent call last):
  File "/var/task/wsgi_handler.py", line 106, in handler
    return serverless_wsgi.handle_request(wsgi_app, event, context)
  File "/var/task/serverless_wsgi.py", line 173, in handle_request
    return handle_lambda_integration(app, event, context)
  File "/var/task/serverless_wsgi.py", line 295, in handle_lambda_integration
    path_info = event["requestPath"]

The docs for API Gateway Lambda integration doesn't mention requestPath anywhere: https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway.html
Can this be related to changes in this condition? https://github.com/logandk/serverless-wsgi/commit/d7a6ca146f51dba67436ad684ee11f164d59e808#diff-73eb20b9aafd70929ffc3487ee8a7cff8dedce9a6dc588e2cef517137836a82cL171
My serverless.yaml file:
service: xxx

plugins:
  - serverless-python-requirements
  - serverless-wsgi
  - serverless-domain-manager
  - serverless-api-gateway-throttling
  - serverless-apigw-binary
custom:
  stage: ${opt:stage}
  wsgi:
    app: api.app
    packRequirements: false
    pythonBin: python3
  pythonRequirements:
    zip: true
    pythonBin: python3
  domains:
    prod: xxx
  customDomain:
    domainName: ${self:custom.domains.${opt:stage}}
    basePath: ''
    stage: ${self:provider.stage}
    createRoute53Record: true
  apiGatewayThrottling:
    maxRequestsPerSecond: 5
    maxConcurrentRequests: 10
  apigwBinary:
    types:
      - 'text/plain'
      - 'application/x-ndjson'
      - 'application/x-jsonlines'

# exclude packages from the build before sending to AWS
package:
  exclude:
    - node_modules/**
    - venv/**
    - .pytest_cache/**
    - .serverless/**
    - tests/**

provider:
  name: aws
  runtime: python3.8
  region: us-east-2
  environment:
    ENV: ${self:custom.stage}

functions:
  app:
    handler: wsgi_handler.handler
    events:
      - http: ANY /
      - http: 'ANY /{proxy+}'

We're having the same problem here..
We deployed our API yesterday and we had no problems, but when we did it today around 3 hours after you commented we had exactly the same message

It's from #184 and #185 which was merged for the 2.0.0 release. I'll revert and release 2.0.1.

Thank you, man!
The released fixed our bug!


Use database transaction for input/output validation to get rid of ConflictFilter

Previously we needed to check if an epoch contained conflicting transactions since we couldn't read from a database batch. When using DB transactions, from which we can read, that's not necessary anymore. This helps with modularization.

Codecov Report
Base: 63.78% // Head: 63.62% // Decreases project coverage by -0.15% :warning:

Coverage data is based on head (32f2400) compared to base (d7df5a7).
Patch coverage: 90.39% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #961      +/-   ##
==========================================
- Coverage   63.78%   63.62%   -0.16%
==========================================
  Files         117      116       -1
  Lines       16839    16780      -59
==========================================
- Hits        10740    10676      -64
- Misses       6099     6104       +5

Impacted Files
Coverage Δ

fedimint-api/src/core/server.rs
0.00% <0.00%> (ø)

fedimint-api/src/module/mod.rs
94.73% <ø> (ø)

fedimint-testing/src/lib.rs
91.97% <61.53%> (-0.33%)
:arrow_down:

modules/fedimint-mint/src/lib.rs
82.63% <93.93%> (-0.17%)
:arrow_down:

modules/fedimint-ln/src/lib.rs
85.23% <98.00%> (-0.33%)
:arrow_down:

client/client-lib/src/ln/mod.rs
69.73% <100.00%> (ø)

client/client-lib/src/wallet/mod.rs
73.61% <100.00%> (ø)

fedimint-api/src/module/audit.rs
100.00% <100.00%> (ø)

fedimint-server/src/consensus/mod.rs
92.41% <100.00%> (+1.92%)
:arrow_up:

modules/fedimint-wallet/src/lib.rs
86.82% <100.00%> (+0.18%)
:arrow_up:

... and 7 more

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

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

What is the rule of thumb for determining if a read operation is consensus critical or not?

closed by #965


Freeing memory held by visible entities vector

Freeing unused memory held by visible entities
Fixed comment style

Objective
With Rust 1.56 it's possible to shrink vectors to a specified capacity. Visibility system had a comment before asking for that feature to free unused memory by a vector if its capacity is two times larger than the length.
Solution
Shrinking the vector of visible entities to the nearest power of 2 elements next to len(), if capacity exceeds it more than two times.

Sure, will do.

@alice-i-cecile, rebased and updated the code.

@superdump @james7132 @DJMcNab, I'd like your opinions on this at some point.

Ideally, the solution shall be like in databases to avoid shrinking memory and do relocation to often. I guess, at least it should happen once per 30 seconds or in N frames. The best solution is to collect statistics on usage and if there are spikes, do nothing.

@DJMcNab the systems in question are in the main app schedule I think. The checking of visibility is done in the main app before extraction.

Ah yes, of course. Sorry.

@superdump, @cart, can it be merged?

I'm not fully convinced that this is the best place to do this cleanup, but this is a nice incremental improvement that fixes the TODO.
bors r+


Update to new size-of version

hm I realize we include it like this in our Cargo.toml file ijson = { git = "https://github.com/abhizer/ijson.git" }  so if we merge this we'll break compilation of all future versions. Maybe can you relase this on crates.io so we can version it? or we make a separate branch here and make sure to reference this one with a revision in https://github.com/feldera/feldera/pull/2107 then we just need to make sure we don't change master anymore here


Is it possible to create Interface for both elastic2 and elastic7 ?

Please use the following questions as a guideline to help me answer
your issue/question without further inquiry. Thank you.
Which version of Elastic are you using?
[x] elastic.v7 (for Elasticsearch 7.x)
[ ] elastic.v6 (for Elasticsearch 6.x)
[ ] elastic.v5 (for Elasticsearch 5.x)
[x] elastic.v3 (for Elasticsearch 2.x)
[ ] elastic.v2 (for Elasticsearch 1.x)
Please describe the expected behavior
I want to create an interface for switching between Elasticsearch 2.4 and Elasticsearch 7.5
Please describe the actual behavior
Your elastic package is amazing! I loved it so easy to use. I thought to come up with an idea to create an interface for the Elasticsearch so that I can manage between two versions. I'm using ES 2.4 and introducing ES 7.5. I wanted it like when ES 2.4 is down, I can switch to ES 7.5 and vice versa.  I'm not able to define proper return types using your elastic7 and elastic2 packages. There is a lot of restrictions. I wanted to know, is it possible to define interface pattern using your packages?
type SearchManagerFactory struct {
	Client: <what kind of type to mention>

	// because if I define data type *elastic2.Client, it will always call Elasticsearch 2.4
	// and if I define data type *elastic7.Client, it will always call Elasticsearch 7.5

	// is it possible to create interface?
}

// method
func (smf SearchManagerFactory) GetSearchManager(version int) < what return type to mention > { ... }

ESVersion := viper.GetString("elasticsearch.version")

SearchManager = SearchManagerFactory.GetSearchManager(ESVersion)

// Based on ES version, SearchManager will call methods from either *elastic2.Client or *elastic7.Client everywhere in the project.

// For example:
// putMappingService := SearchManager.NewIndicesPutMappingService()

// return type would be either *elastic2.NewIndicesPutMappingService or *elastic7.NewIndicesPutMappingService

I have added Go Playground link for more clarity and detailed code. It would be great if you can help me out with your go-elastic package.
Any steps to reproduce the behavior?
Go Playground - https://play.golang.org/p/AqJJNK1kH6l

Here's one way of doing that: https://github.com/olivere/esdiff/tree/master/elastic.

@olivere But is it possible to do it with ES 2.4 since, it has docType params for methods ? I know ES 2.4 is bit old and ES 7.5 methods does not have docType
It would be great if you can explain a bit in detail.

This library is not special. It's just like any other library that comes with 2 different, slightly incompatible versions, and you're trying to make it work across different versions.
If you can define a contract/an interface that works for both use cases, you're ready to go. If one doesn't accept a type, then simply ignore it. Simply create the library you want at startup time, e.g. in main.go, and then work against the interface/contract in the rest of the application.
package main

import (
  "yourapp.com/elastic"     // defines an interface that works for both v2 and v5
  "yourapp.com/elastic/v2"  // defines a v2.Client that implements elastic.Client
  "yourapp.com/elastic/v5"  // defines a v5.Client that implements elastic.Client
)

func main() {
  ...
  var client elastic.Client

  // Outside of this block, you will always use "client elastic.Client", the generic interface
  {
    if <want-version-2> {
      client = v2.NewClient(...)
    } else if <want-version-5> {
      client = v5.NewClient(...)
    } else {
      <fail>
    }
  }

  svc := service.New(client) // pass interface as dependency
  ...
}


fix: remove blank pages not handling EXIT_FAILURE code properly

Description
Closes #729
License Agreement for Contributions
By submitting this pull request, I acknowledge and agree that my contributions will be included in Stirling-PDF and that they can be relicensed in the future under MPL 2.0 (Mozilla Public License Version 2.0) license.
(This does not change the general open-source nature of Stirling-PDF, simply moving from one license to another license)

Tested using BROKEN.pdf from #729 with threshold=15 and percent=95.


Investigate Timeout Responses

Maldives, Cocos Islands and likely others do not generate zones or even parameters/boundaries for any selection of RE (offshore, onshore, solar)

This is caused mainly because there is no entry of the AOI in rezoning_api/db/countries.geojson for Cocos Islands. It could potentially be a matter of just adding a gemetry to that file or something else

Partially addressed by https://github.com/worldbank/WB-rezoning-explorer/pull/3 for some countries.
Some countries (like Cocos Islands) cause internal server error that is caused by the AOI of the country not existing inside rezoning_api/db/countries.geojson .

I am not sure what the conclusion/ solution is for this ticket -> all the countries above still don't generate any results, can you explain what has been done to address this?

US and Russia were some of the countries that used to generate a timeout response but they currently generate outputs without crashing the site

Timeout Response issue no longer occurring for initial countries, Russia, U.S or random selection of test countries with diferent sizes and parameters, closing ticket.


Add methods to randomly select names and builders from Report class

@Xiangs18 i just added a few methods that may help you select random test names or builder names when implementing https://github.com/buildtesters/buildtest/pull/1121


[DNM yet] [NP-1614] Add MinMaxCapability

Putting this up so parts can be reviewed a head of time. I need to discuss part of it with Ruby to figure out the missing piece (dealing with chained UCJ checks for agent junctions)

This is... missing stuff? I lost some code. Trying to find it now.


Feature: Add a section for Key Metrics Guide

Suggested solution
We have some Concepts at OpenSauced that I think are valuable but are getting lost in the other docs.
I would like to see a section for that called Key Metrics Guide.
It should include things like:

OSCR
Contributor Confidence
OpenSSF Score
Lottery Factor
Repositories as a Dataset

It doesn't need to be as thorough as Understanding Repo Insights Data, but this is a decent enough example to show that with the section, users can 1. Understand what those concepts mean and 2. Understand why they're useful.
It should go a little deeper than the glossary. Maybe be linked in the glossary, even.

@FatumaA

.take

Hi Bekah!
I will get to this in the next couple of days.
I did look at it and was going to put it under "Getting Started." Is that okay, or should it be in its own section right below the "contributing guide" section?

@FatumaA, you can put it under Getting Started. I like that idea.


Add uuid

Build uuid

:beers: @BrewTestBot has triggered a merge.

:warning: @shivammathur bottle publish failed.

:beers: @BrewTestBot has triggered a merge.

:warning: @shivammathur bottle publish failed.

:beers: @BrewTestBot has triggered a merge.


Use editor debugger

It's a bit vague to me. What exactly do you want to achieve with this ticket?

This ticket aims to take tries new debugging methods except for console log-out, such as editor debugger or browser debuggers.  Ashamed to confess that I do not know how to utilize other debuggers enough, even in the backend development.
The output will be in documentation or on the README or could be recorded.

I don't need to be ashamed! Using an editor/browser debugger takes some practice to compare to a console debug, and sometimes even it's faster/better to do console debugging sometimes. editor/browser debugger > console debugging is really the case all the time


Setting system

I need a setting system to make users can customize their questions, and make the program “memorize” them by using localStorage.
So I need:

[x] Setting component
[x] localStorage system support

These are the items:

[x] #7
[x] Generate questions when the program begins
[x] Default category
[x] Default quantity
[x] Default parameters for each category

Resolved in v0.2.1


Introduce an easy to configure read only sparql interface for public endpoints

The workbench is great for read/write access and using lot's of the different capabilities of the RDF4J framework.
However, sometimes people want to just expose the SPARQL read only API on the public web.
RDF4J does not yet have an easy to setup solution for this.

This introduces new dependencies for spring boot version 2.4.3. We'll need to check if one or more CQs are necessary to cover these.

We're in the clear, CQ-wise (see PR for details).

Awesome work @JervenBolleman , thanks!


Fix dark and sepia theming on articles which contain color swatches and sports uniforms

https://phabricator.wikimedia.org/T173449
enwiki > Pantone
Before

After

enwiki > Manchester United F.C.
Before

After

@niedzielski The commits I just added changed things around a bit. Probably needs a re-review :)

@niedzielski thanks for the CR! i'll digest it tomorrow :)

@niedzielski I think I addressed all of the issues we'd identified.


Vote counter does not seem to reset each day.

Brief users on how voting works, when the vote counter resets, etc.
Make sure voting and removing votes works seamlessly.

Closed with 4.0 release


Add support for .NET MAUI

The support of Xamarin will end in May 2024. Packages targeting only Xamarin.Android or Xamarin.iOS will no longer work with MAUI. This library needs to be migrated to MAUI to continue using Adobe products in our app. Please let us know your plans on migrating this library to MAUI.

Hey @ChristopherStephan. Support for Xamarin has been dropped for a while. If anything changes, we will be sure to let you know on this ticket. For now i will be closing it.


SW-5871 Remove communities from project profile

Remove the "number of communities within project area" field from the project
profile in the accelerator console.

#3055  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @sgrimm and the rest of your teammates on  Graphite


[Feature]: Implement Widget Archiving Functionality

Is there an existing issue for this?

[X] I have searched the existing issues

Summary
Introduce a new feature that allows users to archive widgets. Archived widgets will be hidden from the main canvas but stored in memory for potential later reuse. This feature will include a new section for archived widgets in the left editor side pane for management, and a dedicated archiving button in the property pane, next to existing buttons like Copy and Delete. If possible, @ARibeiro3110 and I would like to work on this feature.
Why should this be worked on?
Archiving widgets enhances the flexibility and usability of the canvas, allowing users to declutter their workspace without permanently losing their configurations.

@LuisVicenteCorreia I'm not exactly clear on the problem you are trying to solve here with this feature. If it's to reuse widgets, we are already working on this functionality here #5229


Decide initial strategy for supporting web

Current plan is to use react-native-web in the short term to  allow us to focus on building out initial native functionality. This decision will be continually evaluated as we build out initial native components in order to assess viability.
We can use this issue to track findings.

Closing for now as react-native-web is implemented. We can reopen as needed.


New sample - React application customizer - My Favourites

Q
A

Bug fix?
no

New feature?
no

New sample?
yes

Related issues?
NA

What's in this Pull Request?
This sample shows the usage of favourites (favourite links) in a site. A user can add, edit and delete favourites. In simple words, browser bookmarks within a SharePoint site.
Sharing is caring.

 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.:x: anoopt sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Really cool stuff, thx for the submission. This is a great demo of a quite typical request from the customers.

@VesaJuvonen Thank you.


Gdansk University of Technology

University Website: https://pg.edu.pl

@Uladzisluk I am sorry, the domain pg.edu.pl is removed from our trusted domains list because the school allows to register an email address there even if you are not a student of the school. If you are the student of this school, please apply with official document (OFFICIAL DOCUMENT tab at https://www.jetbrains.com/shop/eform/students).


Prefetching tags does not seem to work.

Prefetching tags does not seem to work.
I have a ClusterTaggableManager called "categories" in one of my pages.
Doing something like:
MyPage.objects.all().prefetch_related('categories') throws an exception:
TypeError
get_query_set() takes 1 positional argument but 2 were given

I believe this is supported using the plain TaggableManager in django-taggit.

Could you provide more traceback? Also, could you let us know what versions of the following packages you have installed:

Wagtail
Django
django-modelcluster
django-taggit

Closing due to lack of update - please reopen if you can provide the requested info.


Add ritikaarora1012's file

created a branch, created a file and made a commit, and opened a pull request

First Merge


Allow setting alpha value for ignorezero layer rule

Describe your PR, what does it fix/add?

This PR allows setting an alpha value for layer surface blur ignoring, instead of only ignoring fully transparent pixels
Why? Because it helps reduce weird glowing anti-aliased pixels of rounded elements (in waybar/eww/etc.)
How? layerrule = ignorealpha, NAMESPACE. Both "ignorealpha" and "ignorezero" work.

Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)

This feature works when configured correctly, but no logging is made when an invalid value (not a float) is given to the rule

Is it ready for merging, or does it need work?

It's okay if the above does not need logging. Else, it'd be nice if someone could tell me how to do that (I've tried Debug::log, but the log message doesn't seem to show up for me)

make a wiki mr plox

here's what should be changed in the Window-Rules section
Change
| ignorezero | makes blur ignore fully transparent pixels of the layer |

to
| ignorealpha \[a\] | makes blur ignore pixels with opacity of `a` or lower. `a` is a float value from 0 to 1. `a` is `0` if unspecified |
| ignorezero | same as `ignorealpha`. Available only to not break configs with this rule already set. |

yes, pr

okay rebased


Can't insert null values PSQL

Hey!
This project is great and I use it a lot for my database.
The only issues I'm having are that I cannot pass in null values, e.g.:
http://<IP_ADDRESS>:8282/mgl/create_new_rand_forest_value?class_id=50&specimen_id=167891&value=0.3564&control_study_fish=false&project_id=51&random_forest_specimen_name=
That last value "random_forest_specimen_name" is passed in as an empty string and in PSQL it is no longer null. This should be passed in as a null.
Here is the PATCH in the json:
    "create_new_rand_forest_value": {
      "database": "mgl",
      "sql": "INSERT INTO mgl_rand_forest_biomarker.data_random_forest_values(class_id,specimen_id,value,control_study_fish,project_id,random_forest_specimen_name) VALUES(?class_id?,?specimen_id?,?value?,?control_study_fish?,?project_id?,?random_forest_specimen_name?);",
      "public_exec": true
    },

I know I can create a second PATCH function and omit the "random_forest_specimen_name", however this will end up being hard to manage for many tables.
Am I missing something?
Thank you!

Can you try to make the parameters in a json as the patch payload, instead of putting them in the url?

I should be able to do that and I'll let you know. However, does this mean that it is to be assumed that all URLs shouldn't be used in case they have a null value?

For now there is no way to pass null from the url, unless we define some escape sequences. Do you want me to add it?

If you'd be willing to! It would make the project more complete.
It's your project of course, so it's up to you.
Thank you


feat(frontend): Explicit numeric generics

Description
Problem*
Resolves #4633, but only in the elaborator as we will be moving to this new infrastructure for the frontend soon and resolving edge cases across both the old resolver and the elaborator was becoming a time sink.
Summary*
We now have an UnresolvedGeneric type rather than simply representing generics using idents.
pub enum UnresolvedGeneric {
    Variable(Ident),
    Numeric { ident: Ident, typ: UnresolvedType },
}

We also have a new ResolvedGeneric struct when storing generics during resolution and elaboration. We were previously storing a tuple of three elements, but now that I need to distinguish when we have a numeric generic it was simpler to make this a struct.
Some example usage:
// Used as a field of a struct
struct Foo<let N: u64> {
    inner: [u64; N],
}
fn baz<let N: u64>() -> Foo<N> {
    Foo { inner: [1; N] }
}
// Used in an impl
impl<let N: u64> Foo<N> {
    fn bar(self) -> u64 {
        N * self.inner[0]
    }
}

More examples can be found in numeric_generics and documentation will come in a follow-up.
We make sure to error out when an explicit numeric generic is used as a type.
For example, this code:
struct Trash<let N: u64> {
    a: Field,
    b: N,
}
fn id_two<let I: Field>(x: I) -> I {
    x
}

Additional Context
We do not ban the old strategy for implicit numeric generics just yet as a lot of code uses it. Currently this warning is issued:

Documentation*
Check one:

[ ] No documentation needed.
[ ] Documentation included in this PR.
[X] [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

[X] I have tested the changes locally.
[X] I have formatted the changes with Prettier and/or cargo fmt on default settings.

Will do this in a follow-up (https://github.com/noir-lang/noir/issues/5157)

TODO: Need to fix the formatter

This is ready for review again @jfecher @michaeljklein

I don't think we should let the stdlib produce warnings - I'd rather add explicit numeric generics to the couple of types that require it. Are we avoiding changing the stdlib for backwards compat with the legacy code?

I was making a follow-up as to avoid cluttering this PR as well as maintaining backwards compat with the legacy code. I can also just update the stdlib in this PR as well.

I was making a follow-up as to avoid cluttering this PR as well as maintaining backwards compat with the legacy code. I can also just update the stdlib in this PR as well.

The follow-up updating the stdlib can be found here (https://github.com/noir-lang/noir/pull/5306). The changes are actually pretty small so I'm good with merging that PR once this one is master or just merging it into this one right away.

Found one last bug with turbofish generics that will be resolved shortly

Found one last bug with turbofish generics that will be resolved shortly

Fixed, should be ready again @jfecher

Looks like this PR is breaking as https://github.com/zac-williamson/noir-bignum now fails to compile: https://github.com/noir-lang/noir/actions/runs/9742040438/job/26882610051?pr=5355
error: expected type, found numeric generic parameter N
    ┌─ /home/runner/work/noir/noir/test-repo/src/bignum_test.nr:208:21
    │
208 │     let t1: U60Repr<N, 2> = U60Repr::from(modulus);
    │                     - not a type
    │


Update test bot

Big consistency fix on bot test
Update packages
Formatting to have a readability on the code cleaner

Big consistency fix on bot test
Update packages
Formatting to have a readability on the code cleaner

I haven’t done the client code yet, I’ll do it later, it’s much longer to do

It looks like you used Biome lol. Tomato said I won't use Biome. And he said I take care of package updates himself.
Sorry, my English is verry bad.

It looks like you used Biome. Tomato said he won't use Biome. And he said he take care of package updates himself. Sorry, my English is verry bad.

Biom was not used I forgot to remove it compared to the other pr I had done

Since i'm from the DACH Region, i use " and not ' :)

I think 8 spaces for spacing is too much

All you did is run some sort of prettier over the project, right?

I think 8 spaces for spacing is too much

Je peut réduire si tu veux c'est pas un soucis

All you did is run some sort of prettier over the project, right?

No, there are fixes and corrections but they are not all visible as there is formatting


MongoDB integration

Is your feature request related to a problem? Please describe.
Save to/load from mongoDB.
Describe the solution you'd like
MongoDB persister. See the following for an example: https://github.com/DAGWorks-Inc/burr/blob/26cfcd272a26c58e88c6ec84b18682b8ad87a9bd/burr/integrations/persisters/b_redis.py#L19
Describe alternatives you've considered
Additional context
Add any other context or screenshots about the feature request here.

Hi @elijahbenizzy,
I wanted to let you know that I am new to contributing to open source projects, and this is my first attempt at adding a feature. I have implemented the MongoDB persister as discussed in issue #208. I would appreciate any feedback or guidance you can provide to help me improve my contribution.
Thank you for your understanding and support!
Best regards,
Nandani.

Hi @elijahbenizzy,
I wanted to let you know that I am new to contributing to open source projects, and this is my first attempt at adding a feature. I have implemented the MongoDB persister as discussed in issue #208. I would appreciate any feedback or guidance you can provide to help me improve my contribution.
Thank you for your understanding and support!
Best regards, Nandani.

Excellent thanks -- I left comments. This is great, it'll also force us to add tests for the other persisters so thanks for doing this!


Feat rc content block spec

NOTE: Wait to review #64 first.
Refactor the content blocks into the specification.  The forms are not yet refactored into the component folders, but the rest of the stuff is.
Color swatch types have been added.

Please wait until later today to merge.  There are a few stability issues that I need to work out today.

Going to merge this.


What is the output of run_lsh.py?

I was going over the code and ran it to dedupe 2 shards.
The output parquet files has much less rows than the input min-hashes files (e.g. 26k -> 300). What are these?
It doesn't look like these are just the duplicates within/across the 2 shards, as some cluster_ids occurred uniquely over the 2 shard-clusters that LSH script output.

Hi,I have run this scripts , i don't get the .jsonl files as i expected, i want to ask your result after processing.Is the output data stored somewhere else?

The clusters are stored in .clusters.parquet files.

Is the output data stored somewhere else?

The clusters are stored in .clusters.parquet files.

I know that. I want to know the location of the text data after fuzzy-deduplicating.I don't see the clear result yet.

I want to know the location of the text data after fuzzy-deduplicating

I think the expected use is to filter out those duplicate doc IDs from the original set.

I want to know the location of the text data after fuzzy-deduplicating

I think the expected use is to filter out those duplicate doc IDs from the original set.

so i need extra coding to get the deduplicated text data, how do you move forward you data-cleaning after running this scripts?

The files output by this script contain IDs of docs that are part of some cluster. So ignore these docs (except when doc ID == cluster ID, so you retain one doc per cluster).

The files output by this script contain IDs of docs that are part of some cluster. So ignore these docs (except when doc ID == cluster ID, so you retain one doc per cluster).
this is exactly right -- once you ran the lsh step, you end up with files that contain the cluster ids. You can then use those to retain only one sample from each cluster. One way is to just keep the document with doc ID == cluster ID, but you can in principle also retain a document which has e.g., best quality and use the quality signals in RPv2 to select the best document within each cluster.

The files output by this script contain IDs of docs that are part of some cluster. So ignore these docs (except when doc ID == cluster ID, so you retain one doc per cluster).

thanks, i resolved my problem


[CSS] Fix invalid colorAdjust property

This adds the correct css color adjust prop.
https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.a11ywatch.com

[x] I have followed (at least) the PR section of the contributing guide.

@j-mendez What about going one step behind from #20749? (WebkitPrintColorAdjust)

@j-mendez What about going one step behind from #20749? (WebkitPrintColorAdjust)

Just to make sure I am following correctly. So we can just use WebkitPrintColorAdjust to simplify it. I saw that colorAdjust is being used across several other components. We should update those as well until colorAdjust is standard css prop.

@j-mendez My only point of concern is around: Are we sure the report https://validator.w3.org does is accurate? Should the fix be on https://github.com/w3c/css-validator side?

Opened https://github.com/w3c/css-validator/issues/276

@j-mendez My only point of concern is around: Are we sure the report https://validator.w3.org does is accurate? Should the fix be on https://github.com/w3c/css-validator side?

I tested this locally and it has no affect without the vendor prefix.

https://www.w3.org/Style/CSS/all-properties.en.html its still in WD.

For server-side rendering you probably want to run auto-prefixer on the generated CSS. Otherwise the initial CSS might not be supported in all of your targeted browsers.
Once the UI is hydrated JSS correctly prefixes this property with -webkit so that it has an effect in chrome etc:

In firefox this property is untouched since firefox supports color-adjust.
Closing in favor of https://github.com/w3c/css-validator/issues/276 since there's nothing we can do.


⚠ Bofrost.be has degraded performance

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

HTTP code: 200
Response time: 2815 ms

Resolved: Bofrost.be performance has improved in 0481e58.


New protocol #397

🥼 Protocol Request
Great, we just need the ID number and its title; fill in below:
Protocol ID: 397
Protocol Title: GSTP1 Methylation

Added 397

Thanks!
Maureen Ryan
Division of Gastroenterology & Hepatology
Department of Medicine
UNC at Chapel Hill
On Jun 21, 2021, at 1:47 PM, Sean Kelly @.***> wrote:
Added 397
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/EDRN/biomarker-database/issues/45#issuecomment-865227002, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQLPXMIX5BLZBL3GC275IITTT53MVANCNFSM47CAOVCQ.


Folders for documentation translations

We from vuejs-br community are starting to translate the documentation of the Vue supporting libraries. Unlike other repos, it has not different folders for each language here. We created a fork and already translated to brazilian portuguese (live preview here). Now we need this repo organizated with folders for translations so we can pull request our translation.

Hey @ErickPetru
Thatnks for your help! Unfortunately I'm not really familiar with the whole gitbook setup, and am very short on free time in the coming weeks, so I won't have uch time to look into this.
Could you create a PR with the new folder structure? That would speed things up, hopefully.

@LinusBorg, the #1294 pull request adressed the new folder structure and also included our first version of the brazilian translation.


Key runs off

In the section "Major Omicron sublineages in Canada", the key runs off the bottom if there are too many sub-lineages (e.g., for BA.2).  Maybe add a second column or restrict to only those that have ever been >0.1% of the variant?  Also, it would be nice to hover over the bar chart to see which colour is which, but this might not be so bad if we restricted to only those variants that are >0.1% and so didn't have a ton of variants.

Resolved by adding other category in grey


Reset console palette to default

Changes to the console palette made by Colorful.Console remain after application exit.
This messes up colors in other console programs. Like FAR Manager:

before running ExampleConsoleApplication:

and after running it:

Interesting.  Thanks for reporting this -- I'll look into this over the weekend, and will update this thread at that time.

After looking into this and doing some testing, we can implement this feature, but only partially.
The Windows console can only display 16 different colors in a given session (where a session lasts from console open to console close).  So in the following scenario, the console would not be able to have its defaults restored:

Open a console
Load your application that uses Colorful.Console
Use 16 different non-standard (i.e. non-System.ConsoleColor) colors
Exit your application that uses Colorful.Console, but keep the console open

Since 16 different colors have already been used in the session, resetting the console's colors back to their defaults will have no visible effect.  On the other hand, in the following scenario, the console would be able to have some of its defaults restored:

Open a console
Load your application that uses Colorful.Console
Use c < 16 different non-standard (i.e. non-System.ConsoleColor) colors
Exit your application that uses Colorful.Console, but keep the console open

If we were to implement a "reset to defaults" feature, the console would now have access to 16 - c default colors.  It might be tricky to allow the user to specify which of the default colors would be accessible, though.
Does that make sense?  If so, would it still be useful to have a "reset to defaults" feature?

Maybe it would make more sense to just use default colors without changing them, which is currently impossible. Maybe additional Write* methods with ConsoleColor as the last argument?
Currently when I write
Console.Write("Qwerty", Color.Red)

it will not just use ConsoleColor.Red, but will tie Color.Red to the first available cell.
To workaround this I started Main with:
Console.Write("", Color.Navy);
Console.Write("", Color.Green);
Console.Write("", Color.Teal);
Console.Write("", Color.Maroon);
Console.Write("", Color.Purple);
Console.Write("", Color.Olive);
Console.Write("", Color.Silver);
Console.Write("", Color.Gray);
Console.Write("", Color.Blue);
Console.Write("", Color.Lime);
Console.Write("", Color.Cyan);
Console.Write("", Color.Red);
Console.Write("", Color.Fuchsia);
Console.Write("", Color.Yellow)

which ties System.Drawing colors to the corresponding console colors. But this doesn't cover the case when a user has non-standard colors in his console settings.

I think I've just figured out how to do this.  I had misunderstood that way that the Win32 API keeps track of color changes -- rather, I thought that it kept track of the number of times that color had been changed, but it does not.  This means that I only need to make a small addition to the Colorful.Console API in order to support resetting colors back to defaults.  This would look something like:
Console.ClearStyle();
This would reset the color palette to the 16 default ConsoleColors.  The only caveat is that all text written to the console prior to the call to ClearStyle() would change color back to the default palette colors.  I know it's been a while since you opened this issue, so you may not be interested in this, but I figured it was a good feature to add anyway.  Thanks again for opening the issue!

This has been fixed in 1.0.6  If this isn't what you had in mind, please let me know!


Problems during run initial step

Here is my running code:
import evaluate
ev = evaluate.load('exact_match')
Always return below error
Downloading builder script: 3.69kB [00:00, 4.56MB/s]
Traceback (most recent call last):
File "", line 1, in
File "/home/aka/anaconda3/lib/python3.10/site-packages/evaluate/loading.py", line 751, in load
evaluation_cls = import_main_class(evaluation_module.module_path)
File "/home/aka/anaconda3/lib/python3.10/site-packages/evaluate/loading.py", line 76, in import_main_class
module = importlib.import_module(module_path)
File "/home/aka/anaconda3/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 879, in exec_module
File "", line 1017, in get_code
File "", line 947, in source_to_code
File "", line 241, in _call_with_frames_removed
File "/home/aka/.cache/huggingface/modules/evaluate_modules/metrics/evaluate-metric--exact_match/009c8b5313309ea5b135d526433d5ee76508ba1554cbe88310a30f85bb57ec88/exact_match.py", line 16
}
^
SyntaxError: closing parenthesis '}' does not match opening parenthesis '(' on line 14

Have you solved this problem? I also encountered

Same here

Same here

Same here with version 0.4.2

Have something solved this problem?🙂

Same problem

Hey guys, I guess it's a problem with evaluate==0.4.2. I replaced the cached exact_match.py script (the file where the error occured) with a previous version (sry not sure which version it is exactly), and everything works fine from my side. Please feel free to use this as a temperory solution, but I think some bug need to be solved within version 0.4.2.
The exact_match.py I used: (I obtained it from my partener, credit to him :)
# Copyright 2020 The HuggingFace Datasets Authors and the current dataset script contributor.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Exact Match metric."""
import re
import string

import datasets
import numpy as np

import evaluate

_DESCRIPTION = """
Returns the rate at which the input predicted strings exactly match their references, ignoring any strings input as part of the regexes_to_ignore list.
"""

_KWARGS_DESCRIPTION = """
Args:
    predictions: List of predicted texts.
    references: List of reference texts.
    regexes_to_ignore: List, defaults to None. Regex expressions of characters to
        ignore when calculating the exact matches. Note: these regexes are removed
        from the input data before the changes based on the options below (e.g. ignore_case,
        ignore_punctuation, ignore_numbers) are applied.
    ignore_case: Boolean, defaults to False. If true, turns everything
        to lowercase so that capitalization differences are ignored.
    ignore_punctuation: Boolean, defaults to False. If true, removes all punctuation before
        comparing predictions and references.
    ignore_numbers: Boolean, defaults to False. If true, removes all punctuation before
        comparing predictions and references.
Returns:
    exact_match: Dictionary containing exact_match rate. Possible values are between 0.0 and 1.0, inclusive.
Examples:
    >>> exact_match = evaluate.load("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds)
    >>> print(round(results["exact_match"], 2))
    0.25

    >>> exact_match = evaluate.load("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell"], ignore_case=True, ignore_punctuation=True)
    >>> print(round(results["exact_match"], 2))
    0.5

    >>> exact_match = evaluate.load("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True)
    >>> print(round(results["exact_match"], 2))
    0.75

    >>> exact_match = evaluate.load("exact_match")
    >>> refs = ["the cat", "theater", "YELLING", "agent007"]
    >>> preds = ["cat?", "theater", "yelling", "agent"]
    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True, ignore_numbers=True)
    >>> print(round(results["exact_match"], 2))
    1.0

    >>> exact_match = evaluate.load("exact_match")
    >>> refs = ["The cat sat on the mat.", "Theaters are great.", "It's like comparing oranges and apples."]
    >>> preds = ["The cat sat on the mat?", "Theaters are great.", "It's like comparing apples and oranges."]
    >>> results = exact_match.compute(references=refs, predictions=preds)
    >>> print(round(results["exact_match"], 2))
    0.33
"""

_CITATION = """
"""

@evaluate.utils.file_utils.add_start_docstrings(_DESCRIPTION, _KWARGS_DESCRIPTION)
class ExactMatch(evaluate.Metric):
    def _info(self):
        return evaluate.MetricInfo(
            description=_DESCRIPTION,
            citation=_CITATION,
            inputs_description=_KWARGS_DESCRIPTION,
            features=datasets.Features(
                {
                    "predictions": datasets.Value("string", id="sequence"),
                    "references": datasets.Value("string", id="sequence"),
                }
            ),
            reference_urls=[],
        )

    def _compute(
        self,
        predictions,
        references,
        regexes_to_ignore=None,
        ignore_case=False,
        ignore_punctuation=False,
        ignore_numbers=False,
    ):

        if regexes_to_ignore is not None:
            for s in regexes_to_ignore:
                predictions = np.array([re.sub(s, "", x) for x in predictions])
                references = np.array([re.sub(s, "", x) for x in references])
        else:
            predictions = np.asarray(predictions)
            references = np.asarray(references)

        if ignore_case:
            predictions = np.char.lower(predictions)
            references = np.char.lower(references)

        if ignore_punctuation:
            repl_table = string.punctuation.maketrans("", "", string.punctuation)
            predictions = np.char.translate(predictions, table=repl_table)
            references = np.char.translate(references, table=repl_table)

        if ignore_numbers:
            repl_table = string.digits.maketrans("", "", string.digits)
            predictions = np.char.translate(predictions, table=repl_table)
            references = np.char.translate(references, table=repl_table)

        score_list = predictions == references

        return {"exact_match": np.mean(score_list)}

Same problem. I tried the solution proposed by @ErikaaWang and found it worked.

I can see this in blue.py

由于流量过大，本站暂不支持访问 Spaces 空间，可前往 Hugging Face 官网查看。
返回上一页
前往官网入口

<script>
    function goBack() {
        window.history.back();
    }

    function redirectToOfficialApplicationPage() {
        const url = new URL(window.location.href);
        const path = url.pathname;
        const regex = /^\/spaces\/(.*)$/;
        const match = path.match(regex);

        if (match) {
            const officialPageUrl = `https://huggingface.co${path}`;
            window.location.href = officialPageUrl;
        } else {
            const officialPageUrl = `https://huggingface.co/spaces`;
            window.location.href = officialPageUrl;
        }
    }

    // Dynamically update the button text based on the 'next' URL parameter
    window.onload = () => {
        const url = new URL(window.location.href);
        const path = url.pathname;
        const regex = /^\/spaces\/(.*)$/;
        const match = path.match(regex);

        if (match) {
            const projectName = match[1];
            document.getElementById('applyButton').textContent = `前往官网 ${projectName} 入口`;
        }
    };
</script>

I guess the problem may be from the https://hf-mirror.com

Change HF_ENDPOINT to https://huggingface.co fix my problem.

Same problem, I tried the solution from @ZeguanXiaoand, but it didn't work out

Same problem, I tried the solution from @ZeguanXiaoand, but it didn't work out

Try:   export HF_ENDPOINT="https://huggingface.co"

@sxluo Thanks for your advice!
I originally have this line:
export HF_ENDPOINT=https://hf-mirror.com

However I cannot remove this line, or change this to https://huggingface.co. Otherwise i wouldn't be able to connect to HF on my server. (mainland China).
So I clone 'evaluate' to my local path, and change this line:
metric = evaluate.load("accuracy")

to:
metric = evaluate.load(MY_PATH+"/evaluate/accuracy/accuracy.py")

It turns out to work well :>. Hope this could help others.


⚠ TROJAN 🇸🇬 Singapore SGV 1 has degraded performance

In 73e21eb, TROJAN 🇸🇬 Singapore SGV 1 (https://sgt-1.optnl.com/) experienced degraded performance:

HTTP code: 200
Response time: 6068 ms

Resolved: TROJAN 🇸🇬 Singapore SGV 1 performance has improved in fe97c0a.


Update Ploeh.AutoFixture.AutoMoq.nuspec

Fix casing of dependencies to work with dnu build/restore

Thank you for your contribution! It's now live as AutoFixture 3.40.1.


Deployment crashes

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.0.2 (5ae06f9 2024-04-30T00:24:57.466082000Z)
What command(s) is the bug in?
forge script
Operating System
macOS (Intell)
Describe the bug
Zksync Testnet Issues
If you create a default project with forge init and try to deploy with a deploy script like such:
forge script script/Counter.s.sol --zksync --rpc-url zksync-sepolia --account yellow --sender $DEFAULT_SENDER --broadcast --verify -vvvv

After running the following script (and entering password for decrypting the yellow key), the program crashes with:

Script ran successfully.
Enter keystore password:

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:

  [0] 0x0000000000000000000000000000000000000000::fallback()
    └─ ← <empty revert data>

Transactions saved to: xxx

Sensitive values saved to: xxx

Error:
Failed to get EIP-1559 fees

This can be fixed by adding --legacy to the script (making them type0 transactions). You'll then have to update foundry.toml with the following:

[etherscan]
zksync-sepolia = { key = "${ETHERSCAN_API_KEY}", url = "https://explorer.sepolia.era.zksync.dev/contract_verification", chain = 300 }

Otherwise it'll fail with:
Chain 300

Estimated gas price: 0.264893396 gwei

Estimated total gas used for script: 469939

Estimated amount required: 0.000124483737622844 ETH

==========================

Transactions saved to:xxx

Sensitive values saved to: xxx

Error:
Etherscan API key wasn't found for chain id 300. On-chain execution aborted

And then it will just freeze, and get stuck here forever:

###
Finding wallets for all the necessary addresses...
##
Sending transactions [0 - 0].
⠁ [00:00:00] [#################################################################################################################################] 1/1 txes (0.0s)
Transactions saved to: xxx/run-latest.json

Sensitive values saved to:xxx/run-latest.json

##
Waiting for receipts.
⠁ [00:00:00] [-----------------------------------------------------------------------------------------------------------------------------] 0/1 receipts (0.0s)

Requested action items

Add docs for adding the sample config to the toml
Figure out how to get past the EIP-1559 error
Figure out how to get past the deployment freezing

ZkSync Mainne Issues
However, everything works "pretty good" for zksync mainnet, except, my contracts are not being verified. I get this in foundry:

ONCHAIN EXECUTION COMPLETE & SUCCESSFUL.
Total Paid: 0.000005884325 ETH (235373 gas * avg 0.025 gwei)

We haven't found any matching bytecode for the following contracts: [0xd3f8d13e3e1d0c978a242ea71b177e5d04586f4b].

This may occur when resuming a verification, but the underlying source code or compiler version has changed.
##
Start verification for (0) contracts
All (0) contracts were verified!

Transactions saved to: xxx

Sensitive values saved to:  xxx

@PatrickAlphaC thanks for flagging. Will triage this accordingly.

@PatrickAlphaC hmmm i cannot reproduce exactly....
Again --verify is not supported just yet so that needs to be removed from the cmd. Nonetheless the following command works fine for me:
forge script script/Counter.s.sol --zksync --rpc-url https://sepolia.era.zksync.dev --account yellow --sender $DEFAULT_SENDER --broadcast -vvvv

Steps taken to reproduce:

Update to latest forge by re-executing the ./install-foundry-zksync script
Run: forge init
Setup ENV vars (DEFAULT_SENDER)
Setup wallet import - alias to "yellow" with password
Run: forge script script/Counter.s.sol --zksync --rpc-url https://sepolia.era.zksync.dev --account yellow --sender $DEFAULT_SENDER --broadcast -vvvv
6: Output successful

Can you share the script you are executing? When I run forge init this is the script template provided:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Script, console} from "forge-std/Script.sol";

contract CounterScript is Script {
    function setUp() public {}

    function run() public {
        vm.broadcast();
    }
}

I just want to confirm we are testing the same thing!

Hey @dutterbutter here are the exact steps to reproduce:

Setup a simple Foundry project (forge init to create a new project, run forge install, add testing vars to .env file & run source .env)
Add the following to the script/Counter.s.sol file to deploy the Counter contract:

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Script, console} from "forge-std/Script.sol";
+import {Counter} from "../src/Counter.sol";

contract CounterScript is Script {
    function setUp() public {}

    function run() public {
-        vm.broadcast();
+        vm.startBroadcast();
+        Counter counter = new Counter();
 +       vm.stopBroadcast();
    }
}

run the following command to deploy the contract:

forge script script/Counter.s.sol --rpc-url $ZKSYNC_SEPOLIA_RPC_URL --private-key $TEST_PRIVATE_KEY  --broadcast --zksync -vvvv

You will see the following error in the terminal output:
Error:
Failed to get EIP-1559 fees

Wanted to provide an update that we're unable to replicate based on the latest set of instructions. I made the changes to script/Counter.s.sol but no error output.
We've also run this against era_test_node fork seplia-testnet with the same response:
Script ran successfully.

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:
  [0] 0x0000000000000000000000000000000000000000::fallback()
    └─ ← <empty revert data>

Here's the full output I see when I'm using `ZKSYNC_SEPOLIA_RPC_URL=https://sepolia.era.zksync.dev`:

$ forge script script/Counter.s.sol --rpc-url $ZKSYNC_SEPOLIA_RPC_URL --private-key $TEST_PRIVATE_KEY  --broadcast --zksync -vvvv
[⠒] Compiling...
[⠑] Compiling 27 files with 0.8.24
[⠘] Solc 0.8.24 finished in 988.29ms
Compiler run successful with warnings:
Warning (2072): Unused local variable.
  --> script/Counter.s.sol:13:9:
   |
13 |         Counter counter = new Counter();
   |         ^^^^^^^^^^^^^^^

┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Warning: Your code or one of its dependencies uses the 'extcodesize' instruction, which is       │
│ usually needed in the following cases:                                                           │
│   1. To detect whether an address belongs to a smart contract.                                   │
│   2. To detect whether the deploy code execution has finished.                                   │
│ zkSync Era comes with native account abstraction support (so accounts are smart contracts,       │
│ including private-key controlled EOAs), and you should avoid differentiating between contracts   │
│ and non-contract addresses.                                                                      │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
--> lib/forge-std/src/StdCheats.sol

Warning: Unused local variable.
  --> script/Counter.s.sol:13:9:
   |
13 |         Counter counter = new Counter();
   |         ^^^^^^^^^^^^^^^

Traces:
  [35516] CounterScript::run()
    ├─ [0] VM::startBroadcast()
    │   └─ ← ()
    ├─ [0] → new <unknown>@0x9a624948A8602E573d1F65aD089cFE43833e4Fd0
    │   └─ ← 864 bytes of code
    ├─ [0] VM::stopBroadcast()
    │   └─ ← ()
    └─ ← ()

Script ran successfully.

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:

  [0] 0x0000000000000000000000000000000000000000::fallback()
    └─ ← <empty revert data>

==========================

Chain 300

Estimated gas price: 3.05 gwei

Estimated total gas used for script: 149502440

Estimated amount required: 0.455982442 ETH

==========================

###
Finding wallets for all the necessary addresses...
##
Sending transactions [0 - 0].
⠁ [00:00:00] [#####################################################################################################################################] 1/1 txes (0.0s)
Transactions saved to: /Users/nick/test/issue-361/broadcast/Counter.s.sol/300/run-latest.json

Sensitive values saved to: /Users/nick/test/issue-361/cache/Counter.s.sol/300/run-latest.json

##
Waiting for receipts.
⠉ [00:00:00] [#################################################################################################################################] 1/1 receipts (0.0s)
##### 300
✅  [Success]Hash: 0x3fd56c3c6c450057d38b4e8f12f7626f47242dee45d74061583c3929c318fbe2
Contract Address: 0x9a624948A8602E573d1F65aD089cFE43833e4Fd0
Block: 2518600
Paid: 0.000070207775 ETH (2808311 gas * 0.025 gwei)

Transactions saved to: /Users/nick/test/issue-361/broadcast/Counter.s.sol/300/run-latest.json

Sensitive values saved to: /Users/nick/test/issue-361/cache/Counter.s.sol/300/run-latest.json

==========================

ONCHAIN EXECUTION COMPLETE & SUCCESSFUL.
Total Paid: 0.000070207775 ETH (2808311 gas * avg 0.025 gwei)

Transactions saved to: /Users/nick/test/issue-361/broadcast/Counter.s.sol/300/run-latest.json

Sensitive values saved to: /Users/nick/test/issue-361/cache/Counter.s.sol/300/run-latest.json

We're continuing to investigate and also dig deeper into the failure trace (operation is successful though)

@ciaranightingale was your operation successful here?

@MexicanAce Apologies for the delayed response. My operation was successful however my output was slightly different. This was my entire terminal output:
Traces:
  [35589] CounterScript::run()
    ├─ [0] VM::startBroadcast()
    │   └─ ← ()
    ├─ [0] → new <unknown>@0x6C3707c761377Ad65adcAC6fAB1Aece61D73d62A
    │   └─ ← 864 bytes of code
    ├─ [0] VM::stopBroadcast()
    │   └─ ← ()
    └─ ← 0x6C3707c761377Ad65adcAC6fAB1Aece61D73d62A

Script ran successfully.

== Return ==
0: contract Counter 0x6C3707c761377Ad65adcAC6fAB1Aece61D73d62A

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:

  [0] 0x0000000000000000000000000000000000000000::fallback()
    └─ ← <empty revert data>

Transactions saved to: /Users/ciaranightingale/code/test-delete/broadcast/Counter.s.sol/300/run-latest.json

Sensitive values saved to: /Users/ciaranightingale/code/test-delete/cache/Counter.s.sol/300/run-latest.json

Error:
Failed to get EIP-1559 fees

My forge version is 0.0.2 (baa4428 2024-05-27T00:25:28.651861000Z) and I'm running this on an Intel Mac Sonoma 14.4.1. I'm not sure what other information might help in debugging this but let me know if you think of anything and I'd be more than happy to hop on a call if that would help.

@MexicanAce I just reran this using the RPC you provided, and I got the same output as you - it seems strange that the Alchemy RPC doesn't work, but at least we know why now!

@ciaranightingale during our testing we've noticed that certain RPCs on certain chains would sometimes return an error when a storage value doesn't exist, meanwhile the usual behavior is to return the zero value. Could you perhaps verify if that's the case for alchemy api?

@nbaztec When running the original script:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Script, console} from "forge-std/Script.sol";
import {Counter} from "src/Counter.sol";

contract CounterScript is Script {
    function setUp() public {}

    function run() public returns (Counter) {
        vm.startBroadcast();
        Counter counter = new Counter();
        vm.stopBroadcast();
        return counter;
    }
}

This is the output:
Traces:
  [35589] CounterScript::run()
    ├─ [0] VM::startBroadcast()
    │   └─ ← ()
    ├─ [0] → new <unknown>@0x899D06aC80598944eE5Efd2B45378883dd703DaF
    │   └─ ← 864 bytes of code
    ├─ [0] VM::stopBroadcast()
    │   └─ ← ()
    └─ ← 0x899D06aC80598944eE5Efd2B45378883dd703DaF

Script ran successfully.

== Return ==
0: contract Counter 0x899D06aC80598944eE5Efd2B45378883dd703DaF

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:

  [0] 0x0000000000000000000000000000000000000000::fallback()
    └─ ← <empty revert data>

Transactions saved to: XX

Sensitive values saved to: XX

Error:
Failed to get EIP-1559 fees

Whereas, if I modify the script to return a var a that has not been set, the output shows the zero. address. being. returned (notice the contract. address in the previous output return section). The error is the same:
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Script, console} from "forge-std/Script.sol";
import {Counter} from "src/Counter.sol";

contract CounterScript is Script {
    function setUp() public {}

    function run() public returns (Counter) {
        Counter a;
        vm.startBroadcast();
        Counter counter = new Counter();
        vm.stopBroadcast();
        return a;
    }
}

Output:
Traces:
  [35594] CounterScript::run()
    ├─ [0] VM::startBroadcast()
    │   └─ ← ()
    ├─ [0] → new <unknown>@0x899D06aC80598944eE5Efd2B45378883dd703DaF
    │   └─ ← 864 bytes of code
    ├─ [0] VM::stopBroadcast()
    │   └─ ← ()
    └─ ← 0x0000000000000000000000000000000000000000

Script ran successfully.

== Return ==
0: contract Counter 0x0000000000000000000000000000000000000000

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:

  [0] 0x0000000000000000000000000000000000000000::fallback()
    └─ ← <empty revert data>

Transactions saved to: XX

Sensitive values saved to: XX

Error:
Failed to get EIP-1559 fees

Is this what you meant for me to verify?

We found the culprit here. There was an issue with Alchemy's zkSync RPC URL. We have reported this issue to them. Ciara and I were using an Alchemy endpoint, while @MexicanAce was using a zksync endpoint which was working properly.

I'm glad that you managed to figure out the RPC issues. Just to expand on my earlier comment to @ciaranightingale

Is this what you meant for me to verify?

In our tests we realized that certain APIs would throw an error if a storage key did not exist.
So sending an eth_getStorageAt RPC request to an arbitrary address and slot, should ideally return the default zero-value.
{"method":"eth_getStorageAt","params":["0xE592427A0AEce92De3Edee1F18E0157C05861564", "0x1", "latest"],"id":1,"jsonrpc":"2.0"}

Expected (slot is empty):
{"jsonrpc":"2.0","id":1,"result":"0x0000000000000000000000000000000000000000000000000000000000000000"}

But certain APIs would return an error instead of the default 0x0000000000000000000000000000000000000000000000000000000000000000 value. I'm not sure if this is the same issue Alchemy API had, but is good to keep in mind when using foundry and checking if an RPC url works "differently"


Check move legality, end conditions

Closed by #35. (End conditions were punted to subsequent sprint.)


Indentation is inconsistent with Vim and VSCode

Small quirks of indentation are very hard to get right, however, they're crucial for both migration from editors and general workflow convenience. In my opinion, Oni2 does the job pretty well for its current state, but there's a couple of related things that it seems to do incorrectly. For example, if in VSCode or in neovim I hit: "{", <enter>, "}", <up>, <enter>, it creates a new scope block and adds an indentation within it. However, Oni2 in this case just keeps the same indentation as the outer scope which means that I have to add indentation manually.
Same thing happens if I do this: "{", <enter>, "}", <up>, <esc>, "o". In this example "o" adds a line into the new scope block and it has no indentation appended either.

Was just going through some of the auto-indent issues - and I believe this particular issue to be fixed now (with the auto-closing pairs behavior).
If not - let me know what filetype you're seeing this on 👍


License?

Is this under the same license as the MDN wiki docs, Creative Commons Attribute-ShareAlike? I'd like to adapt the IndexedDB code for a personal project I'm doing to test the speed of different data storage methods.

Hi there!
This was always my understanding about the license this code should be under, but we should probably make this clear somewhere. I've started a discussion in the MDN community to verify the details and get this resolved.
for the time being, I am happy to give you my blessing on behalf of MDN to reuse this particular code under the license you stated.

Update - the official answer is even better than I expected. MDN code samples are actually public domain (i.e. CC0), so you can copy and paste them without needing attribution or sharealike.

Alright, thank you!


added [] operator to vector class using unnamed union

Rewrote vec class to have accessors like vec[2] by using an unamed union

May I merge it into master now?


Feature/1089 transfer character check functionality to PSD

What's included?

[x] Update the answer options to the question "What is your Sex" in the character section (i.e. Male, Female, Prefer not to say).
[x] Ensure that the Character Checks answers are not editable after the questionnaire has been submitted.
[x] Validate that the start date is always before the end date in Professional details.
[x] Skip the "Professional details" page if the candidate has not stated any qualifications.

Who should test?
✅ Product owner
✅ Developers
✅ UTG
How to test?
Preview URL: https://jac-apply-develop--pr1121-feature-1089-transfe-0gthrom3.web.app
Use the following email addresses (password: 1qazZAQ!1qaz) to sign in to the apply side:

<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Steps:

Go to "Current applications" and click the button "Pre Selection Day Questionnaire" under exercise JAC00685.
Go to "Character Checks".
Check if the answer options to the question "What is your Sex" are Male, Female, and Prefer not to say.
Check if the start date is always before the end date in Professional details.
Check if you can not edit the character checks after the questionnaire is submitted.

Risk - how likely is this to impact other areas?
🟠 Medium risk - this does change code that is shared with other areas
Additional context
Include screen grabs, notes etc.

PREVIEW:DEVELOP
can be OFF, DEVELOP or STAGING

The "Professional details" page might be blank if the candidate does not state any qualifications in the application form. Maybe we could show some text to indicate candidates to proceed with the checks.

Yes please @HalcyonJAC please can you either include a message or, ideally, skip this page if it is not relevant/needed for the candidate?

The "Professional details" page might be blank if the candidate does not state any qualifications in the application form. Maybe we could show some text to indicate candidates to proceed with the checks.

Yes please @HalcyonJAC please can you either include a message or, ideally, skip this page if it is not relevant/needed for the candidate?

Otherwise all is looking good 👍

@warrensearle Thanks for the suggestion. I have made the changes to check if the qualifications exist or not. If it doesn't exist, it will skip the "Professional details" page.


Feat/healthchecks

Documentation on health checks.

A general document about health checks
Update to the Upstream entity documentation
Two new endpoints in the Target entity
Updates to the navbar and index file

@coopr Please re-review!