Hey all,

I just helped a user debug an issue that arose from them accidentally
passing a DoOutputsTuple into `Flatten`, e.g. something like
```
inputs_A = p | beam.Create([1,2,3])
inputs_B = inputs_A | ParDo(MyDoFn()).with_outputs("even") # this is
actually a tuple
(inputs_A, inputs_B) | Flatten()
```

This resulted in really confusing typehinting errors about pcollections of
pcollections. I've also seen this result in confusion in another place
where someone ended up with some kind of unpicklablepcollection elements in
a pcollection.

I put up a PR[1] to validate the inputs to Flatten but I realize now it's a
backwards incompatible change. Does anyone have any comments or objections
to this change? I didn't even realize you could apply transforms to raw
iterables before this (e.g. `[1, 2, 3] | beam.Map(lambda x:x+1)`)

[1] https://github.com/apache/beam/pull/35874

Reply via email to