Handle esphome:: prefix in type namespace and format top symbols

This commit is contained in:
J. Nick Koston
2026-03-22 15:19:47 -10:00
parent 2d10f8abd3
commit 6393190957
2 changed files with 11 additions and 6 deletions
+6 -4
View File
@@ -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}"
+5 -2
View File
@@ -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"