Repository: swimos/swim-rust (language: rust)

Issue:
Move `macro_helpers` crate to being its own top-level crate



Discussion / hints:

Fix patch:
diff --git a/Cargo.toml b/Cargo.toml
index 64f932fe3..9783655f7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,6 @@
 [workspace]
 members = [
+    "macro_utilities",
     "swim_client",
     "swim_runtime",
     "swim_common",
diff --git a/utilities/macro_helpers/Cargo.toml b/macro_utilities/Cargo.toml
similarity index 90%
rename from utilities/macro_helpers/Cargo.toml
rename to macro_utilities/Cargo.toml
index e6736658d..8aac68f54 100644
--- a/utilities/macro_helpers/Cargo.toml
+++ b/macro_utilities/Cargo.toml
@@ -1,5 +1,5 @@
 [package]
-name = "macro_helpers"
+name = "macro_utilities"
 version = "0.1.0"
 authors = ["Swim.AI developers info@swim.ai"]
 edition = "2018"
diff --git a/utilities/macro_helpers/src/form.rs b/macro_utilities/src/form.rs
similarity index 100%
rename from utilities/macro_helpers/src/form.rs
rename to macro_utilities/src/form.rs
diff --git a/utilities/macro_helpers/src/generics.rs b/macro_utilities/src/generics.rs
similarity index 100%
rename from utilities/macro_helpers/src/generics.rs
rename to macro_utilities/src/generics.rs
diff --git a/utilities/macro_helpers/src/label.rs b/macro_utilities/src/label.rs
similarity index 100%
rename from utilities/macro_helpers/src/label.rs
rename to macro_utilities/src/label.rs
diff --git a/utilities/macro_helpers/src/lib.rs b/macro_utilities/src/lib.rs
similarity index 100%
rename from utilities/macro_helpers/src/lib.rs
rename to macro_utilities/src/lib.rs
diff --git a/utilities/macro_helpers/src/utilities.rs b/macro_utilities/src/utilities.rs
similarity index 100%
rename from utilities/macro_helpers/src/utilities.rs
rename to macro_utilities/src/utilities.rs
diff --git a/utilities/stringify_attr/Cargo.toml b/macro_utilities/stringify_attr/Cargo.toml
similarity index 100%
rename from utilities/stringify_attr/Cargo.toml
rename to macro_utilities/stringify_attr/Cargo.toml
diff --git a/utilities/stringify_attr/attr_derive/Cargo.toml b/macro_utilities/stringify_attr/attr_derive/Cargo.toml
similarity index 81%
rename from utilities/stringify_attr/attr_derive/Cargo.toml
rename to macro_utilities/stringify_attr/attr_derive/Cargo.toml
index 1042a7135..b637dd6f5 100644
--- a/utilities/stringify_attr/attr_derive/Cargo.toml
+++ b/macro_utilities/stringify_attr/attr_derive/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2018"
 proc-macro = true
 
 [dependencies]
-macro_helpers = { path  = "../../macro_helpers" }
+macro_utilities = { path  = "../../../macro_utilities" }
 syn = { version = "1.0.39", features = ["full", "visit-mut"] }
 quote = "1.0.7"
 proc-macro2 = "1.0.19"
diff --git a/utilities/stringify_attr/attr_derive/src/lib.rs b/macro_utilities/stringify_attr/attr_derive/src/lib.rs
similarity index 98%
rename from utilities/stringify_attr/attr_derive/src/lib.rs
rename to macro_utilities/stringify_attr/attr_derive/src/lib.rs
index 8e4d03f39..66344d028 100644
--- a/utilities/stringify_attr/attr_derive/src/lib.rs
+++ b/macro_utilities/stringify_attr/attr_derive/src/lib.rs
@@ -21,7 +21,7 @@ mod util;
 
 use crate::models::Visitor;
 use crate::parse::{stringify_container_attrs, stringify_container_attrs_raw};
-use macro_helpers::Context;
+use macro_utilities::Context;
 use proc_macro::TokenStream;
 use proc_macro2::TokenStream as TokenStream2;
 use quote::quote;
diff --git a/utilities/stringify_attr/attr_derive/src/models.rs b/macro_utilities/stringify_attr/attr_derive/src/models.rs
similarity index 99%
rename from utilities/stringify_attr/attr_derive/src/models.rs
rename to macro_utilities/stringify_attr/attr_derive/src/models.rs
index 2345ca420..2f06e48e7 100644
--- a/utilities/stringify_attr/attr_derive/src/models.rs
+++ b/macro_utilities/stringify_attr/attr_derive/src/models.rs
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 use crate::parse::{parse_attr_input, stringify_attributes};
-use macro_helpers::Context;
+use macro_utilities::Context;
 use proc_macro2::TokenStream as TokenStream2;
 use quote::quote;
 use quote::ToTokens;
diff --git a/utilities/stringify_attr/attr_derive/src/parse.rs b/macro_utilities/stringify_attr/attr_derive/src/parse.rs
similarity index 99%
rename from utilities/stringify_attr/attr_derive/src/parse.rs
rename to macro_utilities/stringify_attr/attr_derive/src/parse.rs
index 052dba959..ce8efc522 100644
--- a/utilities/stringify_attr/attr_derive/src/parse.rs
+++ b/macro_utilities/stringify_attr/attr_derive/src/parse.rs
@@ -14,7 +14,7 @@
 
 use crate::models::Preprocessed;
 use crate::util::{check_opt, list_to_str, pop_list, try_with_context};
-use macro_helpers::{get_lit_str, Context, Symbol};
+use macro_utilities::{get_lit_str, Context, Symbol};
 use quote::quote;
 use quote::ToTokens;
 use syn::{parse_quote, Attribute, Meta, MetaList, NestedMeta, Path};
diff --git a/utilities/stringify_attr/attr_derive/src/util.rs b/macro_utilities/stringify_attr/attr_derive/src/util.rs
similarity index 99%
rename from utilities/stringify_attr/attr_derive/src/util.rs
rename to macro_utilities/stringify_attr/attr_derive/src/util.rs
index b77bec08b..4023673ac 100644
--- a/utilities/stringify_attr/attr_derive/src/util.rs
+++ b/macro_utilities/stringify_attr/attr_derive/src/util.rs
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 use crate::parse::{EXPECTED_LIST, UNEXPECTED_ATTR, UNEXPECTED_LIT};
-use macro_helpers::Context;
+use macro_utilities::Context;
 use quote::ToTokens;
 use std::fmt::Display;
 use syn::punctuated::Punctuated;
diff --git a/utilities/stringify_attr/src/lib.rs b/macro_utilities/stringify_attr/src/lib.rs
similarity index 100%
rename from utilities/stringify_attr/src/lib.rs
rename to macro_utilities/stringify_attr/src/lib.rs
diff --git a/swim_common/form_derive/Cargo.toml b/swim_common/form_derive/Cargo.toml
index 1bec15e6d..f54468862 100644
--- a/swim_common/form_derive/Cargo.toml
+++ b/swim_common/form_derive/Cargo.toml
@@ -11,7 +11,7 @@ proc-macro = true
 [dependencies]
 either = "1.5.3"
 utilities = { path = "../../utilities" }
-macro_helpers = { path = "../../utilities/macro_helpers" }
+macro_utilities = { path = "../../macro_utilities" }
 proc-macro2 = "1.0"
 syn = { version = "1.0", features = ["parsing"] }
 quote = "1.0.3"
diff --git a/swim_common/form_derive/src/form/form_parser.rs b/swim_common/form_derive/src/form/form_parser.rs
index 17115570a..a6eda5fa5 100644
--- a/swim_common/form_derive/src/form/form_parser.rs
+++ b/swim_common/form_derive/src/form/form_parser.rs
@@ -13,9 +13,9 @@
 // limitations under the License.
 
 use crate::parser::{parse_struct, FieldManifest, FORM_PATH, SCHEMA_PATH, TAG_PATH};
-use macro_helpers::Label;
-use macro_helpers::{Attributes, Context, StructureKind};
-use macro_helpers::{EnumRepr, EnumVariant, FormField, StructRepr, TypeContents};
+use macro_utilities::Label;
+use macro_utilities::{Attributes, Context, StructureKind};
+use macro_utilities::{EnumRepr, EnumVariant, FormField, StructRepr, TypeContents};
 use proc_macro2::Ident;
 use syn::{Data, Lit, Meta, NestedMeta};
 
diff --git a/swim_common/form_derive/src/lib.rs b/swim_common/form_derive/src/lib.rs
index a3a53f02d..63269026c 100644
--- a/swim_common/form_derive/src/lib.rs
+++ b/swim_common/form_derive/src/lib.rs
@@ -23,7 +23,7 @@ use proc_macro::TokenStream;
 
 use syn::DeriveInput;
 
-use macro_helpers::to_compile_errors;
+use macro_utilities::to_compile_errors;
 
 use crate::structural::{
     build_derive_structural_form, build_derive_structural_readable,
diff --git a/swim_common/form_derive/src/modifiers.rs b/swim_common/form_derive/src/modifiers.rs
index 721fe8aab..5f6f2fbed 100644
--- a/swim_common/form_derive/src/modifiers.rs
+++ b/swim_common/form_derive/src/modifiers.rs
@@ -14,10 +14,10 @@
 
 use crate::parser::{SCHEMA_PATH, TAG_PATH};
 use crate::SynValidation;
+use macro_utilities::Symbol;
 use quote::ToTokens;
 use std::convert::TryFrom;
 use utilities::validation::{Validation, ValidationItExt};
-use utilities::Symbol;
 
 /// Description of how a type or field should be renamed in its serialized form.
 pub enum NameTransform {
diff --git a/swim_common/form_derive/src/parser.rs b/swim_common/form_derive/src/parser.rs
index ac57f32b3..4789e77c1 100644
--- a/swim_common/form_derive/src/parser.rs
+++ b/swim_common/form_derive/src/parser.rs
@@ -17,9 +17,9 @@ use syn::punctuated::Punctuated;
 use syn::spanned::Spanned;
 use syn::{Lit, Meta, NestedMeta};
 
-use macro_helpers::Label;
-use macro_helpers::{Attributes, CompoundTypeKind, Context, StructureKind, Symbol};
-use macro_helpers::{FieldKind, FormField};
+use macro_utilities::Label;
+use macro_utilities::{Attributes, CompoundTypeKind, Context, StructureKind, Symbol};
+use macro_utilities::{FieldKind, FormField};
 use quote::ToTokens;
 
 pub const FORM_PATH: Symbol = Symbol("form");
diff --git a/swim_common/form_derive/src/structural/model/field/mod.rs b/swim_common/form_derive/src/structural/model/field/mod.rs
index ea7fa1ac5..6d46cfaf6 100644
--- a/swim_common/form_derive/src/structural/model/field/mod.rs
+++ b/swim_common/form_derive/src/structural/model/field/mod.rs
@@ -19,7 +19,7 @@ use crate::parser::{
     SKIP_PATH, SLOT_PATH, TAG_PATH,
 };
 use crate::SynValidation;
-use macro_helpers::{FieldKind, Symbol};
+use macro_utilities::{FieldKind, Symbol};
 use proc_macro2::TokenStream;
 use quote::ToTokens;
 use std::convert::TryFrom;
diff --git a/swim_common/form_derive/src/structural/model/record/mod.rs b/swim_common/form_derive/src/structural/model/record/mod.rs
index ea07b8445..8db331597 100644
--- a/swim_common/form_derive/src/structural/model/record/mod.rs
+++ b/swim_common/form_derive/src/structural/model/record/mod.rs
@@ -18,13 +18,13 @@ use crate::parser::{FieldManifest, FORM_PATH};
 use crate::structural::model::field::{FieldWithIndex, SegregatedFields, TaggedFieldModel};
 use crate::structural::model::StructLike;
 use crate::SynValidation;
-use macro_helpers::CompoundTypeKind;
+use macro_utilities::CompoundTypeKind;
+use macro_utilities::FieldKind;
 use proc_macro2::TokenStream;
 use quote::ToTokens;
 use std::ops::Add;
 use syn::{Attribute, Fields, Ident};
 use utilities::validation::{validate2, Validation, ValidationItExt};
-use utilities::FieldKind;
 
 /// Description of the fields, taken from the derive input, preprocessed with any modifcations
 /// present in attributes on the fields.
diff --git a/swim_common/form_derive/src/structural/read/mod.rs b/swim_common/form_derive/src/structural/read/mod.rs
index a016ab1a6..ac3426c2d 100644
--- a/swim_common/form_derive/src/structural/read/mod.rs
+++ b/swim_common/form_derive/src/structural/read/mod.rs
@@ -19,7 +19,7 @@ use proc_macro2::{Span, TokenStream};
 use quote::ToTokens;
 use syn::{Generics, TypeGenerics};
 
-use macro_helpers::{CompoundTypeKind, FieldKind};
+use macro_utilities::{CompoundTypeKind, FieldKind};
 
 use crate::quote::TokenStreamExt;
 use crate::structural::model::enumeration::SegregatedEnumModel;
diff --git a/swim_common/form_derive/src/structural/write/mod.rs b/swim_common/form_derive/src/structural/write/mod.rs
index e80cea6d5..9d8b20a73 100644
--- a/swim_common/form_derive/src/structural/write/mod.rs
+++ b/swim_common/form_derive/src/structural/write/mod.rs
@@ -19,10 +19,10 @@ use crate::structural::model::field::{
 };
 use crate::structural::model::record::{SegregatedStructModel, StructModel};
 use either::Either;
+use macro_utilities::CompoundTypeKind;
 use proc_macro2::TokenStream;
 use quote::ToTokens;
 use syn::{Generics, Pat, Path};
-use utilities::CompoundTypeKind;
 
 /// Implements the StructuralWritable trait for either of [`SegregatedStructModel`] or
 /// [`SegregatedEnumModel`].
diff --git a/swim_common/form_derive/src/validated_form/attrs.rs b/swim_common/form_derive/src/validated_form/attrs.rs
index 22fad2c98..054eabd9b 100644
--- a/swim_common/form_derive/src/validated_form/attrs.rs
+++ b/swim_common/form_derive/src/validated_form/attrs.rs
@@ -16,7 +16,7 @@ use proc_macro2::TokenStream as TokenStream2;
 
 use crate::parser::FieldManifest;
 use crate::validated_form::vf_parser::{StandardSchema, ValidatedField};
-use macro_helpers::Label;
+use macro_utilities::Label;
 
 /// Builds a `StandardSchema::HeadAttribute` schema for the compound type.
 ///
diff --git a/swim_common/form_derive/src/validated_form/meta_parse.rs b/swim_common/form_derive/src/validated_form/meta_parse.rs
index 671a5e513..2a5528de7 100644
--- a/swim_common/form_derive/src/validated_form/meta_parse.rs
+++ b/swim_common/form_derive/src/validated_form/meta_parse.rs
@@ -18,7 +18,7 @@ use crate::validated_form::vf_parser::{
     FINITE_PATH, FLOAT_RANGE_PATH, INT_RANGE_PATH, NON_NAN_PATH, NOTHING_PATH, NOT_PATH,
     NUM_ATTRS_PATH, NUM_ITEMS_PATH, OF_KIND_PATH, OR_PATH, TEXT_PATH, UINT_RANGE_PATH,
 };
-use macro_helpers::{lit_str_to_expr_path, Context};
+use macro_utilities::{lit_str_to_expr_path, Context};
 use quote::ToTokens;
 use std::fmt::Display;
 use std::str::FromStr;
diff --git a/swim_common/form_derive/src/validated_form/mod.rs b/swim_common/form_derive/src/validated_form/mod.rs
index e0fd52b73..0299fecc8 100644
--- a/swim_common/form_derive/src/validated_form/mod.rs
+++ b/swim_common/form_derive/src/validated_form/mod.rs
@@ -14,7 +14,7 @@
 
 use syn::{DeriveInput, Generics};
 
-use macro_helpers::{CompoundTypeKind, Context};
+use macro_utilities::{CompoundTypeKind, Context};
 
 use crate::form::form_parser::build_type_contents;
 use crate::parser::FieldManifest;
@@ -22,9 +22,9 @@ use crate::validated_form::attrs::{build_attrs, build_head_attribute};
 use crate::validated_form::vf_parser::{
     type_contents_to_validated, StandardSchema, ValidatedField, ValidatedFormDescriptor,
 };
-use macro_helpers::add_bound;
-use macro_helpers::Label;
-use macro_helpers::{EnumRepr, TypeContents};
+use macro_utilities::add_bound;
+use macro_utilities::Label;
+use macro_utilities::{EnumRepr, TypeContents};
 use proc_macro2::TokenStream;
 use proc_macro2::TokenStream as TokenStream2;
 
diff --git a/swim_common/form_derive/src/validated_form/vf_parser.rs b/swim_common/form_derive/src/validated_form/vf_parser.rs
index 5eb9ee9d2..5b474959f 100644
--- a/swim_common/form_derive/src/validated_form/vf_parser.rs
+++ b/swim_common/form_derive/src/validated_form/vf_parser.rs
@@ -18,14 +18,14 @@ use proc_macro2::TokenStream as TokenStream2;
 use quote::ToTokens;
 use syn::{ExprPath, Field, Meta, NestedMeta, Type};
 
-use macro_helpers::{Attributes, CompoundTypeKind, Context, Symbol, SynOriginal};
+use macro_utilities::{Attributes, CompoundTypeKind, Context, Symbol, SynOriginal};
 
 use crate::form::form_parser::FormDescriptor;
 use crate::parser::{FORM_PATH, SCHEMA_PATH, TAG_PATH};
 use crate::validated_form::meta_parse::parse_schema_meta;
 use crate::validated_form::range::Range;
-use macro_helpers::Label;
-use macro_helpers::{EnumRepr, EnumVariant, FormField, StructRepr, TypeContents};
+use macro_utilities::Label;
+use macro_utilities::{EnumRepr, EnumVariant, FormField, StructRepr, TypeContents};
 
 pub const ANYTHING_PATH: Symbol = Symbol("anything");
 pub const NOTHING_PATH: Symbol = Symbol("nothing");
diff --git a/swim_server/Cargo.toml b/swim_server/Cargo.toml
index 8404bea8e..38513d2d6 100644
--- a/swim_server/Cargo.toml
+++ b/swim_server/Cargo.toml
@@ -31,6 +31,7 @@ url = "2.1.1"
 swim_common = { path = "../swim_common", features = ["tls"] }
 swim_warp = { path = "../swim_warp" }
 utilities = { path = "../utilities" }
+stringify_attr = { path = "../macro_utilities/stringify_attr" }
 swim_runtime = { path = "../swim_runtime" }
 stm = { path = "../stm" }
 tracing-futures = "0.2.4"
diff --git a/swim_server/agent_derive/Cargo.toml b/swim_server/agent_derive/Cargo.toml
index c58d28de0..3325ed2fb 100644
--- a/swim_server/agent_derive/Cargo.toml
+++ b/swim_server/agent_derive/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2018"
 proc-macro = true
 
 [dependencies]
-macro_helpers = { path = "../../utilities/macro_helpers" }
+macro_utilities = { path = "../../macro_utilities" }
 syn = "1.0.39"
 quote = "1.0.7"
 proc-macro2 = "1.0.19"
diff --git a/swim_server/agent_derive/src/agent.rs b/swim_server/agent_derive/src/agent.rs
index 4c17f92a7..a8b05fbb1 100644
--- a/swim_server/agent_derive/src/agent.rs
+++ b/swim_server/agent_derive/src/agent.rs
@@ -15,7 +15,7 @@
 use crate::utils::{get_task_struct_name, validate_input_ast, Callback, InputAstType};
 use crate::utils::{parse_callback, CallbackKind};
 use darling::{ast, FromDeriveInput, FromField, FromMeta};
-use macro_helpers::{as_const, string_to_ident, ungroup};
+use macro_utilities::{as_const, string_to_ident, ungroup};
 use proc_macro::TokenStream;
 use proc_macro2::TokenStream as TokenStream2;
 use proc_macro2::{Delimiter, Group, Ident, Literal, Span};
diff --git a/swim_server/agent_derive/src/lanes/action.rs b/swim_server/agent_derive/src/lanes/action.rs
index 4cba02fe2..12c9013ca 100644
--- a/swim_server/agent_derive/src/lanes/action.rs
+++ b/swim_server/agent_derive/src/lanes/action.rs
@@ -18,7 +18,7 @@ use crate::utils::{
     get_task_struct_name, validate_input_ast, CallbackKind, InputAstType, LaneTasksImpl,
 };
 use darling::FromMeta;
-use macro_helpers::{has_fields, string_to_ident};
+use macro_utilities::{has_fields, string_to_ident};
 use proc_macro::TokenStream;
 use quote::quote;
 use syn::{AttributeArgs, DeriveInput, Ident};
diff --git a/swim_server/agent_derive/src/lanes/command.rs b/swim_server/agent_derive/src/lanes/command.rs
index ba30e1416..3b092c9d1 100644
--- a/swim_server/agent_derive/src/lanes/command.rs
+++ b/swim_server/agent_derive/src/lanes/command.rs
@@ -17,7 +17,7 @@ use crate::utils::{
     LaneTasksImpl,
 };
 use darling::FromMeta;
-use macro_helpers::{has_fields, string_to_ident};
+use macro_utilities::{has_fields, string_to_ident};
 use proc_macro::TokenStream;
 use quote::quote;
 use syn::{AttributeArgs, DeriveInput};
diff --git a/swim_server/agent_derive/src/lanes/demand.rs b/swim_server/agent_derive/src/lanes/demand.rs
index 2daa9eba7..3ed7fd090 100644
--- a/swim_server/agent_derive/src/lanes/demand.rs
+++ b/swim_server/agent_derive/src/lanes/demand.rs
@@ -18,7 +18,7 @@ use crate::utils::{
     LaneTasksImpl,
 };
 use darling::FromMeta;
-use macro_helpers::{has_fields, string_to_ident};
+use macro_utilities::{has_fields, string_to_ident};
 use proc_macro::TokenStream;
 use quote::quote;
 use syn::{AttributeArgs, DeriveInput, Ident};
diff --git a/swim_server/agent_derive/src/lanes/demand_map.rs b/swim_server/agent_derive/src/lanes/demand_map.rs
index 6c7524d99..52f9f1948 100644
--- a/swim_server/agent_derive/src/lanes/demand_map.rs
+++ b/swim_server/agent_derive/src/lanes/demand_map.rs
@@ -18,7 +18,7 @@ use crate::utils::{
 };
 use crate::utils::{parse_callback, Callback};
 use darling::FromMeta;
-use macro_helpers::{has_fields, string_to_ident};
+use macro_utilities::{has_fields, string_to_ident};
 use proc_macro::TokenStream;
 use proc_macro2::TokenStream as TokenStream2;
 use quote::quote;
diff --git a/swim_server/agent_derive/src/lanes/map.rs b/swim_server/agent_derive/src/lanes/map.rs
index c95c56013..1991c7c91 100644
--- a/swim_server/agent_derive/src/lanes/map.rs
+++ b/swim_server/agent_derive/src/lanes/map.rs
@@ -18,7 +18,7 @@ use crate::utils::{
     LaneTasksImpl,
 };
 use darling::FromMeta;
-use macro_helpers::{has_fields, string_to_ident};
+use macro_utilities::{has_fields, string_to_ident};
 use proc_macro::TokenStream;
 use quote::quote;
 use syn::{AttributeArgs, DeriveInput, Ident};
diff --git a/swim_server/agent_derive/src/lanes/mod.rs b/swim_server/agent_derive/src/lanes/mod.rs
index 71a090ebb..831fc4f81 100644
--- a/swim_server/agent_derive/src/lanes/mod.rs
+++ b/swim_server/agent_derive/src/lanes/mod.rs
@@ -13,7 +13,7 @@
 // limitations under the License.
 
 use crate::utils::LaneTasksImpl;
-use macro_helpers::as_const;
+use macro_utilities::as_const;
 use proc_macro2::TokenStream;
 use quote::quote;
 use syn::{DeriveInput, Ident};
diff --git a/swim_server/agent_derive/src/lanes/value.rs b/swim_server/agent_derive/src/lanes/value.rs
index 38d0c36f2..511d05b79 100644
--- a/swim_server/agent_derive/src/lanes/value.rs
+++ b/swim_server/agent_derive/src/lanes/value.rs
@@ -18,7 +18,7 @@ use crate::utils::{
     LaneTasksImpl,
 };
 use darling::FromMeta;
-use macro_helpers::{has_fields, string_to_ident};
+use macro_utilities::{has_fields, string_to_ident};
 use proc_macro::TokenStream;
 use quote::quote;
 use syn::{AttributeArgs, DeriveInput, Ident};
diff --git a/swim_server/agent_derive/src/lib.rs b/swim_server/agent_derive/src/lib.rs
index 91a686fee..71fb09abc 100644
--- a/swim_server/agent_derive/src/lib.rs
+++ b/swim_server/agent_derive/src/lib.rs
@@ -73,7 +73,7 @@ use crate::lanes::value::derive_value_lifecycle;
 use crate::lanes::demand::derive_demand_lifecycle;
 use crate::lanes::demand_map::derive_demand_map_lifecycle;
 use crate::utils::derive;
-use macro_helpers::as_const;
+use macro_utilities::as_const;
 use proc_macro::TokenStream;
 use syn::{parse_macro_input, DeriveInput};
 
diff --git a/swim_server/agent_derive/src/utils.rs b/swim_server/agent_derive/src/utils.rs
index a40bb36c1..34d3c29cc 100644
--- a/swim_server/agent_derive/src/utils.rs
+++ b/swim_server/agent_derive/src/utils.rs
@@ -14,7 +14,7 @@
 
 use crate::lanes::{action, command, demand, demand_map, map, value};
 use core::fmt;
-use macro_helpers::str_to_ident;
+use macro_utilities::str_to_ident;
 use proc_macro2::{Ident, Span, TokenStream};
 use quote::ToTokens;
 use quote::{quote, quote_spanned};
diff --git a/swim_server/src/lib.rs b/swim_server/src/lib.rs
index dd613c2c0..f7fccc113 100644
--- a/swim_server/src/lib.rs
+++ b/swim_server/src/lib.rs
@@ -24,8 +24,8 @@ pub mod routing;
 
 #[allow(unused_imports)]
 pub use agent_derive::*;
+pub use stringify_attr::{stringify_attr, stringify_attr_raw};
 pub use utilities::future::retryable::strategy::RetryStrategy;
 pub use utilities::future::SwimStreamExt;
 pub use utilities::route_pattern::RoutePattern;
 pub use utilities::uri;
-pub use utilities::{stringify_attr, stringify_attr_raw};
diff --git a/utilities/Cargo.toml b/utilities/Cargo.toml
index 07a9ec08a..033a4f07f 100644
--- a/utilities/Cargo.toml
+++ b/utilities/Cargo.toml
@@ -20,8 +20,6 @@ tracing-subscriber = "0.2.11"
 tokio = { version = "1.1.1", features = ["sync", "rt"] }
 swim_runtime = { path = "../swim_runtime" }
 slab = "0.4.2"
-macro_helpers = { path = "macro_helpers" }
-stringify_attr = { path = "stringify_attr" }
 url = "2.1.1"
 num = "0.3.0"
 
diff --git a/utilities/src/lib.rs b/utilities/src/lib.rs
index d01015838..be1ef9405 100644
--- a/utilities/src/lib.rs
+++ b/utilities/src/lib.rs
@@ -35,14 +35,6 @@ pub mod trace;
 pub mod uri;
 pub mod validation;
 
-#[allow(unused_imports)]
-#[macro_use]
-extern crate macro_helpers;
-#[doc(hidden)]
-pub use macro_helpers::*;
-
-pub use stringify_attr::{stringify_attr, stringify_attr_raw};
-
 /// Error thrown by methods that required a usize to be positive.
 #[derive(Clone, Copy, PartialEq, Eq, Debug)]
 pub struct ZeroUsize;


Test patch:
diff --git a/utilities/stringify_attr/src/tests/derive/container.rs b/macro_utilities/stringify_attr/src/tests/derive/container.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/container.rs
rename to macro_utilities/stringify_attr/src/tests/derive/container.rs
diff --git a/utilities/stringify_attr/src/tests/derive/container.stderr b/macro_utilities/stringify_attr/src/tests/derive/container.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/container.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/container.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/container2.rs b/macro_utilities/stringify_attr/src/tests/derive/container2.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/container2.rs
rename to macro_utilities/stringify_attr/src/tests/derive/container2.rs
diff --git a/utilities/stringify_attr/src/tests/derive/container2.stderr b/macro_utilities/stringify_attr/src/tests/derive/container2.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/container2.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/container2.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/container3.rs b/macro_utilities/stringify_attr/src/tests/derive/container3.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/container3.rs
rename to macro_utilities/stringify_attr/src/tests/derive/container3.rs
diff --git a/utilities/stringify_attr/src/tests/derive/container3.stderr b/macro_utilities/stringify_attr/src/tests/derive/container3.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/container3.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/container3.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/extra_attr.rs b/macro_utilities/stringify_attr/src/tests/derive/extra_attr.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/extra_attr.rs
rename to macro_utilities/stringify_attr/src/tests/derive/extra_attr.rs
diff --git a/utilities/stringify_attr/src/tests/derive/extra_attr.stderr b/macro_utilities/stringify_attr/src/tests/derive/extra_attr.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/extra_attr.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/extra_attr.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/extra_attr2.rs b/macro_utilities/stringify_attr/src/tests/derive/extra_attr2.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/extra_attr2.rs
rename to macro_utilities/stringify_attr/src/tests/derive/extra_attr2.rs
diff --git a/utilities/stringify_attr/src/tests/derive/extra_attr2.stderr b/macro_utilities/stringify_attr/src/tests/derive/extra_attr2.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/extra_attr2.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/extra_attr2.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/extra_attr3.rs b/macro_utilities/stringify_attr/src/tests/derive/extra_attr3.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/extra_attr3.rs
rename to macro_utilities/stringify_attr/src/tests/derive/extra_attr3.rs
diff --git a/utilities/stringify_attr/src/tests/derive/extra_attr3.stderr b/macro_utilities/stringify_attr/src/tests/derive/extra_attr3.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/extra_attr3.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/extra_attr3.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/invalid_list.rs b/macro_utilities/stringify_attr/src/tests/derive/invalid_list.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/invalid_list.rs
rename to macro_utilities/stringify_attr/src/tests/derive/invalid_list.rs
diff --git a/utilities/stringify_attr/src/tests/derive/invalid_list.stderr b/macro_utilities/stringify_attr/src/tests/derive/invalid_list.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/invalid_list.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/invalid_list.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/invalid_path.rs b/macro_utilities/stringify_attr/src/tests/derive/invalid_path.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/invalid_path.rs
rename to macro_utilities/stringify_attr/src/tests/derive/invalid_path.rs
diff --git a/utilities/stringify_attr/src/tests/derive/invalid_path.stderr b/macro_utilities/stringify_attr/src/tests/derive/invalid_path.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/invalid_path.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/invalid_path.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/invalid_raw_list.rs b/macro_utilities/stringify_attr/src/tests/derive/invalid_raw_list.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/invalid_raw_list.rs
rename to macro_utilities/stringify_attr/src/tests/derive/invalid_raw_list.rs
diff --git a/utilities/stringify_attr/src/tests/derive/invalid_raw_list.stderr b/macro_utilities/stringify_attr/src/tests/derive/invalid_raw_list.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/invalid_raw_list.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/invalid_raw_list.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/no_attrs.rs b/macro_utilities/stringify_attr/src/tests/derive/no_attrs.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/no_attrs.rs
rename to macro_utilities/stringify_attr/src/tests/derive/no_attrs.rs
diff --git a/utilities/stringify_attr/src/tests/derive/no_attrs.stderr b/macro_utilities/stringify_attr/src/tests/derive/no_attrs.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/no_attrs.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/no_attrs.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/raw_extra_attr.rs b/macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_extra_attr.rs
rename to macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr.rs
diff --git a/utilities/stringify_attr/src/tests/derive/raw_extra_attr.stderr b/macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_extra_attr.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/raw_extra_attr2.rs b/macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr2.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_extra_attr2.rs
rename to macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr2.rs
diff --git a/utilities/stringify_attr/src/tests/derive/raw_extra_attr2.stderr b/macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr2.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_extra_attr2.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/raw_extra_attr2.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/raw_missing_input.rs b/macro_utilities/stringify_attr/src/tests/derive/raw_missing_input.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_missing_input.rs
rename to macro_utilities/stringify_attr/src/tests/derive/raw_missing_input.rs
diff --git a/utilities/stringify_attr/src/tests/derive/raw_missing_input.stderr b/macro_utilities/stringify_attr/src/tests/derive/raw_missing_input.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_missing_input.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/raw_missing_input.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/raw_missing_path.rs b/macro_utilities/stringify_attr/src/tests/derive/raw_missing_path.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_missing_path.rs
rename to macro_utilities/stringify_attr/src/tests/derive/raw_missing_path.rs
diff --git a/utilities/stringify_attr/src/tests/derive/raw_missing_path.stderr b/macro_utilities/stringify_attr/src/tests/derive/raw_missing_path.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_missing_path.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/raw_missing_path.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/raw_missing_raw.rs b/macro_utilities/stringify_attr/src/tests/derive/raw_missing_raw.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_missing_raw.rs
rename to macro_utilities/stringify_attr/src/tests/derive/raw_missing_raw.rs
diff --git a/utilities/stringify_attr/src/tests/derive/raw_missing_raw.stderr b/macro_utilities/stringify_attr/src/tests/derive/raw_missing_raw.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_missing_raw.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/raw_missing_raw.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/raw_no_attrs.rs b/macro_utilities/stringify_attr/src/tests/derive/raw_no_attrs.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_no_attrs.rs
rename to macro_utilities/stringify_attr/src/tests/derive/raw_no_attrs.rs
diff --git a/utilities/stringify_attr/src/tests/derive/raw_no_attrs.stderr b/macro_utilities/stringify_attr/src/tests/derive/raw_no_attrs.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/raw_no_attrs.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/raw_no_attrs.stderr
diff --git a/utilities/stringify_attr/src/tests/derive/union.rs b/macro_utilities/stringify_attr/src/tests/derive/union.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/union.rs
rename to macro_utilities/stringify_attr/src/tests/derive/union.rs
diff --git a/utilities/stringify_attr/src/tests/derive/union.stderr b/macro_utilities/stringify_attr/src/tests/derive/union.stderr
similarity index 100%
rename from utilities/stringify_attr/src/tests/derive/union.stderr
rename to macro_utilities/stringify_attr/src/tests/derive/union.stderr
diff --git a/utilities/stringify_attr/src/tests/mod.rs b/macro_utilities/stringify_attr/src/tests/mod.rs
similarity index 100%
rename from utilities/stringify_attr/src/tests/mod.rs
rename to macro_utilities/stringify_attr/src/tests/mod.rs