text:
Invalid response from Philips Hue API

"device" :
        {
                "name"       : "DefaultHyperionConfig",
                "type"       : "philipshue",
                "output":"192.168.0.176",
                "lightIds":[5],
                "username"     : "xxxxxxxxxxx",
                "rate"       : 1000000,
                "colorOrder" : "rgb",
                "switchOffOnBlack":false
        }

When I start hyperion I get following error:
[HYPERIOND LedDevice]  saveStates(nLights=1): got no state for light from http://192.168.0.176/api/d50ctoU/lights/5
[HYPERIOND LedDevice]  saveStates(nLights=1): got invalid response from light http://192.168.0.176/api/d50ctoU/lights/5.
But when I open the link in my browser I get a respone:
{"state":{"on":true,"bri":104,"hue":39392,"sat":13,"effect":"none","xy":[0.3691,0.3719],"ct":231,"alert":"none","colormode":"xy","reachable":true},"type":"Extended color light","name":"Computer","modelid":"LST002","manufacturername":"Philips","uniqueid":"00:17:88:01:01:1f:4b:29-0b","swversion":"5.50.2.19072"}
Some an idea?

@ntim the Hue Guy :)
Would be great if you could check against current development.

It is possible, that something went wrong when migrating this to new qt json api

@b1rdhous3
Does running with --debug provide more output ?

we can add better error output:
in LedDevicePhilipsHue.cpp line 373 Error(...
replace  it with:
			Error(_log, "saveStates(nLights=%d): got invalid response from light %s. (error:%s, offset:%d)",
			  nLights, getUrl(getRoute(lightIds.at(i))).toStdString().c_str(), error.errorString().toLocal8Bit().constData(), error.offset );

No more output with debug.
I will compile and run it again @redPanther

thx for helping to find the bug :+1:

 saveStates(nLights=1): got invalid response from light http://192.168.0.176/api/d50ctoH6nu8hwbzMLQMa7ASjYX06ES2FM37IUIAU/lights/5. (error:illegal value, offset:0)
I only got "invalid response" once. The other error is happening all the time.

Es könnte sein das sich bei der Übersetzung von JsonCPP zu QTJson ein Fehler in der Hue Device Class eingeschlichen hat. Dies war am schwersten zu übersetzen. Werde demnächst noch mal über die Class schauen. Da ich leider keine Hues besitze kann ich die sache nicht testen. Sorry

Can you please insert this :
json = reader.object();
in LedDevicePhilipsHue.cpp on Line 369

Kein Problem, danke dass du dich kümmerst @Paulchen-Panther .
ZUm testen bin ich ja da.
Leider gibt json = reader.object() keinen neuen Output oder ein anderes Ergebnis.

No changes with that line

I will try the new code at home

Works fine on my RPi3 with OSMC and 2 lights. Can you log the raw response in line 373? Not the parsed object since that obviously failed. It might not look the same as in your browser.

@ntim thank you for your answer but sadly I don't know how to display the raw data (var response?) at that point. I always get errors while compiling if i try
Can you please provide the line? Thanks!

Ok, will look into it tomorrow.

Thanks!

Hi, I put the following code after line 366:
std::cout << response.constData() << std::endl;
This gives me e.g. the following output:

{"state":{"on":true,"bri":254,"hue":13768,"sat":56,"effect":"none","xy":[0.4578,0.4142],"alert":"none","colormode":"xy","reachable":true},"type":"Color light","name":"LivingColors Links","modelid":"LLC011","manufacturername":"Philips","uniqueid":"00:17:88:01:00:c1:63:5d-0b","swversion":"5.23.1.13452"}

Today I also got the same problem, it says, the problem is that in this loop the retrieval of the json object is missing. Fixed it and submitted a pull request.

Hm, that it the same @Paulchen-Panther suggested and I tried that as well with no effect. I will check that again and also the logging. I will come back to this.

It is definitely missing anyway, may not be the fix to your problem after all but with the additional logging we should get going in the right direction .

@b1rdhous3 has state changed here? if not, can you provide logs?
e.g.

Hi, I put the following code after line 366:
std::cout << response.constData() << std::endl;

Havn't tested it yet. Will do in the next days.

And how the tests going on? Would be good to know if hues work again

@b1rdhous3
i consider to close this issue :)

I close the issue. If we have trouble here we can make a new issue with latest info's

authors: Paulchen-Panther b1rdhous3 brindosch ntim penfold42 redPanther


text:
light clock

1. Tell us something about your changes.

extend image effects
add a basic light clock - this is not the final state, but a start and an invitation for ideas

... this effect respects matrix layout and orientation.
2. If this changes affect the .conf file. Please provide the changed section
3. Reference an issue (optional)
Note: For further discussions use our forum: forum.hyperion-project.org

cool!
Q: Is alpha good or bad? As alpha ist not really a difference to black? (In our led case)

Alpha is important. Look I overlay 3 gradients, if we dont have alpha channel we only would see last gradient. And it is not neccessaeily black. It depends on how is the image backhround (solidfill)

source: gharchive/pull-request

authors: brindosch redPanther

license: mit

license_type: permissive

license_source: bigquery


text:
Add missing TryFrom and TryFrom<Vec> impls.

Also fix PathAndQuery's TryFrom impl to not copy the bytes into
a new Bytes.

@seanmonstar Ping.

Thanks for catching this!

authors: Arnavion seanmonstar

repo: hyperium/http

license_source: github-api


text:
more robust service start

move pgrep from various test scripts into *-start.sh (including adding it also to ss-start.sh where previously we did not have)
add a test in es-start.sh when (maybe optionally/based on option) returns only once all services are up and running ...

duplicate of #164

source: gharchive/issue

repo: hyperledger-labs/private-data-objects


text:
Support for Prometheus Metrics

Hey,
there are two ways of supporting Prometheus metrics.

Instrument the  ACA-Py directly with a Prometheus Client Library or using OpenTelemetry
Building an external Prometheus Exporter  to scrape the ACA-PY API and exposing the relevant information.

Since my Python Skills are not very high I probably can't do it myself but I really would like to support here to get this implemented.
What do you think ?

@ianco — given you did some work on tracing and collection, are you able to provide some feedback on this one?  Or a suggestion for someone else who could suggest something.
@solidnerd — perhaps a topic to raise on Hyperledger chat and/or to discuss at a User Group meeting.

