Skip to content

Update CHANGES to mention extras changes (#36875)

Sign in for the full log view
GitHub Actions / Python 3.12 Test Results (self-hosted, ubuntu-20.04, main) failed Nov 26, 2025 in 0s

3 fail, 140 skipped, 357 pass in 6m 46s

  2 files    2 suites   6m 46s ⏱️
500 tests 357 ✅ 140 💤 3 ❌
506 runs  357 ✅ 146 💤 3 ❌

Results for commit c2303be.

Annotations

Check warning on line 0 in apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest

See this annotation in the file changed.

@github-actions github-actions / Python 3.12 Test Results (self-hosted, ubuntu-20.04, main)

test_scoring_with_matched_features_0 (apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest) failed

sdks/python/test-suites/tox/py312/build/srcs/sdks/python/pytest_py312-ml.xml [took 1m 30s]
Raw output
RuntimeError: Pipeline job-001 failed in state FAILED: bundle inst003 stage-007 failed:Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'IForest' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
    response = task()
               ^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
    lambda: self.create_worker().do_instruction(request), request)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
    return getattr(self, request_type)(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
    bundle_processor.process_bundle(instruction_id))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
    input_op_by_transform_id[element.transform_id].process_encoded(
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
    self.output(decoded_value)
  File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
    def output(self, windowed_value, output_index=0):
  File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
    _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    def receive(self, windowed_value):
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise new_exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:cf6393)/BeamML_RunInference']
a = (<apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest testMethod=test_scoring_with_matched_features_0>,)
kw = {}

    @wraps(func)
    def standalone_func(*a, **kw):
