Address migration comments (#2910)

* Use workspace.[authors|edition]

* Add repository.workspace = true

* Upgrade dependencies to the polkadot-sdk versions

* Upgrade async-std version

* Update jsonrpsee version

* cargo update

* use ci-unified image
This commit is contained in:
Serban Iorga
2024-04-02 00:00:56 +03:00
committed by Bastian Köcher
parent 018d6d8d1a
commit 8f26000e6a
41 changed files with 101 additions and 59 deletions
+3 -3
View File
@@ -38,10 +38,10 @@ cargo test --all
```
Also you can build the repo with [Parity CI Docker
image](https://github.com/paritytech/scripts/tree/master/dockerfiles/bridges-ci):
image](https://github.com/paritytech/scripts/tree/master/dockerfiles/ci-unified):
```bash
docker pull paritytech/bridges-ci:production
docker pull paritytech/ci-unified:latest
mkdir ~/cache
chown 1000:1000 ~/cache #processes in the container runs as "nonroot" user with UID 1000
docker run --rm -it -w /shellhere/parity-bridges-common \
@@ -49,7 +49,7 @@ docker run --rm -it -w /shellhere/parity-bridges-common \
-v "$(pwd)":/shellhere/parity-bridges-common \
-e CARGO_HOME=/cache/cargo/ \
-e SCCACHE_DIR=/cache/sccache/ \
-e CARGO_TARGET_DIR=/cache/target/ paritytech/bridges-ci:production cargo build --all
-e CARGO_TARGET_DIR=/cache/target/ paritytech/ci-unified:latest cargo build --all
#artifacts can be found in ~/cache/target
```
+1 -1
View File
@@ -11,7 +11,7 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
hash-db = { version = "0.16.0", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
@@ -5,12 +5,13 @@ version = "0.4.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
# Substrate Dependencies
@@ -5,12 +5,13 @@ version = "0.3.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
# Substrate Dependencies
@@ -5,6 +5,7 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -5,6 +5,7 @@ version = "0.6.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -5,6 +5,7 @@ version = "0.6.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -5,6 +5,7 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -5,6 +5,7 @@ version = "0.3.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
+1
View File
@@ -5,6 +5,7 @@ version = "0.5.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -5,12 +5,13 @@ version = "0.4.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
# Bridge Dependencies
+1
View File
@@ -5,6 +5,7 @@ version = "0.5.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
+1
View File
@@ -5,6 +5,7 @@ version = "0.6.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
+1
View File
@@ -5,6 +5,7 @@ version = "0.3.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
+5 -4
View File
@@ -2,16 +2,17 @@
name = "pallet-bridge-beefy"
version = "0.1.0"
description = "Module implementing BEEFY on-chain light client used for bridging consensus of substrate-based chains."
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
serde = { optional = true, workspace = true }
@@ -34,7 +35,7 @@ sp-consensus-beefy = { git = "https://github.com/paritytech/polkadot-sdk", branc
mmr-lib = { package = "ckb-merkle-mountain-range", version = "0.3.2" }
pallet-beefy-mmr = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
pallet-mmr = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
rand = "0.8"
rand = "0.8.5"
sp-io = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
bp-test-utils = { path = "../../primitives/test-utils" }
+2 -1
View File
@@ -5,6 +5,7 @@ description = "Module implementing GRANDPA on-chain light client used for bridgi
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -12,7 +13,7 @@ workspace = true
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
finality-grandpa = { version = "0.16.2", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
log = { workspace = true }
num-traits = { version = "0.2", default-features = false }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
+2 -1
View File
@@ -5,12 +5,13 @@ description = "Module that allows bridged relay chains to exchange information o
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
@@ -5,12 +5,13 @@ version = "0.5.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive", "serde"] }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.2.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
log = { workspace = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
+4 -3
View File
@@ -2,16 +2,17 @@
name = "bp-beefy"
description = "Primitives of pallet-bridge-beefy module."
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
serde = { default-features = false, features = ["alloc", "derive"], workspace = true }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
finality-grandpa = { version = "0.16.2", default-features = false }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
serde = { features = ["alloc", "derive"], workspace = true }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
serde = { features = ["alloc", "derive"], workspace = true }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
impl-trait-for-tuples = "0.2"
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
parity-util-mem = { version = "0.12.0", optional = true }
scale-info = { version = "2.11.1", default-features = false, features = ["derive"] }
serde = { optional = true, features = ["derive"], workspace = true, default-features = true }
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
# Bridge Dependencies
+2 -1
View File
@@ -5,12 +5,13 @@ version = "0.7.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
hash-db = { version = "0.16.0", default-features = false }
impl-trait-for-tuples = "0.2.2"
log = { workspace = true }
+2 -1
View File
@@ -5,6 +5,7 @@ description = "Utilities for testing substrate-based runtime bridge code"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
@@ -14,7 +15,7 @@ bp-header-chain = { path = "../header-chain", default-features = false }
bp-parachains = { path = "../parachains", default-features = false }
bp-polkadot-core = { path = "../polkadot-core", default-features = false }
bp-runtime = { path = "../runtime", default-features = false }
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false }
ed25519-dalek = { version = "2.1", default-features = false }
finality-grandpa = { version = "0.16.2", default-features = false }
sp-application-crypto = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master", default-features = false }
@@ -5,12 +5,13 @@ version = "0.6.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
[dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5", default-features = false, features = ["bit-vec", "derive"] }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["bit-vec", "derive"] }
scale-info = { version = "2.11.1", default-features = false, features = ["bit-vec", "derive"] }
# Substrate Dependencies
@@ -5,6 +5,7 @@ version = "0.2.0"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
[lints]
workspace = true
+7 -6
View File
@@ -1,23 +1,24 @@
[package]
name = "relay-substrate-client"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
workspace = true
[dependencies]
async-std = { version = "1.6.5", features = ["attributes"] }
async-std = { version = "1.9.0", features = ["attributes"] }
async-trait = "0.1.79"
codec = { package = "parity-scale-codec", version = "3.1.5" }
codec = { package = "parity-scale-codec", version = "3.6.1" }
futures = "0.3.30"
jsonrpsee = { version = "0.17", features = ["macros", "ws-client"] }
jsonrpsee = { version = "0.22", features = ["macros", "ws-client"] }
log = { workspace = true }
num-traits = "0.2"
rand = "0.8"
rand = "0.8.5"
scale-info = { version = "2.11.1", features = ["derive"] }
tokio = { version = "1.37", features = ["rt-multi-thread"] }
thiserror = { workspace = true }
+1 -1
View File
@@ -18,7 +18,7 @@
use crate::SimpleRuntimeVersion;
use bp_polkadot_core::parachains::ParaId;
use jsonrpsee::core::Error as RpcError;
use jsonrpsee::core::ClientError as RpcError;
use relay_utils::MaybeConnectionError;
use sc_rpc_api::system::Health;
use sp_core::storage::StorageKey;
+10 -4
View File
@@ -21,7 +21,7 @@ use async_trait::async_trait;
use crate::{Chain, ChainWithGrandpa, TransactionStatusOf};
use jsonrpsee::{
core::{client::Subscription, RpcResult},
core::{client::Subscription, ClientError},
proc_macros::rpc,
ws_client::WsClient,
};
@@ -110,7 +110,9 @@ pub(crate) trait SubstrateState<C> {
#[async_trait]
pub trait SubstrateFinalityClient<C: Chain> {
/// Subscribe to finality justifications.
async fn subscribe_justifications(client: &WsClient) -> RpcResult<Subscription<Bytes>>;
async fn subscribe_justifications(
client: &WsClient,
) -> Result<Subscription<Bytes>, ClientError>;
}
/// RPC methods of Substrate `grandpa` namespace, that we are using.
@@ -125,7 +127,9 @@ pub(crate) trait SubstrateGrandpa<C> {
pub struct SubstrateGrandpaFinalityClient;
#[async_trait]
impl<C: ChainWithGrandpa> SubstrateFinalityClient<C> for SubstrateGrandpaFinalityClient {
async fn subscribe_justifications(client: &WsClient) -> RpcResult<Subscription<Bytes>> {
async fn subscribe_justifications(
client: &WsClient,
) -> Result<Subscription<Bytes>, ClientError> {
SubstrateGrandpaClient::<C>::subscribe_justifications(client).await
}
}
@@ -144,7 +148,9 @@ pub struct SubstrateBeefyFinalityClient;
// TODO: Use `ChainWithBeefy` instead of `Chain` after #1606 is merged
#[async_trait]
impl<C: Chain> SubstrateFinalityClient<C> for SubstrateBeefyFinalityClient {
async fn subscribe_justifications(client: &WsClient) -> RpcResult<Subscription<Bytes>> {
async fn subscribe_justifications(
client: &WsClient,
) -> Result<Subscription<Bytes>, ClientError> {
SubstrateBeefyClient::<C>::subscribe_justifications(client).await
}
}
+4 -3
View File
@@ -1,9 +1,10 @@
[package]
name = "equivocation-detector"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
description = "Equivocation detector"
publish = false
@@ -11,7 +12,7 @@ publish = false
workspace = true
[dependencies]
async-std = { version = "1.6.5", features = ["attributes"] }
async-std = { version = "1.9.0", features = ["attributes"] }
async-trait = "0.1.79"
bp-header-chain = { path = "../../primitives/header-chain" }
finality-relay = { path = "../finality" }
+4 -3
View File
@@ -1,9 +1,10 @@
[package]
name = "finality-relay"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
description = "Finality proofs relay"
publish = false
@@ -11,7 +12,7 @@ publish = false
workspace = true
[dependencies]
async-std = "1.6.5"
async-std = "1.9.0"
async-trait = "0.1.79"
backoff = "0.4"
bp-header-chain = { path = "../../primitives/header-chain" }
@@ -1,9 +1,10 @@
[package]
name = "substrate-relay-helper"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
@@ -13,7 +14,7 @@ workspace = true
anyhow = "1.0"
async-std = "1.9.0"
async-trait = "0.1.79"
codec = { package = "parity-scale-codec", version = "3.1.5" }
codec = { package = "parity-scale-codec", version = "3.6.1" }
futures = "0.3.30"
hex = "0.4"
log = { workspace = true }
+4 -3
View File
@@ -1,16 +1,17 @@
[package]
name = "messages-relay"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
workspace = true
[dependencies]
async-std = { version = "1.6.5", features = ["attributes"] }
async-std = { version = "1.9.0", features = ["attributes"] }
async-trait = "0.1.79"
env_logger = "0.11"
futures = "0.3.30"
@@ -313,7 +313,7 @@ where
}
fn nonces_to_submit(&self) -> Option<RangeInclusive<MessageNonce>> {
self.nonces_to_submit.as_ref().map(|(_, nonces, _)| nonces.clone())
self.nonces_to_submit.clone().map(|(_, nonces, _)| nonces)
}
fn reset_nonces_to_submit(&mut self) {
+5 -4
View File
@@ -1,16 +1,17 @@
[package]
name = "parachains-relay"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
workspace = true
[dependencies]
async-std = "1.6.5"
async-std = "1.9.0"
async-trait = "0.1.79"
futures = "0.3.30"
log = { workspace = true }
@@ -22,6 +23,6 @@ bp-polkadot-core = { path = "../../primitives/polkadot-core" }
relay-substrate-client = { path = "../client-substrate" }
[dev-dependencies]
codec = { package = "parity-scale-codec", version = "3.1.5" }
codec = { package = "parity-scale-codec", version = "3.6.1" }
relay-substrate-client = { path = "../client-substrate", features = ["test-helpers"] }
sp-core = { git = "https://github.com/paritytech/polkadot-sdk", branch = "master" }
+4 -3
View File
@@ -1,9 +1,10 @@
[package]
name = "relay-utils"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
authors.workspace = true
edition.workspace = true
license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
repository.workspace = true
publish = false
[lints]
@@ -12,7 +13,7 @@ workspace = true
[dependencies]
ansi_term = "0.12"
anyhow = "1.0"
async-std = "1.6.5"
async-std = "1.9.0"
async-trait = "0.1.79"
backoff = "0.4"
isahc = "1.2"