The current event tracing and collection is primarily to track the message processing in a thread (for example during a credential exchange protocol) - part of this is tracking the time required to processes each step, so there is some overlap with what Prometheus does, but it is not a complete match.
From my (limited) knowledge of Prometheus you configure it to watch endpoints (such as the aca-py admin api, or the agent's published endpoint) and Prometheus can monitor these endpoints and collect statistics.  I'm not familiar enough to comment on the two options above.  (For the existing tracing we emit json-format events to a collector, such as EFK, I don't know if these can be collected directly by Prometheus or we would need to make code changes in aca-py.)
What metrics are you interested in collecting?

The current event tracing and collection is primarily to track the message processing in a thread (for example during a credential exchange protocol) - part of this is tracking the time required to processes each step, so there is some overlap with what Prometheus does, but it is not a complete match.

This is exactly a match! If you already have the event tracking in place, then Prometheus' job is to expose these metrics for other services to be consumed(e.g. Grafana to visualize these metrics)

From my (limited) knowledge of Prometheus you configure it to watch endpoints (such as the aca-py admin api, or the agent's published endpoint) and Prometheus can monitor these endpoints and collect statistics.

Exactly, this is called blackbox monitoring.

I'm not familiar enough to comment on the two options above. (For the existing tracing we emit json-format events to a collector, such as EFK, I don't know if these can be collected directly by Prometheus or we would need to make code changes in aca-py.)

My recommendation is to build a external Prometheus exporter so in a Kubernetes-based setup the exporter could run as side-car container. This separation of concerns helps to decouple the generation and exporting of metrics.

What metrics are you interested in collecting?

Everything that changes over time :) This should help to gain a better understanding of the state of aca-py.

Hey,
Sorry for get back the topic again.
I'm trying to do something like @solidnerd wanted.
Since his issue was opened one year ago, anybody knows if there is a known solution?
Regarding with @ianco message, are these metrics/info exported in an endpoint?

authors: JavierDonadoC ianco solidnerd swcurran tomaaron

repo: hyperledger/aries-cloudagent-python


text:
feature/inbound-transport-profile

When implementing a custom inbound transport there is no way to access settings through the profile. This PR adds a root profile to the BaseInboundTransport class that allows custom implemented inbound transports access to the profile provided to InboundTransportManager.
main changes:

transport/inbound/base.py, now has a root_profile attribute.
transport/inbound/manager.py,  passes profile into register_transport

Codecov Report

Merging #1407 (28192e5) into main (d7dedcf) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main    #1407   +/-   ##
=======================================
  Coverage   95.31%   95.31%
=======================================
  Files         482      482
  Lines       29121    29123    +2
=======================================
+ Hits        27758    27760    +2
  Misses       1363     1363

authors: burdettadam codecov-commenter


text:
feat: implement new wallet trait for askar

These changes include implementation of BaseWallet for askar.
These changes intentionally do not include any data migrations between wallets using BaseWallet or compatibility tests between different wallet implementations. Even though both of them are important, they are not needed for a new wallet implementation to work on its own, therefore they can (and will) be added separately as this is already large enough.

Codecov Report
Attention: 61 lines in your changes are missing coverage. Please review.

Comparison is base (8b77c06) 0.05% compared to head (de712b4) 0.05%.

:exclamation: Current head de712b4 differs from pull request most recent head 1487967. Consider uploading reports for the commit 1487967 to get more accurate results

Files
Patch %
Lines

aries/aries_vcx_core/src/wallet/utils.rs
0.00%
28 Missing :warning:

aries/aries_vcx_core/src/wallet/entry_tags.rs
0.00%
25 Missing :warning:

aries/aries_vcx_core/src/errors/mapping_others.rs
0.00%
3 Missing :warning:

.../aries_vcx_core/src/wallet/base_wallet/did_data.rs
0.00%
3 Missing :warning:

aries/aries_vcx_core/src/wallet/indy/indy_tags.rs
0.00%
2 Missing :warning:

Additional details and impacted files
@@           Coverage Diff            @@
##            main   #1085      +/-   ##
========================================
- Coverage   0.05%   0.05%   -0.01%
========================================
  Files        475     476       +1
  Lines      23898   23955      +57
  Branches    4281    4291      +10
========================================
  Hits          13      13
- Misses     23884   23941      +57
  Partials       1       1

Flag
Coverage Δ

unittests-aries-vcx
0.05% <0.00%> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

I stripped the empty newlines and removed the local variables where possible if they were used only once.

had a skim thru. nice stuff!
Just 1 general query, did you consider not using sodiumoxide for the sealedbox crypto? AFAIK Askar should have all of the sealedbox functionality we need. e.g.; https://github.com/hyperledger/aries-askar/blob/main/src/kms/envelope.rs
a little hesistant on sodiumoxide just because it doesn't seem super maintained, and requires the libsodium binary be packed/linked in. I believe askar's implementation is using a pure rust impl of crypto box (crypto_box_rs/crypto_box) https://crates.io/crates/crypto_box
anyway, something to consider. it could reduce complexity

repo: hyperledger/aries-vcx


text:
Change SGX to Intel SGX in Comments and Messages

Also break up long lines and make other minor corrections.
Signed-off-by: danintel daniel.anderson@intel.com

Merged with #379.

repo: hyperledger/avalon


text:
[ci] Rotate artifactory tokens

We need to replace the artifactory token with a generic token for CI and replace the current one that is tied to a user account
https://app.circleci.com/settings/project/github/hyperledger/besu/environment-variables
ARTIFACTORY_KEY and ARTIFACTORY_USER

done

authors: ryjones shemnon

repo: hyperledger/besu


text:
add update channel

add channel config update implementation testing code
see issue #30
and update #55

There is a build failure caused (I think) by a new static check release, not by this PR. I have merged a fix so you if you rebase on the current main branch, your PR should pass the build. Alternatively, you could review/merge #83 (which tidies up the build pipeline) and rebase on top of that.

There is a build failure caused (I think) by a new static check release, not by this PR. I have merged a fix so you if you rebase on the current main branch, your PR should pass the build. Alternatively, you could review/merge #83 (which tidies up the build pipeline) and rebase on top of that.
Edit: I've enabled required status checks for PRs that use the output from #83 so that change should go in before rebase.

OK~ I have rebase done,looks like it's ok now.

@bestbeforetoday , is this PR ready for merge?

@bestbeforetoday @channingduan , is this PR ready for merge?

The commit history of this PR looks to be a bit of a mess, and it is showing conflicts that would prevent a simple rebase on main. I will see if I can unpick some of the issues so we can get this and not hold up other PRs.

I have rebased and squashed this change into a single commit on top of the current state of the main branch. I pushed that back to the PR branch so the Files changed for this PR now just shows the changes to be merged. There is a backup of exactly what was in the PR branch before I made these changes here.

repo: hyperledger/fabric-admin-sdk


text:
CRU query builder functions and WSClient passed to beforeConnect

Helpful to have these on the interface, so users of the CRUD package can have all the information about a collection on one API

Codecov Report

Merging #109 (f0576fd) into main (046ec28) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #109   +/-   ##
=======================================
  Coverage   99.98%   99.98%
=======================================
  Files          77       77
  Lines        6106     6120   +14
=======================================
+ Hits         6105     6119   +14
  Misses          1        1

Files
Coverage Δ

pkg/dbsql/crud.go
100.00% <100.00%> (ø)

pkg/i18n/en_base_error_messages.go
100.00% <ø> (ø)

pkg/wsclient/wsclient.go
100.00% <100.00%> (ø)

pkg/wsclient/wsconfig.go
100.00% <100.00%> (ø)

pkg/wsserver/wsconn.go
100.00% <100.00%> (ø)

authors: codecov-commenter peterbroadhurst

repo: hyperledger/firefly-common


text:
Should we introduce a GraphQL layer?

@vipinsun made a great observation on a community call on 30th June, that there's a whole space of innovation (such as The Graph) that listen to events from a blockchain, and build a complete (or semi-complete) off-chain GraphQL queryable store of the on-chain information.
The unanswered questions on the call was:

Is the state of the technology such that such a layer could be introduce into FireFly in a way that's practical, and can support multiple protocols?
Should this be a plugin capability that's orthogonal to the fundamental constructs that FireFly models (like tokens), or should we consider such a layer as a base layer under that modelling?

Vipin called out the value of GraphQL as a way to allow server-side aggregation of complex relationships, to avoid the amount of back-and-forth between the application and the server over the API.
I note the other approach, is to pre-perform this relationship mapping according to a well specified schema (such as modelling token relationships).
Clearly the latter is only possible when you do the modelling, and is thus less flexible.
The former can be used for any on-chain logic, but the amount of understanding needed from the developer for simple scenarios might be an order of magnitude larger.

Closing this issue. Please open a FIR for a proposal and further discussion.

authors: peterbroadhurst shorsher

repo: hyperledger/firefly


text:
Link-time optimization for release builds

Default LTO for release builds is only across crate codegen units. Enabling full LTO should bring about a noticeable improvement in performance and the size of the binaries. This should be done before running tests or benchmarks for release/deploy builds in CI.
If this is to be considered, I would advise it only be considered after benchmarks are fully functional in the CI

it might be worth to consider setting codegen-units = 1 as well, but this may affect build times too much

repo: hyperledger/iroha


text:
[suggestion] Phase out Account::roles

Feature request
Account::roles should be removed and replaced with an asset of type AssetType::Store linked to every account. The accompanying asset table should be created by the executor on every Register<Account>. Preferably the logic around permission tokens and roles would be completely removed from iroha_core and would reside only within executor/validator
Motivation

Roles are not a relevant concept for permissionless blockchains
more modular design (less things hard coded)

Who can help?
No response

For the record, this is part of the proposed architectural changes and will be demoed in the PoC.
The actual implementation is likely going to use something slightly different, more akin to strongly-typed, private metadata.

authors: appetrosyan mversic


text:
Unexpected feature flags

Since updating to Rust 1.80.0, which checks cfgs at compile-time, I've been noticing warnings about unexpected feature flags all over the project:

unexpected cfg condition value: ffi_import (feature flag is commented out, might be related to https://github.com/hyperledger/iroha/issues/3102)
unexpected cfg condition name: crate_type (seems unsupported: https://github.com/rust-lang/rust/issues/20267)
unexpected cfg condition value: metric-instrumentation (feature flag missing)

There are also warnings about #![cfg(not(coverage))] in UI tests.


text:
[fix] #3995: Fix topology mismatch

Description
Fix for bug with TopologyMismatch.
Root cause for the problem was that after handling message peer state wasn't cleared.
In case if view_change_index of previous block was 1 than peer will submit block with wrong topology (because state is not cleared).
After reset new Leader would submit new block if this would arrive too late to ProxyTail, it would be corrupted without ability to recover.
With current implementation of consensus it's troublesome to provide any test to verify that bug is 100% fixed...
I've created stand where i was able to successfully submit 263_975 blocks (run out of memory after that on my laptop).
Before the fix peers usually fail before that point (around 20_000 blocks or even earlier).

Relevant logs
2023-10-20T09:42:22.542288Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: View change updated addr=127.0.0.1:1340 role=ValidatingPeer current_view_change_index=1 <- VIEW CHANGE BIGGER THAN 1
2023-10-20T09:42:22.559937Z TRACE consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block received, voting... addr=127.0.0.1:1340 role=ValidatingPeer block_hash=c421db0f81c31894d87af757f7cb3bcaba581405bdfe7f1ac6fc12d0ed78a7c5
2023-10-20T09:42:22.564224Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block validated, signed and forwarded addr=127.0.0.1:1340 block_hash=c421db0f81c31894d87af757f7cb3bcaba581405bdfe7f1ac6fc12d0ed78a7c5
2023-10-20T09:42:22.585009Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Committing block addr=127.0.0.1:1340 role=ValidatingPeer block_height=20827 block_hash=934576a683136b0a87b6dfa65f43f1cc8416e8f8caf2e5d61d13a4fedd979903
2023-10-20T09:42:22.585900Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Creating block... txns=1 <- BLOCK IS CREATED WITHOUT RESET STATE
2023-10-20T09:42:22.588479Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block created addr=127.0.0.1:1340 partial_hash=ecb2bafac04929924f4ccd7bea7705f73510e687088216a1b155e9fb1ab54a6f
2023-10-20T09:42:22.588882Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: View change updated addr=127.0.0.1:1340 role=Leader current_view_change_index=0 <- STATE IS RESET ONLY HERE
2023-10-20T09:42:22.588962Z TRACE consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Failed to add proofs into view change proof chain error=Block hash of proof doesn't match hash of proof chain
2023-10-20T09:42:22.589075Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block sync update received addr=127.0.0.1:1340 role=Leader hash=934576a683136b0a87b6dfa65f43f1cc8416e8f8caf2e5d61d13a4fedd979903
2023-10-20T09:42:22.592757Z DEBUG consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Soft fork doesn't occurred: block has the same or smaller view change index addr=127.0.0.1:1340 role=Leader peer_latest_block_hash=Some({ iroha_crypto::hash::HashOf<iroha_data_mo
del::block::committed::VersionedCommittedBlock> 934576a683136b0a87b6dfa65f43f1cc8416e8f8caf2e5d61d13a4fedd979903 }) peer_latest_block_view_change_index=1 consensus_latest_block_hash=934576a683136b0a87b6dfa65f43f1cc8416e8f8caf2e5d61d13a4fedd979903 consensus_latest_block_view
_change_index=1
2023-10-20T09:42:22.592856Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Creating block... txns=1
2023-10-20T09:42:22.594778Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block created addr=127.0.0.1:1340 partial_hash=e6e7e50af9336376bbe711338076f1bde8c7708cc1748781af0239396e08a827 <- SECOND BLOCK CREATED FROM THE SAME LEADER
2023-10-20T09:42:22.601895Z TRACE consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Failed to add proofs into view change proof chain error=Block hash of proof doesn't match hash of proof chain
2023-10-20T09:42:22.601974Z ERROR consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: The hash of the committed block does not match the hash of the block stored by the peer. addr=127.0.0.1:1340 role=Leader committed_block_hash=(ecb2bafac04929924f4ccd7bea7705f7351
0e687088216a1b155e9fb1ab54a6f) voting_block_hash=e6e7e50af9336376bbe711338076f1bde8c7708cc1748781af0239396e08a827 <- AT THIS POINT IT'S TOO LATE BECAUSE PROXY TAIL COMMITTED WRONG BLOCK
2023-10-20T09:42:22.682569Z TRACE consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Failed to add proofs into view change proof chain error=Block hash of proof doesn't match hash of proof chain
2023-10-20T09:42:22.682706Z  INFO consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block sync update received addr=127.0.0.1:1340 role=Leader hash=9ae7355147f52d40a088d0aa6d0b2a6c3b58a7c0b4119ed2caddd9e1e9dd7a31
2023-10-20T09:42:22.683046Z ERROR consensus:main_thread_cycle: iroha_core::sumeragi::main_loop: Block not valid. addr=127.0.0.1:1340 role=Leader block_hash=9ae7355147f52d40a088d0aa6d0b2a6c3b58a7c0b4119ed2caddd9e1e9dd7a31 error=TopologyMismatch { expected: UniqueVec([PeerId
{ address: Ipv4(SocketAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port: 1339 }), public_key: {digest: ed25519, payload: [3, 65, F, 57, B7, D9, 5D, 53, 33, E4, 5B, 2C, 25, C3, 76, F5, 28, 66, A0, D8, 70, 55, B3, 84, 69, 79, 5C, 87, D8, 36, D2, 6A]} }, PeerId { address: Ipv4(Socke
tAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port: 1338 }), public_key: {digest: ed25519, payload: [10, 4D, E9, D3, A, 22, B4, AF, D0, 58, 28, 85, 8C, C2, 11, 29, 2E, 81, 85, D1, A1, 64, 66, B5, 8, 39, C6, 41, EB, 79, A7, 78]} }, PeerId { address: Ipv4(SocketAddrV4 { ip: Ipv4Add
r([127, 0, 0, 1]), port: 1337 }), public_key: {digest: ed25519, payload: [5C, 7, 84, 42, 2, E6, 5A, 8, AD, A0, D8, E9, 3, B8, 8B, AF, 7D, FE, 4, B0, B2, 7E, 6E, 42, D9, DF, D5, C, 32, 7F, 87, 54]} }, PeerId { address: Ipv4(SocketAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port:
1340 }), public_key: {digest: ed25519, payload: [6C, 50, 34, AE, BE, 12, F4, 97, C1, FB, BC, DA, C9, AC, C9, CA, D3, 45, 14, 94, 80, 3A, EC, 59, BE, FD, 42, DE, 1F, 3B, A6, AF]} }]), actual: UniqueVec([PeerId { address: Ipv4(SocketAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port
: 1340 }), public_key: {digest: ed25519, payload: [6C, 50, 34, AE, BE, 12, F4, 97, C1, FB, BC, DA, C9, AC, C9, CA, D3, 45, 14, 94, 80, 3A, EC, 59, BE, FD, 42, DE, 1F, 3B, A6, AF]} }, PeerId { address: Ipv4(SocketAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port: 1339 }), public_k
ey: {digest: ed25519, payload: [3, 65, F, 57, B7, D9, 5D, 53, 33, E4, 5B, 2C, 25, C3, 76, F5, 28, 66, A0, D8, 70, 55, B3, 84, 69, 79, 5C, 87, D8, 36, D2, 6A]} }, PeerId { address: Ipv4(SocketAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port: 1338 }), public_key: {digest: ed25519,
payload: [10, 4D, E9, D3, A, 22, B4, AF, D0, 58, 28, 85, 8C, C2, 11, 29, 2E, 81, 85, D1, A1, 64, 66, B5, 8, 39, C6, 41, EB, 79, A7, 78]} }, PeerId { address: Ipv4(SocketAddrV4 { ip: Ipv4Addr([127, 0, 0, 1]), port: 1337 }), public_key: {digest: ed25519, payload: [5C, 7, 84,
42, 2, E6, 5A, 8, AD, A0, D8, E9, 3, B8, 8B, AF, 7D, FE, 4, B0, B2, 7E, 6E, 42, D9, DF, D5, C, 32, 7F, 87, 54]} }]) }

