Thanks. I've filed https://issues.apache.org/jira/browse/BEAM-11882 .

If you want to take a stab at fixing it, you could try replacing the
arguemnt passed to merge_accumulators at
https://github.com/apache/beam/blob/release-2.28.0/sdks/python/apache_beam/transforms/combiners.py#L963
with a new object whose __iter__ method returns iter(accumulators) and
create a pull request.


On Wed, Feb 24, 2021 at 2:45 PM Stephen Dewey <stepheneliotde...@gmail.com>
wrote:

> Oh, I forgot to mention that I am using SDK 2.27.0 and Python 3.8
>
> On Wed, Feb 24, 2021 at 5:27 PM Stephen Dewey <stepheneliotde...@gmail.com>
> wrote:
>
>> 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
>>
>

Reply via email to