tree c1e2d402c052258a0668350c39e672f0e1af65a8
parent 6a021844fe4bce75a0371ba1ea97f11606afd756
author Jonathan Shen <jonathanasdf@users.noreply.github.com> 1659742560 -0700
committer GitHub <noreply@github.com> 1659742560 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJi7algCRBK7hj4Ov3rIwAA1MkIAJowhCzWqrlFr492bHGIGGne
 lF2NOlDyxuJ6fpjMdp29mgiLtE46y6Crebrb8zufND5v0sqR6PBme17e1jxPAIx8
 HSOXJ0Kv+9/UpI1NFD1e1AoXZoNvzZggoFJ3JLBlEOR+AmEcisMd3RQpb6L1XrQz
 7r09oULg9jxAeXOh2ZI7XtIBO7i8G9Hq/CEBfmTahViCVo2S/sEIAfiMhJQP9uN1
 xCAT9Owwb97E+vIPF3fMqoaJ0EmeesyBWyQm0CbLV+Pe+KLIlu803QWn6KzW7W6b
 RNWcyVUkceVpDyZxO2JWyXfTi0rKAhqyVHkzyuL14Z/LfrF8eqhgLZjU4rT+Cow=
 =07KR
 -----END PGP SIGNATURE-----
 

Return type for _ExpandIntoRanges DoFn should be Iterable. (#22548)

The following fails otherwise:

```
import apache_beam as beam
from apache_beam.io import textio
with beam.Pipeline(options=beam.options.pipeline_options.PipelineOptions(
        runtime_type_check=True, type_check_additional='all')) as p:
    p | beam.Create(['/bin/sh']) | textio.ReadAllFromText()
```

```
apache_beam.typehints.typehints.CompositeTypeHintError: Union[FileMetadata, OffsetRange] type-constraint violated. Expected an instance of one of: ('FileMetadata', 'OffsetRange'), received tuple instead.
```