From dd8608380bf7915bde1e19b78722d147dfd7df80 Mon Sep 17 00:00:00 2001 From: goodboy Date: Mon, 9 Feb 2026 12:20:17 -0500 Subject: [PATCH] Hide private fields in `Struct.pformat()` output Skip fields starting with `_` in pretty-printed struct output to avoid cluttering displays with internal/private state (and/or accessing private properties which have errors Bp). Deats, - add `if k[0] == '_': continue` check to skip private fields - change nested `if isinstance(v, Struct)` to `elif` since we now have early-continue for private fields - mv `else:` comment to clarify it handles top-level fields - fix indentation of `yield` statement to only output non-private, non-nested fields (this commit msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-code --- tractor/msg/pretty_struct.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tractor/msg/pretty_struct.py b/tractor/msg/pretty_struct.py index 169cb461..dfc8a944 100644 --- a/tractor/msg/pretty_struct.py +++ b/tractor/msg/pretty_struct.py @@ -126,13 +126,17 @@ def iter_struct_ppfmt_lines( str(ft) ).replace(' ', '') + if k[0] == '_': + continue + # recurse to get sub-struct's `.pformat()` output Bo - if isinstance(v, Struct): + elif isinstance(v, Struct): yield from iter_struct_ppfmt_lines( struct=v, field_indent=field_indent+field_indent, ) - else: + + else: # top-level field val_str: str = repr(v) # XXX LOL, below just seems to be f#$%in causing @@ -149,10 +153,10 @@ def iter_struct_ppfmt_lines( # raise # return _Struct.__repr__(struct) - yield ( - ' '*field_indent, # indented ws prefix - f'{k}: {typ_name} = {val_str},', # field's repr line content - ) + yield ( + ' '*field_indent, # indented ws prefix + f'{k}: {typ_name} = {val_str},', # field's repr line content + ) def pformat(