From 110e140e52f035d7b2bf5e66bc112feda60d511d Mon Sep 17 00:00:00 2001 From: dzmitry-lahoda Date: Thu, 7 Dec 2023 16:40:16 +0000 Subject: [PATCH] feat(xcm): support json schema (for CosmWasm VM support) (#1454) # Description - What does this PR do? Allows to generate JSON schema for subset of XCM in std builds - Why are these changes needed? To support XCM messages in CosmWasm contracts which require Schemars to generate contract clients - How were these changes implemented and what do they affect? We will use schema feature flag to build XCM pallet with JSON schema enabled # Checklist - [x] My PR includes a detailed description as outlined in the "Description" section above - [x] My PR follows the [labeling requirements](CONTRIBUTING.md#Process) of this project (at minimum one label for `T` required) - [x] I have made corresponding changes to the documentation (if applicable) - [x] I have added tests that prove my fix is effective or that my feature works (if applicable) - [x] If this PR alters any external APIs or interfaces used by Polkadot, the corresponding Polkadot PR is ready as well as the corresponding Cumulus PR (optional) --- substrate/primitives/weights/Cargo.toml | 5 +++++ substrate/primitives/weights/src/weight_v2.rs | 1 + 2 files changed, 6 insertions(+) diff --git a/substrate/primitives/weights/Cargo.toml b/substrate/primitives/weights/Cargo.toml index 163b241276cec..fb2e2ae8cb1a0 100644 --- a/substrate/primitives/weights/Cargo.toml +++ b/substrate/primitives/weights/Cargo.toml @@ -21,6 +21,7 @@ smallvec = "1.11.0" sp-arithmetic = { path = "../arithmetic", default-features = false } sp-debug-derive = { path = "../debug-derive", default-features = false } sp-std = { path = "../std", default-features = false } +schemars = { version = "0.8.3", default-features = false, optional = true } [features] default = ["std"] @@ -44,3 +45,7 @@ serde = [ "scale-info/serde", "sp-arithmetic/serde", ] + +json-schema = [ + "dep:schemars", +] diff --git a/substrate/primitives/weights/src/weight_v2.rs b/substrate/primitives/weights/src/weight_v2.rs index d692aaff8f5ab..3c10929f433b6 100644 --- a/substrate/primitives/weights/src/weight_v2.rs +++ b/substrate/primitives/weights/src/weight_v2.rs @@ -23,6 +23,7 @@ use super::*; #[derive(Encode, Decode, MaxEncodedLen, TypeInfo, Eq, PartialEq, Copy, Clone, Debug, Default)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "json-schema", derive(schemars::JsonSchema))] pub struct Weight { #[codec(compact)] /// The weight of computational time used based on some reference hardware.