Skip to content

v.0.2.0

Choose a tag to compare

@IKrysanov IKrysanov released this 24 May 16:12
· 56 commits to main since this release

0.2.0 - 2026-05-24

Fixed

  • Resolve BaseOperator from airflow.sdk.bases.operator on Airflow 3,
    eliminating the DeprecatedImportWarning that came from the legacy
    airflow.models.baseoperator path. Import resolution now prefers the
    canonical Task SDK location and only falls back to the Airflow 2 path on
    Airflow 2.
  • Reject concurrent run() calls on a single SubprocessPytestRunner
    instance (fail-fast with TestExecutionError) to prevent a race on the
    per-run temporary directory and process handle. Separate runner instances
    remain fully independent, and the same instance can be reused for
    sequential runs (e.g. task retries).
  • cancel() no longer holds the internal lock during its graceful
    termination wait (up to grace_period seconds). The lock is now held only
    to snapshot the process handle, so on_kill no longer serializes the
    run's teardown or cleanup().
  • Wrap report-directory preparation so a user-supplied report_dir pointing
    at a file (or an unwritable location) raises TestExecutionError per the
    runner contract, instead of leaking a bare OSError.

Changed

  • Breaking: the test summary is now exposed only via the standard XCom
    return_value key. The previously-duplicated custom pytest_result key
    has been removed. Downstream tasks that read xcom_pull(key="pytest_result")
    must switch to xcom_pull(task_ids="<task>") (the default return_value).
  • Breaking: removed the custom push_result parameter. XCom output is
    now controlled solely by Airflow's standard do_xcom_push (default True);
    pass do_xcom_push=False to disable. Replace push_result=False with
    do_xcom_push=False.

Added

  • Documentation on installing the package in Docker/constrained environments
    using Airflow's official constraint files.