From 6393190957ab545b282b1c3f77b25b55015a5a45 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sun, 22 Mar 2026 15:19:47 -1000 Subject: [PATCH] Handle esphome:: prefix in type namespace and format top symbols --- esphome/analyze_memory/cli.py | 10 ++++++---- esphome/cpp_generator.py | 7 +++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/esphome/analyze_memory/cli.py b/esphome/analyze_memory/cli.py index a57df203e1c..b7561e8ffc0 100644 --- a/esphome/analyze_memory/cli.py +++ b/esphome/analyze_memory/cli.py @@ -190,11 +190,13 @@ class MemoryAnalyzerCLI(MemoryAnalyzer): for i, (_, demangled, size, section, component) in enumerate(top_symbols): # Format section label section_label = f"[{section[1:]}]" if section else "" - # Truncate demangled name if too long + # Format storage symbols readably + display_name = _format_pstorage_name(demangled) + # Truncate if too long demangled_display = ( - f"{demangled[:truncate_limit]}..." - if len(demangled) > self.COL_TOP_SYMBOL_NAME - else demangled + f"{display_name[:truncate_limit]}..." + if len(display_name) > self.COL_TOP_SYMBOL_NAME + else display_name ) lines.append( f"{i + 1:>2}. {size:>7,} B {section_label:<8} {demangled_display:<{self.COL_TOP_SYMBOL_NAME}} {component}" diff --git a/esphome/cpp_generator.py b/esphome/cpp_generator.py index d64e2ff2ce7..e97bd71a48d 100644 --- a/esphome/cpp_generator.py +++ b/esphome/cpp_generator.py @@ -586,8 +586,11 @@ def Pvariable(id_: ID, rhs: SafeExpType, type_: "MockObj" = None) -> "MockObj": the_type = id_.type # Extract component namespace from type for memory analysis attribution type_str = str(the_type) - if "::" in type_str: - component_ns = type_str.split("::", maxsplit=1)[0].rstrip("_") + # Strip leading esphome:: to get the component namespace + # e.g. esphome::dsmr::Dsmr -> dsmr, logger::Logger -> logger + bare = type_str.removeprefix("esphome::") + if "::" in bare: + component_ns = bare.split("::", maxsplit=1)[0].rstrip("_") else: component_ns = "esphome" storage_name = f"{component_ns}__{id_.id}__pstorage"