Hi Andrew, Looks good! Just a small nit left.
On Wed, Sep 24, 2025 at 12:47:24PM +0000, Andrew Bailey wrote: > diff --git a/dts/framework/remote_session/testpmd_shell.py > b/dts/framework/remote_session/testpmd_shell.py > index ecbdd66edd..db7e33222a 100644 > --- a/dts/framework/remote_session/testpmd_shell.py > +++ b/dts/framework/remote_session/testpmd_shell.py > @@ -1278,7 +1279,99 @@ class TestPmdVerbosePacket(TextParser): > ) > > > -class RxOffloadCapability(Flag): > +class OffloadCapability(Flag): > + """Flags generated from RxOffloadCapabilites and TxOffloadCapabilities > classes.""" <snip> > + @classmethod > + def make_parser( > + cls, per_port: Literal["port", "queue"], /, find_multiple: bool = > False > + ) -> ParserFn: > + """Make a parser function. > + > + Args: > + per_port: If :data:`True`, will return capabilities per port. If > :data:`False`, > + will return capabilities per queue. just a small nit: this doc doesn't match what it is anymore. Similarly the argument name is not entirely valid either. > + find_multiple: If :data:`True`, will use > :func:`TextParser.find_all` to find all > + matches for the regex query and return a list of instances > based on those matches. > + If :data:`False`, will return a single instance of the flag > based off a single > + match. > + > + Returns: > + ParserFn: A dictionary for the `dataclasses.field` metadata > argument containing a > + parser function that makes an instance of this flag from > text. > + """ > + granularity = per_port.capitalize() > + regex = rf"{granularity}[\s\[\]\d]+:(.*)$" > + if find_multiple: > + return TextParser.wrap(TextParser.find_all(regex, re.MULTILINE), > cls.from_list) > + return TextParser.wrap(TextParser.find(regex, re.MULTILINE), > cls.from_string) <snip>