Udi Meiri created BEAM-9377:
-------------------------------

             Summary: Python typehints: Map wrapper prevents Optional stripping
                 Key: BEAM-9377
                 URL: https://issues.apache.org/jira/browse/BEAM-9377
             Project: Beam
          Issue Type: New Feature
          Components: sdk-py-core
            Reporter: Udi Meiri


This existing test is wrong:
{code}
  def test_map_wrapper_optional_output(self):
    # Optional does affect output type (Nones are NOT ignored).
    def map_fn(unused_element: int) -> typehints.Optional[int]:
      return 1

    th = beam.Map(map_fn).get_type_hints()
    self.assertEqual(th.input_types, ((int, ), {}))
    self.assertEqual(th.output_types, ((typehints.Optional[int], ), {}))
{code}

The resulting output type should be int.

{code}
inital output hint:
Optional[int]
with wrapper:
Iterable[Optional[int]]
with DoFn.default_type_hints:
Optional[int]
{code}

However any Nones returned by a DoFn's process method are dropped, so the 
actual element_type returned is plain int.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to