# FinTS Segment Sequence

A message is a sequence of segments. The `SegmentSequence` object allows searching for segments by type and version, by default recursing into nested sequences.

class fints.types.SegmentSequence(segments=None)

  A sequence of FinTS3Segment objects

  find_segment_first(*args, **kwargs)

    Finds the first matching segment.

    Same parameters as find_segments(), but only returns the first match, or None if no match is found.

  find_segment_highest_version(query=None, version=None, callback=None, recurse=True, default=None)

    Finds the highest matching segment.

    Same parameters as find_segments(), but returns the match with the highest version, or default if no match is found.

  find_segments(query=None, version=None, callback=None, recurse=True, throw=False)

    Yields an iterable of all matching segments.

    Parameters:

      - query – Either a str or class specifying a segment type (such as ‘HNHBK’, or `HNHBK3`), or a list or tuple of strings or classes. If a list/tuple is specified, segments returning any matching type will be returned.

      - version – Either an int specifying a segment version, or a list or tuple of ints. If a list/tuple is specified, segments returning any matching version will be returned.

      - callback – A callable that will be given the segment as its sole argument and must return a boolean indicating whether to return this segment.

      - recurse – If True (the default), recurse into SegmentSequenceField values, otherwise only look at segments in this SegmentSequence.

      - throw – If True, a FinTSNoResponseError is thrown if no result is found. Defaults to False.

    The match results of all given parameters will be AND-combined.

  print_nested(stream=None, level=0, indent=' ', prefix='', first_level_indent=True, trailer='', print_doc=True, first_line_suffix='')
  render_bytes() → bytes