Skip to content

python(feat): Add better report creation and wait_until_complete to SiftClient#475

Open
nathan-sift wants to merge 17 commits intomainfrom
python/add-job-report-wait-until-complete
Open

python(feat): Add better report creation and wait_until_complete to SiftClient#475
nathan-sift wants to merge 17 commits intomainfrom
python/add-job-report-wait-until-complete

Conversation

@nathan-sift
Copy link
Contributor

@nathan-sift nathan-sift commented Feb 13, 2026

Updates reports to return the Job for the pending report, and adds wait_until_complete to the Reports and Jobs API.

Returning a Job upon report creation provides a better indication to users that the report is in a "pending" state and likely does not have annotations generated yet. In addition to the job_id, users can obtain the report_id as a property of the job.

wait_until_complete is provided for the reports and jobs API, and polls the job status until it is in a completed state. Behavior is similar to the existing sift_py implementation for reports, but with the addition of configurable polling. For the reports implementation, requires a rule evaluation job or report to be provided, and returns a complete Report.

Verification
Adds unit tests for wait_until_complete and an integration test for Reports.

@alexluck-sift
Copy link
Collaborator

I'd suggest we expose a sync version within the Job object. Something like:
job.wait_until_complete()

@nathan-sift nathan-sift changed the title python(feat): Add wait_until_complete to SiftClient Jobs and Reports python(feat): Add PendingReport and wait_until_complete to SiftClient Feb 17, 2026
@nathan-sift nathan-sift changed the title python(feat): Add PendingReport and wait_until_complete to SiftClient python(feat): Add better report creation and wait_until_complete to SiftClient Feb 20, 2026
job is not a rule evaluation job.
"""
if report is not None and job is not None:
raise ValueError("exactly one of report or report_job must be provided")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in "report_job "

raise ValueError("either report or job must be provided")

if not report_id:
raise ValueError("report_id must be set")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a way for these checks to fail given the checks above?

If this is needed for a type checker or linter, we should update the error message to indicate this is an internal library error since it should never happen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Comments