Re-export context_deserialize_derive inside context_deserialize (#7852)

Re-export `context_deserialize_derive` inside of `context_deserialize` so they are both available from the same interface, which matches how popular crates (like `serde`) handle this.

This also nests both crates inside a new `context_deserialize` directory which will make it easier to eventually spin out into a different repo (if/when) we decide to do that (plus I prefer it aesthetically).
This commit is contained in:
Mac L
2025-08-12 15:16:19 +10:00
committed by GitHub
parent 918121e313
commit 152f2bb2e4
21 changed files with 56 additions and 39 deletions

3
Cargo.lock generated
View File

@@ -1786,6 +1786,7 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
name = "context_deserialize"
version = "0.1.0"
dependencies = [
"context_deserialize_derive",
"milhouse",
"serde",
"ssz_types",
@@ -2603,7 +2604,6 @@ dependencies = [
"compare_fields",
"compare_fields_derive",
"context_deserialize",
"context_deserialize_derive",
"derivative",
"eth2_network_config",
"ethereum_ssz",
@@ -9897,7 +9897,6 @@ dependencies = [
"compare_fields",
"compare_fields_derive",
"context_deserialize",
"context_deserialize_derive",
"criterion",
"derivative",
"eth2_interop_keypairs",

View File

@@ -48,8 +48,8 @@ members = [
"common/validator_dir",
"common/warp_utils",
"common/workspace_members",
"consensus/context_deserialize",
"consensus/context_deserialize_derive",
"consensus/context_deserialize/context_deserialize",
"consensus/context_deserialize/context_deserialize_derive",
"consensus/fixed_bytes",
"consensus/fork_choice",
"consensus/int_to_bytes",
@@ -123,8 +123,10 @@ clap_utils = { path = "common/clap_utils" }
compare_fields = { path = "common/compare_fields" }
compare_fields_derive = { path = "common/compare_fields_derive" }
console-subscriber = "0.4"
context_deserialize = { path = "consensus/context_deserialize" }
context_deserialize_derive = { path = "consensus/context_deserialize_derive" }
context_deserialize = { path = "consensus/context_deserialize/context_deserialize", features = [
"all",
] }
context_deserialize_derive = { path = "consensus/context_deserialize/context_deserialize_derive" }
criterion = "0.5"
delay_map = "0.4"
deposit_contract = { path = "common/deposit_contract" }

View File

@@ -1,9 +0,0 @@
[package]
name = "context_deserialize"
version = "0.1.0"
edition = "2021"
[dependencies]
milhouse = { workspace = true }
serde = { workspace = true }
ssz_types = { workspace = true }

View File

@@ -0,0 +1,17 @@
[package]
name = "context_deserialize"
version = "0.1.0"
edition = "2021"
[features]
default = ["derive"]
derive = ["dep:context_deserialize_derive"]
milhouse = ["dep:milhouse"]
ssz = ["dep:ssz_types"]
all = ["derive", "milhouse", "ssz"]
[dependencies]
context_deserialize_derive = { version = "0.1.0", path = "../context_deserialize_derive", optional = true }
milhouse = { workspace = true, optional = true }
serde = { workspace = true }
ssz_types = { workspace = true, optional = true }

View File

@@ -0,0 +1,7 @@
mod core;
#[cfg(feature = "milhouse")]
mod milhouse;
#[cfg(feature = "ssz")]
mod ssz;

View File

@@ -1,10 +1,13 @@
use crate::serde::de::Error;
use crate::ContextDeserialize;
use serde::de::Deserializer;
use serde::Deserialize;
use ssz_types::length::{Fixed, Variable};
use ssz_types::typenum::Unsigned;
use ssz_types::{Bitfield, FixedVector};
use serde::{
de::{Deserializer, Error},
Deserialize,
};
use ssz_types::{
length::{Fixed, Variable},
typenum::Unsigned,
Bitfield, FixedVector,
};
impl<'de, C, T, N> ContextDeserialize<'de, C> for FixedVector<T, N>
where

View File

@@ -1,8 +1,8 @@
pub mod impls;
pub mod milhouse;
pub mod ssz_impls;
mod impls;
#[cfg(feature = "derive")]
pub use context_deserialize_derive::context_deserialize;
extern crate serde;
use serde::de::Deserializer;
/// General-purpose deserialization trait that accepts extra context `C`.

View File

@@ -1,5 +1,4 @@
use context_deserialize::ContextDeserialize;
use context_deserialize_derive::context_deserialize;
use context_deserialize::{context_deserialize, ContextDeserialize};
use serde::{Deserialize, Serialize};
#[test]

View File

@@ -1,7 +1,10 @@
[package]
name = "types"
version = "0.2.1"
authors = ["Paul Hauner <paul@paulhauner.com>", "Age Manning <Age@AgeManning.com>"]
authors = [
"Paul Hauner <paul@paulhauner.com>",
"Age Manning <Age@AgeManning.com>",
]
edition = { workspace = true }
[features]
@@ -28,7 +31,6 @@ bls = { workspace = true }
compare_fields = { workspace = true }
compare_fields_derive = { workspace = true }
context_deserialize = { workspace = true }
context_deserialize_derive = { workspace = true }
derivative = { workspace = true }
eth2_interop_keypairs = { path = "../../common/eth2_interop_keypairs" }
ethereum_hashing = { workspace = true }

View File

@@ -1,7 +1,7 @@
use crate::slot_data::SlotData;
use crate::test_utils::TestRandom;
use crate::{Checkpoint, ForkName, Hash256, SignedRoot, Slot};
use context_deserialize_derive::context_deserialize;
use context_deserialize::context_deserialize;
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};
use test_random_derive::TestRandom;

View File

@@ -1,7 +1,7 @@
use crate::test_utils::TestRandom;
use crate::*;
use context_deserialize_derive::context_deserialize;
use context_deserialize::context_deserialize;
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};
use test_random_derive::TestRandom;

View File

@@ -1,6 +1,6 @@
use crate::test_utils::TestRandom;
use crate::{Epoch, ForkName, Hash256};
use context_deserialize_derive::context_deserialize;
use context_deserialize::context_deserialize;
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};
use test_random_derive::TestRandom;

View File

@@ -1,6 +1,6 @@
use crate::test_utils::TestRandom;
use crate::{Epoch, ForkName};
use context_deserialize_derive::context_deserialize;
use context_deserialize::context_deserialize;
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};

View File

@@ -1,6 +1,6 @@
use crate::test_utils::TestRandom;
use crate::{ForkName, Hash256, SignedRoot};
use context_deserialize_derive::context_deserialize;
use context_deserialize::context_deserialize;
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};

