Hi, I am reporting a minor bug. Based on this answer by Pablo: https://stackoverflow.com/a/42283279/783314
It appears that you want to always have an _UnwindowedValues in DirectRunner whenever it exists in DataflowRunner, to provide consistency between the two. What I have noticed is that if you subclass beam.CombineFn in Python, the accumulators received by the merge_accumulators method (as its argument) will be _UnwindowedValues in DataflowRunner, but not in DirectRunner. This leads to an error if somebody passes that value to, say, len(). The error will be: TypeError: object of type '_UnwindowedValues' has no len() Hope this helps! Stephen