>       return func(*(a + p.args), **p.kwargs, **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/parameterized/parameterized.py:620: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
apache_beam/ml/anomaly/detectors/pyod_adapter_test.py:130: in test_scoring_with_matched_features
    with beam.Pipeline(options=options) as p:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/pipeline.py:648: in __exit__
    self.result.wait_until_finish()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <apache_beam.runners.portability.portable_runner.PipelineResult object at 0x7d2efeb53ef0>
duration = None

    def wait_until_finish(self, duration=None):
      """
      :param duration: The maximum time in milliseconds to wait for the result of
      the execution. If None or zero, will wait until the pipeline finishes.
      :return: The result of the pipeline, i.e. PipelineResult.
      """
      last_error_text = None
    
      def read_messages() -> None:
        nonlocal last_error_text
        previous_state = -1
        for message in self._message_stream:
          if message.HasField('message_response'):
            mr = message.message_response
            logging.log(MESSAGE_LOG_LEVELS[mr.importance], "%s", mr.message_text)
            if mr.importance == beam_job_api_pb2.JobMessage.JOB_MESSAGE_ERROR:
              last_error_text = mr.message_text
          else:
            current_state = message.state_response.state
            if current_state != previous_state:
              _LOGGER.info(
                  "Job state changed to %s",
                  self.runner_api_state_to_pipeline_state(current_state))
              previous_state = current_state
          self._messages.append(message)
    
      message_thread = threading.Thread(
          target=read_messages, name='wait_until_finish_read')
      message_thread.daemon = True
      message_thread.start()
    
      if duration:
        state_thread = threading.Thread(
            target=functools.partial(self._observe_state, message_thread),
            name='wait_until_finish_state_observer')
        state_thread.daemon = True
        state_thread.start()
        start_time = time.time()
        duration_secs = duration / 1000
        while (time.time() - start_time < duration_secs and
               state_thread.is_alive()):
          time.sleep(1)
      else:
        self._observe_state(message_thread)
    
      if self._runtime_exception:
>       raise self._runtime_exception
E       RuntimeError: Pipeline job-001 failed in state FAILED: bundle inst003 stage-007 failed:Traceback (most recent call last):
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
E           tags = estimator.__sklearn_tags__()
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: 'IForest' object has no attribute '__sklearn_tags__'
E       
E       During handling of the above exception, another exception occurred:
E       
E       Traceback (most recent call last):
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
E           self._invoke_process_per_window(
E         File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
E           self.process_method(*args_for_process, **kwargs_for_process),
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
E           return self._run_inference(batch, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
E           raise e
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
E           result_generator = self._model_handler.run_inference(
E                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
E           return self._base.run_inference(batch, model, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
E           self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
E           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
E           predictions = model.decision_function(vectorized_batch)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
E           check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
E           tags = get_tags(estimator)
E                  ^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
E           raise AttributeError(
E       AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.
E       
E       During handling of the above exception, another exception occurred:
E       
E       Traceback (most recent call last):
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
E           response = task()
E                      ^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
E           lambda: self.create_worker().do_instruction(request), request)
E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
E           return getattr(self, request_type)(
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
E           bundle_processor.process_bundle(instruction_id))
E           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
E           input_op_by_transform_id[element.transform_id].process_encoded(
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
E           self.output(decoded_value)
E         File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
E           def output(self, windowed_value, output_index=0):
E         File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
E           _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           def receive(self, windowed_value):
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise new_exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
E           self._invoke_process_per_window(
E         File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
E           self.process_method(*args_for_process, **kwargs_for_process),
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
E           return self._run_inference(batch, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
E           raise e
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
E           result_generator = self._model_handler.run_inference(
E                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
E           return self._base.run_inference(batch, model, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
E           self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
E           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
E           predictions = model.decision_function(vectorized_batch)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
E           check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
E           tags = get_tags(estimator)
E                  ^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
E           raise AttributeError(
E       AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:cf6393)/BeamML_RunInference']

target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/portability/portable_runner.py:571: RuntimeError

Check warning on line 0 in apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest

See this annotation in the file changed.

@github-actions github-actions / Python 3.12 Test Results (self-hosted, ubuntu-20.04, main)

test_scoring_with_matched_features_1 (apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest) failed

sdks/python/test-suites/tox/py312/build/srcs/sdks/python/pytest_py312-ml.xml [took 0s]
Raw output
RuntimeError: Pipeline job-002 failed in state FAILED: bundle inst003 stage-007 failed:Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'IForest' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
    response = task()
               ^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
    lambda: self.create_worker().do_instruction(request), request)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
    return getattr(self, request_type)(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
    bundle_processor.process_bundle(instruction_id))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
    input_op_by_transform_id[element.transform_id].process_encoded(
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
    self.output(decoded_value)
  File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
    def output(self, windowed_value, output_index=0):
  File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
    _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    def receive(self, windowed_value):
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise new_exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:6ff9aa)/BeamML_RunInference']
a = (<apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest testMethod=test_scoring_with_matched_features_1>,)
kw = {}

    @wraps(func)
    def standalone_func(*a, **kw):
>       return func(*(a + p.args), **p.kwargs, **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/parameterized/parameterized.py:620: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
apache_beam/ml/anomaly/detectors/pyod_adapter_test.py:130: in test_scoring_with_matched_features
    with beam.Pipeline(options=options) as p:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/pipeline.py:648: in __exit__
    self.result.wait_until_finish()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <apache_beam.runners.portability.portable_runner.PipelineResult object at 0x7d2ef4308890>
duration = None

    def wait_until_finish(self, duration=None):
      """
      :param duration: The maximum time in milliseconds to wait for the result of
      the execution. If None or zero, will wait until the pipeline finishes.
      :return: The result of the pipeline, i.e. PipelineResult.
      """
      last_error_text = None
    
      def read_messages() -> None:
        nonlocal last_error_text
        previous_state = -1
        for message in self._message_stream:
          if message.HasField('message_response'):
            mr = message.message_response
            logging.log(MESSAGE_LOG_LEVELS[mr.importance], "%s", mr.message_text)
            if mr.importance == beam_job_api_pb2.JobMessage.JOB_MESSAGE_ERROR:
              last_error_text = mr.message_text
          else:
            current_state = message.state_response.state
            if current_state != previous_state:
              _LOGGER.info(
                  "Job state changed to %s",
                  self.runner_api_state_to_pipeline_state(current_state))
              previous_state = current_state
          self._messages.append(message)
    
      message_thread = threading.Thread(
          target=read_messages, name='wait_until_finish_read')
      message_thread.daemon = True
      message_thread.start()
    
      if duration:
        state_thread = threading.Thread(
            target=functools.partial(self._observe_state, message_thread),
            name='wait_until_finish_state_observer')
        state_thread.daemon = True
        state_thread.start()
        start_time = time.time()
        duration_secs = duration / 1000
        while (time.time() - start_time < duration_secs and
               state_thread.is_alive()):
          time.sleep(1)
      else:
        self._observe_state(message_thread)
    
      if self._runtime_exception:
>       raise self._runtime_exception
E       RuntimeError: Pipeline job-002 failed in state FAILED: bundle inst003 stage-007 failed:Traceback (most recent call last):
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
E           tags = estimator.__sklearn_tags__()
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: 'IForest' object has no attribute '__sklearn_tags__'
E       
E       During handling of the above exception, another exception occurred:
E       
E       Traceback (most recent call last):
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
E           self._invoke_process_per_window(
E         File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
E           self.process_method(*args_for_process, **kwargs_for_process),
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
E           return self._run_inference(batch, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
E           raise e
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
E           result_generator = self._model_handler.run_inference(
E                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
E           return self._base.run_inference(batch, model, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
E           self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
E           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
E           predictions = model.decision_function(vectorized_batch)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
E           check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
E           tags = get_tags(estimator)
E                  ^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
E           raise AttributeError(
E       AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.
E       
E       During handling of the above exception, another exception occurred:
E       
E       Traceback (most recent call last):
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
E           response = task()
E                      ^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
E           lambda: self.create_worker().do_instruction(request), request)
E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
E           return getattr(self, request_type)(
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
E           bundle_processor.process_bundle(instruction_id))
E           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
E           input_op_by_transform_id[element.transform_id].process_encoded(
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
E           self.output(decoded_value)
E         File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
E           def output(self, windowed_value, output_index=0):
E         File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
E           _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           def receive(self, windowed_value):
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E           self.output_handler.handle_process_outputs(
E         File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E           self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E         File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E           self.main_receivers.receive(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E           self.consumer.process(windowed_value)
E         File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E           with self.scoped_process_state:
E         File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E           delayed_applications = self.dofn_runner.process(o)
E         File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E           self._reraise_augmented(exn, windowed_value)
E         File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E           raise new_exn
E         File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E           return self.do_fn_invoker.invoke_process(windowed_value)
E         File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
E           self._invoke_process_per_window(
E         File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
E           self.process_method(*args_for_process, **kwargs_for_process),
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
E           return self._run_inference(batch, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
E           raise e
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
E           result_generator = self._model_handler.run_inference(
E                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
E           return self._base.run_inference(batch, model, inference_args)
E                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
E           self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
E           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
E           predictions = model.decision_function(vectorized_batch)
E                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
E           check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
E           tags = get_tags(estimator)
E                  ^^^^^^^^^^^^^^^^^^^
E         File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
E           raise AttributeError(
E       AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:6ff9aa)/BeamML_RunInference']

target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/portability/portable_runner.py:571: RuntimeError

Check warning on line 0 in apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest

See this annotation in the file changed.

@github-actions github-actions / Python 3.12 Test Results (self-hosted, ubuntu-20.04, main)

test_scoring_with_unmatched_features (apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest) failed

sdks/python/test-suites/tox/py312/build/srcs/sdks/python/pytest_py312-ml.xml [took 2s]
Raw output
AssertionError: "is expecting 2 features" does not match "Pipeline job-003 failed in state FAILED: bundle inst002 stage-005 failed:Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'IForest' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
    response = task()
               ^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
    lambda: self.create_worker().do_instruction(request), request)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
    return getattr(self, request_type)(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
    bundle_processor.process_bundle(instruction_id))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
    input_op_by_transform_id[element.transform_id].process_encoded(
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
    self.output(decoded_value)
  File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
    def output(self, windowed_value, output_index=0):
  File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
    _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    def receive(self, windowed_value):
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise new_exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:eab92b)/BeamML_RunInference']
"
RuntimeError: Pipeline job-003 failed in state FAILED: bundle inst002 stage-005 failed:Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
    tags = estimator.__sklearn_tags__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'IForest' object has no attribute '__sklearn_tags__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
    response = task()
               ^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
    lambda: self.create_worker().do_instruction(request), request)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
    return getattr(self, request_type)(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
    bundle_processor.process_bundle(instruction_id))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
    input_op_by_transform_id[element.transform_id].process_encoded(
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
    self.output(decoded_value)
  File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
    def output(self, windowed_value, output_index=0):
  File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
    _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    def receive(self, windowed_value):
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
    self.output_handler.handle_process_outputs(
  File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
    self._write_value_to_tag(tag, windowed_value, watermark_estimator)
  File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
    self.main_receivers.receive(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
    self.consumer.process(windowed_value)
  File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
    with self.scoped_process_state:
  File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
    delayed_applications = self.dofn_runner.process(o)
  File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
    self._reraise_augmented(exn, windowed_value)
  File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
    raise new_exn
  File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
    return self.do_fn_invoker.invoke_process(windowed_value)
  File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
    self._invoke_process_per_window(
  File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
    self.process_method(*args_for_process, **kwargs_for_process),
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
    return self._run_inference(batch, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
    raise e
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
    result_generator = self._model_handler.run_inference(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
    return self._base.run_inference(batch, model, inference_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
    self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
    predictions = model.decision_function(vectorized_batch)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
    check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
    tags = get_tags(estimator)
           ^^^^^^^^^^^^^^^^^^^
  File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
    raise AttributeError(
AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:eab92b)/BeamML_RunInference']


During handling of the above exception, another exception occurred:

self = <apache_beam.ml.anomaly.detectors.pyod_adapter_test.PyODIForestTest testMethod=test_scoring_with_unmatched_features>

    def test_scoring_with_unmatched_features(self):
      # The model is trained with two features: a, b, but the input features of
      # scoring has one more feature (target).
      # In this case, we should either get rid of the extra feature(s) from
      # the scoring input or set `features` when creating the offline detector
      # (see the `test_scoring_with_matched_features`)
      detector = PyODFactory.create_detector(self.pickled_model_uri)
      options = PipelineOptions([])
      # This should raise a ValueError with message
      # "X has 3 features, but IsolationForest is expecting 2 features as input."
>     with self.assertRaisesRegex(Exception, "is expecting 2 features"):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E     AssertionError: "is expecting 2 features" does not match "Pipeline job-003 failed in state FAILED: bundle inst002 stage-005 failed:Traceback (most recent call last):
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 275, in get_tags
E         tags = estimator.__sklearn_tags__()
E                ^^^^^^^^^^^^^^^^^^^^^^^^^^
E     AttributeError: 'IForest' object has no attribute '__sklearn_tags__'
E     
E     During handling of the above exception, another exception occurred:
E     
E     Traceback (most recent call last):
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
E         self._invoke_process_per_window(
E       File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
E         self.process_method(*args_for_process, **kwargs_for_process),
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
E         return self._run_inference(batch, inference_args)
E                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
E         raise e
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
E         result_generator = self._model_handler.run_inference(
E                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
E         return self._base.run_inference(batch, model, inference_args)
E                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
E         self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
E         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
E         predictions = model.decision_function(vectorized_batch)
E                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
E         check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
E         tags = get_tags(estimator)
E                ^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
E         raise AttributeError(
E     AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order.
E     
E     During handling of the above exception, another exception occurred:
E     
E     Traceback (most recent call last):
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 316, in _execute
E         response = task()
E                    ^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 390, in <lambda>
E         lambda: self.create_worker().do_instruction(request), request)
E                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 669, in do_instruction
E         return getattr(self, request_type)(
E                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/sdk_worker.py", line 707, in process_bundle
E         bundle_processor.process_bundle(instruction_id))
E         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 1302, in process_bundle
E         input_op_by_transform_id[element.transform_id].process_encoded(
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/apache_beam/runners/worker/bundle_processor.py", line 242, in process_encoded
E         self.output(decoded_value)
E       File "apache_beam/runners/worker/operations.py", line 568, in apache_beam.runners.worker.operations.Operation.output
E         def output(self, windowed_value, output_index=0):
E       File "apache_beam/runners/worker/operations.py", line 570, in apache_beam.runners.worker.operations.Operation.output
E         _cast_to_receiver(self.receivers[output_index]).receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 260, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         def receive(self, windowed_value):
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E         self.output_handler.handle_process_outputs(
E       File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E         self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E       File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E         self.main_receivers.receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E         self.output_handler.handle_process_outputs(
E       File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E         self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E       File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E         self.main_receivers.receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E         self.output_handler.handle_process_outputs(
E       File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E         self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E       File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E         self.main_receivers.receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E         self.output_handler.handle_process_outputs(
E       File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E         self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E       File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E         self.main_receivers.receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E         self.output_handler.handle_process_outputs(
E       File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E         self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E       File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E         self.main_receivers.receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1588, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 684, in apache_beam.runners.common.SimpleInvoker.invoke_process
E         self.output_handler.handle_process_outputs(
E       File "apache_beam/runners/common.py", line 1683, in apache_beam.runners.common._OutputHandler.handle_process_outputs
E         self._write_value_to_tag(tag, windowed_value, watermark_estimator)
E       File "apache_beam/runners/common.py", line 1796, in apache_beam.runners.common._OutputHandler._write_value_to_tag
E         self.main_receivers.receive(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 263, in apache_beam.runners.worker.operations.SingletonElementConsumerSet.receive
E         self.consumer.process(windowed_value)
E       File "apache_beam/runners/worker/operations.py", line 954, in apache_beam.runners.worker.operations.DoOperation.process
E         with self.scoped_process_state:
E       File "apache_beam/runners/worker/operations.py", line 955, in apache_beam.runners.worker.operations.DoOperation.process
E         delayed_applications = self.dofn_runner.process(o)
E       File "apache_beam/runners/common.py", line 1500, in apache_beam.runners.common.DoFnRunner.process
E         self._reraise_augmented(exn, windowed_value)
E       File "apache_beam/runners/common.py", line 1609, in apache_beam.runners.common.DoFnRunner._reraise_augmented
E         raise new_exn
E       File "apache_beam/runners/common.py", line 1498, in apache_beam.runners.common.DoFnRunner.process
E         return self.do_fn_invoker.invoke_process(windowed_value)
E       File "apache_beam/runners/common.py", line 912, in apache_beam.runners.common.PerWindowInvoker.invoke_process
E         self._invoke_process_per_window(
E       File "apache_beam/runners/common.py", line 1057, in apache_beam.runners.common.PerWindowInvoker._invoke_process_per_window
E         self.process_method(*args_for_process, **kwargs_for_process),
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1933, in process
E         return self._run_inference(batch, inference_args)
E                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1903, in _run_inference
E         raise e
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1889, in _run_inference
E         result_generator = self._model_handler.run_inference(
E                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 1228, in run_inference
E         return self._base.run_inference(batch, model, inference_args)
E                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/inference/base.py", line 764, in run_inference
E         self._unkeyed.run_inference(unkeyed_batch, model, inference_args))
E         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/apache_beam/ml/anomaly/detectors/pyod_adapter.py", line 84, in run_inference
E         predictions = model.decision_function(vectorized_batch)
E                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/pyod/models/iforest.py", line 243, in decision_function
E         check_is_fitted(self, ['decision_scores_', 'threshold_', 'labels_'])
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/validation.py", line 1699, in check_is_fitted
E         tags = get_tags(estimator)
E                ^^^^^^^^^^^^^^^^^^^
E       File "/runner/_work/beam/beam/sdks/python/test-suites/tox/py312/build/srcs/sdks/python/target/.tox-py312-ml/py312-ml/lib/python3.12/site-packages/sklearn/utils/_tags.py", line 283, in get_tags
E         raise AttributeError(
E     AttributeError: The following error was raised: 'IForest' object has no attribute '__sklearn_tags__'. It seems that there are no classes that implement `__sklearn_tags__` in the MRO and/or all classes in the MRO call `super().__sklearn_tags__()`. Make sure to inherit from `BaseEstimator` which implements `__sklearn_tags__` (or alternatively define `__sklearn_tags__` but we don't recommend this approach). Note that `BaseEstimator` needs to be on the right side of other Mixins in the inheritance order. [while running 'AnomalyDetection/RunOfflineDetector/Call RunInference (OfflineDetector:eab92b)/BeamML_RunInference']
E     "

apache_beam/ml/anomaly/detectors/pyod_adapter_test.py:148: AssertionError