Skip to content

Conversation

@splch
Copy link
Contributor

@splch splch commented Apr 18, 2025

ionq results api can return a list of results or a single result, so this change allows for either a list or single element to be returned from the results endpoint

@splch splch requested review from a team, dabacon and vtomole as code owners April 18, 2025 21:04
@codecov
Copy link

codecov bot commented Apr 21, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.38%. Comparing base (8dd8a8f) to head (a172931).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #7285   +/-   ##
=======================================
  Coverage   99.38%   99.38%           
=======================================
  Files        1090     1090           
  Lines       98300    98376   +76     
=======================================
+ Hits        97695    97771   +76     
  Misses        605      605           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

assert service.remote_host == 'http://example.com'


def test_service_run_unwraps_single_result_list():
Copy link
Contributor

Choose a reason for hiding this comment

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

can you add a test for the correctness of the order of multiple results being returned?

@mhucka
Copy link
Contributor

mhucka commented Apr 24, 2025

@splch Thank you for this work!

Could you let us know the status of this? For example, there was the comment from @Cynocracy to add a test, but it's not immediately clear if that was resolved.

Copy link
Contributor

@Cynocracy Cynocracy left a comment

Choose a reason for hiding this comment

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

The new run batch preserves order test covers what I was hoping for :) lgtm

Copy link
Collaborator

@dstrain115 dstrain115 left a comment

Choose a reason for hiding this comment

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

Will this cause any backwards incompatibility for programs people have already written?

@mhucka mhucka added kind/health For CI/testing/release process/refactoring/technical debt items interface/cirq-ionq labels Apr 29, 2025
@mhucka mhucka changed the title return a single results object instead of always a list - IonQ Return a single results object instead of always a list - IonQ Apr 29, 2025
@Cynocracy
Copy link
Contributor

@dstrain115 this is a good question. The answer is unfortunately yes, but it's attempting to revert a change in interface caused by #6652 (which made it so that jobs that previously returned a single Result were returning an Iterable of them). FWIW, I am conflicted on whether it makes sense to change back, as imo, both changes are somewhat burdensome to users.

@mhucka
Copy link
Contributor

mhucka commented Apr 30, 2025

@dstrain115 this is a good question. The answer is unfortunately yes, but it's attempting to revert a change in interface caused by #6652 (which made it so that jobs that previously returned a single Result were returning an Iterable of them). FWIW, I am conflicted on whether it makes sense to change back, as imo, both changes are somewhat burdensome to users.

Is there a way to consult users (perhaps some especially major users) and ask them for their input? (I guess this is a question for @Cynocracy )

@mhucka mhucka moved this to Nudged again in Follow-up tracker Oct 9, 2025
@mhucka
Copy link
Contributor

mhucka commented Oct 9, 2025

@splch There's also a cirq-ionq issue at #5216 that we were wondering about. It's unrelated to this PR, but if you're doing work on cirq-ionq and have a few moment to look at that, we'd welcome your input. It's not clear to us whether the issue still exists, so ti might be a very quick matter of just closing the issue.

@github-actions github-actions bot added size: L 250< lines changed <1000 and removed size: M 50< lines changed <250 labels Oct 9, 2025
Comment on lines 118 to 130
> **Note - result shape of `Job.results()`:** For jobs created from a **single circuit**,
> `job.results()` returns a **single** `ionq.QPUResult` or `ionq.SimulatorResult`.
> For **batch** jobs, it returns a **list** of those results. To write code that
> works with either shape:
>
> ```python
> r = job.results()
> results_list = r if isinstance(r, list) else [r]
> ```
>
> Each entry can be converted to a `cirq.Result` via `.to_cirq_result(...)`.
> (`Service.run(...)` continues to return a single `cirq.Result`.)
Copy link
Contributor

Choose a reason for hiding this comment

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

@splch I know this PR was approved, but before merging, I wanted to check if the use of a Markdown blockquote is intentional here. The result in the formatted output is not great (e.g., it has hard line breaks). I would prefer to see this without the blockquote (i.e., without the leading > characters) unless I'm missing something.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@mhucka - if it is just a matter of markdown appearance and you have a simple fix, feel free to push such change here and merge. We can always adjust if @splch has a strong preference for the current format.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah sounds good - I was going for a note-looking block but I'm happy to change it to normal formatting :)

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah sounds good - I was going for a note-looking block but I'm happy to change it to normal formatting :)

Lemme see if something can be done to keep that aspect yet avoid the hard newlines …

Copy link
Contributor

@mhucka mhucka Nov 23, 2025

Choose a reason for hiding this comment

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

@splch My apologies for the long delay getting back to this. I see now that it looks like you updated the format. I looked into the options for doing callouts or highlighted notes in a way compatible with both GitHub-flavored Markdown and the system used to produce the Cirq documentation on quantumai.google, but could not come up with a straightforward solution short of using raw HTML. However, I had another idea: slightly restructuring the end of that page and putting the Job.results() info into its own subsection. I pushed the proposed changes to this branch to demonstrate it.

Tell me if this be a reasonable approach, and whether the new text is accurate and clear.

@github-actions github-actions bot added size: M 50< lines changed <250 and removed size: L 250< lines changed <1000 labels Nov 23, 2025
@github-actions github-actions bot added size: L 250< lines changed <1000 and removed size: M 50< lines changed <250 labels Nov 23, 2025
@mhucka
Copy link
Contributor

mhucka commented Nov 23, 2025

@splch there were some test failures in CI; these might have been due to some changes in Cirq since the PR was originally submitted. I tried to fix them, and took the liberty of pushing the changes to your PR branch in an effort to help make up for lost time. Hopefully it's correct. Please feel free to make any changes necessary.

Copy link
Contributor

@mhucka mhucka left a comment

Choose a reason for hiding this comment

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

LGTM, but please check if you agree with the changes I made (and feel free to make any corrections).

@mhucka mhucka moved this from Nudged again to Nudged in Follow-up tracker Nov 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

interface/cirq-ionq kind/health For CI/testing/release process/refactoring/technical debt items size: L 250< lines changed <1000

Projects

Status: Nudged

Development

Successfully merging this pull request may close these issues.

5 participants