View File

@@ -287,8 +287,7 @@ pub use bls::{
AggregatePublicKey, AggregateSignature, Keypair, PublicKey, PublicKeyBytes, SecretKey,
Signature, SignatureBytes,
};
pub use context_deserialize::ContextDeserialize;
pub use context_deserialize_derive::context_deserialize;
pub use context_deserialize::{context_deserialize, ContextDeserialize};
pub use kzg::{KzgCommitment, KzgProof, VERSIONED_HASH_VERSION_KZG};
pub use milhouse::{self, List, Vector};
pub use ssz_types::{typenum, typenum::Unsigned, BitList, BitVector, FixedVector, VariableList};

View File

@@ -18,7 +18,6 @@ bls = { workspace = true }
compare_fields = { workspace = true }
compare_fields_derive = { workspace = true }
context_deserialize = { workspace = true }
context_deserialize_derive = { workspace = true }
derivative = { workspace = true }
eth2_network_config = { workspace = true }
ethereum_ssz = { workspace = true }

View File

@@ -4,8 +4,7 @@ use super::*;
use crate::cases::common::{DecimalU128, DecimalU256, SszStaticType};
use crate::cases::ssz_static::{check_serialization, check_tree_hash};
use crate::decode::{context_yaml_decode_file, log_file_access, snappy_decode_file};
use context_deserialize::ContextDeserialize;
use context_deserialize_derive::context_deserialize;
use context_deserialize::{context_deserialize, ContextDeserialize};
use serde::{de::Error as SerdeError, Deserialize, Deserializer};
use ssz_derive::{Decode, Encode};
use tree_hash::TreeHash;