Linked issue

Closes #3995

Benefits
Bug fixed.

I think you should add a comment in the code for this

I believe your results but I don't think this is the right fix. I've tested this code and found that it makes the network not work at all while under load. Under load should_sleep is not true most of the time and so the network does not produce blocks. I'm testing my fixes for rc19 with igor tomorrow, if they do not work then this is a good backup.

authors: Erigara SamHSmith mversic


text:
Restrict smoke tests to appropriate namespaces

Currently the intkey smoke and two-family tests verify that the entire
state is initially empty. This will work if the validator is started
with an empty genesis batch, as it is in these tests' compose files:
    sawtooth admin keygen && \
    sawtooth admin genesis && \
    sawtooth-validator -v \
        --endpoint tcp://validator:8800 \
        --bind component:tcp://eth0:4004 \
        --bind network:tcp://eth0:8800 \

However, if the genesis batch is non-empty, then state won't be empty,
and the tests will fail:
    sawtooth admin keygen && \
    sawtooth keygen my_key && \
    sawtooth config genesis -k /root/.sawtooth/keys/my_key.priv && \
    sawtooth admin genesis config-genesis.batch && \
    sawtooth-validator -vv \
      --endpoint tcp://validator:8800 \
      --bind component:tcp://eth0:4004 \
      --bind network:tcp://eth0:8800 \

This commit fixes the tests to only check their specific namespaces so
that the tests will pass regardless of what the genesis batch is.
The fix here is quick and dirty. A more elegant approach would be to refactor both tests using the RestClient at integration/sawtooth_integration/tests/integration_tools.py.

http://intelledger.github.io/app_developers_guide/ubuntu.html#validator-start-up-process It seems like sawtooth config genesis is a required startup command. So all of our integration tests should have them in the validator startup.

sawtooth config genesis is required if one is going to do any sort of settings transactions.  It can be skipped, but that could result in anyone hijacking the settings family (by being the only authorized key).

authors: boydjohnson nick-drozd peterschwarz

repo: hyperledger/sawtooth-core


text:
Enhancement: minimize diagnostic output

I've been digging through a lot of parser diagnostics, and some relatively minor errors can cause huge outputs (thousands of lines for a single bug).
The mechanism that causes the blowup is:

File A file has an error. This adds an error to diagnostics
File B tries to import file A, but fails due to error from (1)
Rather than stop visiting B, solang tries to finish resolution of B
All references to things from A generate new diagnostics
File C imports B ... (and so on)

While this isn't strictly a bug, I think minimizing this output is crucial for giving users good feedback.

Yes this is a very valid bug report. The compiler sometimes creates many spurious diagnostics in this situation. Thanks for reporting. The general idea is to continue analysing the code even if there are errors. While this might be useful sometimes, it is not implement correct currently, leading to many spurious errors.
For example, compiling the uniswap v2 route UniswapV2Router02.sol, where there is only a single problem in one of its imports. It should just report this, because it's the only problem:
error: 'foo' not found
   ┌─ /home/cyrill/mess/sub0/lib/contracts/libraries/TransferHelper.sol:12:3
   │
12 │         foo = 0;
   │         ^^^

Instead, I get this diagnostics output
error: 'IUniswapV2Router02' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:12:31
   │
