Uploaded image for project: 'Beam'
  1. Beam
  2. BEAM-6588

Error in inferring output typehints for beam.Filter

Details

    • New Feature
    • Status: Resolved
    • P2
    • Resolution: Fixed
    • None
    • 2.13.0
    • sdk-py-core
    • None

    Description

      If a type hint is specified for an input to beam.Filter, it attempts to infer the output type (as Iterable[input_type], consistent with FlatMap), but that inference appears to have a bug in it.

      With the code:

      @beam.typehints.with_input_types(int)
      def OddFilter(data):
        return data % 2 == 0
      
      def pipeline(root):
        base = root | beam.Create(xrange(100))
        next = base | beam.Filter(OddFilter)
      

      The following error is returned:

        File "/google3/experimental/testproj/test_beam.py", line 26, in pipeline
          next = base | beam.Filter(OddFilter)
        File "/google3/third_party/py/apache_beam/transforms/core.py", line 1147, in Filter
          get_type_hints(wrapper).set_output_types(typehints.Iterable[output_hint])
        File "/google3/third_party/py/apache_beam/typehints/typehints.py", line 951, in __getitem__
          type_param, error_msg_prefix='Parameter to an Iterable hint'
        File "/google3/third_party/py/apache_beam/typehints/typehints.py", line 359, in validate_composite_type_param
          type_param.__class__.__name__))
      TypeError: Parameter to an Iterable hint must be a non-sequence, a type, or a TypeConstraint. (<type 'int'>,) is an instance of tuple.
      

      Explicitly specifying the output type (as beam.typehints.Iterable[int]) works fine. The code in core.py seems to be correct, but I'm guessing it needs a derefence of the tuple to actually extract the type: http://google3/third_party/py/apache_beam/transforms/core.py?l=1145&rcl=228573657

      Attachments

        Issue Links

          Activity

            People

              altay Ahmet Altay
              robertwb Robert Bradshaw
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 40m
                  40m