Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/weaver_emit/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,7 @@ mod tests {
kind: SpanKindSpec::Internal,
name: SpanName {
note: "test span".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![SpanAttribute {
base: V2Attribute {
Expand Down
1 change: 1 addition & 0 deletions crates/weaver_forge/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -956,6 +956,7 @@ mod tests {
kind: SpanKindSpec::Client,
name: SpanName {
note: "A database client span.".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![],
entity_associations: vec![],
Expand Down
26 changes: 26 additions & 0 deletions crates/weaver_forge/src/v2/registry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,7 @@ mod tests {
source: Some(v2::provenance::DependencyRef(0)),
path: "some/path".to_owned(),
},
unknown_fields: Default::default(),
}],
dependencies: {
let mut deps = std::collections::BTreeSet::new();
Expand All @@ -505,17 +506,20 @@ mod tests {
kind: SpanKindSpec::Internal,
name: SpanName {
note: "My Span".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![span::SpanAttributeRef {
base: attribute::AttributeRef(0),
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Required,
),
sampling_relevant: Some(true),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
}],
metrics: vec![metric::Metric {
name: SignalId::from("my-metric".to_owned()),
Expand All @@ -526,10 +530,12 @@ mod tests {
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Required,
),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
}],
events: vec![event::Event {
name: SignalId::from("my-event".to_owned()),
Expand All @@ -538,10 +544,12 @@ mod tests {
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Required,
),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
}],
entities: vec![v2::entity::Entity {
r#type: SignalId::from("my-entity".to_owned()),
Expand All @@ -550,12 +558,15 @@ mod tests {
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Required,
),
unknown_fields: Default::default(),
}],
description: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
}],
attribute_groups: vec![],
unknown_fields: Default::default(),
},
refinements: v2::refinements::Refinements {
spans: vec![span::SpanRefinement {
Expand All @@ -565,17 +576,20 @@ mod tests {
kind: SpanKindSpec::Client,
name: SpanName {
note: "My Refined Span".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![span::SpanAttributeRef {
base: attribute::AttributeRef(0),
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Required,
),
sampling_relevant: Some(true),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
},
}],
metrics: vec![metric::MetricRefinement {
Expand All @@ -589,10 +603,12 @@ mod tests {
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Recommended,
),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
},
}],
events: vec![event::EventRefinement {
Expand All @@ -604,13 +620,17 @@ mod tests {
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::OptIn,
),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
},
}],
unknown_fields: Default::default(),
},
unknown_fields: Default::default(),
};

let forge_registry =
Expand Down Expand Up @@ -677,28 +697,34 @@ mod tests {
kind: SpanKindSpec::Internal,
name: SpanName {
note: "My Span".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![span::SpanAttributeRef {
base: attribute::AttributeRef(0), // Refers to bad attribute.
requirement_level: weaver_semconv::attribute::RequirementLevel::Basic(
weaver_semconv::attribute::BasicRequirementLevelSpec::Required,
),
sampling_relevant: Some(true),
unknown_fields: Default::default(),
}],
entity_associations: vec![],
common: CommonFields::default(),
provenance: Default::default(),
unknown_fields: Default::default(),
}],
metrics: vec![],
events: vec![],
entities: vec![],
attribute_groups: vec![],
unknown_fields: Default::default(),
},
refinements: v2::refinements::Refinements {
spans: vec![],
metrics: vec![],
events: vec![],
unknown_fields: Default::default(),
},
unknown_fields: Default::default(),
};

let result = ForgeResolvedRegistry::try_from(resolved_schema);
Expand Down
1 change: 1 addition & 0 deletions crates/weaver_live_check/src/live_checker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1034,6 +1034,7 @@ mod tests {
kind: SpanKindSpec::Internal,
name: SpanName {
note: "custom.comprehensive.internal".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![SpanAttribute {
base: custom_string_attr.clone(),
Expand Down
1 change: 1 addition & 0 deletions crates/weaver_mcp/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,7 @@ mod tests {
kind: SpanKindSpec::Client,
name: SpanName {
note: "HTTP client span".to_owned(),
unknown_fields: Default::default(),
},
attributes: vec![],
entity_associations: vec![],
Expand Down
1 change: 1 addition & 0 deletions crates/weaver_resolved_schema/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ weaver_semconv = { path = "../weaver_semconv" }
thiserror.workspace = true
serde.workspace = true
schemars.workspace = true
serde_yaml.workspace = true
log.workspace = true
utoipa = { workspace = true, optional = true }

Expand Down
6 changes: 5 additions & 1 deletion crates/weaver_resolved_schema/src/v2/attribute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use weaver_semconv::{
attribute::{AttributeType, Examples},
unknown_fields::UnknownFields,
v2::CommonFields,
};

Expand All @@ -14,7 +15,6 @@ use crate::v2::{provenance::Provenance, Signal};
/// The definition of an Attribute.
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema, PartialEq, Hash, Eq)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
pub struct Attribute {
/// String that uniquely identifies the attribute.
Expand All @@ -37,6 +37,10 @@ pub struct Attribute {
#[serde(default)]
#[serde(skip_serializing_if = "Provenance::is_empty")]
pub provenance: Provenance,
/// Unknown fields captured for forward-compatibility.
#[serde(flatten, skip_serializing_if = "UnknownFields::is_empty")]
#[schemars(skip)]
pub unknown_fields: UnknownFields,
}

/// Reference to an attribute in the catalog.
Expand Down
7 changes: 6 additions & 1 deletion crates/weaver_resolved_schema/src/v2/attribute_group.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use weaver_semconv::unknown_fields::UnknownFields;
use weaver_semconv::v2::{signal_id::SignalId, CommonFields};

use crate::v2::{attribute::AttributeRef, provenance::Provenance, Signal};
Expand All @@ -16,7 +17,6 @@ use crate::v2::{attribute::AttributeRef, provenance::Provenance, Signal};
/// the bundle as a group to different signals.
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema, PartialEq)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
pub struct AttributeGroup {
/// The name of the attribute group, must be unique.
Expand All @@ -33,6 +33,11 @@ pub struct AttributeGroup {
#[serde(default)]
#[serde(skip_serializing_if = "Provenance::is_empty")]
pub provenance: Provenance,

/// Unknown fields captured for forward-compatibility.
#[serde(flatten, skip_serializing_if = "UnknownFields::is_empty")]
#[schemars(skip)]
pub unknown_fields: UnknownFields,
}

impl Signal for AttributeGroup {
Expand Down
1 change: 1 addition & 0 deletions crates/weaver_resolved_schema/src/v2/catalog.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ mod test {
annotations: annotations.clone(),
},
provenance: Default::default(),
unknown_fields: Default::default(),
}]);

let result = catalog.convert_ref(&crate::attribute::Attribute {
Expand Down
12 changes: 10 additions & 2 deletions crates/weaver_resolved_schema/src/v2/entity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use weaver_semconv::{
attribute::RequirementLevel,
unknown_fields::UnknownFields,
v2::{signal_id::SignalId, CommonFields},
};

Expand All @@ -12,7 +13,6 @@ use crate::v2::{attribute::AttributeRef, provenance::Provenance, Signal};
/// The definition of an Entity signal.
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct Entity {
/// The type of the Entity.
pub r#type: SignalId,
Expand All @@ -32,12 +32,16 @@ pub struct Entity {
#[serde(default)]
#[serde(skip_serializing_if = "Provenance::is_empty")]
pub provenance: Provenance,

/// Unknown fields captured for forward-compatibility.
#[serde(flatten, skip_serializing_if = "UnknownFields::is_empty")]
#[schemars(skip)]
pub unknown_fields: UnknownFields,
}

/// A special type of reference to attributes that remembers entity-specicific information.
#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq, Hash, JsonSchema)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct EntityAttributeRef {
/// Reference, by index, to the attribute catalog.
pub base: AttributeRef,
Expand All @@ -47,6 +51,10 @@ pub struct EntityAttributeRef {
/// "conditionally_required", the string provided as `condition` MUST
/// specify the conditions under which the attribute is required.
pub requirement_level: RequirementLevel,
/// Unknown fields captured for forward-compatibility.
#[serde(flatten, skip_serializing_if = "UnknownFields::is_empty")]
#[schemars(skip)]
pub unknown_fields: UnknownFields,
}

impl Signal for Entity {
Expand Down
12 changes: 10 additions & 2 deletions crates/weaver_resolved_schema/src/v2/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use weaver_semconv::{
attribute::RequirementLevel,
unknown_fields::UnknownFields,
v2::{signal_id::SignalId, CommonFields},
};

Expand All @@ -12,7 +13,6 @@ use crate::v2::{attribute::AttributeRef, provenance::Provenance, Signal};
/// The definition of an Event signal.
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct Event {
/// The name of the event.
pub name: SignalId,
Expand All @@ -39,12 +39,16 @@ pub struct Event {
#[serde(default)]
#[serde(skip_serializing_if = "Provenance::is_empty")]
pub provenance: Provenance,

/// Unknown fields captured for forward-compatibility.
#[serde(flatten, skip_serializing_if = "UnknownFields::is_empty")]
#[schemars(skip)]
pub unknown_fields: UnknownFields,
}

/// A special type of reference to attributes that remembers event-specicific information.
#[derive(Serialize, Deserialize, Debug, Clone, Eq, PartialEq, Hash, JsonSchema)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[serde(deny_unknown_fields)]
pub struct EventAttributeRef {
/// Reference, by index, to the attribute catalog.
pub base: AttributeRef,
Expand All @@ -54,6 +58,10 @@ pub struct EventAttributeRef {
/// "conditionally_required", the string provided as `condition` MUST
/// specify the conditions under which the attribute is required.
pub requirement_level: RequirementLevel,
/// Unknown fields captured for forward-compatibility.
#[serde(flatten, skip_serializing_if = "UnknownFields::is_empty")]
#[schemars(skip)]
pub unknown_fields: UnknownFields,
}

/// A refinement of an event, for use in code-gen or specific library application.
Expand Down
Loading
Loading