12 │ contract UniswapV2Router02 is IUniswapV2Router02 {
   │                               ^^^^^^^^^^^^^^^^^^

error: 'factory' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:15:39
   │
15 │     address public immutable override factory;
   │                                       ^^^^^^^

error: 'WETH' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:16:39
   │
16 │     address public immutable override WETH;
   │                                       ^^^^

warning: 'public': visibility for constructors is ignored
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:23:50
   │
23 │     constructor(address _factory, address _WETH) public {
   │                                                  ^^^^^^

error: 'UniswapV2Library' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:45:42
   │
45 │         (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);
   │                                          ^^^^^^^^^^^^^^^^

error: 'addLiquidity' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:61:5
   │
61 │ ╭     function addLiquidity(
62 │ │         address tokenA,
63 │ │         address tokenB,
64 │ │         uint amountADesired,
   · │
69 │ │         uint deadline
70 │ │     ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
   │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:72:24
   │
72 │         address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
   │                        ^^^^^^^^^^^^^^^^

error: 'addLiquidityETH' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:77:5
   │
77 │ ╭     function addLiquidityETH(
78 │ │         address token,
79 │ │         uint amountTokenDesired,
80 │ │         uint amountTokenMin,
   · │
83 │ │         uint deadline
84 │ │     ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
   │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:93:24
   │
93 │         address pair = UniswapV2Library.pairFor(factory, token, WETH);
   │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidity' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:103:5
    │
103 │ ╭     function removeLiquidity(
104 │ │         address tokenA,
105 │ │         address tokenB,
106 │ │         uint liquidity,
    · │
110 │ │         uint deadline
111 │ │     ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
    │ ╰───────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:112:24
    │
112 │         address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
    │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidityETH' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:120:5
    │
120 │ ╭     function removeLiquidityETH(
121 │ │         address token,
122 │ │         uint liquidity,
123 │ │         uint amountTokenMin,
    · │
126 │ │         uint deadline
127 │ │     ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
    │ ╰─────────────────────────────────────────────────────────────────────────────────────────^

error: unknown function or type 'removeLiquidity'
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:128:36
    │
128 │         (amountToken, amountETH) = removeLiquidity(
    │                                    ^^^^^^^^^^^^^^^

error: 'removeLiquidityWithPermit' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:141:5
    │
141 │ ╭     function removeLiquidityWithPermit(
142 │ │         address tokenA,
143 │ │         address tokenB,
144 │ │         uint liquidity,
    · │
149 │ │         bool approveMax, uint8 v, bytes32 r, bytes32 s
150 │ │     ) external virtual override returns (uint amountA, uint amountB) {
    │ ╰────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:151:24
    │
151 │         address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
    │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidityETHWithPermit' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:156:5
    │
156 │ ╭     function removeLiquidityETHWithPermit(
157 │ │         address token,
158 │ │         uint liquidity,
159 │ │         uint amountTokenMin,
    · │
163 │ │         bool approveMax, uint8 v, bytes32 r, bytes32 s
164 │ │     ) external virtual override returns (uint amountToken, uint amountETH) {
    │ ╰──────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:165:24
    │
165 │         address pair = UniswapV2Library.pairFor(factory, token, WETH);
    │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidityETHSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:172:5
    │
172 │ ╭     function removeLiquidityETHSupportingFeeOnTransferTokens(
173 │ │         address token,
174 │ │         uint liquidity,
175 │ │         uint amountTokenMin,
    · │
178 │ │         uint deadline
179 │ │     ) public virtual override ensure(deadline) returns (uint amountETH) {
    │ ╰───────────────────────────────────────────────────────────────────────^

error: unknown function or type 'removeLiquidity'
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:180:25
    │
180 │         (, amountETH) = removeLiquidity(
    │                         ^^^^^^^^^^^^^^^

error: 'removeLiquidityETHWithPermitSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:193:5
    │
193 │ ╭     function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
194 │ │         address token,
195 │ │         uint liquidity,
196 │ │         uint amountTokenMin,
    · │
200 │ │         bool approveMax, uint8 v, bytes32 r, bytes32 s
201 │ │     ) external virtual override returns (uint amountETH) {
    │ ╰────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:202:24
    │
202 │         address pair = UniswapV2Library.pairFor(factory, token, WETH);
    │                        ^^^^^^^^^^^^^^^^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:215:33
    │
215 │             (address token0,) = UniswapV2Library.sortTokens(input, output);
    │                                 ^^^^^^^^^^^^^^^^

error: 'swapExactTokensForTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:224:5
    │
224 │ ╭     function swapExactTokensForTokens(
225 │ │         uint amountIn,
226 │ │         uint amountOutMin,
227 │ │         address[] calldata path,
228 │ │         address to,
229 │ │         uint deadline
230 │ │     ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
    │ ╰────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:231:19
    │
231 │         amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapTokensForExactTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:238:5
    │
238 │ ╭     function swapTokensForExactTokens(
239 │ │         uint amountOut,
240 │ │         uint amountInMax,
241 │ │         address[] calldata path,
242 │ │         address to,
243 │ │         uint deadline
244 │ │     ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
    │ ╰────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:245:19
    │
245 │         amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapExactETHForTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:252:5
    │
252 │ ╭     function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
253 │ │         external
254 │ │         virtual
255 │ │         override
256 │ │         payable
257 │ │         ensure(deadline)
258 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:261:19
    │
261 │         amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapTokensForExactETH' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:267:5
    │
267 │ ╭     function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
268 │ │         external
269 │ │         virtual
270 │ │         override
271 │ │         ensure(deadline)
272 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:275:19
    │
275 │         amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapExactTokensForETH' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:284:5
    │
284 │ ╭     function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
285 │ │         external
286 │ │         virtual
287 │ │         override
288 │ │         ensure(deadline)
289 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:292:19
    │
292 │         amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapETHForExactTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:301:5
    │
301 │ ╭     function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
302 │ │         external
303 │ │         virtual
304 │ │         override
305 │ │         payable
306 │ │         ensure(deadline)
307 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:310:19
    │
310 │         amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:324:33
    │
324 │             (address token0,) = UniswapV2Library.sortTokens(input, output);
    │                                 ^^^^^^^^^^^^^^^^

error: 'swapExactTokensForTokensSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:339:5
    │
339 │ ╭     function swapExactTokensForTokensSupportingFeeOnTransferTokens(
340 │ │         uint amountIn,
341 │ │         uint amountOutMin,
342 │ │         address[] calldata path,
343 │ │         address to,
344 │ │         uint deadline
345 │ │     ) external virtual override ensure(deadline) {
    │ ╰────────────────────────────────────────────────^

error: 'TransferHelper' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:346:9
    │
346 │         TransferHelper.safeTransferFrom(
    │         ^^^^^^^^^^^^^^

error: 'swapExactETHForTokensSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:356:5
    │
356 │ ╭     function swapExactETHForTokensSupportingFeeOnTransferTokens(
357 │ │         uint amountOutMin,
358 │ │         address[] calldata path,
359 │ │         address to,
    · │
365 │ │         payable
366 │ │         ensure(deadline)
    │ ╰────────────────────────^

error: unknown function or type 'IWETH'
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:370:9
    │
370 │         IWETH(WETH).deposit{value: amountIn}();
    │         ^^^^^

error: 'swapExactTokensForETHSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:379:5
    │
379 │ ╭     function swapExactTokensForETHSupportingFeeOnTransferTokens(
380 │ │         uint amountIn,
381 │ │         uint amountOutMin,
382 │ │         address[] calldata path,
    · │
388 │ │         override
389 │ │         ensure(deadline)
    │ ╰────────────────────────^

error: 'TransferHelper' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:392:9
    │
392 │         TransferHelper.safeTransferFrom(
    │         ^^^^^^^^^^^^^^

error: 'quote' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:403:5
    │
403 │     function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
    │     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:404:16
    │
404 │         return UniswapV2Library.quote(amountA, reserveA, reserveB);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountOut' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:407:5
    │
407 │ ╭     function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
408 │ │         public
409 │ │         pure
410 │ │         virtual
411 │ │         override
412 │ │         returns (uint amountOut)
    │ ╰────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:414:16
    │
414 │         return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountIn' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:417:5
    │
417 │ ╭     function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
418 │ │         public
419 │ │         pure
420 │ │         virtual
421 │ │         override
422 │ │         returns (uint amountIn)
    │ ╰───────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:424:16
    │
424 │         return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountsOut' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:427:5
    │
427 │ ╭     function getAmountsOut(uint amountIn, address[] memory path)
428 │ │         public
429 │ │         view
430 │ │         virtual
431 │ │         override
432 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:434:16
    │
434 │         return UniswapV2Library.getAmountsOut(factory, amountIn, path);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountsIn' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:437:5
    │
437 │ ╭     function getAmountsIn(uint amountOut, address[] memory path)
438 │ │         public
439 │ │         view
440 │ │         virtual
441 │ │         override
442 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:444:16
    │
444 │         return UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                ^^^^^^^^^^^^^^^^

error: 'foo' not found
   ┌─ /home/cyrill/mess/sub0/lib/contracts/libraries/TransferHelper.sol:12:3
   │
12 │         foo = 0;
   │         ^^^

warning: conversion truncates uint256 to uint128, as value is type uint128 on target Polkadot
   ┌─ /home/cyrill/mess/sub0/lib/contracts/libraries/TransferHelper.sol:49:43
   │
49 │         (bool success, ) = to.call{value: value}(new bytes(0));
   │                                           ^^^^^

error: 'IUniswapV2Router01' not found
  ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol:5:33
  │
5 │ interface IUniswapV2Router02 is IUniswapV2Router01 {
  │                                 ^^^^^^^^^^^^^^^^^^

error: 'SafeMath' not found
  ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:8:11
  │
8 │     using SafeMath for uint;
  │           ^^^^^^^^

error: unknown function or type 'IUniswapV2Pair'
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:31:43
   │
31 │         (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();
   │                                           ^^^^^^^^^^^^^^

error: method 'mul' does not exist
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:39:27
   │
39 │         amountB = amountA.mul(reserveB) / reserveA;
   │                           ^^^

error: method 'mul' does not exist
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:46:41
   │
46 │         uint amountInWithFee = amountIn.mul(997);
   │                                         ^^^

error: method 'mul' does not exist
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:56:36
   │
56 │         uint numerator = reserveIn.mul(amountOut).mul(1000);
   │                                    ^^^

Full diagnostics output
error: 'IUniswapV2Router02' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:12:31
   │
12 │ contract UniswapV2Router02 is IUniswapV2Router02 {
   │                               ^^^^^^^^^^^^^^^^^^

error: 'factory' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:15:39
   │
15 │     address public immutable override factory;
   │                                       ^^^^^^^

error: 'WETH' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:16:39
   │
16 │     address public immutable override WETH;
   │                                       ^^^^

warning: 'public': visibility for constructors is ignored
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:23:50
   │
23 │     constructor(address _factory, address _WETH) public {
   │                                                  ^^^^^^

error: 'UniswapV2Library' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:45:42
   │
45 │         (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);
   │                                          ^^^^^^^^^^^^^^^^

error: 'addLiquidity' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:61:5
   │
61 │ ╭     function addLiquidity(
62 │ │         address tokenA,
63 │ │         address tokenB,
64 │ │         uint amountADesired,
   · │
69 │ │         uint deadline
70 │ │     ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
   │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:72:24
   │
72 │         address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
   │                        ^^^^^^^^^^^^^^^^

error: 'addLiquidityETH' does not override anything
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:77:5
   │
77 │ ╭     function addLiquidityETH(
78 │ │         address token,
79 │ │         uint amountTokenDesired,
80 │ │         uint amountTokenMin,
   · │
83 │ │         uint deadline
84 │ │     ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
   │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:93:24
   │
93 │         address pair = UniswapV2Library.pairFor(factory, token, WETH);
   │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidity' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:103:5
    │
103 │ ╭     function removeLiquidity(
104 │ │         address tokenA,
105 │ │         address tokenB,
106 │ │         uint liquidity,
    · │
110 │ │         uint deadline
111 │ │     ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
    │ ╰───────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:112:24
    │
112 │         address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
    │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidityETH' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:120:5
    │
120 │ ╭     function removeLiquidityETH(
121 │ │         address token,
122 │ │         uint liquidity,
123 │ │         uint amountTokenMin,
    · │
126 │ │         uint deadline
127 │ │     ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
    │ ╰─────────────────────────────────────────────────────────────────────────────────────────^

error: unknown function or type 'removeLiquidity'
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:128:36
    │
128 │         (amountToken, amountETH) = removeLiquidity(
    │                                    ^^^^^^^^^^^^^^^

error: 'removeLiquidityWithPermit' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:141:5
    │
141 │ ╭     function removeLiquidityWithPermit(
142 │ │         address tokenA,
143 │ │         address tokenB,
144 │ │         uint liquidity,
    · │
149 │ │         bool approveMax, uint8 v, bytes32 r, bytes32 s
150 │ │     ) external virtual override returns (uint amountA, uint amountB) {
    │ ╰────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:151:24
    │
151 │         address pair = UniswapV2Library.pairFor(factory, tokenA, tokenB);
    │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidityETHWithPermit' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:156:5
    │
156 │ ╭     function removeLiquidityETHWithPermit(
157 │ │         address token,
158 │ │         uint liquidity,
159 │ │         uint amountTokenMin,
    · │
163 │ │         bool approveMax, uint8 v, bytes32 r, bytes32 s
164 │ │     ) external virtual override returns (uint amountToken, uint amountETH) {
    │ ╰──────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:165:24
    │
165 │         address pair = UniswapV2Library.pairFor(factory, token, WETH);
    │                        ^^^^^^^^^^^^^^^^

error: 'removeLiquidityETHSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:172:5
    │
172 │ ╭     function removeLiquidityETHSupportingFeeOnTransferTokens(
173 │ │         address token,
174 │ │         uint liquidity,
175 │ │         uint amountTokenMin,
    · │
178 │ │         uint deadline
179 │ │     ) public virtual override ensure(deadline) returns (uint amountETH) {
    │ ╰───────────────────────────────────────────────────────────────────────^

error: unknown function or type 'removeLiquidity'
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:180:25
    │
180 │         (, amountETH) = removeLiquidity(
    │                         ^^^^^^^^^^^^^^^

error: 'removeLiquidityETHWithPermitSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:193:5
    │
193 │ ╭     function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
194 │ │         address token,
195 │ │         uint liquidity,
196 │ │         uint amountTokenMin,
    · │
200 │ │         bool approveMax, uint8 v, bytes32 r, bytes32 s
201 │ │     ) external virtual override returns (uint amountETH) {
    │ ╰────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:202:24
    │
202 │         address pair = UniswapV2Library.pairFor(factory, token, WETH);
    │                        ^^^^^^^^^^^^^^^^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:215:33
    │
215 │             (address token0,) = UniswapV2Library.sortTokens(input, output);
    │                                 ^^^^^^^^^^^^^^^^

error: 'swapExactTokensForTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:224:5
    │
224 │ ╭     function swapExactTokensForTokens(
225 │ │         uint amountIn,
226 │ │         uint amountOutMin,
227 │ │         address[] calldata path,
228 │ │         address to,
229 │ │         uint deadline
230 │ │     ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
    │ ╰────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:231:19
    │
231 │         amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapTokensForExactTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:238:5
    │
238 │ ╭     function swapTokensForExactTokens(
239 │ │         uint amountOut,
240 │ │         uint amountInMax,
241 │ │         address[] calldata path,
242 │ │         address to,
243 │ │         uint deadline
244 │ │     ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
    │ ╰────────────────────────────────────────────────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:245:19
    │
245 │         amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapExactETHForTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:252:5
    │
252 │ ╭     function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
253 │ │         external
254 │ │         virtual
255 │ │         override
256 │ │         payable
257 │ │         ensure(deadline)
258 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:261:19
    │
261 │         amounts = UniswapV2Library.getAmountsOut(factory, msg.value, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapTokensForExactETH' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:267:5
    │
267 │ ╭     function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
268 │ │         external
269 │ │         virtual
270 │ │         override
271 │ │         ensure(deadline)
272 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:275:19
    │
275 │         amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapExactTokensForETH' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:284:5
    │
284 │ ╭     function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
285 │ │         external
286 │ │         virtual
287 │ │         override
288 │ │         ensure(deadline)
289 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:292:19
    │
292 │         amounts = UniswapV2Library.getAmountsOut(factory, amountIn, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'swapETHForExactTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:301:5
    │
301 │ ╭     function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
302 │ │         external
303 │ │         virtual
304 │ │         override
305 │ │         payable
306 │ │         ensure(deadline)
307 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:310:19
    │
310 │         amounts = UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                   ^^^^^^^^^^^^^^^^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:324:33
    │
324 │             (address token0,) = UniswapV2Library.sortTokens(input, output);
    │                                 ^^^^^^^^^^^^^^^^

error: 'swapExactTokensForTokensSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:339:5
    │
339 │ ╭     function swapExactTokensForTokensSupportingFeeOnTransferTokens(
340 │ │         uint amountIn,
341 │ │         uint amountOutMin,
342 │ │         address[] calldata path,
343 │ │         address to,
344 │ │         uint deadline
345 │ │     ) external virtual override ensure(deadline) {
    │ ╰────────────────────────────────────────────────^

error: 'TransferHelper' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:346:9
    │
346 │         TransferHelper.safeTransferFrom(
    │         ^^^^^^^^^^^^^^

error: 'swapExactETHForTokensSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:356:5
    │
356 │ ╭     function swapExactETHForTokensSupportingFeeOnTransferTokens(
357 │ │         uint amountOutMin,
358 │ │         address[] calldata path,
359 │ │         address to,
    · │
365 │ │         payable
366 │ │         ensure(deadline)
    │ ╰────────────────────────^

error: unknown function or type 'IWETH'
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:370:9
    │
370 │         IWETH(WETH).deposit{value: amountIn}();
    │         ^^^^^

error: 'swapExactTokensForETHSupportingFeeOnTransferTokens' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:379:5
    │
379 │ ╭     function swapExactTokensForETHSupportingFeeOnTransferTokens(
380 │ │         uint amountIn,
381 │ │         uint amountOutMin,
382 │ │         address[] calldata path,
    · │
388 │ │         override
389 │ │         ensure(deadline)
    │ ╰────────────────────────^

error: 'TransferHelper' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:392:9
    │
392 │         TransferHelper.safeTransferFrom(
    │         ^^^^^^^^^^^^^^

error: 'quote' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:403:5
    │
403 │     function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
    │     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:404:16
    │
404 │         return UniswapV2Library.quote(amountA, reserveA, reserveB);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountOut' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:407:5
    │
407 │ ╭     function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
408 │ │         public
409 │ │         pure
410 │ │         virtual
411 │ │         override
412 │ │         returns (uint amountOut)
    │ ╰────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:414:16
    │
414 │         return UniswapV2Library.getAmountOut(amountIn, reserveIn, reserveOut);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountIn' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:417:5
    │
417 │ ╭     function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
418 │ │         public
419 │ │         pure
420 │ │         virtual
421 │ │         override
422 │ │         returns (uint amountIn)
    │ ╰───────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:424:16
    │
424 │         return UniswapV2Library.getAmountIn(amountOut, reserveIn, reserveOut);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountsOut' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:427:5
    │
427 │ ╭     function getAmountsOut(uint amountIn, address[] memory path)
428 │ │         public
429 │ │         view
430 │ │         virtual
431 │ │         override
432 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:434:16
    │
434 │         return UniswapV2Library.getAmountsOut(factory, amountIn, path);
    │                ^^^^^^^^^^^^^^^^

error: 'getAmountsIn' does not override anything
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:437:5
    │
437 │ ╭     function getAmountsIn(uint amountOut, address[] memory path)
438 │ │         public
439 │ │         view
440 │ │         virtual
441 │ │         override
442 │ │         returns (uint[] memory amounts)
    │ ╰───────────────────────────────────────^

error: 'UniswapV2Library' not found
    ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/UniswapV2Router02.sol:444:16
    │
444 │         return UniswapV2Library.getAmountsIn(factory, amountOut, path);
    │                ^^^^^^^^^^^^^^^^

error: 'foo' not found
   ┌─ /home/cyrill/mess/sub0/lib/contracts/libraries/TransferHelper.sol:12:3
   │
12 │         foo = 0;
   │         ^^^

warning: conversion truncates uint256 to uint128, as value is type uint128 on target Polkadot
   ┌─ /home/cyrill/mess/sub0/lib/contracts/libraries/TransferHelper.sol:49:43
   │
49 │         (bool success, ) = to.call{value: value}(new bytes(0));
   │                                           ^^^^^

error: 'IUniswapV2Router01' not found
  ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol:5:33
  │
5 │ interface IUniswapV2Router02 is IUniswapV2Router01 {
  │                                 ^^^^^^^^^^^^^^^^^^

error: 'SafeMath' not found
  ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:8:11
  │
8 │     using SafeMath for uint;
  │           ^^^^^^^^

error: unknown function or type 'IUniswapV2Pair'
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:31:43
   │
31 │         (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();
   │                                           ^^^^^^^^^^^^^^

error: method 'mul' does not exist
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:39:27
   │
39 │         amountB = amountA.mul(reserveB) / reserveA;
   │                           ^^^

error: method 'mul' does not exist
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:46:41
   │
46 │         uint amountInWithFee = amountIn.mul(997);
   │                                         ^^^

error: method 'mul' does not exist
   ┌─ /home/cyrill/mess/sub0/v2-periphery/contracts/libraries/UniswapV2Library.sol:56:36
   │
56 │         uint numerator = reserveIn.mul(amountOut).mul(1000);
   │                                    ^^^

authors: bkushigian xermicus

repo: hyperledger/solang


text:
Support for CL-RSA

In the README supported signatures section it is mentioned that Camenisch Lysyanskaya RSA based signatures are supported. But in the documentation of the latest version there is no module for this type of signatures, so from what I understand it is still in development.
It would be great if you will mention the status of the CL_RSA in the readme - in development or something like this.

It’s in the folder named cl. See https://github.com/hyperledger/ursa/tree/master/libursa/src/cl

It’s being actively used by Hyperledger Indy, Sovrin, and others

Thanks!

repo: hyperledger/ursa


text:
Many to Many Issue

I had issues with Many to Many relationships. I found the problem happens at this line:
childPredicate = [NSPredicate predicateWithFormat:@"ANY %K.%K = %@", relationshipName, destinationLocalKey, [children valueForKey:destinationRemoteKey]];

I noticed that we generate a predicate that points to the child but since it has relationshipName in it, it ends up being invalid predicate.
Here are the models diagram:

The predicate that that line generates is
ANY fulfillers.xid = (<some xids>)

But it does it on fulfillers Model.
Here is a JSON sample:
{
  "xid":"mstaff_F58dVBTsXznvMpCPmpQgyV",
  "user":{
    "full_name":"Ashkan Nasseri",
    "email":"a@b.com",
    "phone":"###-###-####",
    "xid":"usr_8YQhMfiLvXEg6TaD7YKyjL",
    "photo_inventory":true
  },
  "image":"a.jpg",
  "image_xs":"s.jpg",
  "fulfillers":[
    {
      "xid":"ffr_AkAHQegYkrobp5xc2ySc5D",
      "name":"New York"
    },
    {
      "xid":"ffr_n5eGjfHQRqKr4tAfL7RNi9",
      "name":"Chicago"
    }
  ],
  "current_vehicle":{
    "xid":"vhc_test",
    "name":"Test"
  }
}

I fixed the problem by removing %k. and relationshipName from the predicate generation, everything works fine for me now but it breaks testCustomPrimaryKey.

@ashkan18 Hi!
If you are posting about a crash in your application or a feature request, an example of your JSON and your Core Data model or a stacktrace would be really helpful for us to be able to reproduce your issue or understand your request.

Sorry I was still writing the issue that I accidentally submitted :)

Thanks for explaining the issue is such detail, I'll look into it.

Hi @ashkan18, everything seems to be working fine for me, I tried your JSON and your Model and the new tests are passing.
https://github.com/hyperoslo/Sync/pull/90
I wonder if it's something that's been fixed in Sync 1.0.3.
Would you mind verifying? Thanks!

@3lvis Works like a charm! Thanks man and great work!

Thanks! 🍻

hey @3lvis so our tests with latest code are passing but when I tried it in the actual app I ended up seeing the same issue again, I tracked down the issue and it seems the predicate i was talking about crashes on DATAStackSQLiteStoreType and it works fine when we use DATAStackInMemoryStoreType.
That kind of exactly matches the giphy you posted :)

in your test if you change line 19 in your Test.m to switch to SQLiteStore you'll see the test fails:
DATAStack *dataStack = [[DATAStack alloc] initWithModelName:modelName
                                                         bundle:[NSBundle bundleForClass:[self class]]
                                                      storeType:DATAStackSQLiteStoreType];

@ashkan18 Woah, that's weird. I was able to reproduce it. Will have a look :)

Hi again @ashkan18! I took some time to work in this issues, I found a few issues with using SQLiteStore that should be fixed in Sync 1.0.4, let me know how it goes.
https://github.com/hyperoslo/Sync/releases/tag/1.0.4

Thanks @3lvis ! works great!

repo: hyperoslo/Sync


text:
URGENT!!

Anyone here using this app now? Or is their any update in this app?

We are working on an update in the current sprint!

The project is rewritten and uses the latest SDKs.

authors: ph4t0o0o0om righthalf tulushev

license: MIT


text:
fix: cd to directory before sourcing

builtin cd to where the .env file is located before sourcing it.
This is nice because the env file can be written without either writing its location inside it, or sad (and brittle?) ways to figure it out.
Autoenv is sophisticated, so the sophistication belongs on this side.

Thanks for the PR - however this looks like a breaking change.
I would be receptive to adding an environment variable to opt-into this behavior, but I don't think that's necessary due to the surrounding AUTOENV_CUR_FILE variable. Is that the "brittle part" you are referring to? Because if so, I can document its usage and add tests to ensure that variable is guaranteed to exist

authors: aes hyperupcall

repo: hyperupcall/autoenv


text:
The top layer not used for waybar: it always goes to the bottom layer

waybar goes to the bottom layer
In waybar, I have:
$ grep layer .config/waybar/*
.config/waybar/config:    "layer": "top", // Waybar at top|bottom layer

Expected behavior
I would expect the waybar to be on the top layer, along with its tooltips, as it was configured that way.
Problem
However, I can't see the tooltips, and that's because hyprctl layers reports:
Monitor eDP-1:
    Layer level 0 (background):
    Layer level 1 (bottom):
            Layer 55d09ee45270: xywh: 0 0 1440 25, namespace: waybar
    Layer level 2 (top):
    Layer level 3 (overlay):

Anything else?
I have no rules for layers in my hyprland configs except for blur:
$ grep -E "layer|top|bottom" .config/hypr/*
.config/hypr/hyprland.conf:layerrule = blur,^(waybar)$
.config/hypr/hyprland.conf:layerrule = ignorezero,^(waybar)$
.config/hypr/hyprland.conf:layerrule = blur,^(wofi)$

At least 1 other person has reported a similar issue
Suggestion
It might be interesting to add options to change the layers at runtime, so if waybar or anything is on the bottom layer like here, to move it to the top layer.

wrong fucking repo

Did you just glance at the first half to harshly conclude "work fucking repo"
Or did you make it to the conclusion and the suggestion that hyprland may benefit from an option to change the layers at runtime? (if that's possible)

This is not hyprland.

authors: csdvrx vaxerski

repo: hyprwm/Hypr


text:
Mouse freezes for 2-5 seconds after moving it to a different monitor

How to reproduce

On arch install hyprland-git.
Move the cursor to a different monitor.

Closing as I think it is related with running out of memory and hyprland working with swap. I'm not certain yet will research it more.

Maybe related to
https://github.com/hyprwm/hyprpaper/issues/63

Seems to be fixed? 24h idle time and the issue didn't manifest for the first time in 1-2 weeks.

repo: hyprwm/Hyprland


text:
Damage tracking issues for low framerate Vulkan apps

Hyprland Version
Hyprland commit 2ea7d10
Bug or Regression?
Bug
Description
Vulkan applications with a framerate below the monitors refresh rate are not damage-tracked correctly on my system. As far as I can tell, OpenGL apps don't exhibit this behaviour. When recording via e.g. OBS, the apps render correctly.
Since it happens on all major compositors (Tested: gnome, plasma, sway, hyprland) and I only have a Nvidia system, I'm unsure whether this is a compositor issue or a symptom of nvidia pushing buggy driver to production. So feel free to close this if you think it's the latter, though I'd appreciate it if someone can investigate if it happens on other vendors.
How to reproduce

Open a Vulkan application
Limit framerate to below the monitors refresh rate
Move the camera around

Crash reports, logs, images, videos
https://github.com/hyprwm/Hyprland/assets/58082714/a1f6cb2c-7e96-4ca5-a1dd-3dba735cd2ee
Apologies for the bad quality, I couldn't record via xdg-desktop-portal, since the recorded footage doesn't show the issue. Footage is from my Vulkan application, though the issue isn't specific to my app. I can upload binaries for it though, if needed

Since it happens on all major compositors (Tested: gnome, plasma, sway, hyprland)

safe to say it's not an issue with wlroots, hyprland, or any of the above, but drivers, or your code.


text:
Dispatcher movewindoworgroup to move into/out-of an unlocked group

Description
I would like a dispatcher to move windows into/out-of groups when the window is not in a locked group.
This effectively combines moveintogroup and moveoutofgroup, but allows using the same bind for both dispatchers. This would work because groups can be locked, in which case this dispatcher would move the group rather than a window.
bindm = mouse:276, movewindoworgroup
bind = SUPER_SHIFT, left, movewindoworgroup, l
bind = SUPER_SHIFT, right, movewindoworgroup, r
bind = SUPER_SHIFT, up, movewindoworgroup, u
bind = SUPER_SHIFT, down, movewindoworgroup, d

Maybe name it one of these:

movewindowmaybegroup
moveunlockedwindow (Makes less sense when a window outside of a group)
movewindoworgroup (I like this one best)

This does not work because all dispatchers are triggered, and they conflict.
bindm = , mouse:276, moveintogroup
bindm = , mouse:276, moveoutofgroup
bindm = , mouse:276, movewindow

Is there some magical order in which these work?

I just realized that when using bindm the movewindow dispatcher can behave like moveintogroup (drop a window into a group), but when used with regular bind a window will swap positions with the entire group instead of joining it.

This does not work because all dispatchers are triggered, and they conflict.
bindm = , mouse:276, moveintogroup
bindm = , mouse:276, moveoutofgroup
bindm = , mouse:276, movewindow

Is there some magical order in which these work?

Doesn't CKeybindManager::mouse only support movewindow' and resizewindow'?
https://github.com/memchr/Hyprland/blob/4986d74ef201171a930c312a8e3b72a22d9b84ee/src/managers/KeybindManager.cpp#L1948

Doesn't CKeybindManager::mouse only support movewindow' and resizewindow'?

It's been a while so I'm not sure how clearly I remember, but I'm quite sure having those three dispatchers made it behave really weirdly. Like it would pick up the window and put it back, for an example of the behavior of one particular order.
I'm trying to remember if that was my testing with the keyboard but I don't think so, because I remember walking away and forgetting about it, then coming back and thinking "what the heck is happening to my mouse 5".

≥ Does this mean moving the container like what swapActive or moveActiveTo does?
Yes for the former, but what ismoveactiveto again? Not looking at the wiki ATM.

moving the active window outside its group in another direction when the dispatcher is called on a group, and behaving like moveintogroup when called on a window

That sounds exactly like the behavior I'm after.

the dispatcher

I assume you're talking about a new one, movewindoworgroup?

I assume you're talking about a new one, movewindoworgroup?

Yes, by the dispatcher I mean the hypothetical new dispatcher who will move the window or group.

Row number 4: active is window, direction is window --do nothing. I don't think that's what I want, that should behave as movewindow or swapactive, unless I'm misunderstanding again.

Having the new dispatcher swap window position movewindow or swapactive would be inconsistent with how the dispatcher it is supposed to combine works.
The existing dispatchers, namely moveintogroup and moveoutofgroup, operate on at least one group by adding or removing window in the group(s). In addition, these dispatchers typically increase or decrease the total number of containers in a workspace, but never swap containers.
This inconsistent behaviour could confuse users who are familiar with the current functionality and defaults.
Therefore, in my opinion, the new dispatcher should not swap container positions by default when both the active and target containers are windows. Instead, it would be better to provide an option to enable container swapping via a configuration flag, for those who want that behavior.

That sounds exactly like the behavior I'm after

Please note that this behaviour ignores m_sGroupData.locked and does not swap group containers like movewindow does, in the same light of maintaining consistency, with the additional reason being that moveintogroup also ignores m_sGroupData.locked by default.

The current onWindowCreatedTiling() methods do not currently allow you to move the window out of a group in a specific direction from any built-in layout. It only respects the mouse position or force_split for dwindle.

My idea for the movewindoworgroup was for it to always have a reasonable behavior (always move) if at all possible.

Having the new dispatcher swap window position movewindow or swapactive would be inconsistent with how the dispatcher it is supposed to combine works.

Two thoughts on this. This is inherently rather complicated, and therefore just calling the functions of other dispatchers or combining them would not be appropriate. For brevity, I use terms like AND and THEN below to describe behaviors; however this is not actually what I think should happen. We need unique code.
Because you wish to remain "consistent" with how these work (and this consistency does not adhere to my ideal functionality) I have introduced two behavioral "modes", A and B. Behavior A is essentially "this dispatcher is generic and dispatches other behaviors, and Behavior B is "move the window if it is possible".

Active Tile
Direction/Target Tile
Behavior A
Behavior B
Reason

Window in Group
Group
moveoutofgroup THEN moveintogroup
moveoutofgroup
May want moveoutofgroup only because it is more versatile. The window can be moved a second time if moveintogroup is desired. Which dispatcher behavior is selected could be a choice.

Window in Group
Window
moveoutofgroup
moveoutofgroup
Self-evident.

Window in Group
null
moveoutofgroup
moveoutofgroup
Self-evident.

Window
Group
moveintogroup
moveintogroup
Self-evident.

Window
Window
Do nothing.
swapactive
Self-evident.

Window
null
Do nothing.
Do nothing.
Self-evident.

Window in Floating Group
null
moveoutofgroup
moveoutofgroup AND float
Which behavior depends on if the user wants a window which is already in a floating group to remain floating, or if it should find a position in the tiled layout. Choice.

Floating Window
null
Do nothing.
Do nothing.
Self-evident.

Now, I would like to see something very similar to work with bindm, because that is how I intend to use it. I will make a new table with my ideas after a short break.

For another new dispatcher to work with bindm (and probably a control key):

Hovered Tile
Behavior A
Behavior B
Reason

Window in a Group
moveoutofgroup THEN movewindow
"
Self-evident.

Window
movewindow
"
Self-evident.

Window in Floating Group
moveoutofgroup THEN movewindow
moveoutofgroup AND float THEN movewindow
The original movewindow can always move the group itself, so no special behavior (option or C) is necessary.

Floating Window
movewindow
"
Self-evident.

I'm annoyed, because you didn't read the preface.

I am truly sorry for the frustration, but this is to clear up any confusion about what the dispatcher actually does, So we can cooperate more effectively.
If you prefer, we can stop this conversation.
https://github.com/hyprwm/Hyprland/blob/7155b4c26606d7681bacb2517b1d19495336c6c3/src/managers/KeybindManager.cpp#L2036-L2069

@spikespaz Hi, sorry for the intrusion, would you mind testing this PR? #3006

The new dispatcher is currently (temporarily) named chicken, a new configuration variable chicken_checkgrouplock has been added which causes the dispatcher to behave alternatively around looked windows.
The dispatcher accepts any args that moveintogroup accepts.
For example, you can test it like this
bind = SHIFT, h, chicken, l
bind = SHIFT, l, chicken, r
bind = SHIFT, k, chicken, u
bind = SHIFT, j, chicken, d

binds {
        chicken_checkgrouplock = true
}

Other changes to the behaviour of existing dispersers are

Moveoutofgroup will now focus and move the cursor to the moved window instead of the previous group.

Hi, I have no way to meaningfully make this enhancement any better, but I'd like to enter the discussion by pointing out that I've found this Issue thread when trying to implement a dispatcher of the name "movewindoworgroup" described in Hyprland Wiki
If this is not an implemented feature or a feature in testing only, why have it be described as available to use inside of the Wiki?

Already implemented and merged: #3006 (with the exception of the mouse bindings)
and the wiki, to my knowledge, always documents the last git main branch.

@vaxerski Should this be closed?

Is it implemented as of version 0.29.1-1?

I ask because in said version, hyprland told me no such dispatcher existed

I ask because in said version, hyprland told me no such dispatcher existed

Already implemented and merged: https://github.com/hyprwm/Hyprland/pull/3006 (with the exception of the mouse bindings), released in v0.30

released in v0.30

Ah thank you, I hadn't read that, very sorry for the inconvenience.

@memchr

I'm annoyed

I apologize for this interaction.

Wasn't this implemented already, btw? I mean, there's a dispatcher, but the issue is still open.

authors: fleurc izmyname memchr spikespaz


text:
Holding right click on trackpad increases (doubles?) cursor speed

Already reported ? *

[X] I have searched the existing open and closed issues.

Regression?
No
System Info and Version
 System/Version info
Hyprland, built from branch main at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259  (props: bump version to 0.42.0).
Date: 2024-08-07
Tag: v0.42.0, commits: 9a09eac79b85c846e3a865a9078a3f8ff65a9259

flags: (if any)

System Information:
System name: Linux
Node name: asahi
Release: 6.10.6-asahi
Version: #1-NixOS SMP PREEMPT_DYNAMIC Tue Jan  1 00:00:00 UTC 1980

GPU information:
apple,agx-t8112

os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.11.20240906.574d1ea"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.11 (Vicuna)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.11 (Vicuna)"
VERSION_CODENAME=vicuna
VERSION_ID="24.11"

plugins:

======Config-Start======

Config File: /home/mg95/.config/hypr/hyprland.conf: Read Succeeded
exec-once = /nix/store/aim59w58hf2rf4i2zi4vzi2f1z9i1anz-dbus-1.14.10/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
$accent=$mauve
$accentAlpha=$mauveAlpha
$mod=SUPER
source=/nix/store/5nqbr4x6yb7bmny12m1fda75brsh8naz-source/themes/mocha.conf
decoration {
  blur {
    passes=3
  }
  inactive_opacity=0.900000
  rounding=10
}

device {
  name=mac14,7-touch-bar
  enabled=0
}

general {
  allow_tearing=false
  border_size=2
  col.active_border=$mauve
  col.inactive_border=$overlay0
  gaps_in=5
  gaps_out=5
}

gestures {
  workspace_swipe=true
  workspace_swipe_distance=800
  workspace_swipe_forever=false
  workspace_swipe_min_fingers=true
  workspace_swipe_min_speed_to_force=6
}

input {
  touchpad {
    clickfinger_behavior=true
    disable_while_typing=false
    natural_scroll=true
    scroll_factor=0.125000
    tap-and-drag=false
  }
  accel_profile=adaptive
  follow_mouse=true
  kb_layout=us,tr
  kb_options=ctrl:nocaps
  sensitivity=0
}
bind=$mod, F, exec, /nix/store/3qr7iyyrpmv0x0wr6p9dd4xhsqzkhfy5-firefox-130.0/bin/firefox
bind=$mod, SPACE, exec, /nix/store/kzqks7hdfya61g547l24zsivf1fmz87m-anyrun-0.1.0/bin/anyrun
bind=$mod, Q, exec, /nix/store/z69n0zcaw4wcsl98mzfnjc6gcl20bsl9-kitty-0.36.1/bin/kitty
bind=$mod, D, exec, /nix/store/8wjp2km0swhcwi6hpyr8vsc3jp471l86-dolphin-23.08.5/bin/dolphin
bind=$mod, M, exit
bind=$mod, C, killactive
bind=$mod, V, togglefloating
bind=$mod SHIFT, S, exec, /nix/store/gk6pcd42ldpw3s9a5gy9ibk2yn37kx31-grimblast-0.1/bin/grimblast --freeze copy area
bind=$mod, 1, workspace, 1
bind=$mod SHIFT, 1, movetoworkspace, 1
bind=$mod, 2, workspace, 2
bind=$mod SHIFT, 2, movetoworkspace, 2
bind=$mod, 3, workspace, 3
bind=$mod SHIFT, 3, movetoworkspace, 3
bind=$mod, 4, workspace, 4
bind=$mod SHIFT, 4, movetoworkspace, 4
bind=$mod, 5, workspace, 5
bind=$mod SHIFT, 5, movetoworkspace, 5
bind=$mod, 6, workspace, 6
bind=$mod SHIFT, 6, movetoworkspace, 6
bind=$mod, 7, workspace, 7
bind=$mod SHIFT, 7, movetoworkspace, 7
bind=$mod, 8, workspace, 8
bind=$mod SHIFT, 8, movetoworkspace, 8
bind=$mod, 9, workspace, 9
bind=$mod SHIFT, 9, movetoworkspace, 9
bind=$mod, 0, workspace, 10
bind=$mod SHIFT, 0, movetoworkspace, 10
bindl=, XF86AudioPlay, exec, /nix/store/8yb0xipmn4q6gs62lq1x05l0fxzkvvpm-playerctl-2.4.1/bin/playerctl play-pause
bindle=, XF86AudioRaiseVolume, exec, /nix/store/6srr44svgqyb43837q5cbmdvk3wg96kr-swayosd-0-unstable-2024-04-15/bin/swayosd-client --output-volume raise
bindle=, XF86AudioLowerVolume, exec, /nix/store/6srr44svgqyb43837q5cbmdvk3wg96kr-swayosd-0-unstable-2024-04-15/bin/swayosd-client --output-volume lower
bindm=$mod, mouse:272, movewindow
bindm=$mod, mouse:273, resizewindow
bindm=$mod alt, mouse:272, resizewindow
exec-once=/nix/store/ivdvkvg4xg723xp0frq1clq82wyaciv6-hyprpaper-0.7.1/bin/hyprpaper
exec-once=/nix/store/1i56m633a8rigf571kmwbqb88117y21n-waybar-0.10.4/bin/waybar
exec-once=/nix/store/krqbzz365jcwg4vv647pysagxbq4f6vq-polkit-gnome-0.105/libexec/polkit-gnome-authentication-agent-1
exec-once=/nix/store/6srr44svgqyb43837q5cbmdvk3wg96kr-swayosd-0-unstable-2024-04-15/bin/swayosd-server
monitor=,preferred,auto,1.6

Config File: /nix/store/5nqbr4x6yb7bmny12m1fda75brsh8naz-source/themes/mocha.conf: Read Succeeded

$rosewater = rgb(f5e0dc)
$rosewaterAlpha = f5e0dc

$flamingo = rgb(f2cdcd)
$flamingoAlpha = f2cdcd

$pink = rgb(f5c2e7)
$pinkAlpha = f5c2e7

$mauve = rgb(cba6f7)
$mauveAlpha = cba6f7

$red = rgb(f38ba8)
$redAlpha = f38ba8

$maroon = rgb(eba0ac)
$maroonAlpha = eba0ac

$peach = rgb(fab387)
$peachAlpha = fab387

$yellow = rgb(f9e2af)
$yellowAlpha = f9e2af

$green = rgb(a6e3a1)
$greenAlpha = a6e3a1

$teal = rgb(94e2d5)
$tealAlpha = 94e2d5

$sky = rgb(89dceb)
$skyAlpha = 89dceb

$sapphire = rgb(74c7ec)
$sapphireAlpha = 74c7ec

$blue = rgb(89b4fa)
$blueAlpha = 89b4fa

$lavender = rgb(b4befe)
$lavenderAlpha = b4befe

$text = rgb(cdd6f4)
$textAlpha = cdd6f4

$subtext1 = rgb(bac2de)
$subtext1Alpha = bac2de

$subtext0 = rgb(a6adc8)
$subtext0Alpha = a6adc8

$overlay2 = rgb(9399b2)
$overlay2Alpha = 9399b2

$overlay1 = rgb(7f849c)
$overlay1Alpha = 7f849c

$overlay0 = rgb(6c7086)
$overlay0Alpha = 6c7086

$surface2 = rgb(585b70)
$surface2Alpha = 585b70

$surface1 = rgb(45475a)
$surface1Alpha = 45475a

$surface0 = rgb(313244)
$surface0Alpha = 313244

$base = rgb(1e1e2e)
$baseAlpha = 1e1e2e

$mantle = rgb(181825)
$mantleAlpha = 181825

$crust = rgb(11111b)
$crustAlpha = 11111b

======Config-End========

Description
When I hold right click and drag my mouse cursor, the cursor speed increases.
How to reproduce
Hold down right click on a trackpad
Crash reports, logs, images, videos
No response

weird trackpad you got there. Likely your hardware.


text:
Nix pluginenv

Describe your PR, what does it fix/add?
More of a proof of concept, example flake that uses this pluginenv package to build hyprbars: https://github.com/horriblename/hyprbars-nix
I barely know any meson and nix, there's probably a better way to do this
(thanks to https://github.com/outfoxxed/hyprland-plugin-nix for the cmake and flake template)
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
Is it ready for merging, or does it need work?
yes

@fufexan nix XD

@eli-schwartz sorry for the ping, but I know you work on Meson. Is this approach to generating headers and protocols the right one, or should we try a different way?

@eli-schwartz we've applied your suggestions, and now the include dir seems to have the necessary files, and hyprland.pc seems alright to me.
However, I think I've missed something. I've tried building the hyprbars plugin using a meson.build I just wrote, but it's trying to link Hyprland from what I can see.
The log is here ninja.log.
Could you take a look and tell me where I've messed up? I've been at it for a few hours :')

Since we're talking about plugins, I assume that hyprbars is intended to be dlopen()'ed by the Hyprland executable, and it is the job of the Hyprland executable to export symbols for use by plugins.
As such you don't want to build a "library", you want to build a "shared_module". This has a few semantic differences, for example, shared modules do not receive a DT_SONAME. They also are not linked with -Wl,--no-undefined, because it is expected that symbols are not known at link time, only at runtime.
Aside: which directory does Hyprland scan for plugins?

As such you don't want to build a "library", you want to build a "shared_module".

That makes sense, thanks!

Aside: which directory does Hyprland scan for plugins?

There's no default directory. They can be loaded using hyprctl plugin load path/to/plugin.so, and unloaded the same way.
For a persistent configuration, the above command can be added to hyprland.conf as an exec-once call.

If there aren't any more suggestions, I will merge this.

One thing I remembered. CMake doesn't install the headers yet, so we'll have to figure that out before merging.

I was just looking into the same issue for OpenSUSE, the PR will help with that too.

make file now installs headers + pkgconfig
Unless I'm missing something, we can merge this now

moved protocols to /protocols and now CMake builds them

Now something we completely forgot about were the wlroots headers. That's an oops.

@fufexan @horriblename
Is there any reason why (at least for meson) the pkg-config files gets installed to /share/pkgconfig instead of /lib64/pkgconfig?

The difference between the two pkgconfig directories is, in fact, that one is in the Filesystem  Hierarchy Standard "lib" location, and the other one is in the Filesystem Hierarchy Standard "share" location.
This corresponds to the way that wall_8K.png goes in the Filesystem Hierarchy Standard "share" location, while libwlroots.so goes in the Filesystem Hierarchy Standard "lib" location.
...
So, does hyprland.pc match the definition of "architecture-independent data" as defined by https://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA or doesn't it?

In this case I think it's correct, since there's only header includes, no references to an architecture-dependent shared library. So for example on a multi-arch system you could have one set of headers and one pkg-config file that is in a shared data package, and two different arch-specific packages each containing libraries and binaries in split-arch libdir/bindir locations. If the pkg-config file could be stored in the common multi-arch package, then it counts as something which belongs in share/.
(One case where headers cannot be in a common arch-independent package is when the headers are generated and contain different contents depending on architecture. This is more common for e.g. glibc than for high-level libraries.)

authors: Thaodan eli-schwartz fufexan horriblename sp1ritCS vaxerski


text:
CONUS404 raw daily ACRUNSF and ACRUNSF description and long_name attributes are wrong

The long_name and description attributes for the ACRUNSF and ACRUNSB variables are incorrect.
The incorrect attributes are:
      ACRUNSF:description = "acccumlated RUNSB" ;
      ACRUNSF:long_name = "Accumulated subsurface runoff" ;

      ACRUNSB:description = "acccumlated RUNSF" ;
      ACRUNSB:long_name = "Accumulated surface runoff" ;

The attributes should be:
      ACRUNSF:description = "acccumlated RUNSF" ;
      ACRUNSF:long_name = "Accumulated surface runoff" ;

      ACRUNSB:description = "acccumlated RUNSB" ;
      ACRUNSB:long_name = "Accumulated subsurface runoff" ;

This problem exists in the original WRF model output and has propogated through all follow-on datasets that use these variables.
The fix will need to be applied to both on-prem and cloud zarr datasets.

The problem has been fixed for the on-prem daily zarr dataset.

The problem has been fixed for cloud daily zarr dataset.

repo: hytest-org/hytest


text:
Add FuncFactory control over signature of factories.

Take this:
def doit(obj, a, b=2):
    """do something amazing"""

When we want to make a factory based on this function, we can do:
from i2 import FuncFactory

factory = FuncFactory(doit)

All well and good, and though one of the advantages of FuncFactory is that it gives the user a useful signature so they know what parameters they can use to control what (partial) object the factory makes.
from is import Sig

str(Sig(factory))
# `(obj, a, b=2)`

This is the right, full, signature. It shows, for example, that you can tell your factory that you want a parametrize doit function with obj=something, but what if you actually don't want the user to parametrize obj (for example, because it makes no sense, given what doit actually does? In this case it would be better to be able to do something like:
factory = FuncFactory(doit, exclude=0)  # or exclude=[0] or exclude='obj' or exclude=['obj']
# or/and
factory = FuncFactory(doit, include='a b')  # or include=[1, 2] or include=['a', 'b']

to result in
str(Sig(factory))
# `(a, b=2)`

Note: This functionality can of course be externalized, by given the user the ability (e.g. through a i2.wrapper tool) to take care of this after the original FuncFactory was made. Is the current proposal's convenience worth the extra (minor) complexity?
Note: Should make sure to test if a simple signature change would be enough, or if we need some i2.wrapper wrap and argument rewiring. Also, note that the only-signature method would still allow the user to access underlying arguments (though they're not in the signature).
┆Issue is synchronized with this Asana task by Unito

Closed by https://github.com/i2mint/i2/blob/2921962f3000f52f0e18e3f9e3e09c7f8ea18ee2/i2/deco.py#L47